{"version":3,"sources":["components/global/Translation.js","store/centers/reducers.js","components/banners/banner-rocket/PromotionRocketCustomersDataUSA5Percent.js","components/banners/banner-rocket/PromotionRocketCustomersDataUSA10Percent.js","store/login/reducers.js","components/global/Button.js","store/ui/reducers.js","store/api.js","store/error/actions.js","components/global/LocalizedLink.js","store/cart/reducers.js","store/ui/actions.js","store/segmentation/reducers.js","store/products/reducers.js","components/global/Spinner.js","store/cart/actions.js","store/promotions/reducers.js","helpers.js","store/profile-configuration/reducers.js","store/orders/reducers.js","components/cut-to-size/CutToSizeMaps.js","store/shipping-addresses/reducers.js","store/checkout/reducers.js","store/checkout/actions.js","components/landing-manager/utils.js","components/alerts/Alerts.js","store/products/actions.js","components/global/ProductDisplayName.js","store/orders/actions.js","components/catalog/rectangleResult/displays/DisplayOutletIndicator.js","store/login/actions.js","store/segmentation/actions.js","components/global/ConfirmDialog.js","components/global/confirm.js","store/big-account/reducers.js","store/promotions/actions.js","store/landing/actions.js","components/getNumberFormat.js","store/landing/reducers.js","assets/img/e.cosentino.svg","store/centers/actions.js","components/landing-templates/utils.js","store/profile-configuration/actions.js","store/lots/reducers.js","components/alerts/FloatingAlert.js","store/shipping-addresses/actions.js","store/impersonate/reducers.js","store/selected-objects/actions.js","components/global/TextInput.js","components/segmentation/SegmentationEvidence.js","components/segmentation/SavedSegmentations.js","components/segmentation/SavingSegmentations.js","components/segmentation/SegmentationsSavedSuccesfully.js","components/segmentation/SegmentationSteps.js","store/crossSelling/actions.js","assets/img/icons/camera-off.svg","assets/img/banners-rockmaster/EN/wide.jpg","assets/img/banners-rockmaster/EN/squared.jpg","store/selected-objects/reducers.js","assets/img/logos/mall-large.jpg","analyticsEvents.js","store/lots/actions.js","assets/img/banners-v2/CTS_V2.png","components/cart-line/LineSegmentationV2.js","assets/img/acabado.png","assets/img/banner-earthic/EN/wide.jpg","assets/img/banner-earthic/EN/squared.jpg","components/lots/utils.js","assets/img/icons/no-image.svg","assets/img/icons/ecosentino.svg","assets/img/banners-v2/Outlet_V2.png","store/hardCode.js","components/input-number-other/IntegerInputNumber.js","assets/img/banner-suma/EN/wide.jpg","assets/img/banner-suma/EN/squared.jpg","assets/img/icons/chevron-down.svg","assets/img/icons/logoutv2.svg","store/advertisement/reducers.js","store/reservations/actions.js","assets/img/banners-v2/Tablas_V2.png","assets/img/icons/triangle.svg","assets/img/icons/cart-thin.svg","assets/img/icons/caution.svg","components/segmentation/SegmentationV3.js","components/segmentation/SegmentationTranslation.js","assets/img/banners-v2/PPCC_V2.png","components/segmentation/ChannelV4.js","assets/img/icons/bars.svg","assets/img/icons/carrito.svg","assets/img/icons/danger-icon.svg","assets/img/icons/file.svg","assets/img/icons/lots-icon.svg","assets/img/icons/user-inverted.svg","assets/img/icons/warning-triangle.svg","components/segmentation/SalesForceIdV3.js","components/segmentation/ProjectIdV3.js","components/segmentation/UseV3.js","components/segmentation/TypologyV3.js","assets/img/logos/mall-discount.svg","i18n/messages.js","store/advertisement/actions.js","assets/img/components/copy-to-clipboard.svg","assets/img/no-image-bundle.png","assets/img/warning.jpg","assets/img/logos/brands/logo-silestone.svg","assets/img/logos/brands/logo-dekton.svg","assets/img/DKTN.svg","assets/img/logos/brands/logo-sensa.svg","assets/img/logos/brands/logo-natural-stone.svg","assets/img/icons/location.svg","components/segmentation/SuggestedSegmentation.js","assets/img/icons/camion_completo.svg","assets/img/icons/checkmark.svg","assets/img/icons/close-black.svg","assets/img/icons/close-white.svg","assets/img/icons/cosentino-message.svg","assets/img/icons/download-gray.svg","assets/img/icons/facebook.svg","assets/img/icons/filter.svg","assets/img/icons/instagram.svg","assets/img/icons/linkedin.svg","assets/img/icons/list.svg","assets/img/icons/medio_camion.svg","assets/img/icons/pinterest.svg","assets/img/icons/print.svg","assets/img/icons/tabla.svg","assets/img/icons/twitter.svg","assets/img/icons/user.svg","assets/img/icons/youtube.svg","webpack:///./src/assets/img/icons/info.svg?e649","components/global/InfoWithToolTip.js","assets/img/promotions/italy/banner-catalog.jpg","assets/img/lowes/brochureSensa.jpg","assets/img/lowes/brochureSilestone.jpg","assets/img/cut-to-size/furnitures.svg","assets/img/cut-to-size/Mobiliario-v2.png","assets/img/banners-v2/NewBanos_v2.png","assets/img/outlet1.png","assets/img/outlet2.png","assets/img/banner-dekton/dekton_894x470.png","assets/img/banner-dekton/dekton.png","assets/img/banners-rockmaster/FR/wide.jpg","assets/img/banners-rockmaster/FR/squared.jpg","assets/img/banner-silestone/banner-silestone-background.png","assets/img/banner-earthic/FR/wide.jpg","assets/img/banner-earthic/FR/squared.jpg","assets/img/banner-suma/FR/wide.jpg","assets/img/banner-suma/FR/squared.jpg","assets/img/home/home-slide.png","assets/img/banners-v2/Banos_V2.png","assets/img/home/home-slide-outlet.png","assets/img/home/mall-slide.png","assets/img/banners-mktools/Promo_Card_1.png","assets/img/banners-mktools/Promo_Card_2.png","assets/img/banners-mktools/Promo_Card_3.png","assets/img/banners-mktools/cosentino-workwear.jpg","assets/img/banners-mktools/cosentino-supplies.jpg","assets/img/icons sync /^/.*/.png$","assets/img/promotions/italy/banner-home.jpg","assets/pdf/promotions/flyer-italy-promo-12mm.pdf","assets/img/silestone.svg","assets/img/silestone-white.svg","assets/img/dekton.svg","assets/img/dekton-white.svg","assets/img/sensa.svg","assets/img/sensa-white.svg","assets/img/natural-stone-black.svg","assets/img/natural-stone.svg","assets/img/promotions/previews-template/landing_preview_v2.jpg","assets/img/promotions/previews-template/mail_preview_v2.jpg","assets/scss/app.scss","assets/img/icons sync /^/.*/.svg$","assets/img/icons/A0.svg","assets/img/icons/AP.svg","assets/img/icons/B0.svg","assets/img/icons/BB.svg","assets/img/icons/BD.svg","assets/img/icons/C0.svg","assets/img/icons/D0.svg","assets/img/icons/DA.svg","assets/img/icons/HE.svg","assets/img/icons/HO.svg","assets/img/icons/HQ-icon.svg","assets/img/icons/PO.svg","assets/img/icons/Recurso 3.svg","assets/img/icons/Recurso 4.svg","assets/img/icons/activity.svg","assets/img/icons/app-store.svg","assets/img/icons/bars-white.svg","assets/img/icons/calendar-2.svg","assets/img/icons/calendar.svg","assets/img/icons/camion.svg","assets/img/icons/cart.svg","assets/img/icons/chat.svg","assets/img/icons/chatter.svg","assets/img/icons/chevron-right.svg","assets/img/icons/chevron-up.svg","assets/img/icons/circle-view-off.svg","assets/img/icons/circle-view-on.svg","assets/img/icons/coins.svg","assets/img/icons/cosentino-global-icon-c.svg","assets/img/icons/cross-black.svg","assets/img/icons/cross-white.svg","assets/img/icons/danger.svg","assets/img/icons/download.svg","assets/img/icons/ecosentino-white.svg","assets/img/icons/edit.svg","assets/img/icons/elaborated-white.svg","assets/img/icons/fav.svg","assets/img/icons/filter-black.svg","assets/img/icons/filters.svg","assets/img/icons/icon-catalog-download.svg","assets/img/icons/icon-catalog-info.svg","assets/img/icons/icon-catalog-shipping-truck.svg","assets/img/icons/icon-catalog-slabs.svg","assets/img/icons/icon-catalog-warning.svg","assets/img/icons/info.svg","assets/img/icons/landing-mngr.svg","assets/img/icons/login.svg","assets/img/cut-to-size/flooring.svg","assets/img/cut-to-size/skirting.svg","assets/img/cut-to-size/just-cut.svg","assets/img/cut-to-size/Soleria-v2.png","assets/img/cut-to-size/Rodapies-v2.png","assets/img/cut-to-size/solo-corte-v2.png","assets/img/cut-to-size/presupuesto_det.png","assets/img/cut-to-size/washbasin-bath.png","assets/img/logos/grip.svg","assets/img/logos/grip-plus.svg","assets/img/logos/hybriq.svg","assets/img/logos/nboost.svg","assets/img/logos/ukiyo.svg","assets/img/logos/optimma-logo.svg","assets/img/logos/silestone-xm.svg","assets/img/banners-v2/banner-tarificador.png","assets/img/banners-exclusive-promo-natural-stone/promo_natural_stone_catalog_v2.png","assets/video/outlet-offpacksmart.mp4","assets/video/outlet-digital-esp.mp4","assets/video/outlet-digital-en.mp4","assets/img/logos/custom-product-icon.svg","assets/img/banners-rockmaster/IT/wide.jpg","assets/img/banners-rockmaster/DE/wide.jpg","assets/img/banners-rockmaster/ES/wide.jpg","assets/img/banners-rockmaster/TR/wide.jpg","assets/img/banners-rockmaster/NO/wide.jpg","assets/img/banners-rockmaster/FI/wide.jpg","assets/img/banners-rockmaster/PT/wide.jpg","assets/img/banners-rockmaster/IT/squared.jpg","assets/img/banners-rockmaster/DE/squared.jpg","assets/img/banners-rockmaster/ES/squared.jpg","assets/img/banners-rockmaster/TR/squared.jpg","assets/img/banners-rockmaster/NO/squared.jpg","assets/img/banners-rockmaster/FI/squared.jpg","assets/img/banners-rockmaster/PT/squared.jpg","components/banners/banner-silestone-container/Silestone-Flash-Promo-Flyer-Canada.pdf","components/banners/banner-silestone-container/Silestone-Flash-Promo-Flyer-USA.pdf","assets/img/banners-hybriq/hybriq_1140x200.png","assets/img/banners-hybriq/hybriq_210x210.png","assets/img/banner-earthic/DA/wide.jpg","assets/img/banner-earthic/DA/squared.jpg","assets/img/banner-earthic/DE/wide.jpg","assets/img/banner-earthic/DE/squared.jpg","assets/img/banner-earthic/ES/wide.jpg","assets/img/banner-earthic/ES/squared.jpg","assets/img/banner-earthic/FI/wide.jpg","assets/img/banner-earthic/FI/squared.jpg","assets/img/banner-earthic/IT/wide.jpg","assets/img/banner-earthic/IT/squared.jpg","assets/img/banner-earthic/JP/wide.jpg","assets/img/banner-earthic/JP/squared.jpg","assets/img/banner-earthic/NL/wide.jpg","assets/img/banner-earthic/NL/squared.jpg","assets/img/banner-earthic/NO/wide.jpg","assets/img/banner-earthic/NO/squared.jpg","assets/img/banner-earthic/PT/wide.jpg","assets/img/banner-earthic/PT/squared.jpg","assets/img/banner-earthic/SE/wide.jpg","assets/img/banner-earthic/SE/squared.jpg","assets/img/banner-earthic/TR/wide.jpg","assets/img/banner-earthic/TR/squared.jpg","assets/img/banner-suma/DA/wide.jpg","assets/img/banner-suma/DA/squared.jpg","assets/img/banner-suma/DE/wide.jpg","assets/img/banner-suma/DE/squared.jpg","assets/img/banner-suma/ES/wide.jpg","assets/img/banner-suma/ES/squared.jpg","assets/img/banner-suma/FI/wide.jpg","assets/img/banner-suma/FI/squared.jpg","assets/img/banner-suma/IT/wide.jpg","assets/img/banner-suma/IT/squared.jpg","assets/img/banner-suma/JP/wide.jpg","assets/img/banner-suma/JP/squared.jpg","assets/img/banner-suma/NL/wide.jpg","assets/img/banner-suma/NL/squared.jpg","assets/img/banner-suma/NO/wide.jpg","assets/img/banner-suma/NO/squared.jpg","assets/img/banner-suma/PO/wide.jpg","assets/img/banner-suma/PO/squared.jpg","assets/img/banner-suma/PT/wide.jpg","assets/img/banner-suma/PT/squared.jpg","assets/img/banner-suma/SE/wide.jpg","assets/img/banner-suma/SE/squared.jpg","assets/img/banner-suma/TR/wide.jpg","assets/img/banner-suma/TR/squared.jpg","assets/img/banner-silestone-xm/logo-silestone-xm.svg","assets/img/banner-silestone-xm/logo-hybriq-mineral-inside.png","assets/img/banner-silestone-xm/silestone-xm-background-img.png","assets/img/banners-rockmaster/rock-master.png","assets/img/weights/truck.svg","assets/img/weights/container.svg","assets/img/banners-exclusive-promo-natural-stone/promo_natural_stone_v2.png","assets/img/favoritos.png","assets/img/cut-to-size/pre-order-banner.png","components/lot-image-viewer/LotImageViewer.js","assets/img/logos/mall-discount-bg-green.svg","assets/img/newsletter.jpg","assets/img/logos/brands/whatsapp-ecosentino-logo.svg","assets/img/pedidos_recurrentes.png","assets/img/promotions/promo-image-en.jpg","assets/img/promotions/promo-image-fr.jpg","assets/pdf/promotions/flyer-2011.pdf","assets/pdf/promotions/flyer-2032-en.pdf","assets/pdf/promotions/flyer-2032-fr.pdf","assets/img/promotions/promo-colors.jpg","assets/img/logos/brands/logo-silestone.jpg","assets/img/logos/brands/logo-dekton.jpg","assets/img/logos/brands/logo-dktn.jpg","assets/img/logos/brands/logo-sensa.jpg","assets/img/logos/brands/ecosentino-logo-negative.svg","assets/img/logos/something-went-wrong-icon.svg","assets/img/cut-to-size/Path-v2.png","assets/img/icons/logout.svg","assets/img/icons/mail.svg","assets/img/icons/money.svg","assets/img/icons/nexus.svg","assets/img/icons/platoducha-white.svg","assets/img/icons/play-store.svg","assets/img/icons/products/anchors.svg","assets/img/icons/products/caja.svg","assets/img/icons/products/fregadero.svg","assets/img/icons/products/gabinets.svg","assets/img/icons/products/lavabos.svg","assets/img/icons/products/libro.svg","assets/img/icons/products/merchandising.svg","assets/img/icons/products/mktools.svg","assets/img/icons/products/muestra.svg","assets/img/icons/products/news.svg","assets/img/icons/products/operaciones.svg","assets/img/icons/products/otros.svg","assets/img/icons/products/papeleria.svg","assets/img/icons/products/platoducha.svg","assets/img/icons/products/ppcc.svg","assets/img/icons/products/ppe.svg","assets/img/icons/products/productos-pro.svg","assets/img/icons/products/sales.svg","assets/img/icons/products/showroom.svg","assets/img/icons/products/signage.svg","assets/img/icons/products/supplies.svg","assets/img/icons/products/tables.svg","assets/img/icons/products/tags.svg","assets/img/icons/products/test-kit.svg","assets/img/icons/products/torre-expositor.svg","assets/img/icons/products/warehouse.svg","assets/img/icons/products/workwear.svg","assets/img/icons/profile.svg","assets/img/icons/rectangle-view-off.svg","assets/img/icons/rectangle-view-on.svg","assets/img/icons/search.svg","assets/img/icons/send.svg","assets/img/icons/sent.svg","assets/img/icons/slab.svg","assets/img/icons/star.svg","assets/img/icons/trash.svg","assets/img/icons/tresd-icon.svg","assets/img/icons/truck.svg","assets/img/icons/union.svg","assets/img/icons/A0.png","assets/img/icons/B0.png","assets/img/icons/BB.png","assets/img/icons/BD.png","assets/img/icons/C0.png","assets/img/icons/D0.png","assets/img/icons/E0.png","assets/img/icons/ecosentino-small.png","assets/img/icons/ecosentino.png","assets/img/icons/icon-dekton.png","assets/img/icons/icon-scalea.png","assets/img/icons/icon-sensa.png","assets/img/icons/icon-silestone.png","assets/img/icons/icon-table.png","assets/img/icons/products/mktools.png","assets/img/icons/sinks.png","store/infoEnv/reducers.js","store/crossSelling/reducers.js","store/error/reducers.js","store/lowes/reducers.js","store/floating-alerts/reducers.js","store/kpis/reducers.js","store/reservations/reducers.js","store/deliveries/reducers.js","store/delivery/reducers.js","store/direct-slab-access/reducers.js","store/suggestion/reducers.js","store/maintenance-mode/reducers.js","store/changelog/reducers.js","store/toast-notifications/reducers.js","store/loader/reducers.js","store/cut-to-size/reducers.js","components/global/Modal.js","components/catalog/FilterV2Box.js","components/catalog/FiltersV2.js","components/catalog/results/CircleResult.js","components/catalog/results/CircleResultContainer.js","components/global/InputNumberViewV2.js","components/global/InputNumber.js","components/global/AddFavourite.js","components/catalog/rectangleResult/displays/DisplayTechnology.js","components/catalog/rectangleResult/displays/DisplayBlackIndicator.js","components/catalog/ProductImage.js","components/catalog/banners/BannerResultV2.js","components/catalog/rectangleResult/RectangleResultV2UI.js","components/catalog/rectangleResult/contexts/logic/ProductLogic.js","components/catalog/rectangleResult/contexts/logic/MallProductLogic.js","components/catalog/rectangleResult/contexts/logic/BaseProductLogic.js","components/catalog/rectangleResult/displays/DisplayDiscontinued.js","components/catalog/rectangleResult/displays/DisplayNewIndicator.js","components/catalog/rectangleResult/displays/DisplayUpcomingIndicator.js","components/catalog/rectangleResult/displays/DisplayHomeDepotIndicator.js","components/catalog/rectangleResult/contexts/ProductIndicators.js","components/catalog/rectangleResult/displays/DisplaySoldOut.js","components/catalog/rectangleResult/contexts/MallProductIndicators.js","components/catalog/rectangleResult/displays/DisplayProductInfo.js","components/catalog/rectangleResult/displays/DisplayBrand.js","components/catalog/rectangleResult/displays/DisplayThickness.js","components/catalog/rectangleResult/displays/DisplayGroupDtails.js","components/catalog/rectangleResult/displays/DisplayDetail.js","components/catalog/rectangleResult/DetailsIkea.js","components/global/LengthMeasureTranslation.js","components/global/LengthMeasure.js","components/catalog/rectangleResult/displays/DisplayProductInfoTable.js","components/catalog/rectangleResult/displays/DisplayPriceMktools.js","components/catalog/rectangleResult/DetailsMktools.js","components/catalog/rectangleResult/displays/DisplayStock.js","components/catalog/rectangleResult/displays/DisplayPrice.js","components/catalog/rectangleResult/displays/DisplayPricePhase2.js","webpack:///./src/assets/img/icons/cosentino-global-icon-c.svg?9cc3","components/catalog/rectangleResult/displays/DisplayNaturalStoneOrigin.js","components/cart-line/indicators/NaturalStoneIndicator.js","components/catalog/rectangleResult/DetailsDefaultV2.js","components/catalog/rectangleResult/contexts/ProductDetails.js","components/catalog/rectangleResult/contexts/ProductContext.js","components/catalog/rectangleResult/RectangleResult.js","components/catalog/rectangleResult/RectangleResultContainer.js","components/catalog/results/SampleResult.js","components/catalog/results/SampleResultContainer.js","components/global/MoreInfo.js","components/global/OutletModal.js","components/catalog/LowesInfoText.js","components/global/SimpleModal.js","components/catalog/OutletInfoText.js","components/global/FormatCSVModal.js","webpack:///./src/assets/img/icons/icon-catalog-shipping-truck.svg?1ac3","webpack:///./src/assets/img/icons/icon-catalog-slabs.svg?d2ba","webpack:///./src/assets/img/icons/icon-catalog-download.svg?e55e","webpack:///./src/assets/img/icons/icon-catalog-info.svg?b4eb","webpack:///./src/assets/img/icons/icon-catalog-warning.svg?eed4","components/walkthroughs/styles/CustomStyles.js","components/walkthroughs/outlet-pn-from-other-centers/OutletPnFromOtherCentersWalkthrough.js","components/cart-line/indicators/CustomProductIndicator.js","components/catalog/results/ResultsV2.js","components/banners/banner-dekton/BannerDekton.js","components/banners/banner-rockmaster/BannerRockMaster.js","components/banners/banner-silestone-container/BannerSilestoneContainer.js","components/banners/banner-hybriq/BannerHybriq.js","components/banners/banner-earthic/BannerEarthic.js","components/banners/banner-suma/BannerSuma.js","components/banners/banner-silestone-xm/BannerSilestoneXM.js","components/banners/banner-rocket/BigBannerRocketV2.js","components/banners/banner-silestone-dekton-blackweek/BannerSilestoneDektonBlackWeek.js","components/catalog/Catalog.js","components/catalog/CatalogContainer.js","screens/CatalogScreen.js","components/catalog/rectangleResult/displays/DisplayLotId.js","components/global/ExtendedConfirmDialog.js","components/global/extendedConfirm.js","components/orders/new-order-history/Utils.js","components/cut-to-size/utils.js","assets/img/cut-to-size/quickShipIcon.svg","components/cut-to-size/configurable-baths/ModalConfigurationDetails.js","components/catalog/rectangleResult/displays/DisplayQuickShipIndicator.js","components/cart-line/CartLine.js","components/cart-line/CartLineContainer.js","components/incentives/MallIncentivesContainer.js","components/checkout/CartSummary.js","components/checkout/CartSummaryContainer.js","components/checkout/global/GroupInputVoucherV2.js","components/order-finished/OrderFinished.js","components/order-finished/OrderFinishedContainer.js","components/checkout/global/CheckboxLinkSaleConditions.js","components/checkout/global/CheckboxLinkHealthConditions.js","components/checkout/global/ModalLinkHealthConditions.js","components/checkout/global/CheckboxAustraliaLegalProcessConditions.js","components/checkout/SelectVirtualVisitComponent.js","components/checkout/customer/CheckoutFormCustomerV2.js","components/checkout/customer/CheckoutFormCustomerContainer.js","components/checkout/SlaDateSelectV2.js","components/checkout/mktools/CheckoutFormMktoolsV2.js","components/checkout/mktools/CheckoutFormMktoolsContainer.js","components/checkout/ikea/CheckoutFormIkeaV2.js","components/checkout/ikea/CheckoutFormIkeaContainer.js","components/checkout/lowes/CheckoutFormLowesV2.js","components/checkout/lowes/CheckoutFormLowesContainer.js","components/products/ProductsSlider.js","components/products/DiscoverProductsContainer.js","components/products/CartBoughtToguetherContainer.js","components/products/CartOtherProductsContainer.js","components/banners/banner-rocket/SmallBannerRocketV2.js","components/weights/ProgressBarWeights.js","components/weights/Weights.js","components/weights/WeightsContainer.js","components/global/QuickGuides.js","components/checkout/CheckoutV2.js","screens/CheckoutScreen.js","components/shipping-method-selector/ShippingMethods.js","components/shipping-method-selector/ShippingMethodsContainer.js","components/global/ProgressBar.js","components/incentives/IncentivesMktools.js","components/incentives/IncentivesWeights.js","components/incentives/Incentives.js","components/incentives/IncentivesContainer.js","screens/CartSummaryScreen.js","components/product-detail/SimilarProducts.js","components/alerts/Error.js","components/global/GoBack.js","components/FiltersProduct.js","components/global/LazyImage.js","components/product-detail/ProductCarouselV2.js","components/products/RelatedProductsContainer.js","components/product-detail/ProductInfoTabs.js","components/products/ProductsSimilarColorsContainer.js","components/product-detail/ProductCardV2.js","components/product-detail/ProductCardLogic.js","components/product-detail/ProductCardContainer.js","screens/ProductDetailScreen.js","components/unassigned-reservations/AssignCustomer.js","components/orders/PackingList.js","components/orders/Timeline.js","components/orders/OrderHeader.js","components/cart-line/LineSegmentation.js","components/orders/OrderFullMobile.js","components/orders/OrderDetailsTableV2.js","components/profile/ProfileNavBar.js","components/profile/ProfileMenu.js","components/profile/ProfileContainer.js","components/orders/OrderDetailsV2.js","components/orders/OrderDetailsContainer.js","components/unassigned-reservations/Reservations.js","components/unassigned-reservations/ReservationsContainer.js","screens/ReservationsScreen.js","store/kpis/actions.js","components/kpis/KpisFilters.js","components/kpis/Kpis.js","screens/KpisScreen.js","components/kpis/KpiDetail/KpiBody/BackOrders.js","components/kpis/KpiDetail/KpiDetailModal.js","components/kpis/KpiDetail/KpiHeader/KpiTabButton.js","components/kpis/KpiDetail/KpiHeader/KpiHeader.js","components/kpis/KpiDetail/KpiBody/OpenOrders.js","screens/KpiDetailScreen.js","components/products/LastBoughtProductsContainer.js","store/changelog/actions.js","components/changelog/ChangeLogHomeNews.js","components/header/MenuLinksV2.js","components/header/MenuContainer.js","components/products/ProductsForYouContainer.js","components/global/Countdown.js","components/products/MallPreviewContainer.js","components/home/HomeV2.js","components/home/HomeContainer.js","screens/HomeScreen.js","components/lots/LotsFilter.js","components/lots/LotTableRow.js","components/lots/LotGridCell.js","components/lots/LotComponent.js","components/lots/LotsTable.js","components/lots/LotsGrid.js","components/alerts/CloseableAlerts.js","components/lots/LotsList.js","components/lots/LotsHeader.js","components/lots/Lots.js","components/lots/LotsContainer.js","screens/LotsScreen.js","components/orders/OrderStatus.js","components/orders/IkeaOrderStatus.js","components/orders/OldOrders.js","assets/img/order-history/order-history.svg","assets/img/order-history/shipping-truck.svg","components/orders/new-order-history/NavigationTabs.js","components/orders/new-order-history/Enums/OrderLineStatus.js","components/orders/new-order-history/order/NewOrderCardItem.js","components/orders/new-order-history/order/NewOrderCard.js","components/orders/new-order-history/GoBackButton.js","components/orders/new-order-history/order/OrdersHistoryFilter.js","components/global/Filters/FilterButton.js","components/global/Filters/CustomFilter.js","components/global/Filters/FiltersRow.js","components/global/Filters/FiltersModal.js","components/global/Filters/FilterTag.js","components/global/Filters/FilterTags.js","components/global/SearchInput.js","components/walkthroughs/order/OrderWalkthrough.js","components/orders/new-order-history/order/NewOrderHistory.js","components/orders/new-order-history/order/NewOrderHistoryContainer.js","components/orders/OrdersSelector.js","components/orders/OrdersContainer.js","store/cut-to-size/api.js","store/cut-to-size/actions.js","components/orders/OrderTransfersStatus.js","components/orders/PreOrdersCtsFilters.js","components/orders/PreOrdersCts.js","components/orders/PreOrdersCtsContainer.js","components/profile/ProfileConfigurationEmails.js","components/profile/ProfileConfigurationPromotionEmails.js","components/alerts/AlertsContainer.js","components/login-modal/CreateAccountForm.js","components/login-modal/AddAccountCenterForm.js","components/profile/ProfileConfiguration.js","components/profile/ProfileConfigurationContainer.js","components/direct-slab-access/DirectSlabAccessForm.js","components/direct-slab-access/DirectSlabAccess.js","components/direct-slab-access/DirectSlabAccessContainer.js","store/direct-slab-access/actions.js","components/products-favourite/ProductsFavourite.js","components/products-favourite/ProductFavouriteContainer.js","components/recurring-orders/RecurringOrderDetails.js","components/centers/CentersV2.js","components/centers/CentersContainer.js","components/cart-line/LineSegmentationRecurring.js","components/recurring-orders/RecurringOrders.js","components/recurring-orders/RecurringOrdersContainer.js","components/segmentation/BusinessSegment.js","components/segmentation/Channel.js","components/segmentation/Typology.js","components/segmentation/Use.js","components/segmentation/SubChannel.js","components/segmentation/KB.js","components/segmentation/Builders.js","components/segmentation/Segmentation.js","components/segmentation/SegmentationForm.js","components/segmentation/SegmentationConfiguration.js","components/segmentation/SegmentationSelector.js","components/segmentation/SegmentationContainer.js","components/segmentation/ProfileSegmentation.js","components/orders/Transfers.js","components/orders/TransfersContainer.js","components/alerts/ErrorContainer.js","screens/Error404Screen.js","components/catalog-lowes/LowesReports.js","components/orders/LowesOrders.js","components/profile/ProfileLowesConfiguration.js","components/profile/ProfileLowesConfigurationContainer.js","components/global/history.js","components/cut-to-size/ElaborationDetails.js","store/toast-notifications/actions.js","components/cut-to-size/CutToSizeFormPreOrder.js","components/orders/PreOrdersCtsDetails.js","components/orders/PreOrdersCtsDetailsContainer.js","components/orders/PackingListView.js","components/orders/OfferOverview.js","components/orders/OfferStatusHistory.js","assets/img/order-history/print-icon.svg","components/orders/OfferStatusHistoryContainer.js","components/promotions/discounts/ReactTablePaginationCount.js","components/orders/new-order-history/order/NewOrderDetailsEditMode.js","components/orders/new-order-history/Enums/OrderStatus.js","components/walkthroughs/order/OrderDetailsWalkthrough.js","components/orders/new-order-history/order/NewOrderDetails.js","components/orders/new-order-history/order/NewOrderDetailsContainer.js","components/orders/new-order-history/shipping/NewShippingCardItem.js","components/orders/new-order-history/Enums/DeliveryStatus.js","components/orders/new-order-history/shipping/NewShippingCard.js","components/orders/new-order-history/shipping/ShippingHistoryFilter.js","components/walkthroughs/shipping/ShippingWalkthrough.js","components/orders/new-order-history/shipping/NewShippingHistory.js","components/orders/new-order-history/shipping/NewShippingHistoryContainer.js","store/deliveries/actions.js","components/orders/new-order-history/shipping/NewShippingDetails.js","components/orders/new-order-history/shipping/NewShippingDetailsContainer.js","store/delivery/actions.js","screens/ProfileScreen.js","components/lot-image-viewer/LotImageViewerContainer.js","components/login-modal/CosentinoSingleSignOn.js","components/global/InfoBox.js","components/login-modal/SignInForm.js","components/login-modal/ForgotPasswordForm.js","components/login-modal/MandatoryChangePasswordForm.js","components/login-modal/LoginModal.js","components/login-modal/LoginModalContainer.js","components/global/LengthLotMeasure.js","components/global/WidthLotMeasure.js","components/global/QtyLotMeasure.js","components/bundle/BundleContent.js","components/bundle/BundleContentContainer.js","components/segmentation/SegmentationModal.js","components/global/AppObsolete.js","components/alerts/FloatingAlertContainer.js","store/floating-alerts/actions.js","components/global/ModalFormattedMessage.js","components/login-modal/BigAccountModal.js","components/global/IkeaModalEmployeeId.js","components/catalog/modals/DektonGripModal.js","components/login-modal/AskForEmailModal.js","components/global/IncompatibleTypesExceptionModal.js","components/catalog/modals/EmailPromotionsModal.js","components/catalog/WhatsappOptin.js","components/global/InfoModal.js","components/global/ThankYouSubscribeModal.js","components/advertisements/AdvertisementModal.js","components/catalog/modals/PedidosRecurrentesModal.js","components/layout/GlobalModals.js","screens/LotImageViewerScreen.js","components/promotions/Promotions.js","components/promotions/PromotionsContainer.js","screens/PromotionsScreen.js","components/landing-manager/components/ActionsCell.js","components/landing-manager/LandingManager.js","store/loader/actions.js","components/landing-manager/LandingManagerContainer.js","screens/LandingManagerScreen.js","components/landing-manager/components/SortableItemUI.js","components/landing-manager/components/LotsModal.js","components/landing-manager/components/AdditionalInfoModal.js","components/landing-manager/LandingCreation.js","components/landing-manager/LandingCreationContainer.js","screens/LandingCreationScreen.js","components/landing-templates/components/SliderItem.js","components/landing-templates/components/MallSlider.js","components/landing-templates/components/AddToCartModalItem.js","components/landing-templates/components/BannerImage.js","components/landing-templates/components/ImpersonateBar.js","store/impersonate/actions.js","components/landing-templates/components/ProductItem.js","components/landing-templates/components/MallImageViewer.js","components/landing-templates/LandingTemplates_1.js","components/landing-templates/LandingTemplates.js","components/landing-templates/LandingTemplatesContainer.js","screens/LandingTemplatesScreen.js","components/promotions/I18nPromotionModal.js","components/promotions/StepsBar.js","components/promotions/BannerPicker.js","components/promotions/BannerPickerContainer.js","components/promotions/steps/ChooseBanner.js","components/promotions/steps/ChooseCustomers.js","components/promotions/steps/ChooseArea.js","components/promotions/materialSearch/Results.js","components/promotions/materialSearch/StockResult.js","components/promotions/materialSearch/StockResultContainer.js","components/promotions/materialSearch/ListResult.js","components/promotions/materialSearch/ListResultContainer.js","components/promotions/materialSearch/TableListResult.js","components/global/TypeMaps.js","components/promotions/materialSearch/MaterialsList.js","components/promotions/materialSearch/MaterialsListContainer.js","components/promotions/steps/ChooseMaterials.js","components/promotions/steps/ChooseTemplate.js","components/promotions/steps/ChooseDiscounts.js","components/promotions/PromotionAdmin.js","components/promotions/PromotionAdminContainer.js","screens/PromotionAdminScreen.js","components/catalog/rectangleResult/DetailsDefault.js","components/catalog/rectangleResult/displays/DisplayBrandLogo.js","components/catalog/rectangleResult/DetailsLandingDefault.js","components/promotions/template/ProductLandingOne.js","components/promotions/template/LandingOne.js","components/catalog/rectangleResult/DetailsDefaultV2TemporalFix.js","components/promotions/template/ProductLandingTwo.js","components/promotions/template/LandingTwo.js","components/promotions/LandingPromotions.js","components/promotions/LandingPromotionsContainer.js","screens/LandingPromotionsScreen.js","components/suggestion/Suggestion.js","components/suggestion/SuggestionContainer.js","store/suggestion/actions.js","screens/SuggestionScreen.js","components/changelog/ChangeLog.js","screens/ChangeLogScreen.js","components/mkt-admin/MktProductsMax.js","components/mkt-admin/MktProductsMaxContainer.js","screens/MktAdminProductsScreen.js","components/alerts/Maintenance.js","components/alerts/MaintenanceContainer.js","screens/MaintenanceScreen.js","components/header/ResponsiveMenu.js","components/header/ResponsiveMenuContainer.js","components/mini-cart/MiniCartSummary.js","components/checkout/global/GroupInputVoucher.js","components/mini-cart/MiniCart.js","components/mini-cart/MiniCartContainer.js","components/header/impersonate/ImpersonateModal.js","components/header/impersonate/ImpersonateContainer.js","components/profile-modal/ProfileModal.js","components/profile-modal/ProfileModalContainer.js","components/global/TipModal.js","components/cart-line/SimpleCartLine.js","components/global/MultiProductDisplayName.js","components/catalog/rectangleResult/SimpleDetailsDefault.js","components/catalog/rectangleResult/SingleRectangleResult.js","components/cross-selling/CrossSellingModal.js","components/header/IconButtons.js","components/header/IconButtonsContainer.js","components/language-selector/LanguageSelector.js","components/global/SelectShippingAddress.js","components/global/AssignCenterInfoModal.js","components/global/ConfirmDialogIkeaCenter.js","components/global/confirmIkeaCenter.js","components/centers/IkeaShippingAddress.js","components/centers/IkeaShippingAddressContainer.js","components/header/TopRibbonV2.js","components/catalog-lowes/LowesAdminViewSelector.js","components/catalog-lowes/LowesViewSelector.js","components/header/HeaderV2.js","components/header/HeaderContainer.js","store/infoEnv/actions.js","components/products/RecentlyVisitedProductsContainer.js","components/global/DeveloperBar.js","components/footer/FooterV2.js","components/footer/TinyFooter.js","components/layout/Layout.js","components/cut-to-size/ElaborationType.js","components/cut-to-size/ElaborationTypeSelector.js","components/cut-to-size/ColorOptions.js","components/cut-to-size/CalculateFromOptions.js","components/cut-to-size/CutToSizeFormBudget.js","components/global/CalculateMeasure.js","components/cut-to-size/ModelOptions.js","components/cut-to-size/CutToSizeFormFurniture.js","components/cut-to-size/CutToSizeFormDefault.js","webpack:///./src/assets/img/icons/tresd-icon.svg?a970","components/cut-to-size/configurable-baths/ConfigBathCard.js","components/cut-to-size/configurable-baths/CatalogFilters.js","components/cut-to-size/configurable-baths/ConfigurableBathsCatalog.js","components/cut-to-size/CutToSize.js","screens/CutToSizeScreen.js","screens/CatalogLowesScreen.js","store/lowes/actions.js","components/catalog-lowes/LowesUsers.js","components/global/ColorSelector.js","components/catalog-lowes/CatalogLowesAdmin.js","components/catalog-lowes/CatalogLowesAdminContainer.js","screens/CatalogLowesAdminScreen.js","components/catalog-lowes/LowesRegister.js","components/catalog-lowes/LowesNewUserRegister.js","components/login-modal/RedirectSSO.js","screens/RedirectSSOScreen.js","components/deviated-admin/DeviatedAdmin.js","components/deviated-admin/DeviatedAdminContainer.js","screens/DeviatedAdminScreen.js","components/login-modal/RedirectJT.js","screens/RedirectJTScreen.js","components/login-modal/OldLogin.js","components/login-modal/OldLoginContainer.js","screens/OldLoginScreen.js","components/mkt-admin/MktAdminColors.js","components/mkt-admin/MktAdminColorsContainer.js","screens/MktAdminColorsScreen.js","components/global/CookiePolicy.js","components/global/PrivacyPolicy.js","components/promotions/discounts/DiscountStateLabel.js","components/promotions/discounts/CustomersTable.js","components/promotions/discounts/MaterialsTable.js","components/promotions/discounts/ApproveDiscount.js","components/promotions/discounts/DenyDiscount.js","components/promotions/discounts/CampaignInfo.js","components/promotions/discounts/ApplyDiscountsModal.js","components/promotions/PromotionsListContainer.js","screens/PromotionsListScreen.js","components/global/UnsubscribeContainer.js","screens/UnsubscribeScreen.js","PageViewRouteComponent.js","components/cut-to-size/configurable-baths/ConfigurableCutToSize.js","screens/ConfigCutToSizeScreen.js","components/cut-to-size/configurable-baths/ConfigCutToSizePlanAcceptance.js","screens/ConfigCutToSizePlanAcceptanceScreen.js","routes.js","i18n/index.js","index.js","components/add2cart-success/Add2CartSuccess.js","components/add2cart-success/Add2CartSuccessContainer.js"],"names":["Translation","props","Object","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","this","_super","call","_this","react__WEBPACK_IMPORTED_MODULE_5___default","a","createElement","Fragment","translateMode","className","style","margin","cursor","color","textShadow","onClick","e","preventDefault","stopPropagation","openModalTranslation","id","defaultMessage","intl","formatMessage","values","React","Component","injectIntl","connect","state","getTranslateMode","dispatch","idTranslation","defaultMessageTranslation","type","initState","selectedCenter","selectedCenterPreferences","productsByType","slab","sink","complementary","washbasin","shower","flooring","baths","selectedShippingMethod","centers","remembered","animateChangeCenter","mktoolsShippingCenter","pricesGroup","getIsEndiCenter","center","getCenterData","shippingTypes","includes","getCenters","getSelectedCenter","getShippingMethod","arguments","length","undefined","isShippingTypeContainerWhenIreland","getIsMkToolsCenter","weightSelector","getSalesOrg","getShippingMethodWithoutWeights","find","centerId","hasIncentives","getPromoBanners","default","banner","bannerHome","subBanner","catalogBanner","bannerCatalog","catalogBannerMobile","homeBannerMobile","pdfLink","flyerPromo","hasPromotionLandingActivated","promotions","promotionsByCenter","Array","isArray","hasPromoActivated","moment","Date","shippingTypePromo","getUserName","filter","shippingType","productIsInPromo","product","promo","salesOrg","getHasMinWeight","hasMinWeight","getCenterName","name","canOnlyViewOutlet","user","access","canViewCatalog","getIsIkeaCenter","canBuyMktools","canViewMktools","canViewOutlet","canViewPromotions","canViewBaths","canBuyCatalog","canBuy","canViewCart","getNeedsSegmentation","getShowroomCenterId","getWarehoseCenterId","getDRIUSACenterId","getIKEACenterId","getCenterDataOf","getSelectedCenterPreferences","getIsRemembered","getIsMktoolsUsaCenter","login","username","getIKEACanariasCenterId","isBetweenCenters","getCenterMktool","getCenterShowroom","getCenterWarehose","getAnimateChangeCenter","getIsLowesCenter","getLowesCenterId","isEuropeOrIberia","toString","isUsaOrCanada","usaCanadaSalesOrg","getUsaCanadaSalesOrg","canViewAllLots","canOffer","isAustralianCenter","getAustraliaCenters","isUserAustralianCenter","getUserCenter","isAustraliaSalesOrg","australiaSalesOrg","getAustraliaSalesOrg","isNoSilestoneCenter","getNoSilestoneCenters","getMktoolsShippingCenter","getShippingAddressesCenters","getIsMktoolsShippingCenterSelected","getMktoolsBudget","mktoolsBudget","getMktoolsBudgetWasted","mktoolsBudgetWasted","getPricesGroup","getCoin","coin","canViewNewTracking","canViewNewOrders","getIsVirtualVisitEnabled","getCanViewImageByLot","imageLotAvailable","isOptionalBuilderProjectCenter","_step","optionalSalesOrg","concat","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__","getOptionalBuilderProjectsSalesOrg","_iterator","_createForOfIteratorHelper","s","n","done","value","err","f","isDisabledPreferedDeliveryDatePicker","hasSingleSlabAvailableInSelectedCenter","isOnlyUsaSalesOrg","usaSalesOrg","getOnlyUsaSalesOrg","userSalesOrg","getIrelandSalesOrg","getHQCenterId","getNaturalStoneSpainCenterId","getFregaderosCenterId","getLatinaVitoriaCenterId","getLatinaDepot","getHUBSydneyCenterId","getHUBHoustonCenterId","getHUBNorfolkCenterId","isLatinaVitoria","getSpainCenters","isMexico","action","assign","decoded","jwtDecode","token","shippingMethod","centerPreferences","PromotionRocketCustomersDataUSA5Percent","PromotionRocketCustomersDataUSA10Percent","isLogged","email","emailAAD","showModal","showSSOModal","showJTModal","alert","status","impersonatedBy","userType","clientType","specialNames","userPriceList","priceList","lowes","shippingAddresses","shippingAddressesCenters","seenOutletModal","sapId","lowesStoreDataIsLoading","lowesStoreData","multicart","showPricesDisclaimer","userCenter","mandatoryChangePasswordOldPassword","mandatoryChangePassword","allProductsDiscounts","userAuthorized","showAskForEmailModal","isCampaignAdmin","showBannerComments","aiRecommendations","dataFromSalesforce","emailUsedToLogin","isDistributor","hasWalkthrough","getToken","getUserAuthorization","authorized","showModalSelector","showRedirectSSOModal","showRedirectJTModal","getIsLogging","ui","isLogging","getIsLogged","getIsAdmin","getUserType","getTypeClient","typeClient","getTestAB","getAlert","getStatus","getName","getEmail","getUserImage","userimage","getImpersonatedBy","getLoginCallback","callback","getCallbackCenter","callbackCenter","getCallbackSalesOrg","callbackSalesOrg","getSpecialNames","getHaveUserSeenOutletModal","getIsMktoolsAdmin","getIsMallAdmin","getIsMallPilotUser","getIsCampaignsPilotUser","getIsShowBannerComments","getIsCampaignsPricingUser","getIsDeviatedAdmin","getIsMagazineMk","getSapId","getIsLowesAdmin","getLowesStoreData","getUserPriceList","getPriceList","getPriceListAtSelectedCenter","getMulticartEnabled","getVirtualVisitURL","sfLang","getLanguageSF","emails","getProfileConfigurationEmails","process","getCommonParams","commonParams","userId","idCenter","idCustomer","idioma","getLanguage","window","idSupplierCenter","crossType","hasAiRecommendations","getMandatoryChangePasswordUsername","mandatoryChangePasswordUsername","getMandatoryChangePasswordOldPassword","getShowAskForEmailModal","isEmserUser","canViewCutToSize","centerData","canViewPreorder","canViewFurniture","canViewConfigurableBath","getNaturalStoneViewingPermissions","canViewHQ","isUserDistributor","channel11","getShippingAddresses","shippingAddress","channel","channel10","canViewNaturalStoneFromHQInOtherCenters","canViewBrazil","canViewCrosselling","getDataFromSalesforce","getEmailUsedToLogin","canViewRocketPromotion","padStart","canViewRockMasterPromotion","getHasWalkthrough","walkthroughType","walkthrough","isSpanishSalesOrg","canViewEarthicPromotion","canViewHybriqPromotion","canViewSilestonePromotionXM","canViewSumaPromotion","canViewSilestoneContainerPromotion","nowEST","utc","clone","subtract","isAfter","LOCATION_CHANGE","payload","statusText","accountCreated","aiRecomendations","dataFromSalesForce","objectSpread","tokenDecoded","simpleAccess","oldPassword","discounts","response","react__WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","react__WEBPACK_IMPORTED_MODULE_0___default","Button","title","iconCssClasses","cssClasses","datacy","gtmLabel","gtmUsertype","dataQas","inverted","gentle","danger","inline","noborder","size","customClass","disabled","hidden","display","far","fal","redIcon","greenIcon","offers","icon","backgroundColor","data-cy","data-tip","data-toggle","data-qas","gtm-label","gtm-usertype","iconEnd","children","showMenu","showPersonalData","showProfileModal","showSegmentationModal","showDektonGripModal","showLanguageModal","showEmailPromotionsModal","showWhatsappModal","showNewVersionModal","showPedidosRecurrentesModal","showAdd2CartSuccessModal","maintenanceScheduled","maintenanceScheduledText","maintenanceScheduledTextSpanish","language","bundle","lots","mode","country","showBannerOldVersion","hideAllBannerCatalog","availableLands","code","localecode","langName","dir","currentUrl","isObsolete","showIkeaModalEmployeeId","showBigAccountModal","canViewThresholdMax","showInsertTranslation","isComingFromMall","isComingFromCampaign","showThankYouSubscribeModal","inProductDetailScreen","checkoutStep","isShippingHistoryScreen","currentLocation","pageType","section","subtype","isWalkthroughWatched","showSilestoneXMModal","isXeronBrandVisible","isSilestoneBrandVisible","showMenuSelector","showPersonalDataSelector","showLanguageSelector","showingProfileModal","showingEmailPromotionsModal","showingWhatsappModal","showingNewVersionModal","showingPedidosRecurrentesModal","showingSegmentationModal","showingDektonGripModal","showingAdd2CartSuccessModal","showBundleContent","showingAnyModal","showing","impersonate","cart","getUICallback","getLocalizedUrl","routeId","getLanguageDir","lang","getLanguageToFetchZ2","getMode","getCountry","getAvailableLands","getCurrentUrl","getIsObsolete","getBundleContent","getOriginalBundle","getShowIkeaModalEmployeeId","getShowBigAccountModal","getMaintenanceScheduled","getMaintenanceScheduledText","getShowSaleConditions","getShowHealthConditions","getShowInsertTranslation","getIdTranslation","getDefaultMessageTranslation","getHideAllBannerCatalog","getCheckoutStep","getShowThankYouSubscribeModal","getIsOrderHistoryScreen","isOrderHistoryScreen","getIsShippingHistoryScreen","getCurrentLocation","getWalkthroughWatched","getShowCheckboxAustraliaLegalProcess","getIsXeronBrandVisible","getIsSilestoneBrandVisible","getIsConfigurableBathEditScreen","isConfigurableBathEditScreen","getIsConfigurablePlanAcceptanceScreen","isConfigurablePlanAcceptanceScreen","getLinkTechnicalDektonGrip","link","getLinkMaintenanceDektonGrip","pathname","location","search","step","locale","landIsoCode","maintenance","open","subsection","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__","dayjs","extend","timezone","ApiLocation","axios","defaults","headers","common","password","loginData","post","mallCheckLogin","get","Authorization","loginSSO","loginJT","loginAD","azureToken","loginShops","fetchInfoUserLowes","recoverPassword","createAccount","addEmailCenter","data","userAdmin","sendFeedback","score","comments","hasFeedback","impersonateData","getCart","storeId","employeeId","cartKey","genericAddCartLine","productId","qty","lotId","bundleId","segmentation","extra","cutToSize","supplierCenterId","position","formData","FormData","segmentationEvidences","uploadedFiles","forEach","file","append","JSON","stringify","purchaseOrders","files","fileValues","entries","_ref","_ref2","slicedToArray","key","push","addCartBulkLots","selectedLots","l","quantity","changeCartLineSegmentation","lineId","newSegmentation","patch","changeCartLineQty","newQty","body","checkLinesPrice","voucher","checkPricePhase2ByProduct","outletType","changeCartLineComment","comment","removeCartLine","delete","emptyCart","submitCheckout","checkoutData","Content-Type","fetchSegmentation","fetchProductById","fetchSimilarProduct","colorId","fetchCrossSelling","fetchCrossSellingCheckOut","productIds","fetchCartSimilarProducts","quantities","fetchCartComplementaryProducts","fetchCartCrossSelling","fetchAlternatives","fetchMallProducts","landingId","centerIds","portfolioMode","params","fetchLastProductsBought","fetchProductsForYou","error","console","log","fetchProductsSimilarColors","possibleScaleaToSensa","transformScaleaToSensa","lineIds","transformSkuToLots","fetchLot","fetchLots","quarryBlock","shade","quality","outlet","filters","filtersQuery","join","fetchLotsImages","lotIds","fetchUsersToImpersonate","fetchUsersToImpersonateByCenter","fetchKpis","fetchKpisOpenOrders","page","fetchKpisBackOrders","fetchShippingAddresses","fetchDeliveryDetails","deliveryId","fetchReservations","unassigned","fetchCustomers","rejectReservation","reservationId","assignCustomer","shippingAddressId","preferredDeliveryDate","po","shippingAddressData","fetchSpecialNames","fetchUserPriceList","fetchRefreshUserPriceList","fetchUserPriceListByUser","fetchTransferOrders","fetchOrders","startDate","endDate","filterTypeDate","supplierCenter","fetchOrdersPaginate","fetchOrderDeliveriesPaginate","fetchOrderDeliveriesById","fetchOffers","fetchOrderToEdit","saveOrderToEdit","order","orderId","modifications","put","fetchOrderDetails","fetchPackingList","fetchOfferOverview","rejectOrder","getFileByUrl","url","responseType","fetchRecurringOrders","dateFrom","dateTo","URLSearchParams","fetchRecurringOrdersDetails","previousCartId","add2cartRecurringOrders","add2cartRecurringOrdersQty","lines","fetchDirectSlabAccess","invoiceId","saveProfileConfiguration","profileConfigData","selectedCenterId","setUserEmailAAD","changePassword","savePromotionConfiguration","submitWhatsappOptin","unsubscribeNewsletter","tokenOnlyLogin","resubscribeNewsletter","fetchPromotionConfiguration","fetchWhatsappConfiguration","currentPassword","newPassword","fetchProfileConfiguration","fetchCenterPreferences","deleteSegmentationPreferred","currentFavourite","segmentationData","saveSegmentationPreferred","fetchColorsCutToSize","brand","fetchSamplesCutToSize","Promise","resolve","hardcode","fetchFurnituresCutToSize","fetchColorsMktoolsAttr","saveColorsMktoolsAttr","colors","fetchProductsFavourite","fetchProductsDiscounts","addProductsFavourite","products","removeProductsFavourite","sendSuggestion","fetchBrochuresLowes","brochures","fetchMarkets","X-Timezone","tz","guess","fetchCountries","fetchCenters","fetchLangs","fetchTemplates","fetchLandings","fetchUserLandings","fetchLandingsQuery","query","search_string","skip","limit","fetchLanding","createLanding","landing","method","createLandingTranslated","updateLanding","updateLandingTranslated","fetchLandingbyId","iso","getLandingSlug","getLandingBySlug","slug","getPreviewLandingBySlug","getMallLots","landingCommonId","landingProductId","deleteLanding","deleteLandingImage","fetchProductsLowes","sendCheckoutLowes","idConfirmation","saveTemplateLowes","template","plan","samples","stores","screenshot","updateTemplateLowes","deleteTemplateLowes","templateId","enableTemplateLowes","disableTemplateLowes","editTemplateName","updateStore","templatesId","plans","fetchUsersShopperLowes","fetchTemplatesLowes","askLocation","fetchMaintenance","sendFormRegister","pass","reject","setTimeout","msg","sendFormNewRegister","lastName","storeNumber","saveProductsMktToMax","fetchProductsMktToMax","fetchProductsDeviatedAdmin","saveProductsDeviatedAdmin","descriptions","fetchDeviatedDescriptions","fetchAllLowesOrders","fetchAllLowesLinesOrders","pageSize","fetchLowesOrderDetails","sendTranslation","termId","translation","transJson","term","content","encodeURIComponent","getTranslation","data2","fetchInfoEnv","fetchChangelogByProject","onlyNews","checkVoucher","removeVoucher","noShowMoreSubscribeModal","noShowMoreWhatsappModal","getPromotionByCenterId","sendTemplatesSelected","getPromotionsList","perPage","getPromotionToEdit","promotionId","fetchCustomersOfArea","market","countries","sendCustomersSelected","customers","sendMaterialsSelected","materials","materialsWithOutletSelected","sendMaterialsToRequestDiscount","getBanners","pageSelected","getPromotionData","sendPreviewPromotionEmail","userSelected","enablePromotion","disablePromotion","getAllProductOfTheLastQueryMultiCenterByUser","getIsCampaignAdmin","errorHandler","dispatchPushURL","localStorage","clear","logout","getState","setError","sendPromotionHeader","uploadPromotionFile","sendBanners","promotionFetchMarkets","promotionFetchCountries","promotionFetchCenters","sendPromotionArea","rejectQuote","acceptQuote","fetchAdvertisements","getDataToResolveDiscount","fetchDiscountMaterialsData","fetchDiscountCustomersData","checkPromotionDiscount","vistexId","sendApproveCampaignDiscount","vistex_ids","sendDenyCampaignDiscount","reason","sendClonePromotion","downloadImage","then","FileDownload","fetchPackagingImages","fetchLastVisitedProducts","fetchBoughtTogetherProducts","postVisitedProduct","sendWalkthrough","noShowMore","no_show_more","fetchHasWalkthrough","setLinesSlaDate","selectedShippingAddrId","selectedShippingCenterId","shippingCenterId","changeCartLineCutToSize","fetchVirtualVisitSalesforceId","react_router_dom__WEBPACK_IMPORTED_MODULE_1__","react_intl__WEBPACK_IMPORTED_MODULE_2__","react_redux__WEBPACK_IMPORTED_MODULE_3__","_store_ui_reducers__WEBPACK_IMPORTED_MODULE_4__","react_router_dom__WEBPACK_IMPORTED_MODULE_5__","defineMessages","ABU","description","AN1","AN2","ANC","AND","ANT","APO","AW","BOM","BRU","BU","CAR","CAS","CEM","CEP","CMB","CO","CODIGO","CONTAINER","ENDI_CONTAINER","CPV","DIRECT_TRUCK","SEND_PROMOTION_HEADER_SUCCESS","SEND_PROMOTION_CENTERS_SUCCESS","SEND_CUSTOMERS_SELECTED_SUCCESS","SEND_MATERIALS_SELECTED_SUCCESS","SEND_TEMPLATES_SELECTED_SUCCESS","SEND_BANNERS_SUCCESS","REQUESTED_CAMPAIGN_DISCOUNT","NOT_REQUESTED_CAMPAIGN_DISCOUNT","ENDI_TRUCK","DOA","DOL","DOS","DOV","DSL","ENA","ENV","ESC","FH","FLA","FLC","DOE","ROU","FULL_TRUCK","GC2","HD","HI","HP","IN","KB","LEA","LES","LW","M1","M2","M3","MAL","MAT","MIR","NA","NAC","NAT","NOT","OCE","PI","LIN","QUA","PR","PS","PUA","PUC","PUL","PULMAL","PUN","RD","DA","HE","RE","RUG","SAT","SIN","SINGLE_SLAB","SLE","SNB","SR","SUE","TEX","TOC","VEL","VOL","ZM","EMP","SOF","GRV","descreiption","MTT","CUSTOMER_REQUIRED","SELECT","ABRASIVO","COLORDEK","DIAMANTADO","HERRAMIENTA","JUNTAX","MANTENIMIENTO","MASTIDEK","SOLUMASTIK","SPARE PARTS","a_center_near_to_you","add_favourite","and_get_discount","apps","bills_issued","brands","builders","buybundle","buylot","center_preferred","change_password_disabled","click_here","colorName","finish","image","stock","stock_outlet","stock_ft2","stock_m2","stock_outlet_ft2","stock_outlet_m2","subtypeName","outletQuality","finishFamily","commercial_project","conduct_code","contact","cookies_policy","cosentino_center","customer","customer_hub","cosentino_hub","direct_sale","dekton","dekton_message","deliveries_in_progress","deviated","download_texture","erróneo","facebook","faqs","filter_discounts","favourites","for_full_truck","google","home","hybriq_loft_series","hybriq_incorporate_patented","hybriq_registered_trademarks","professional_products","home_design","im_looking","im_looking_for","invoice_id","key_accounts","landCode","last_colors","legal_notice","linkedin","login_with","login_with_Salesforce","login_with_your_email","login_with_another_account","login_with_your_id","loyalty_message","min_to_checkout","mktools","my_personal_area","national_accounts","online_visualizer","only_show_favourites","only_show_discounts","orders","outbound_deliveries","operation_type_worktop","operation_type_edge","operation_type_hole","outlet_o","outlet_x","outlet_v","outlet_stock_available","other_deliveries_pending","partial_import","pool","pounds","reach_to","repeat_password","read_more","recover_password","remember_me","remove_favourite","residential_kb","save_cart","save_changes","save_segmentation","save_this_selection_as_favourite","search_order_history","select_transport_area","shipping_costs","shipment","silestone","silestone_25","subtype1","subtype2","subtype3","mktoolShippingCenter","optional","total_items","you_have","DF_SHORT","DF_LONG","DE_SHORT","DE_LONG","DA_SHORT","DA_LONG","DD_SHORT","DD_LONG","LD_SHORT","LD_LONG","stock_high_to_low","stock_low_to_high","newest_arrivals","oldest_materials","material_id","JUST_CUT","WEBHEADING","TYPE","SUBTYPE1NAME","SUBTYPE2NAME","FINISHFAMILY","TIENDA_REST_BANCO","ASCENSORES_MOBILIARI","TAPA_MESA_MOBILIARIO","BANCADA_MOSTRADOR","PLATOS_DUCHA","NO_USAR","FACHADA_VENTILADA","FACHADA_VENTILADA_CE","REVEST_INTERIOR","ENCIMERA_COCINA","FACHADA_PEGAMENTO","SUELO","ENCIMERA_BAÑO","SUSTITUCIÓN","MODELO","SERIE","VERSÁTIL","SUBTYPE_01","SUBTYPE_02","SUBTYPE_03","SUBTYPE_04","SUBTYPE_05","SUBTYPE_06","SUBTYPE_07","SUBTYPE_08","SUBTYPE_09","SUBTYPE_10","SUBTYPE_11","SUBTYPE_12","SUBTYPE_13","SUBTYPE_14","SUBTYPE_15","SUBTYPE_16","SUBTYPE_17","SUBTYPE_18","SUBTYPE_19","SUBTYPE_20","SUBTYPE_21","SUBTYPE_22","SUBTYPE_23","SUBTYPE_24","SUBTYPE_25","SUBTYPE_26","SUBTYPE_27","SUBTYPE_28","SUBTYPE_29","SUBTYPE_30","SUBTYPE_31","SUBTYPE_32","SUBTYPE_33","SUBTYPE_34","SUBTYPE_35","SUBTYPE_36","SUBTYPE_37","SUBTYPE_38","SUBTYPE_39","SUBTYPE_40","SUBTYPE_41","SUBTYPE_42","SUBTYPE_43","SUBTYPE_44","SUBTYPE_45","SUBTYPE_46","SUBTYPE_47","SUBTYPE_48","SUBTYPE_49","SUBTYPE_50","SUBTYPE_51","SUBTYPE_52","SUBTYPE_53","SUBTYPE_54","SUBTYPE_55","SUBTYPE_56","SUBTYPE_57","SUBTYPE_58","SUBTYPE_59","SUBTYPE_60","SUBTYPE_61","SUBTYPE_62","SUBTYPE_63","SUBTYPE_64","SUBTYPE_65","SUBTYPE_66","SUBTYPE_67","SUBTYPE_68","SUBTYPE_NEWS","SUBTYPE_1_001","SUBTYPE_1_002","SUBTYPE_1_003","SUBTYPE_1_004","SUBTYPE_1_005","SUBTYPE_1_006","SUBTYPE_2_001","SUBTYPE_2_002","SUBTYPE_2_003","SUBTYPE_2_004","SUBTYPE_2_005","SUBTYPE_2_006","SUBTYPE_2_007","SUBTYPE_2_008","SUBTYPE_2_009","SUBTYPE_2_010","SUBTYPE_2_011","THERE_ARE_ONLY_A_FEW_REMAINING_ITEMS_IN_STOCK_IN_AT_LEAST_ONE_OF_THE_CHOSEN_MATERIALS_IN_THE_ORDER_WHICH_MAY_CONSTRAIN_THE_AVAILABILITY_UPON_ORDEN_CONFIRMATION","PLEASE_CONFIRM_THE_ORDER","PRODUCT_PORTFOLIO","SHOPPING_CART_CHECKOUT","ORDERS","PERSONAL_AREA","ORDER_HISTORY","OTHERS","NEWS","SAVE_COLORS_MKTOOLS_ATTR_SUCCESS","SAVE_CCOLORS_MKTOOLS_ATTR_FAILURE","DUPLICATED_COLOR_MKTOOLS_ATTR","EMAIL_SENT","PROMOTION_OR_EMAIL_NOT_FOUND","theres_no_stock_available_now","withRouter","match","_ref2$params","_ref2$queryString","queryString","target","route","keys","reduce","previous","replace","active","to","isActive","total","isAdding","isAddingCallApi","monthItems","waitTillDate","reservationCode","reservationCutToSizeCode","reservationConfigurableCode","reservationQuickShipConfigurableCode","isSending","linesPrice","calculatingLinesPrice","phase2PricesByProduct","totalCoin","vouchers","voucherStatusText","isValidVoucher","isLoadingVoucher","showNoStockModal","matsNoStock","showIncompatibleTypesExceptionModal","phase2FetchedPrices","successfullyAddedToCart","linesDeliveryDates","deliveryDateControlKey","finishStep","isLoading","fullUnits","units","isValid","qtyForNextUnit","currentQtyWeight","currentMinWeight","currentMaxWeight","linesSlaDate","preferredDeliveryDateByLines","isLoadingLinesSlaDate","isCheckoutPage","isDefaultDeliveryDate","hideSlaDatesForCts","linesSlaDateVisibility","isChangingCartQty","showCheckoutModalSelector","showCheckoutModal","getLines","getLinesPrice","getIsLoading","getIsAdding","getIsAddingCallApi","getMonthItems","getWaitTillDate","getReservationCode","getReservationCutToSizeCode","getReservationConfigurableCode","getReservationQuickShipConfigurableCode","byLineId","line","linesSelector","createSelector","weight","getCalculatingLinesPrice","calculateVistexTotal","coins","amountTotal","price","hasZT00","totalSelector","totalAmount","totalSelectorMktools","group","pricesMktools","getBudgetPlusTotal","qtySelector","parseFloat","getCartSlaDays","sla","map","v","days_sla","prev","current","Math","max","getCartTypes","types","mall","getHaveSomeProductsBelowThreshold","some","threshold","getHaveSomeProductsWithoutSapStock","productQtys","matStock","isOutlet","realStock","mat","stockOutletAvailable","stockAvailable","lineExt","getIsCartCutToSize","isMallCartOnly","every","isMallCartForContainer","getThicknessInCart","thickness","from","Set","getCurrent","unit","floor","getKgPoundRatio","getGoalMin","goalMin","getCartBrands","getGoalMax","goalMax","getUnitsForQty","min","hasMinimum","output","lastUnitQty","getQtyProductsCart","result","discontinued","getLastLine","getLinesByMatId","getLinePricePhase2ByLineId","priceYYYY","getVoucher","getVoucherStatusText","getIsValidVoucher","getIsLoadingVoucher","getShowModalNoStock","phase2priceByProductId","found","item","getTransformingSkuToLots","transformingSkuToLots","getPhase2ClientByProduct","isSuccessfullyAddedToCart","getLinesDeliveryDates","getFormatedLinesDeliveryDates","getLinesSlaDate","formatedLinesDates","_ref3","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__","selectedLine","daysSla","naturalDays","_ref4","_ref5","date","format","getDeliveryDateControlKey","getFinishStep","getFullUnits","getIsLoadingLinesSlaDate","getIsCheckoutPage","cutToSizeCode","configurableCode","quickShipConfigurableCode","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_2__","commentsWithouthEmojis","Map","set","userName","apply","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__","deliveryDate","uuidv4","handleLinesSlaDateVisibility","slaData","slaDate","add","defaultDeliveryDate","getNextWorkingDay","unitsForQty","deliveryDateCts","slaDateState","d","__webpack_exports__","setLanguage","closeBundleContent","openBundleContent","closeSegmentationModal","closeDektonGripModal","closeEmailPromotionsModal","closeWhatsappModal","closePedidosRecurrentesModal","submitEmailPromotionsModal","submitWhatsappOptinModal","submitDektonGripModal","closeLanguageModal","toggleIsObsolete","closeCheckoutModal","closeAdd2CartSuccessModal","closeProfileModal","closeLoginModal","showLoginModal","closeCartModal","showCartModal","closeImpersonateModal","closePricesDisclaimer","showImpersonateModal","toggleImpersonate","toggleProfile","toggleCart","toggleMenu","toggleTranslateMode","toggleKpisFilters","proccessInDetailScreen","setIsOrderHistoryScreen","setIsShippingHistoryScreen","submitWalkthrough","setIsXeronBrandVisible","setIsSilestoneBrandVisible","setIsConfigurableBathEditScreen","setIsConfigurablePlanAcceptanceScreen","react_router_redux__WEBPACK_IMPORTED_MODULE_0__","_segmentation_actions__WEBPACK_IMPORTED_MODULE_1__","_login_reducers__WEBPACK_IMPORTED_MODULE_2__","_centers_reducers__WEBPACK_IMPORTED_MODULE_3__","_lots_actions__WEBPACK_IMPORTED_MODULE_4__","_api__WEBPACK_IMPORTED_MODULE_5__","js_cookie__WEBPACK_IMPORTED_MODULE_6__","js_cookie__WEBPACK_IMPORTED_MODULE_6___default","_reducers__WEBPACK_IMPORTED_MODULE_7__","resetUI","lot","acceptPromotionNotifications","acceptPolicies","api","promotionEmail","phone","onClose","showImpersonate","showProfile","showCart","showFilters","catch","routeLang","locales","US","CA","ES","FR","IT","PT","NL","DE","GB","SE","BE","AT","IE","NO","TR","DK","FI","PL","JP","IL","NZ","AU","AE","SG","ZA","BR","MX","Cookies","translations","path","returnURL","goTo","allPath","inDetailScreen","isVisible","currentSegmentation","segmentatingProductId","segmentatingProductIsOutlet","segmentationSubmitted","businessSegment","originalChannel","channelName","originalChannelName","nexusOriginalChannel","subchannel","subchannelName","salesForceId","salesForceName","projectId","projectName","subchannelProgram","typology","typologyName","use","useName","segmentationOptions","nexusOptions","kb","builder","useOptions","typologiesV3","kbOptions","buildersOptions","isSaving","fetchingSegmentation","segmentationV3","segmentationCurrentStep","segmentationEvidence","suggestedSegmentations","segmentationProjects","segmentationHashesSet","transformByIdV3","isNexus","channels","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__","salesforceRelations","salesforceRelation","projectOptions","project","subchannelId","isHomeOwner","evidences","nexusChannelId","channelId","nexusChannelName","transformById","byId","subchannels","typologies","fillFavouriteSegmentation","channelOptions","hashes","hash","evidence","getChannelOptionsV3","getNexusOptions","cloneDeep","relations","filterNexusChannelProjects","projects","_ref6","relKey","relValue","_ref7","_ref8","projKey","projValue","getTypologyOptionsV3","ambiances","m","material","ambient","t","has","getSalesforceRelationsV3","inProfile","getEvidencesType","evidenceType","sfOption","getProjectIdV3","mapChannel","_ref9","_ref10","relation","eachProjectId","APchannelOptions","B0channelOptions","HEchannelOptions","startsWith","sort","getBusinesSegmentOptions","getChannelOptions","getSubchannelOptions","getTypologyOptions","getUseOptions","uses","getKBOptions","getBuildersOptions","getSelectedBusinesSegment","getSelectedChannel","getSelectedOriginalChannel","getSelectedChannelName","getSelectedSalesForceId","getSelectedProjectId","getSelectedProjectName","getSelectedSalesForceName","getSelectedSubchannelProgram","getSelectedSubchannel","getSelectedSubchannelName","getSelectedTypology","getSelectedTypologyName","getSelectedUse","getSelectedUseName","getSelectedKB","getSelectedBuilder","getPO","segmentationDone","getCurrentSegmentation","getCurrentFavourite","getPreferredSegmentation","preferredSegmentation","getPreferredSegmentationByName","getIsSaving","getHasSegmentationV3","getFullSelectedSegmentation","selectedKB","selectedBuilder","getSelectedOriginalChannelName","salesforceId","salesforceName","kbId","kbName","builderId","builderName","getSegmentationEvidence","getSegmentatingProductId","getSegmentatingProductIsOutlet","validHomeDepotSegmentation","getSegmentationCurrentStep","selectedA","selected","seg","originalNexusChannel","suggestedSegmentation","q","b","nexusSegmentation","newState","kbs","suggested","segmentationProjectsSet","getNexusEnvironment","environments","getNexusUse","getSuggestedSegmentations","slice","getMaterialProjects","getSegmentationHashes","getSegmentationProjects","fetchedProducts","lastVisitedProducts","lastBoughtProducts","productsForYou","productsSimilarColors","colorsCutToSize","productsId","samplesCutToSize","furnituresCutToSize","furnitures","productsFavourite","productsMktToMax","gallery","urlPreview","colorsMktoolsAttr","colorsMktoolsAttrToAdd","colorsMktoolsAttrToDel","deviatedAdmin","deviatedDescriptionsIsLoading","deviatedDescriptions","getProductsForYou","getProductsSimilarColors","getError","getLastProductBoughts","byProductId","control","discountsByProductId","getProductsIdFavourite","isFavouriteById","getGallery","getFetchedProducts","getLastVisitedProduct","getProductsFavouritesByIds","similarProductByProductId","similarProducts","getProductsMktToMax","getBrandsMktoolsAttr","getBrandsMktoolsAttrWithXeron","getColorsMktoolsAttr","getColorsMktoolsAttrToDel","getColorsMktoolsAttrToAdd","getLocaleWithft2","canViewPrices","canViewPricesPhase2","canViewPricesPhase3","canViewLotId","getProductsDeviatedAdmin","getDeviatedDescriptions","getPromotionsProductIds","discount","isExclusiveHomeDepot","getUserSalesOrg","getShowLotsInPortfolio","isCosentinoBrazil","isAllowedBrands","productWithStock","naturalStoneViewingPermissions","isNewIndicator","creationDate","todayMinusOneYear","today","isUpcomingIndicator","todayPlus15Days","canDisplayDiscontinued","webHeading","newProducts","newItem","lastBoughtProductsState","lastBoughtProductsId","productsForYouState","productsForYouId","productsSimilarColorsState","productsSimilarColorsId","newColorsToSave","colorsToDelByBrand","colorsToAddByBrand","indexToDel","findIndex","splice","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__","colorsToAddForRemoveAction","colorsToDelByBrandForRemoveAction","colorsToAddByBrandForRemoveAction","indexToDelForRemoveAction","index","productsDeviatedAdmin","newProductsDeviated","Spinner","relative","inner","small","innerCenter","spinner","segmentationRequested","dektonGripRequested","productSupplierCenter","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","mark","_callee","wrap","_context","next","isProductIdInPromotion","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__","getCurrentPromotionId","abrupt","fetchProduct","minQty","sent","t0","getSelectedShippingAddressForIkea","getEmployeeId","fetchCart","info","stop","_x","_x2","bulkAddToCart","bundles","addCartLineLot","addCartLineBundle","addCartLine","addCartLineCutToSize","addMallCartLine","addCartLineNotSegmentation","dataLayer","dimension3","addCartLineWithouthSeg","newSeg","finally","storedPhase2","saveCartLineComment","nextLine","diffQty","abs","checkout","isCustomer","getCheckoutData","regReservationId","regularOrder","tempReservationId","ctsReservationId","ctsOrder","configurableReservationId","ctsConfigurableOrder","configurableQuickShipReservationId","ctsQuickShipConfigurableOrder","setStep","matId","confirm","cancel","setShowModalNoStock","setLineDeliveryDate","unsetLineDeliveryDate","setAllLinesDeliveryDates","unsetAllLinesDeliveryDates","firstShippingAddress","getFirstShippingAddres","firstShippingAddrId","firstShippingCenterId","checkoutShippingAddrId","getSelectedShippingAddressId","checkoutShippingCenterId","getSelectedShippingCenterId","finalShippingAddrId","finalShippingCenterId","isCheckoutPageScreen","setAllLinesDeliveryDatesCts","currentPromotionId","promotionName","languages","fetchedMarkets","fetchedCountries","fetchedCenters","landingTemplateId","mailTemplateId","headLandingBannerData","homeBannerData","headEmailBannerData","lateralBanner","commercial_name","banner_title","banner_description","bannersPaginatedResult","customersOfArea","customersSelected","excludedPromotionsCenters","discountMaterials","dataToResolveDiscount","acceptedDiscounts","isAmortized","discountStatus","hasUnsavedChangesStepOne","promotionNameDirty","promotionLanguageDirty","promotionStartDateDirty","promotionEndDateDirty","promotionCommercialNameDirty","promotionDescriptionNameDirty","hasUnsavedChangesStepTwo","promotionMarketDirty","promotionCountriesDirty","promotionCentersDirty","hasUnsavedChangesStepThree","promotionCustomersDirty","hasUnsavedChangesStepFour","promotionMaterialsDirty","hasUnsavedChangesStepFive","promotionDiscountsDirty","hasUnsavedChangesStepSix","promotionLandingTemplateDirty","promotionNewsletterTemplateDirty","hasUnsavedChangesStepSeven","promotionBannerTitleDirty","promotionBannerDescriptionDirty","getPromotionHomeBanner","home_banner_url","getPromotionLateralBanner","lateral_banner_url","getPromotionLandingBanner","srcBanner","getPromotionLink","getIsSending","getTranslations","getStep","getFetchedMarkets","getFetchedCountries","getFetchedCenters","getLandingTemplates","landingPreviewV2","getNewsLetterTemplates","mailPreviewV2","getAvailableSteps","availableSteps","getPromotionCenters","canViewDiscountStep","getDataLandingTemplateId","getLandingTemplateId","getMailTemplateId","getPromotionTitle","promotionTitle","getPromotionDescription","promotionDescription","getBannerTitle","promotionData","bannerTitle","getBannerDescription","banner_text","bannerDescription","p","getPromotions","getBannersPaginatedResult","getAvailableLanguages","getCustomersOfArea","getCustomersSelected","getMaterialsSelected","materialsSelected","getMaterialsSelectedData","materialsSelectedData","getPromotionName","getPromotionStartDate","getPromotionEndDate","getCommercialName","getDescription","getPromotionMarket","getPromotionCountries","getHeadLandingBannerData","getHomeBannerData","getHeadEmailBannerData","getLateralBanner","getPromotionDataProduct","getIsAmortized","getDiscountMaterials","getDataToResolveDiscounts","getAcceptedDiscounts","getDiscountStatus","getUnsavedChangesStepOne","getUnsavedChangesStepTwo","getUnsavedChangesStepThree","getUnsavedChangesStepFour","getUnsavedChangesStepFive","getUnsavedChangesStepSix","getUnsavedChangesStepSeven","start_date","end_date","object","promotion","bannerLanding","bannerNewsLetter","sideBannerNewsLetter","parse","promotion_discounts","materialId","requestedDiscount","requested_discount","acceptedDiscount","accepted_discount","landing_template","mail_template","head_landing_banner_data","home_banner_data","head_email_banner_data","lateral_banner_data","promotion_customers","promotion_materials","promotion_materials_data","commercial_name_data","text","description_data","banner_title_data","banner_text_data","is_amortized","discount_request_status","resolveDiscountData","changes","getReplaceDotWithComma","copy","hasImperialUnits","getAdaptedFormat","getMeasureFromMetric","getMetricMeasureFromInput","getCmOrInches","getCtsMeasures","capitalizeFirstLetter","langFromLocale","getUsaCaPrTermsAndConditionsByLang","validateInputEmail","_store_products_reducers__WEBPACK_IMPORTED_MODULE_0__","moment__WEBPACK_IMPORTED_MODULE_1__","moment__WEBPACK_IMPORTED_MODULE_1___default","element","replacement","navigator","clipboard","writeText","textArea","document","appendChild","focus","select","execCommand","removeChild","CM_IN_INCHES","INCH_IN_CM","convertCentimetersToInches","cm","decimals","toFixed","profileConfiguration","lengthUnit","isImperialUnits","measures","split","separator","showUnits","upper","spaced","newMeasures","measure","inches","convertInchesToCentimeters","days","plannedDay","startOf","day","cts","isImperial","shape","diameter","width","height","radius","str","charAt","toUpperCase","toLowerCase","bg","cs","da","de","en-CA","en","en-US","es","et","fi","fr-CA","fr","he","hr","hu","it","ja","lt","lv","nl","no","pl","pt","sk","sl","sv","tr","englishUrl","test","getProfileConfiguration","getProfileConfigurationLoading","getProfileConfigurationSending","getProfileConfigurationAlert","getProfileConfigurationAlertOfPassword","getProfileConfigurationStatus","getProfileConfigurationStatusOfPassword","getPreferredCenter","getErrorOnSetEmail","getWeightUnit","getWhatsappOptinPreviousPreferences","getPromotionConfiguration","getPromotionConfigurationEmails","getPromotionConfigurationAcceptPromotionNotifications","getPromotionConfigurationAcceptPromotionPolicies","getPromotionConfigurationPreviousPreferences","getIsSubscribed","getUnit","getDefaultFurniturePackaging","setDefaultFurniturePackaging","_ui_reducers__WEBPACK_IMPORTED_MODULE_1__","localeWithft2","alertOfPassword","statusOfPassword","weightUnit","errorOnSetEmail","promotionConfiguration","has_previous_configuration","accept_notifications","copy_emails","accept_policies","whatsappConfiguration","isSubscribed","defaultUnit","defaultFurniturePackaging","defaultPackaging","profileConfigurationIkeaAddress","ordersCurrentPage","ordersLastPage","openOrders","transferOrders","orderDetails","orderDetailsHead","openDocDetails","packingList","recurringOrders","recurringOrderDetails","selectedRecurringOrder","showRecurringOrderDetails","isLoadingDetails","isLoadingPackingList","lowesOrders","lowesLinesOrders","lowesOrderDetails","isOrderToEditLoading","orderToEdit","orderInEdition","invoices","activeOrderLine","fetchingPackagingImages","packagingImages","getOrders","getOffers","getOpenOrders","getTransferOrders","getPackingList","getOpenDocDetails","getOrder","getInvoices","getOrderDetailsHead","getRecurringOrder","getRecurringOrderDetails","getOrdersLoading","getOrderDetailsLoading","getPackingListLoading","getShowRecurringOrderDetails","getselectedRecurringOrder","getOrderToEdit","getOrdersLoadingAdd","isLoadingAdd","canEditOrders","getStatusMap","PENDING_CONFIRMATION","textToShow","editable","CONFIRMED","PENDING_ORDER_CREATION","ORDER_CREATED","EXTERNAL_CUSTOMER","ERROR_CREATING_ORDER","PENDING_CANCELLATION","CANCELLED","QUOTE_REJECTED","QUOTE_EXPIRED","ORDER_CANCELLED","ORDER_MODIFIED","WILSAM_RESERVATION","USA_SHOPS","PENDING_CHANGES","RESERVATION","OFFER_CREATED","PENDING_ACCEPT_OFFER","PENDING_CANCEL_OFFER","ERROR_PROCESSING_OFFER","OFFER_PENDING_CREATE","CREATED","APPROVED","ORDER_PREPARATION","TOTALLY_DELIVERED","PARTIALLY_INVOICED","TOTALLY_INVOICED","getOrderStatusMap","RESERVATION_CREATED","RESERVATION_CANCELLED","PREPARATION","SHIPPED","PICKUP","DELIVERED","INVOICED","ERROR","IN_PROCESS","PARTIALLY_DELIVERED","PENDING","getDeliveryStatusMap","DELIVERY_CREATED","IN_TRANSIT","canDeleteOrders","getLowesOrders","getLowesLinesOrders","getLowesOrderDetails","getOrdersCurrentPage","getOrdersLastPage","showModalLineDetail","getActiveOrderLine","getOrderInEdition","rejected","orderWeightSelector","getOrderShippingMethod","getOrderCenter","parseInt","getOrderCenterData","getOrderCenterHasMinWeight","getOrderShippingAddress","getOrderShippingAddressId","getOrderCountryOfSend","getOrderHasDestination","getOrderCurrentWeight","getOrderGoalMin","getOrderGoalMax","getOrderLenghtBundlesCart","numOfRealBundles","numOfCatalogBundles","isloading","details","orderLine","offer","ElaborationOptionsMap","BrandOptionsMap","Messages","BudgetMessages","PreorderMessages","ElaborationOptionsMapById","CtsIdsByElaboration","react_intl__WEBPACK_IMPORTED_MODULE_0__","_assets_img_cut_to_size_flooring_svg__WEBPACK_IMPORTED_MODULE_1__","_assets_img_cut_to_size_flooring_svg__WEBPACK_IMPORTED_MODULE_1___default","_assets_img_cut_to_size_skirting_svg__WEBPACK_IMPORTED_MODULE_2__","_assets_img_cut_to_size_skirting_svg__WEBPACK_IMPORTED_MODULE_2___default","_assets_img_cut_to_size_just_cut_svg__WEBPACK_IMPORTED_MODULE_3__","_assets_img_cut_to_size_just_cut_svg__WEBPACK_IMPORTED_MODULE_3___default","_assets_img_cut_to_size_furnitures_svg__WEBPACK_IMPORTED_MODULE_4__","_assets_img_cut_to_size_furnitures_svg__WEBPACK_IMPORTED_MODULE_4___default","_assets_img_cut_to_size_Soleria_v2_png__WEBPACK_IMPORTED_MODULE_5__","_assets_img_cut_to_size_Soleria_v2_png__WEBPACK_IMPORTED_MODULE_5___default","_assets_img_cut_to_size_Rodapies_v2_png__WEBPACK_IMPORTED_MODULE_6__","_assets_img_cut_to_size_Rodapies_v2_png__WEBPACK_IMPORTED_MODULE_6___default","_assets_img_cut_to_size_solo_corte_v2_png__WEBPACK_IMPORTED_MODULE_7__","_assets_img_cut_to_size_solo_corte_v2_png__WEBPACK_IMPORTED_MODULE_7___default","_assets_img_cut_to_size_Mobiliario_v2_png__WEBPACK_IMPORTED_MODULE_8__","_assets_img_cut_to_size_Mobiliario_v2_png__WEBPACK_IMPORTED_MODULE_8___default","_assets_img_cut_to_size_presupuesto_det_png__WEBPACK_IMPORTED_MODULE_9__","_assets_img_cut_to_size_presupuesto_det_png__WEBPACK_IMPORTED_MODULE_9___default","_assets_img_cut_to_size_washbasin_bath_png__WEBPACK_IMPORTED_MODULE_10__","_assets_img_cut_to_size_washbasin_bath_png__WEBPACK_IMPORTED_MODULE_10___default","SOLERIA","flooring_bmp","RODAPIES","skirting","skirting_bmp","SOLO_CORTE","justCut","justCut_bmp","CUSTOM_MOBILIARIO","furnitures_bmp","MOBILIARIO","BUDGET","budget_bmp","CONFIGURABLE_BATH","washbasinBath","SILESTONE","DEKTON","SENSA","SCALEA","PREXURY","SET_DEADLINE","CHOOSE_MODEL","CHOOSE_SHAPE","CHOOSE_PROJECT_TYPE","CHOOSE_FILE_TYPE","CHOOSE_BRAND","CHOOSE_PACKAGING","CHOOSE_COLOR","CHOOSE_FINISH","CHOOSE_ADDON","CHOOSE_THICKNESS","CHOOSE_FORMAT","CHOOSE_EDGE","CHOOSE_BEVEL","CHOOSE_HEIGHT","CHOOSE_WIDTH","CHOOSE_OPTION","BACK_SELECT_ELABORATED_TYPE","MIN_LENGTH","MAX_LENGTH","MIN_DIMENSIONS","MAX_DIMENSIONS","MEASURE_A","MEASURE_B","MEASURE_C","MEASURE_D","SUCCESS_REQUEST_QUOTE","PACKAGING_10_5","SIDE","DIAMETER","SQUARED","RECTANGULAR","RECTANGULAR_CURVE_RADIUS","ELLIPSE","ROUNDED","SIMPLE_PACKAGING","PACKAGING_A","PACKAGING_B","PACKAGING_C","MITER","POLISHED_MITER","BULLNOSE","DEMI_BULLNOSE","PLATNER","OGEE","POLISHED_STRAIGHT","ROUNDED_BEVEL","JUST_BEVEL","B2","B3","B4","FURNITURE_DESCRIPTION","SKIRTING_DESCRIPTION","FLOORING_DESCRIPTION","JUST_CUT_DESCRIPTION","CONFIGURABLE_BATH_DESCRIPTION","with_mesh","without_mesh","FURNITURE","BATH","KITCHEN","FACADE","WALL_CLADING","SKIRTING","CUT_TO_SIZE","OTHER_ELABORATED","BLUEPRINT_FILE_TYPE","LABELS_FILE_TYPE","EMAIL_FILE_TYPE","BX10","BX03","BX01","BX04","BX07","GENERIC","80457","80594","80596","80461","80586","80588","80589","80451","80561","80562","80563","80565","80567","80458","elaboration","getIsShippingAddressRemembered","getEndiSelectedShippingAddressId","getEndiShippingTypeByShippingAddress","getShippingAddressFilteredToSelectByCenter","getCostCenters","isLoadingShippingAddress","getFetchedOn","_centers_reducers__WEBPACK_IMPORTED_MODULE_0__","fetchedOn","ikeaSelectedShippingAddress","endiSelectedShippingAddressEcosentinoKey","endiSelectedShippingType","isAllowed","allowedShippingTypes","ecosentinoKey","label","centerName","customerName","address","zipCode","city","shippingCenters","costCenters","shippingAddressEcosentinoKey","countryOfSend","destination","hasSelectedCenter","selectedShippingAddress","selectedShippingAddressId","selectedShippingSalesOrg","selectedShippingEcosentinoKey","selectedCostCenter","ikeaTransportArea","shippingAddressesEmails","profileConfigurationEmail","cutToSizeFile","lowesData","firstName","installationData","town","province","saleConditionsCheck","haveOffer","healthConditionsCheck","australiaLegalProcessConditionsCheck","checkoutStepOneButtonNextDisabled","virtualVisitSalesforceIds","loadingVvSalesforceIds","virtualVisitData","getHealthConditionsCheck","canSendCheckoutHealthConditions","getAustraliaLegalProcessConditionsCheck","canSendCheckoutAustraliaLegalProcessConditions","getSaleConditionsCheck","canSendCheckoutSaleConditions","getDeliveryDate","getDestination","getHasSelectedCenter","getSelectedShippingAddress","getSelectedShippingSalesOrg","getSelectedShippingEcosentinoKey","getSelectedCostCenter","getIkeaTransportArea","getHasDestination","getComments","getPo","getCutToSizeFile","getStoreId","getLowesDataFirstName","getLowesDataLastName","getLowesDataEmail","getLowesDataTitle","getInstallationDataName","getInstallationDataAddress","getInstallationDataTown","getInstallationDataProvince","getInstallationDataZipCode","getInstallationDataPhone","getHaveOffer","canSeeVirtualVisitOptions","getVirtualVisitSalesforceIds","getIsVirtualVisitMandatorySfId","isVirtualPromo","getMinRequiredDate","minDate","minDateForOrderFromHQ","shippingSalesOrg","costCenterId","linesPreferredDeliveryDates","haveCutToSize","healthConditionsVersion","getHealthConditionsVersion","getCheckoutStepOneButtonNextDisabled","getUseOldHealthConditionsWorkflow","checked","vvData","setDeliveryDate","setCountryOfSend","setDestination","setHasSelectedCenter","setSelectedShippingAddress","setSelectedShippingAddressId","setSelectedShippingCenterId","setSelectedShippingAddressEcosentinoKey","setSelectedShippingAddressSalesOrg","setSelectedCostCenter","setIkeaTransportArea","setShippingAddressesEmails","setProfileConfigurationEmail","toggleSaleConditionsCheck","toggleHealthConditionsCheck","toggleAustraliaLegalProcessConditionsCheck","setVirtualVisitData","setInstallationDataName","setInstallationDataAddress","setInstallationDataTown","setInstallationDataProvince","setInstallationDataZipCode","setInstallationDataPhone","setComments","setPo","setStoreId","setCutToSizeFile","setEmployeeId","setLowesDataFirstName","setLowesDataLastName","setLowesDataEmail","setLowesDataTitle","canSendLowesData","resetCheckout","canSendMinMaxCheckout","canSendNaturalStoneContainer","canSendNeedDestination","changeShippingAddress","setCheckoutStepOneButtonNextDisabled","_cart_reducers__WEBPACK_IMPORTED_MODULE_0__","_reducers__WEBPACK_IMPORTED_MODULE_1__","_centers_reducers__WEBPACK_IMPORTED_MODULE_2__","_profile_configuration_reducers__WEBPACK_IMPORTED_MODULE_3__","_shipping_addresses_reducers__WEBPACK_IMPORTED_MODULE_4__","_cart_actions__WEBPACK_IMPORTED_MODULE_5__","_login_reducers__WEBPACK_IMPORTED_MODULE_6__","_api__WEBPACK_IMPORTED_MODULE_7__","getStaet","currentWeight","shippingMethodWithoutWeight","setUnitsForCart","getNaturalStoneContainers","maxQty","stateFullUnits","shippingAddres","r","datetime","formatDate","PORTFOLIO_MODE_SHOW_ONLY_CODI","PORTFOLIO_MODE_SHOW_ONLY_USER_CENTER","PORTFOLIO_MODE_SHOW_BOTH_CENTERS","DATE_FORMAT","LANG_TO_INDEX","CREATION_MODE","NEW","EDIT","NEW_LANGUAGE","EDIT_LANGUAGE","isImageValid","advParseLang","forIcon","iso_639_2","ietf","getFileData","pData","getMarkets","markets","getCountries","getStatuses","statuses","getFilteredLandings","filtersParameters","landings","_filtersParameters$se","selectedMarket","_filtersParameters$se2","selectedCountry","_filtersParameters$se3","_filtersParameters$st","statusSelected","_filtersParameters$se4","searchString","_filtersParameters$da","dates","start","end","start_at","end_at","isBetween","isSame","getFilteredByDates","indexOf","getFilteredByTitle","getFilteredByStatus","filteredLandings","centerParam","getFilteredByCenter","getFilteredByCenters","countryParam","getFilteredByCountry","getFilteredByCountries","marketParam","getFilteredByMarket","arrayToFormData","array","fd","field","parseLandingStatus","endDay","isBefore","_global_Translation__WEBPACK_IMPORTED_MODULE_1__","CLIENT_ALREADY_HAS_ACCOUNT","EXCLUSIVE_HOME_DEPOT","THERE_IS_NO_THEORETICAL_WEIGHT","INFO_IKEA_CHECKOUT_CONFIRM","THE_FILE_IS_NOT_YET_AVAILABLE","LOT_NO_LONGER_AVAILABLE","SHIPPING_ADDRESS_NOT_FOUND","INVALID_EMAIL","INVALID_LENGTH_UNIT","INVALID_WEIGHT_UNIT","LOGIN_REQUIRED","LOTS_ALREADY_BOOKED","TRANSFORMING_SKU_TO_LOTS","LOTS_IMAGE_MAY_NOT_MATCH","NOT_ENOUGH_LOTS","NOT_ENOUGH_LOTS_OFFER","MAX_WEIGHT_EXCEEDED","MIN_WEIGHT_NOT_REACHED","MISSING_MANDATORY_FIELD","REMEMBER_PASSWORD_REQUEST_CONFIRMED","TSC_ORDER_FAILED","TOKEN_HAS_EXPIRED","WRONG_CREDENTIALS","WRONG_CREDENTIALS_AZURE","TOO_MANY_REQUESTS","YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY","MANDATORY_PASSWORD_CHANGE","PASSWORD_DOESNT_MEET_REQUIREMENTS","PASSWORDS_NOT_MATCH","PASS_CHANGED_LOGIN_AGAIN","your_suggestions_has_been_sent","maximum_weight_of_bundles_has_been_exceeded","container_must_have_7_bundles","EXCEEDE_ORDER_MAXIMUM_LOWES","EXCEEDE_ORDER_MAXIMUM_MKTOOLS","EXCEEDE_CHECKOUT_COMMENT_LENGTH","encimera_ikea","ORDER_IMAGES_NOT_FOUND","EMPTY_INVOICE","USER_WITHOUT_CENTERS","INSUFFICIENT_PERMISSIONS","MUST_BE_A_VALID_EMAIL","EMAIL_ALREADY_IN_USE","SessionNotValidated","upcoming_product_alert","BANNER_HOME_AND_BANNER_NEWSLETTER_REQUIRED","DONT_ALLOWED_EMPTY_TEXT","AVG_BUNDLE_SIZE","EXCEEDED_CHARS_LIMIT","CTS_50_PERCENT_DEPOSIT_INITIAL_MSG","CTS_50_PERCENT_DEPOSIT_FINAL_MSG","health_safety_information_scroll_down","Alerts","cssIcon","lastLoginAccount","iconSize","role","fontSize","selectedProduct","fetchSpecialProductNames","productsLanding","addNewColorMktoolsAttr","nameColor","trim","nameColorToAdd","word","getIndexOfColorsMktoolsAtter","removeColorMktoolsAttr","i","fetchProductsDiscountsByToken","toogleFavourite","removeProductFavourite","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__","addProductFavourite","isOtherMask","subtypeId","displayName","img","typeId","getImageBackground","APP_URL","imgLarge","thumbMd","getImageThumb","successMessage","listOfProducts","failureMessage","getProductById","fetchSlidersProducts","ProductDisplayName","showName","_this$props","clearOrderDetails","fetchRecurringOrderDetails","toggleModalRecurringOrderDetails","add2CartRecurringOrder","add2CartRecurringOrderQty","toggleModalOrderLineDetail","closeOrderLineModal","changeOrderInEdition","canEditOrderMinMax","_api__WEBPACK_IMPORTED_MODULE_0__","_cart_actions__WEBPACK_IMPORTED_MODULE_3__","_big_account_reducers__WEBPACK_IMPORTED_MODULE_4__","_shipping_addresses_reducers__WEBPACK_IMPORTED_MODULE_5__","_profile_configuration_reducers__WEBPACK_IMPORTED_MODULE_7__","_reducers__WEBPACK_IMPORTED_MODULE_8__","last_page","current_page","orderDetailsCart","reservation","extension","require","Blob","filename","attachment","exec","canEditOrderBundleLimit","bundleLimit","DisplayOutletIndicator","_this$props$inSmallBo","inSmallBox","_this$props$isSimplif","isSimplified","_this$props$displayIn","displayInLine","styles","fontWeight","lineHeight","padding","textTransform","zIndex","fontFamily","alignItems","justifyContent","flexWrap","minHeight","textAlign","outletDeviated","gerPriceListByUserId","loginRequired","mandatoryChangePasswordRequest","_reducers__WEBPACK_IMPORTED_MODULE_0__","_profile_configuration_reducers__WEBPACK_IMPORTED_MODULE_1__","_api__WEBPACK_IMPORTED_MODULE_2__","_ui_reducers__WEBPACK_IMPORTED_MODULE_3__","_centers_reducers__WEBPACK_IMPORTED_MODULE_4__","_products_actions__WEBPACK_IMPORTED_MODULE_5__","_profile_configuration_actions__WEBPACK_IMPORTED_MODULE_6__","_centers_actions__WEBPACK_IMPORTED_MODULE_7__","_reservations_actions__WEBPACK_IMPORTED_MODULE_8__","_ui_actions__WEBPACK_IMPORTED_MODULE_9__","js_cookie__WEBPACK_IMPORTED_MODULE_10__","js_cookie__WEBPACK_IMPORTED_MODULE_10___default","_shipping_addresses_actions__WEBPACK_IMPORTED_MODULE_11__","_landing_actions__WEBPACK_IMPORTED_MODULE_12__","_products_reducers__WEBPACK_IMPORTED_MODULE_13__","fetchLowesStoresData","initalizeUser","preferredCenter","changeCenter","stay","simpleImpersonate","success","ssoData","simpleLogin","changeFirstCenterFromSalesOrg","hj","message","show","newPasswordRepeat","submittSegmentationModal","clearSegmentation","toggleSegmentation","selectBusinessSegment","selectChannel","selectSubChannel","selectSalesForceId","selectProjectIdV4","selectUse","selectTypology","selectKB","selectBuilder","setPO","deletePreferredSegmentation","loadPreferredSegmentation","loadThisSegmentation","setSegmentationCurrentStep","setSegmentationEvidence","setSegmentationFromSuggested","_login_reducers__WEBPACK_IMPORTED_MODULE_1__","_ui_reducers__WEBPACK_IMPORTED_MODULE_2__","_reducers__WEBPACK_IMPORTED_MODULE_4__","option","CONFIRM","CHANGE_CENTER_CONFIRM","CHANGE_STORE_CONFIRM","CHANGE_SHIPPING_CENTER","IMPERSONATE_CONFIRM","REJECT_RESERVATION_CONFIRM","DELETE_TEMPLATE_LOWES_CONFIRM","DELETE_ITEM_LOWES_CONFIRM","ACTIVATE_PROMOTION_MAILING_CONFIRM","CONFIRM_REJECT_QUOTE","CONFIRM_ACCEPT_QUOTE","InjectedConfirmDialog","proceed","dismiss","confirmation","options","textOk","textCancel","react_default","isV2","confirmable","_node","node","querySelector","child","memoizedState","storeState","findLangFromProvider","index_es","messages","i18nMessages","createConfirmation","ConfirmDialog","bigAccount","_data","isNewPromo","changeStep","updateTranslationObject","isSellingOutlet","requestMaterialsDiscounts","materialsData","materialData","md","thumb","productName","rotation","indRotation","sent_mail","fetchPromotionsList","itemsPerPage","fetchPromotionToEdit","val","land","marketSelected","salesOrgMarket","groupedSalesOrg","fetchBanners","fetchPromotionData","customersData","checkPromotionId","applyCampaignDiscount","denyCampaignDiscountStatus","clonePromotion","fetchCenter","resetCountriesCenters","fetchLandinById","fetchProductsLandingsByCenters","fetchLandingBySlug","fetchPreviewLandingBySlug","setPortfolioMode","fetchMallLots","_progress_kendo_react_intl__WEBPACK_IMPORTED_MODULE_4__","_components_landing_manager_utils__WEBPACK_IMPORTED_MODULE_5__","_reducers__WEBPACK_IMPORTED_MODULE_6__","moment__WEBPACK_IMPORTED_MODULE_7__","moment__WEBPACK_IMPORTED_MODULE_7___default","IntlService","langs","toDate","created_at","create","update","getPreviewPorfolioMode","product_id","results","productsLots","langID","getNumberFormat","Intl","NumberFormat","userLandings","landingBySlug","isLoadingLanding","isLoadingLots","currentPorfolioMode","mallLots","selectedProductId","isLoadingProductsAndLots","getUserLandings","getIsLoadingLanding","getMallProductsLots","getIsLoadingLots","getSelectedProductId","getProductMinStock","minimum_order","getSelectedProduct","getLandingByCommonId","lastSelectedProduct","common_id","templates","module","exports","changeShippingMethod","setMkToolsShippingCenter","canViewImageByLot","onlyChangeCenter","_cart_actions__WEBPACK_IMPORTED_MODULE_2__","_login_reducers__WEBPACK_IMPORTED_MODULE_4__","_reducers__WEBPACK_IMPORTED_MODULE_5__","_products_actions__WEBPACK_IMPORTED_MODULE_6__","_shipping_addresses_actions__WEBPACK_IMPORTED_MODULE_8__","_landing_actions__WEBPACK_IMPORTED_MODULE_9__","_promotions_actions__WEBPACK_IMPORTED_MODULE_10__","_advertisement_actions__WEBPACK_IMPORTED_MODULE_11__","_ui_actions__WEBPACK_IMPORTED_MODULE_12__","_selected_objects_actions__WEBPACK_IMPORTED_MODULE_13__","urlCallback","setLastSelectedProduct","firstCenterWithSelectedSalesOrg","dispathc","LANDING_TEMPLATES_IDS","TEMPLATE_1","TEMPLATE_2","TYPE_FILTERS","BRAND","THICKNESS","FORMAT","SORT_OPTIONS","SORT_CLEAR_OPTION","BRAND_IMAGES","SilestoneImg","silestone-white","SilestoneImgWhite","DektonImg","dekton-white","DektonImgWhite","sensa","SensaImg","sensa-white","SensaImgWhite","natural-stone","NaturalStoneImg","natural-stone-white","NaturalStoneImgWhite","removeNullString","getMaxQtyLeftProduct","totalQty","canAddCartLine","getFilters","filterKey","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__","getFiltersByKey","generateFiltersState","isFilterSelected","filterGroup","filterValue","capitalize","hasImage","getBrandNameWithoutSpaces","getMallProduct","productFromMall","productsFromCatalog","catalogProduct","prod","minimumOrder","langingProductId","landing_common_id","isNaN","detailImage","detail_image_uri","catalog_image","backgroundImage","background_image_uri","thumbnailImage","thumbnail_image_uri","brandWithoutSpaces","hasImageWhite","isStockOutlet","productLots","mallProductId","stock_mall","additionalInfo","fromMall","getFilteredProducts","_ref$filters","_ref$products","_ref$sortSelected","sortSelected","prod1","prod2","sortByStockAsc","sortByStockDesc","getSortFunction","sortDataBy","filteredProducts","filterByType","getFilteredProductsByType","generateUnitsData","profileConfigPromotion","lotsImages","currentProductLots","lastLotCenterLoaded","lastLotProductIdLoaded","isLastLotOutlet","lotsInCart","lotsToBuy","getLots","lotsInCartMap","lotsCopy","lotCopy","haveInnerLots","getLotsImages","getFiltered","filtered","getCurrentProductLots","getSelectedLotsToBy","getBundlesRejectionCodes","bundlesRejectionCodes","rejectionCode","lotDetail","selectedLot","uuid","ORDER_EDITED","ORDER_REJECTED","ORDER_REJECTED_SENT","ORDER_BEING_MODIFIED","ORDER_REJECT_FAILURE","ORDER_NOT_CANCELLABLE_PROCESS_STARTED","ORDER_NOT_CANCELLABLE_PURCHASE_ORDER_NOT_CANCELLABLE","ORDER_NOT_CANCELLABLE_PURCHASE_ORDER_NOT_FOUND","DOCUMENTS_NOT_FOUND","MAX_MONTH_QTY_PRODUCT_MKTOOLS_REACHED","MAX_QTY_PRODUCT_MKTOOLS_REACHED","THE_PRODUCTS_HAVE_BEEN_SAVED_SUCCESSFULLY","SOMETHING_WENT_WRONG","PRICES_EXPERIMENTAL","PRICES_EXPERIMENTAL_NOT_MENTION_TAXES","PROMOTION_NEEDS_MATERIALS","PROMOTION_NEEDS_CUSTOMERS","NO_DATA_HAS_BEEN_SENT","UNDEFINED_ERROR","THE_PROMOTION_HAVE_BEEN_CLONED_SUCCESSFULLY","AN_ERROR_HAS_OCCURRED_CLONING_THIS_CAMPAIGN","FloatingAlert","sucessMessage","warningMessage","pricing","mallContainerDiscount","classes","animationDelay","alt","src","mallDiscount","changeIkeaShippingAddress","changeEndiShippingAddress","_login_reducers__WEBPACK_IMPORTED_MODULE_3__","shippingAddressFilteredToSelectByCenter","allowedShippingTypesForThisAddress","usersSelector","centerUsers","getFetchingUsers","canImpersonate","fetchingUsers","users","fetchingCenterUsers","TextInput","classCallCheck","inputRef","createRef","isFocused","prevProps","_this$props$type","_this$props$className","placeholder","_this$props$name","objectWithoutProperties","ref","SegmentationEvidence","onSubmitSegmentation","onBackStep","onSetStep","_useState","useState","_useState2","setPurchaseOrders","_useState3","_useState4","purchaseOrderInputValue","setPurchaseOrderInputValue","_useState5","_useState6","setUploadedFiles","_useState7","_useState8","fileSizeError","setFileSizeError","_useState9","_useState10","fileTypeError","setFileTypeError","ALLOWED_FILE_TYPES","mandatoryEvidences","evidencesType","global_TextInput","onChange","event","toConsumableArray","_","handleDeletePurchaseOrder","validFiles","fileTooLarge","fileTypeNotAllowed","getElementById","click","fileLimit","FILE_LIMIT_SIZE","class","aria-hidden","handleDeleteFile","here_some_suggested_segmenations","none_above_segmentations","choose_segmentation_manually","SavedSegmentations","materialProjects","selectedIndex","setSelectedIndex","handleAddToCart","needsEvidence","savedSegmentation","SEGMENTATION_EVIDENCE_STEP","unavailableReasonMsg","getReason","main","htmlFor","LineSegmentationV2","showAsList","hideSpans","InfoWithToolTip","toolTipText","SEGMENTATION_V3_STEP","SavingSegmentation","inputSegmentation","setInputSegmentation","subChannel","SEGMENTATION_SUCCESSFULLY_SAVED","SegmentationSavedSuccesfully","SAVED_SEGMENTATIONS_STEP","SUGGESTED_SEGMENTATIONS_STEP","SAVING_SEGMENTATION_STEP","SegmentationSteps","currentStep","setCurrentStep","prevStep","setPrevStep","useEffect","handleBackStep","SuggestedSegmentation","SegmentationV3","segmentation_SegmentationEvidence","segmentation_SavedSegmentations","SavingSegmentations","SegmentationsSavedSuccesfully","getStepContent","fetchRelatedProducts","crossSelling","boughtTogether","fetchBoughtTogether","alternatives","currentRouteId","getLastSelectedProduct","selectedObjects","isCosentinoGlobal","productCenter","sendCatalogImpressions","list","userMaterialsPriceList","sessionCrossType","impressions","impressionsGA4","_source","productHq","finalPrice","getFinalPrice","category","variant","dimension1","dimension2","dimension4","dimension18","dimension19","product_HQ","item_name","item_id","item_brand","item_category","item_category2","item_category3","item_category4","item_variant","item_list_id","cross_type_product","cross_type_list","global","ecommerce","currencyCode","pushDataLayerGA4","currency","items","calculatePrice","getDiscounts","priceBefore","condition","applyDiscount","numberFormat","maximumFractionDigits","minimumFractionDigits","surface","priceConditionOrder","ZT00","operator","ZEFP","ZDPR","ZDCU","ZDLO","B","ZEFN","A","ZDWB","ZDPP","priceCondition","normalizeDiscount","foundAt","getCurrentZT00","basePrice","sendAddToCart","lineProduct","productLayer","getProductLayer","getProductLayerGA4","sendRemoveFromCart","item_category5","remove","isCutToSize","dimension16","analyticsTag","dimension20","cross_variant","downloadLots","tipo_descarga","ecommerceObject","analyticsEvents","checkLoginType","hasSalesforceAccess","hasWeAccess","canViewOutletAndPnInHQ","orderStatus","accionSeguimiento","idPedido","fechaEntrega","estado","incidencias","createRecurringOrder","nombre_centro","actionField","productLayerGA4","productClick","productsGA4","sendCheckoutStep1Review","shippingNumber","MKTOOLS","LOWES_WALL_SAMPLES","LOWES_CUSTOMER_SAMPLES","IKEA","priceDivided","pricePhase2","purchase","affiliation","shipping","coupon","tax","revenue","transaction_id","shipping_tier","sendCheckoutOk","addedProduct","_extra","acc","detail","item_list_name","sendProductDetail","articles","single","articlesLink","multi","fromRecommendation","eventCategory","eventAction","eventLabel","showCrossSellingModal","showCrossSellingSlider","tag","articleType","dataLayerCosentino","cross_type","has_we_access","user_order_HQ","search_term","sendSearchProduct","page_section","page_subsection","page_type_ec","setLocation","_reducers__WEBPACK_IMPORTED_MODULE_2__","_products_reducers__WEBPACK_IMPORTED_MODULE_3__","_selected_objects_reducers__WEBPACK_IMPORTED_MODULE_4__","bundlelot","fetchImagesResp","lotIdsFeched","showHelp","productBS","salesforce","_this2","channelOptionsV3","typologyOptionsV3","lineChannel","TXT","businessSegmentTXT","channelTXT","substring","listValues","_global_Translation__WEBPACK_IMPORTED_MODULE_10__","editSegmentation","react_intl__WEBPACK_IMPORTED_MODULE_6__","showAllNexus","rejectionCodeMap","getBundleRejectionCode","400","401","402","403","404","405","406","407","408","productsLowes2","brochuresLowes","listBrandsMktoolsAttr","listBrandsMktoolsAttrWithXeron","_assets_img_lowes_brochureSensa_jpg__WEBPACK_IMPORTED_MODULE_0__","_assets_img_lowes_brochureSensa_jpg__WEBPACK_IMPORTED_MODULE_0___default","_assets_img_lowes_brochureSilestone_jpg__WEBPACK_IMPORTED_MODULE_1__","_assets_img_lowes_brochureSilestone_jpg__WEBPACK_IMPORTED_MODULE_1___default","lowesCode","brochureSensa","brochureSilestone","furniture","imgFull","thumbMdPreview","sample","IntegerInputNumber","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__","upNumber","isDisabled","setState","onChangeValue","downNumber","handleChangeValue","handleBlur","valueDefault","prevState","snapshot","react__WEBPACK_IMPORTED_MODULE_7___default","maxLength","onBlur","_global_Translation__WEBPACK_IMPORTED_MODULE_6__","getAdvertisements","showAdvertisements","advertisements","reservations","activeSegmentation","loadSegmentation","scrollDown","scrollTop","scrollHeight","saveSegmentationPromptOpen","excuse","expandSaved","formFullFilled","isFormFullFilled","_global_Spinner__WEBPACK_IMPORTED_MODULE_9__","_alerts_Alerts__WEBPACK_IMPORTED_MODULE_10__","_ChannelV4__WEBPACK_IMPORTED_MODULE_11__","_SalesForceIdV3__WEBPACK_IMPORTED_MODULE_12__","_ProjectIdV3__WEBPACK_IMPORTED_MODULE_13__","viewFullSegmentationV3","gap","_TypologyV3__WEBPACK_IMPORTED_MODULE_15__","_UseV3__WEBPACK_IMPORTED_MODULE_14__","_global_Button__WEBPACK_IMPORTED_MODULE_8__","canAddMaterial","href","salesForceIsValid","sfOptions","isNexusChannel","needsProjectId","A0","D0","B0","AP","PO","C0","HO","BB","BD","nexus","noChannel","SegmentationTranslation","RETAIL_CHANNEL","NON_RETAIL_CHANNEL","SEGMENTATION_CHANNELS","","ChannelIcon","mask","react__WEBPACK_IMPORTED_MODULE_6___default","WebkitMaskImage","maskImage","marginRight","maskSize","maskRepeat","maskPosition","ChannelV4","selectedSegment","getBusinessSegment","retailOptions","data-qa","data-key","onSelectRetail","_global_Translation__WEBPACK_IMPORTED_MODULE_7__","getTypologies","showedOptions","nexus_retail","nexus_non_retail","refChannel","channelIcon","onSelect","flexDirection","_SegmentationTranslation__WEBPACK_IMPORTED_MODULE_11__","retail","marginTop","onToggle","valueName","SalesForceIdV3","react_select__WEBPACK_IMPORTED_MODULE_10__","clearable","CustomOption","createClass","propTypes","Option","handleMouseDown","handleMouseEnter","onFocus","handleMouseMove","render","onMouseDown","onMouseEnter","onMouseMove","ProjectIdV3","nexusEnvironment","nexusUse","_options","react_select__WEBPACK_IMPORTED_MODULE_12__","optionComponent","envValue","envVName","useValue","useVName","react_redux__WEBPACK_IMPORTED_MODULE_2__","_store_segmentation_reducers__WEBPACK_IMPORTED_MODULE_3__","_store_segmentation_actions__WEBPACK_IMPORTED_MODULE_4__","react_select__WEBPACK_IMPORTED_MODULE_5__","isOptional","react_redux__WEBPACK_IMPORTED_MODULE_1__","_store_segmentation_reducers__WEBPACK_IMPORTED_MODULE_2__","_store_segmentation_actions__WEBPACK_IMPORTED_MODULE_3__","react_select__WEBPACK_IMPORTED_MODULE_4__","_global_Translation__WEBPACK_IMPORTED_MODULE_5__","isBath","o","_locales_en_json__WEBPACK_IMPORTED_MODULE_0__","_locales_es_json__WEBPACK_IMPORTED_MODULE_1__","_locales_de_json__WEBPACK_IMPORTED_MODULE_2__","_locales_da_json__WEBPACK_IMPORTED_MODULE_3__","_locales_en_us_json__WEBPACK_IMPORTED_MODULE_4__","_locales_fi_json__WEBPACK_IMPORTED_MODULE_5__","_locales_fr_ca_json__WEBPACK_IMPORTED_MODULE_6__","_locales_en_ca_json__WEBPACK_IMPORTED_MODULE_7__","_locales_fr_json__WEBPACK_IMPORTED_MODULE_8__","_locales_he_json__WEBPACK_IMPORTED_MODULE_9__","_locales_it_json__WEBPACK_IMPORTED_MODULE_10__","_locales_ja_json__WEBPACK_IMPORTED_MODULE_11__","_locales_nl_json__WEBPACK_IMPORTED_MODULE_12__","_locales_no_json__WEBPACK_IMPORTED_MODULE_13__","_locales_pl_json__WEBPACK_IMPORTED_MODULE_14__","_locales_pt_json__WEBPACK_IMPORTED_MODULE_15__","_locales_sv_json__WEBPACK_IMPORTED_MODULE_16__","_locales_tr_json__WEBPACK_IMPORTED_MODULE_17__","enUs","frCa","enCa","_centers_reducers__WEBPACK_IMPORTED_MODULE_1__","view_saved_segmentations","selectedSegmentation","react__WEBPACK_IMPORTED_MODULE_1___default","_global_Translation__WEBPACK_IMPORTED_MODULE_3__","_progress_kendo_react_inputs__WEBPACK_IMPORTED_MODULE_6__","_global_Button__WEBPACK_IMPORTED_MODULE_2__","_path","_extends","source","prototype","hasOwnProperty","info_SvgComponent","viewBox","fill","bg-coloreffect","place","openEvents","defaultProps","./A0.png","./B0.png","./BB.png","./BD.png","./C0.png","./D0.png","./E0.png","./ecosentino-small.png","./ecosentino.png","./icon-dekton.png","./icon-scalea.png","./icon-sensa.png","./icon-silestone.png","./icon-table.png","./products/mktools.png","./sinks.png","webpackContext","req","webpackContextResolve","Error","repeatLots","./A0.svg","./AP.svg","./B0.svg","./BB.svg","./BD.svg","./C0.svg","./D0.svg","./DA.svg","./HE.svg","./HO.svg","./HQ-icon.svg","./PO.svg","./Recurso 3.svg","./Recurso 4.svg","./activity.svg","./app-store.svg","./bars-white.svg","./bars.svg","./calendar-2.svg","./calendar.svg","./camera-off.svg","./camion.svg","./camion_completo.svg","./carrito.svg","./cart-thin.svg","./cart.svg","./caution.svg","./chat.svg","./chatter.svg","./checkmark.svg","./chevron-down.svg","./chevron-right.svg","./chevron-up.svg","./circle-view-off.svg","./circle-view-on.svg","./close-black.svg","./close-white.svg","./coins.svg","./cosentino-global-icon-c.svg","./cosentino-message.svg","./cross-black.svg","./cross-white.svg","./danger-icon.svg","./danger.svg","./download-gray.svg","./download.svg","./ecosentino-white.svg","./ecosentino.svg","./edit.svg","./elaborated-white.svg","./facebook.svg","./fav.svg","./file.svg","./filter-black.svg","./filter.svg","./filters.svg","./icon-catalog-download.svg","./icon-catalog-info.svg","./icon-catalog-shipping-truck.svg","./icon-catalog-slabs.svg","./icon-catalog-warning.svg","./info.svg","./instagram.svg","./landing-mngr.svg","./linkedin.svg","./list.svg","./location.svg","./login.svg","./logout.svg","./logoutv2.svg","./lots-icon.svg","./mail.svg","./medio_camion.svg","./money.svg","./nexus.svg","./no-image.svg","./pinterest.svg","./platoducha-white.svg","./play-store.svg","./print.svg","./products/anchors.svg","./products/caja.svg","./products/fregadero.svg","./products/gabinets.svg","./products/lavabos.svg","./products/libro.svg","./products/merchandising.svg","./products/mktools.svg","./products/muestra.svg","./products/news.svg","./products/operaciones.svg","./products/otros.svg","./products/papeleria.svg","./products/platoducha.svg","./products/ppcc.svg","./products/ppe.svg","./products/productos-pro.svg","./products/sales.svg","./products/showroom.svg","./products/signage.svg","./products/supplies.svg","./products/tables.svg","./products/tags.svg","./products/test-kit.svg","./products/torre-expositor.svg","./products/warehouse.svg","./products/workwear.svg","./profile.svg","./rectangle-view-off.svg","./rectangle-view-on.svg","./search.svg","./send.svg","./sent.svg","./slab.svg","./star.svg","./tabla.svg","./trash.svg","./tresd-icon.svg","./triangle.svg","./truck.svg","./twitter.svg","./union.svg","./user-inverted.svg","./user.svg","./warning-triangle.svg","./youtube.svg","LotImageViewer","getIndex","lot_id","setQuantity","addToCart","currentLot","isAddingToCart","buyLot","buyBundle","getMeasure","current_lot","isSurface","localeField","photoIndex","addedLots","closeWindow","bind","C_Proyectos_App_20Ecommerce_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__","copyLink","overflow","goBack","_this$props2","isAdmin","prevIndex","nextIndex","isBundle","maxCount","count","react_image_lightbox__WEBPACK_IMPORTED_MODULE_9___default","mainSrc","prevSrc","nextSrc","onCloseRequest","wrapperClassName","onMovePrevRequest","onMoveNextRequest","imagePadding","imageTitle","_global_Translation__WEBPACK_IMPORTED_MODULE_8__","_global_ProductDisplayName__WEBPACK_IMPORTED_MODULE_24__","qualityOutlet","_catalog_rectangleResult_displays_DisplayOutletIndicator__WEBPACK_IMPORTED_MODULE_20__","imageCaption","_input_number_other_IntegerInputNumber__WEBPACK_IMPORTED_MODULE_18__","toolbarButtons","_global_Spinner__WEBPACK_IMPORTED_MODULE_13__","loading","ownProps","infoEnv","getInfoEnv","changelog","crossSellingCheckout","cartCrossSelling","boughtTogetherProducts","cartSimilarProducts","cartComplementaryProducts","getCurrentCartCrossSelling","getCurrentCrossSelling","getCurrentCrossSellingCheckout","getCurrentAlternatives","getCartSimilarProducts","getCartComplementaryProducts","planograms","isLoadingCheckout","isLoadingTemplate","isLoadingStores","isLoadingProduct","isLoadingBrochure","usersShopper","alertSendForm","getTemplates","getIdConfirmation","getUsersShopper","getProductsLowes","getBrochuresLowes","getAlertSendForm","loadedTemplates","getSuccessMessage","floatingAlerts","getFailureMessage","getValues","monthQty","limitMonth","toAdd","alreadyIntoCart","limitMax","cause","currentDeliveryId","deliveryDetails","summary","filtersOpen","isMobile","topColors","kpis","currentDeliveryDetailLines","deliveryDetail","getSummary","getBackOrders","backOrders","getFiltersOpen","getFiltersToApi","customerIds","colorIds","countUnassigned","getReservations","getReservationsLoading","getCustomers","countUnassignedReservations","deliveriesCurrentPage","deliveriesLastPage","deliveries","delivery","getDeliveries","getDeliveriesCurrentPage","getDeliveriesLastPage","getDeliveriesLoading","getDelivery","getDeliveryIsLoading","directSlabAccess","getDirectSlabAccess","getReservationId","getInvoiceId","getDirectSlabAccessLoading","suggestion","maintenanceMode","getMaintenanceMode","lastView","lastRelease","itemsNews","getChangesRead","getChangelogItems","getChangelogItemsNews","valueOf","toastNotifications","toastNotification","loader","mainParams","catalog","pricingGroup","soleriaColors","secondaryParams","preOrdersCts","preOrdersCurrentPage","preOrdersLastPage","preOrdersProjectAvailables","configurableModels","configurableInProgress","configurablePlanAcceptanceList","configurableModifiedList","configurableDrawingList","getPreOrdersCts","getPreOrderById","getCutToSizeMaterials","getCutToSizeCatalog","getCutToSizeSoleriaColors","getCutToSizeCustomerPricingGroup","getCutToSizeSecondaryParams","getPreOrdersCurrentPage","getPreOrdersLastPage","getPreOrdersProjectAvailables","getConfigurableModels","getConfigurableInProgress","getConfigurablePlanAcceptanceList","getConfigurableModifiedList","getConfigurableDrawingList","canFilterQuickShip","preorder","preorderId","communications","defineProperty","refcode","configData","isPlanAcceptanceChecked","isConfigurableModified","configurableDrawing","referenceCode","exists","documentUrl","Modal","forwardRef","customStyle","subtitle","footer","_props$showCloseButto","showCloseButton","_props$showBody","showBody","_props$showFooter","showFooter","_props$customId","customId","dialogClasses","tabIndex","data-backdrop","aria-label","FilterV2Box","filteredDataName","translatedTitle","onTransform","listComponent","_props$operator","onMouseLeave","querySelectorAll","classList","contains","chevronDown","searchkit_lib","bucketsTransform","confirmChangeShippingCenter","onChangeShippingCenter","filtersDivStyles","selectedShippingCenter","hasXeronBucket","hasSilestoneBucket","visibleFilters","showMoreFilters","isSmallScreen","innerWidth","showClearFilter","FiltersV2","checkFilters","filtersArray","_step2","_iterator2","x","fil","handleResize","toggleFilters","changeShippingCenter","onReset","redirect","noShippingCentermsg","ShippingCenterOptions","react_select_es","selectedOption","setItems","mktoolShippingParam","history","replaceState","ShippingCenterOptionsWithoutFilter","subtypeOptions","subType","selectedItems","subtypeOptions0","subtypeOptions1","subtypeOptions2","colorOptions","hideMobileFilters","finishTransform","localeCompare","outletQualityTransform","discontinuedTransform","operationTypeTransform","handleXeronAndSilestoneCheck","xeronBucket","bucket","doc_count","SilestoneBucket","brandTransform","typeMap","SERVICES","shippingCenterTransform","subtypeTransform","supplyWarehouseTransform","13","14","15","colorSerieDescTransform","toneTransform","zaddonTransform","setInterval","addEventListener","removeEventListener","TABLA","PPCC","FREGADERO","MK","SH","WH","OPERATIONS","SERVICE","ENCIMERA","ELABORADOS","BAÑOS","01","02","03","04","05","06","07","08","09","10","11","12","sorting","_this3","_this$state","bannerSelector","favouritesFilter","TermsQuery","favouriteProducts","mkToolShippingCenterFilter","isMagazineMk","typeFilter","typeTransform","orderKey","subTypeFilter","operationTypeFilterForIkea","isIkeaCenter","catalog_FilterV2Box","outletQualityFilter","webHeadingFilter","thicknessFilter","thicknessTransform","formatFilter","isLowesCenter","finishFilter","finishFamilyFilter","allFilters","isWarehouse","Boolean","global_Modal","isLoadingShippingAddresses","promoBanners","LocalizedLink","extraClass","filterFavourites","itemComponent","CustomFilterItem","component","FiltersV2_ClearFiltersDesktop","ClearFiltersDesktop","hasFilters","translate","resetFilters","filterId","labelKey","labelValue","removeFilter","logicMap","zaddon","defaultHandler","CircleResult","goToProduct","promoCenter","finish2","iconoTemporalAcabado","data-color","CircleResultContainer","displayValue","InputNumberViewV2","_isMounted","debounceMinus","debounce","debouncePlus","inputTypeWithouthDebounce","debounceInput","btnMinus","btnPlus","input","allowNull","_this$props$size","_this$props$step","_this$props$decimals","cssClass","oldStyle","InputNumber","change","_this$props$min","_this$props$limit","_this$props$allowNull","onDelete","lvlPrecision","global_InputNumberViewV2","button","newValue","AddFavourite","onToggleFavourite","isAdded","technologyData","grip","gripImg","defaultWidth","defaultHeight","grip+","gripPlusImg","hybriq","hybriqImg","nboost","nboostImg","ukiyo","ukiyoImg","optimma","optimmaImg","silestonexm","silestonexmImg","DisplayTechnology","technology","subBrand","_ref$backgroundColor","desktopWidth","desktopHeight","_ref$showTechnologies","showTechnologies","_ref$inSmallBox","_ref$withBorder","withBorder","isDesktop","setIsDesktop","techInfo","techKey","smallBoxStyles","generalStyles","border","imgStyles","DisplayBlackIndicator","ProductImage","labelsBlock","displays_DisplayTechnology","dealType","DisplayBlackIndicator_DisplayBlackIndicator","noImage","backgroundRepeat","backgroundPosition","isMktoolsCenter","backgroundSize","promotionFreeItem","colorImg","HQCenterId","deviatedDescritions","IkeaCenterId","canViewImageLot","BannerResultV2","PPCC_V2","Banos_V2","CTS_V2","OUTLET","TARIFICADOR","testAB","showBannerPromo","promoNaturalStoneCatalogV2","background","maxHeight","RectangleResultV2UI","getLimit","CustomSlide","isMovin","setIsMovin","bannerUrl","bannerText","onDragStart","top","dangerouslySetInnerHTML","__html","bottom","borderRadius","paddingBlock","paddingInline","isHideAllBannerCatalog","react_slick_lib_default","arrows","swipeToSlide","dots","speed","autoplaySpeed","slidesToShow","slidesToScroll","infinite","autoplay","variableWidth","pauseOnHover","BannerResultV2_BannerResultV2","mallPromotionSection","getTypeProductForStyles","showImg","indicators","lotViewAvailable","catalog_ProductImage","goToProductCard","cameraOff","global_AddFavourite","getStock","getExtras","haveOptions","global_InputNumber","getValueToAdd","setQtyToAdd","getMin","indexOfList","clickDetail","qtyToAdd","productLogic","baseLogicFunction","_baseLogicFunction","getType","validateOutletPromotions","setPromotions","qtyAdd","generatePromotionTags","getValueWithMax","extras","allPromotions","Z70D","Z71D","Z73D","ZQ00","productDiscounts","promotionsUpdated","conditionClass","needsSegmentation","_product","showLots","mallProductLogic","mallProps","landing_id","sapLandingId","sap_landing_id","sectionFlag","transAdditionalInfo","getAdditionalInfo","BaseProductLogic","comingFromCampaign","getLimitMktool","isMktool","isMkToolsUsaCenter","qtyProductCart","getLimitDiscontinued","isMkToolsCenter","outlet_types","DisplayDiscontinued","DisplayNewIndicator","DisplayUpcomingIndicator","DisplayHomeDepotIndicator","ProductIndicators","sphereIndicators","displays_DisplayDiscontinued","displays_DisplayHomeDepotIndicator","DisplayNewIndicator_DisplayNewIndicator","DisplayUpcomingIndicator_DisplayUpcomingIndicator","tate","indicator","DisplaySoldOut","MallProductIndicators","maxWidth","onZoomClick","displays_DisplaySoldOut","DisplayProductInfo","DisplayBrand","span","colorSerieDesc","DisplayThickness","string","replaceDotWithComma","DisplayGroupDtails","DisplayDetail","faIconClass","DetailsIkea","DisplayProductInfo_DisplayProductInfo","displays_DisplayBrand","DisplayGroupDtails_DisplayGroupDtails","displays_DisplayThickness","displays_DisplayDetail","bigAccountsErpCode","userPreferences","square","smaller","meters","feets","lengthUnitTranslationPrefer","lengthUnitTranslationDefault","lengthUnitTranslation","defaultStockM2","defaultStockFt2","stockM2","stockFt2","userLengthPrefer","lengthDefault","lengthToShow","numericLengthToShow","thresholdMax","DisplayProductInfoTable","th","td","DisplayPriceMktools","prices","_this$props$dataCY","dataCY","_this$props$showCoin","showCoin","groupPrice","DetailsMktools","unitsByLot","unitsByBox","global_LengthMeasure","available","global_LengthMeasureTranslation","isSample","getUnitBy","thData","tdData","DisplayProductInfoTable_DisplayProductInfoTable","displays_DisplayPriceMktools","priceGroup","DisplayStock","noStockTooltip","flex","data-for","dist_index_es","effect","watchingOutlet","hideSurface","DisplayPrice","pricesToShow","baseMeasure","appliedDiscounts","getAppliedConditions","appliedConditions","registerCondition","promoId","annulled","professionalPartner","getPromotionMeasure","priceAfter","getFinalPriceWithPromotions","priceConditionBefore","priceConditionAfter","getPromotionCoin","promoPhase3DifferentCurrencies","ZTOO","transformMeasure","updatePrices","naturalStoneSpainCenterId","iKEACenterId","warehoseCenterId","showroomCenterId","DRIUSACenterId","lowesCenterId","fregaderosCenterId","showPriceDiscountDisclaimer","rawPrice","currentZT00","partialPrice","priceDiscountDisclaimer","getCanViewPriceDiscountDisclaimer","ReactDOM","createPortal","scope","discountClient","DisplayPricePhase2","priceZT00","pricePerUnit","fetchingPhase2Price","getNewPricePerUnit","isLotGridView","isLotTableView","getCountryCode","countryCode","CH","DU","LT","MY","AF","AO","CN","EG","GR","IR","MU","MZ","PK","TN","VN","ZW","originString","cosentino_global_icon_c_SvgComponent","idMessage","naturalStoneIndicator","cosentinoIconC","svg","cosentinoNaturalStoneText","borderLeft","DetailsDefaultV2","columnGap","rowGap","mallLarge","indicators_NaturalStoneIndicator","notDescriptionProduct","adaptedFormat","displays_DisplayNaturalStoneOrigin","displays_DisplayStock","displays_DisplayPricePhase2","displays_DisplayPrice","ProductDetails","DetailsMktools_DetailsMktools","DetailsIkea_DetailsIkea","rectangleResult_DetailsDefaultV2","getDetails","CatalogProductContext","logicComponent","indicatorsComponent","detailsComponent","MallProductContext","ProductContext","createContext","RectangleResult","context","useContext","logic","Indicators","Details","productProps","rectangleResult_RectangleResultV2UI","NEW_PRICE","RectangleResultContainer","isMktoolsShippingCenterSelected","supplierCenterSalesOrg","isProductIdInPromo","promotionLateralBanner","promotionLink","promotionBannerTitle","promotionBannerDescription","showLotsInPortfolio","SampleResult","SampleResultContainer","MoreInfo","static","data-role","MoreInfo_BtnNeedHelp","moreInfoLowes","changeLog","btnText","BtnNeedHelp","moreInfoOutlet","left","OutletModal","rel","outlet1","outlet2","LowesInfoText","SimpleModal","right","showModalVideoOffpack","showModalVideoOutletDigital","OutletInfoText","calculateMaxWidthVideo","maxWidhtVideo","innerHeight","global_SimpleModal","video_react_lib","video","videoEs","videoEn","_g","FormatCSVModal","selectedCSVFormat","marginLeft","icon_catalog_shipping_truck_extends","icon_catalog_slabs_path","icon_catalog_slabs_g","icon_catalog_shipping_truck_SvgComponent","icon_catalog_slabs_extends","icon_catalog_download_path","icon_catalog_download_g","icon_catalog_slabs_SvgComponent","maskType","maskUnits","y","fillRule","clipRule","icon_catalog_download_extends","icon_catalog_info_path","icon_catalog_download_SvgComponent","icon_catalog_info_extends","icon_catalog_warning_path","icon_catalog_warning_g","icon_catalog_info_SvgComponent","icon_catalog_warning_extends","icon_catalog_warning_SvgComponent","TooltipStyles","TooltipContentStyles","OptionStyles","arrowColor","beaconSize","primaryColor","overlayColor","spotlightShadow","textColor","SpotlightSyles","ButtonNextStyles","ButtonBackStyles","TooltipFooterStyles","paddingTop","borderTop","OutletPnFromOtherCentersWalkthrough","stepOneContent","steps","close","handleNoShowMoreOnClick","placement","disableBeacon","onSubmitWalkthrough","refreshData","handleJoyrideCallback","STATUS","FINISHED","SKIPPED","onWatchedWalkthrough","shouldShow","react_joyride_es","tooltip","CustomStyles","tooltipContent","buttonBack","tooltipFooter","spotlight","disableScrolling","CustomProductIndicator","_ref$customWidth","customWidth","_ref$customHeight","customHeight","defaultStyles","container","objectFit","customProductIcon","csv","subtype_standard","subtype_raw","subtype_optimma","subtype_jumbo","2","1.2","3","306X141","thank_you_very_much_would_you_like_to_add_anything_else","no_results_found_for_","collection","tone","ResultsV2","resize","pageScope","customSelect","classActiveBool","showCSVFormat","showLegendOfLabels","isExitingLegendOfLabels","modalLegendOfLabelsRef","handleModalLegendOfLabelsClick","assertThisInitialized","fields","header","handleCloseLegendOfLabels","sortingSelector","defaultOption","slabLocation","outletLocation","statePnHQ","statePnBrazil","setPnHQ","setPnBrazil","outlet_pn_from_other_centers_OutletPnFromOtherCentersWalkthrough","skKey","hideOptions","totalResult","data-value","closeFormatCSVModal","handleOpenLegendOfLabels","hits","NoHits.NoResultsFound","NoHits.SearchWithoutFilters","hidePagination","scrollTo","showNumbers","Select","global_FormatCSVModal","gridTemplateColumns","indicators_CustomProductIndicator","BannerDekton","squared","BannerRockMaster","responsiveWidth","images","imgitSquared","imgit","imgjaSquared","imgja","imgdeSquared","imgde","imgesSquared","imges","imgheSquared","imghe","imgenSquared","imgen","imgfrSquared","imgfr","imgtrSquared","imgtr","imgnoSquared","imgno","imgnlSquared","imgnl","imgfiSquared","imgfi","imgptSquared","imgpt","BannerSilestoneContainer","isCheckoutView","footerDisclaimer","headerContent","discountContent","footerContent","usaFlayer","canadaFlayer","BannerHybriq","rectangle","BannerEarthic","imgdaSquared","imgda","imghuSquared","imghu","imgplSquared","imgpl","imgsvSquared","imgsv","BannerSuma","BannerSilestoneXM","hybriqMineralLogoBlock","hybriqMineralInsideLogo","backgroundImageStyle","silestoneXMBackgroundImg","silestoneXMLogo","MSRP_and_150_day_terms","when_you_purchase_a_minimum_of_30_silestone_and_or_dekton_slabs","total_discount","for_any_quantity_of_silestone_and_dekton_slabs","additional_discount","Card","percentAmount","percentAmountTitle","promotionCode","bodyText","smallText","promotionCopied","setPromotionCopied","ReactTooltip","hide","copyPromotionCodeOnClick","copyToClipboardIcon","setIsMobile","_35percentOffData","commonPercentOffData","rockMasterImg","BigBannerRocketV2_Card","extra_discount_half_trucks","extra_discount_full_trucks","percentText","borderColor","percentFontSize","_ref$layout","layout","showConditionsButtonCatalog","showConditionsButtonCheckout","titleFontSize","showConditionsModal","setShowConditionsModal","checkConditionsBtn","handleOpenConditionsModal","cardMessages","titleFivePercent","titleTenPercent","BannerSilestoneDektonBlackWeek_Card","handleCloseConditionsModal","customHitStats","hitsCount","listRef","getSk","fullView","commonParamsAnalytics","LowesCenterId","isPnHq","isPnBrazil","parent","uri","uri2","httpHeaders","SearchkitManager","searchUrlPath","timeout","translateFunction","pagination.previous","pagination.next","facets.view_more","facets.view_less","facets.view_all","reset.clear_all","yes","addResultsListener","getQueryString","analytics","TermQuery","addDefaultQuery","addFilter","BoolMust","BoolShould","sectionMapToLangId","tabla","productos_estandar","ppcc","Catalog","setSk","newSk","pn_hq","pn_brazil","favouriteFilter","filterDiscounts","discountsFilter","discountFilter","isPnHQ","showOutletModal","countResult","changeCenterFromSalesOrg","catalogPage","runInitialSearch","hitsComponent","hitsPerPage","slider","banner_silestone_container_BannerSilestoneContainer","banner_rocket_BigBannerRocketV2","searchkit","alreadyClosedOutletModal","global_OutletModal","dontShowOutletModalAgain","searchThrottleTime","searchOnChange","queryFields","queryOptions","default_operator","visibility","pagination","catalog_FiltersV2","productsIdFavourite","userDiscountsProductIds","promotionsProductIds","global_MoreInfo","LowesInfoText_LowesInfoText","catalog_OutletInfoText","results_ResultsV2","banner_dekton_BannerDekton","banner_suma_BannerSuma","banner_rockmaster_BannerRockMaster","banner_silestone_xm_BannerSilestoneXM","CatalogContainer","virtualVisitiEnabled","URLVirtualVisit","CatalogScreen","catalog_CatalogContainer","DisplayLotId","withDescription","advise","ExtendedConfirmDialog","extendedConfirm","addForwardSlash","_len","args","_key","filteredArgs","arg","SliderNextArrow","SliderPrevArrow","DisplayShippingAddress","shippingAddressesByUser","CUT_TO_SIZE_MATERIALS","getConfigLineName","config","modelName","model","quickShipIcon_path","_path2","_path3","handlePlanPdfDownload","fetch","ok","blob","downloadUrl","URL","createObjectURL","fileName","setAttribute","revokeObjectURL","getFormatConfigData","isPlanAccepted","planDocumentUrl","configuration","reference","getCheckoutLineId","checkoutLines","matchingLine","getConfigurablePlanPdfUrl","measureFromMetric","showBtnEdit","showBtnDownload","getPlanPdfUrl","legs","countertop","basins","centered","towelRails","soapHolders","tissueSlots","tapDrills","showertray","drainDrill","straightCutOut","vertex","lengthDistance","widthDistance","diagonalCut","diagonalLength","showerFrame","side","screenSlot","fabricator","thirdParty","quickShipIcon_extends","quickShipIcon_SvgComponent","tooltipId","iconStyle","WALL_SAMPLE","CUSTOM_SAMPLE","project_expired_prices_not_charged","for_full_trucks_or_containers_desired_delivery_date_get_affect","changing_the_preferred_delivery_date_will_affect_all_custom_products","showing_quickship","hiding_quickship","quick_ship_estimated_time","quick_ship_available_colors","no_quick_ship_estimated_time","configurable_order_finished_header","quick_ship_configurable_order_finished_header","CartLine","saveComment","inputComment","canViewSLA","showLongestDeliveryDate","storedDesiredDate","dateToShow","handleShowSlaDateNonCts","preferredDate","hideSlaDateNonCts","handleSetAllLinesDeliveryDatesCts","confirmPreferredDeliveryDateChange","handleShowSlaDate","showSlaDate","canViewConfigBath","confirmDeleteCartItem","isQuickShip","canShowDatePicker","isCheckoutStepOneButtonNextDisabled","getMinPreferredDeliveryDate","additionalDays","minDeliveryDate","showComment","showConfigBathModal","setEstimatedDeliveryDate","estimatedDeliveryDate","slaDateData","isEndiCenter","getLimitMall","isMktoolsUsaCenter","getLimitOutlet","hasZT00Price","linePrice","outdated","isCheckoutStepTwo","typeLine","isCheckoutStepOne","itsFree","getNewPrice","isOutdated","isCustomSample","isBrochure","packs","onlyView","getCheckoutType","onKeyDown","onPaste","_this4","_this5","_this6","onOpenBundleContent","DesiredDatePicker","handleClick","desiredDate","launchDate","displays_DisplayQuickShipIndicator","viewConfigBathDetailsBlock","handleOpenConfigBathModal","shouldShowSlaDate","isProductFromMall","react_datepicker_es","forceUpdate","autoComplete","dropdownMode","customInput","endOf","paddingBottom","getProductTitle","displays_DisplayLotId","attachedDoc","renderPriceDetails","renderSegmentationAndComment","renderCts50PercentInitialMsg","renderIncrementDecrementBlock","renderDeleteLineItem","renderAddToFavouriteLineItem","configurable_baths_ModalConfigurationDetails","CartLineContainer","businesSegmentOptions","mallMinOrder","getCtsMeasure","setSelectedProductId","setIsCommingFromMall","isCommingFromMall","MallIncentives","toggleIncompatibleTypesExceptionModal","CartSummary","_ref$showAll","showAll","_ref$howManyShouldSho","howManyShouldShow","aProducts","aQuantities","_lines","isGlobal","isBrazil","cart_line_CartLineContainer","MallIncentivesContainer","positionLine","CartSummaryContainer","ALREADY_USED_VOUCHER","GroupInputVoucherV2","handleVoucherResetIfNeeded","matchingLines","sum","validateLinesForVoucher","resetValidVoucher","onKeyPress","addVoucher","validateSpecialVoucherForRocketPromo","quote_succesfully_requested","quote_finished_header","OrderFinished","logo","quote","rememberCenter","OrderFinishedContainer","CheckboxLinkSaleConditions","showSaleConditions","hasSaleConditionsCheck","CheckboxLinkHealthConditions","showHealthConditions","hasHealthConditionsCheck","onConfirm","onCancel","isScrolledToBottom","setIsScrolledToBottom","scrollPercentage","setScrollPercentage","modalContentRef","useRef","updateScrollPercentage","handleScroll","clientHeight","CheckboxAustraliaLegalProcessConditions","showCheckboxAustraliaLegalProcess","SelectVirtualVisitComponent","orderOriginOptions","getVirtualVisitData","selectedOrderOriginOption","selectedSalesforceIdOption","fromPromo","fromVirtualVisit","trigVirtualVisitAnalyticsEvent","searchable","es_main","CheckoutFormCustomer","showHealthConditionsModal","canSendCheckout","useOldHealthConditionsWorkflow","getOptionsCountryOfSend","filteredShippingAddressesForUsers","prepareCart","haveSomeProductsBelowThreshold","showStockThresholdConfirmation","handleConfirmConditions","handleCancelConditions","firstShippingAddres","endiSelectedShippingAddressId","onLoadCheckout","isOffer","closeNoStockModal","onStep","destinationForCustomer","alertType","alertStatus","checkout_SelectVirtualVisitComponent","centerSelected","latinaVitoriaCenterId","hasDestination","rows","global_CheckboxLinkSaleConditions","global_CheckboxLinkHealthConditions","global_ModalLinkHealthConditions","paddingLeft","order_finished_OrderFinishedContainer","showModalNoStock","redirectToCart","haveSomeProductsWithoutSapStock","minWidth","CheckoutFormCustomerDesign","CheckoutFormCustomerV2","CheckoutFormCustomerContainer","setOfferMode","NOT_CHOOSE_ALL_ITEMS_DELIVERY_DATE","CHOOSE_ALL_ITEMS_DELIVERY_DATE","SlaDateSelectV2","DATE_OPTIONS","selectedDateOption","onChangeOption","onChangeDate","CheckoutFormMktoolsV2","canSendMktoolLimit","validate","check","createShippingAddressLabel","availableSalesOrg","selectedCenterData","filteredShippingAddressesForAdmins","selectedShippingAddres","unique","filteredCostCenters","costCenter","sendText","errorMessage","destinationForAdmin","getOptionsShippingAddressesCenters","getOptionsCenterCost","maxlength","CheckoutFormMktoolsContainer","budgetPlusTotal","goCatalog","mktools_CheckoutFormMktoolsV2","CheckoutFormIkeaV2","confirmSubmitCheckout","storeName","realComments","installationDataName","installationDataAddress","installationDataTown","installationDataProvince","installationDataZipCode","installationDataPhone","canSendIkea","canSendInstallationData","validateName","validateAddress","validateTown","validateProvince","validateZipCode","validatePhone","getOptionsIkea","selectBoolean","required","CheckoutFormIkeaContainer","ikea_CheckoutFormIkeaV2","CheckoutFormLowesV2","lowesDataFirstName","lowesDataLastName","lowesDataEmail","lowesDataTitle","invalidEmail","handleEmailChange","submit","onSubmit","CheckoutFormLowesContainer","lowes_CheckoutFormLowesV2","SampleNextArrow","SamplePrevArrow","ProductsSlider","slideIndex","hasObserver","shouldSendMetrics","getSlidesToShow","minCardWidth","el","maxSlides","offsetWidth","slidesCount","createObserver","observer","IntersectionObserver","handleIntersect","root","rootMargin","observe","entry","isIntersecting","sendMetrics","currentCenter","slickGoTo","prevProductsLength","settings","nextArrow","prevArrow","productsObject","showOutlet","productsArray","slideClass","rectangleResult_RectangleResultContainer","DiscoverProductsContainer","CartBoughtToguetherContainer","CartOtherProductsContainer","SmallBannerRocketV2_Card","ProgressBarWeights","startPoint","endPoint","middlePoint","currentPoint","startPointText","endPointText","middlePointText","_ref$startPointUnits","startPointUnits","_ref$endPointUnits","endPointUnits","languageDir","percentageCurrentNumber","percentageCurrentString","percentageMiddle","middlePointPositionStyle","formattedStartPoint","formattedEndPoint","formattedCurrentPoint","formattedMiddlePoint","isMktoolCenter","newSpentBudgetWithCartContents","spentBudget","maxBudget","mainText","subText","formattedCurrentQtyWeight","formattedQtyForNextUnit","currentUnit","isMainTextBold","shouldShowMiddlePoint","translationWeightInYourCart","varWeight","translationDiscount","translationWeightNeeded","translationMinNeeded","translationMinOrMaxNeeded","truck","weights_ProgressBarWeights","WeightsContainer","Weights","QuickGuides","quickGuidesData","englishGuides","spanishGuides","isSubtypeArray","guide","quickGuides","filterQuickGuidesByLanguage","displayQuickGuides","my_default_addresses","new_address","destination_name_placeholder","street_and_number_placeholder","pc_placeholder","city_placeholder","order_id","comments_placeholder","alert_empty","products_for_you","bought_together","other_products","CheckoutV2","setCosentinoGlobalCount","totalThickness","totalThicknessBrazil","cosentinoGlobalLinesNumber","cosentinoBrazilLinesNumber","updateNextButtonState","isNextButtonDisabled","submitCheckoutFormCustomer","childCustomer","submitCheckoutFormLowes","childLowes","submitCheckoutFormIkea","childIkea","submitCheckoutFormMktools","childMktools","confirmEmptyCart","isSubmitDisabled","isMandatorySfId","getLinesConditions","couponText","selectDateOptions","selectDate","dateText","selectAddressOptions","selectAddress","destination_name","street","pc","pressConfirm","form","showAllHQ","showAllCenter","showAllBrazil","cartSubtypes","setIsCheckoutPage","mktools_CheckoutFormMktoolsContainer","ikea_CheckoutFormIkeaContainer","lowes_CheckoutFormLowesContainer","customer_CheckoutFormCustomerContainer","extendedPath","getPath","hasPermissionsChanged","elements","parentNode","textContent","insertBefore","nextSibling","totalMktools","coinMktools","_this$getLinesConditi","thicknessFormat","centerLinesNumber","checkoutCartTotal","global_GroupInputVoucherV2","adaptiveHeight","banner_rocket_SmallBannerRocketV2","checkoutCartBox","checkout_SlaDateSelectV2","react_stepper_horizontal_lib_default","activeStep","activeColor","activeTitleColor","completeColor","completeTitleColor","defaultColor","defaultTitleColor","defaultBorderColor","defaultBorderStyle","defaultBorderWidth","defaultBarColor","completeBarColor","circleFontColor","lineMarginOffset","paddingRight","marginBottom","weights_WeightsContainer","marginInlineEnd","WarningIcon","varThickness","varTotalThickness","thicknessErrorElement","checkout_CartSummaryContainer","thicknessErrorElementBrazil","products_CartBoughtToguetherContainer","products_CartOtherProductsContainer","iconCheckmark","canViewNewOrderHistory","Outlet_V2","Message","global_QuickGuides","products_DiscoverProductsContainer","shippingMethods","onChangeShippingMethod","selectedEndiShippingMethod","v2","readOnly","optionClassName","ShippingMethodsContainer","ShippingMethods","ProgressBar","_ref$showLabels","showLabels","difCurrent","showWeigthLabel","showMktoolsLabels","labels","percentages","segmentColors","progress","difCurrentForBudget","global_ProgressBar","haveWeights","iconTriangle","iconTabla","iconMedioCamion","iconCamionCompleto","isCartMallOnly","incentives_IncentivesWeights","shipping_method_selector_ShippingMethodsContainer","incentives_IncentivesMktools","IncentivesContainer","Incentives","canViewIncentives","incentives_IncentivesContainer","SimilarProducts","myWrapper","lastProductsbought","maxSlidesToShow","breakpoints","shouldBeVariable","SimilarProducts_SampleNextArrow","SimilarProducts_SamplePrevArrow","responsive","breakpoint","similar","BACKEND_SERVICE_NOT_AVAILABLE","CENTER_NOT_FOUND","RESERVATION_NOT_FOuND","NETWORK_ERROR","PRODUCT_NOT_FOUND","newView","_ref$text","_ref$datacy","arrow","buttonStyle","FiltersProduct","selectHeading","alternativesRemoveBlank","fromEntries","translateValue","flatMap","alternative","isSearchable","selectOption","LazyImage","currentImage","preview","loadingMask","cutWidth","cutHeight","isResizing","masked","fetchImage","Image","onload","loadingImage","fetchImageMask","imageMask","currentImageMask","loadingImageMask","transition","backgroundPositionY","nextProps","_this$state2","onResize","WebkitMaskSize","WebkitMaskPosition","WebkitMaskRepeat","realWidth","divImage","clientWidth","heightCalculated","conversionFactor","react_resizable","minConstraints","maxConstraints","otracosa","onResizeStart","onResizeStop","div","ProductCarouselV2","imgSelected","widthCarouselItem","positionCarousel","widthOfButtonNextandBack","imgGroup","carouselWrapper","global_LazyImage","moveCarouselNext","RelatedProductsContainer","getBoughtTogetherProducts","ProductInfoTabs","aria-controls","aria-selected","data-target","aria-expanded","aria-labelledby","ProductsSimilarColorsContainer","typeIdShowDownlad","ProductDescriptionHeader","webHeadingDesc","ProductFilters","components_FiltersProduct","ProductFiltersMktools","brandsMktoolsAttr","changeBrandOption","changeColorOption","getOptionsColors","selectedBrandMktoolAttr","selectedColorMktoolAttr","ProductCardV2","hasFlagIndicator","showNewIndicator","showUpcomingIndicator","flagIndicator","productAdditionalInfo","displayStock","displayLotsButton","lotsIcon","displayOutletLotsButton","productColorsFormulations","colorFormulations","colorFormulation","data-type","global_GoBack","product_detail_ProductCarouselV2","download","iconDownload","ProductCardV2_ProductDescriptionHeader","ProductCardV2_ProductFilters","ProductCardV2_ProductFiltersMktools","canAddCart","isShowingSegmentationModal","products_RelatedProductsContainer","product_detail_ProductInfoTabs","products_ProductsSimilarColorsContainer","productCardLogic","setProduct","catalogProductLogic","initialExtras","setSelectedBrandMktoolAttr","setSelectedColorMktoolAttr","setExtras","mallProducts","mallProductsLots","onLoadProductDetail","postVisited","portfolio_mode","crosselling","setInProductDetailScreen","canAddCartMktoolColorAttr","canAddCartQtyOk","valorAnterior","valorActual","ProductCardContainer","logicProps","Result","crossSellingView","alerts_Error","product_detail_ProductCardV2","product_detail_SimilarProducts","ProductDetailScreen","product_detail_ProductCardContainer","isImpersonated","mallSelectedProductId","mallSelectedProduct","actions","AssignCustomer","handleChange","selectedCustomer","handleChangeDate","handleSubmit","poInput","commentInput","PackingList","getOrderInvoiceDownloadUrl","getOrderImagesDownloadUrl","shouldFetchPackingList","invoiceNum","react_table_es","loadingText","columns","Header","accessor","Cell","original","defaultPageSize","pageSizeOptions","previousText","nextText","noDataText","pageText","ofText","pendiente_de_crear","order_delivered","order_billed","order_shipped","reservation_status_created","order_status_created","order_status_approved","order_status_preparation","order_status_shipped","order_status_pickup","order_status_delivered","order_status_invoiced","order_pending_cancellation","order_status_pending_changes","order_status_cancelled","order_status_error","order_status_partially_delivered","Sphere","warning","warningMsg","sphereIndex","opposite","condensed","checkMark","labelStyle","shouldHighlighted","spherasElement","getElementsByClassName","advertElement","sphera","focusSphere","LineSphere","lineWarning","alternate","Timeline_Sphere","Timeline","findLast","predicate","orderStatusMap","detailsView","isVertical","isHorizontal","withDates","Timeline_LineSphere","OrderHeader","confirmRejectOrder","writeContent","printWindow","write","getElementsByTagName","innerHTML","ordersGroup","downloadPdf","print","showInvoicesModal","closeInvoicesModal","selectedDelivery","dataOrder","activeTimeLine","timelines","timeline","showPackingList","iconFile","orderLines","iconPrint","ecosentino_is_editable","reservationStatus","whiteSpace","toggleShowDetails","showDetails","OrderHeader_DisplayShippingAddress","orderCreationDate","createdDate","orders_Timeline","orders_PackingList","statusMap","LineSegmentation","listStyle","OrderFullMobile","outlet_quality","serializedLine","cart_line_LineSegmentation","import","reservation_quantity","onToggleLineDetail","editMode","overflowX","flexGrow","short_text","String","withMsal","hasPreOrder","isMktoolsAdmin","isMallAdmin","isUserMallAuthorized","isDeviatedAdmin","onLogout","canRouteConfiguration","canRouteOrders","canRouteTransfers","canRouteOfferStatusHistory","msalContext","links","withButtons","float","accounts","instance","logoutRedirect","iconLogoutV2","profile_ProfileNavBar","canRouteEditOrder","canRouteDirectSlabAccess","canRouteProductsFavourite","canRouteRecurringOrders","canRouteSegmentation","ProfileContainer","ProfileMenu","delivery_status_NOT_TREATED","delivery_status_TREATED_PARTIALLY","delivery_status_TREATED_COMPLETELLY","OrderDetailsV2","handleWindowSizeChange","setItemsView","itemsView","orders_group","shippingDates","shipDate","profile_ProfileContainer","orders_OrderHeader","showActionButtons","backgroundTransparent","isOrderDetails","deliveryStatus","delivery_id","delivery_status","delivered_date","billing_date","expected_delivery_date","orderLinesByDelivery","delivery_qty","borderBottom","orders_OrderFullMobile","orders_OrderDetailsTableV2","OrderDetailsContainer","Reservations","selectedOrder","showAssignCustomer","closeAssignCustomer","showOrderDetails","closeOrderDetails","headerClassName","defaultSorted","desc","unassigned_reservations_AssignCustomer","orders_OrderDetailsContainer","ReservationsContainer","ReservationsScreen","unassigned_reservations_ReservationsContainer","fetchOpenOrders","fetchBackOrders","KpisFilters","isOpen","setKpisFilters","changeStartDate","changeEndDate","handleFilterChange","selectColor","flushFilters","selectsStart","maxDate","selectsEnd","iconClose","iconBars","for","Kpis","calcOverCount","kpis_KpisFilters","iconCart","byBrand","iconCaution","KpisScreen","kpis_Kpis","BackOrders","showPageSizeOptions","manual","pages","onFetchData","KpiTabButton","number","kpiClass","KpiHeader","KpiHeader_KpiTabButton","OpenOrders","KpiDetailScreen","KpiDetail_KpiHeader_KpiHeader","Switch","Route","localizedUrl","KpiDetail_KpiDetailModal","LastBoughtProductsContainer","ChangeLog","changelogItems","functionality","XERON","special_custom_projects","custom_flooring","wall_clading","baseboards","prexury","scalea","vanities","colorsil","flooring_cladding","MenuLinksV2","_this$state$props","brandLinks","translationId","outletBrandLinks","pop","linksMenu","customClassTag","notShow","getMallLink","isMallPilotUser","lowesCenerId","centerMktool","centerShowroom","centerWarehouse","LinkList","_ref$customClass","elementsClass","selector","MenuLinksV2_SampleNextArrow","MenuLinksV2_SamplePrevArrow","hasBackground","comp","onMouseOver","backgroundHeight","offsetHeight","onMouseOut","Menu","header_MenuLinksV2","MenuContainer","ProductsForYouContainer","Countdown","promoDate","now","getTime","interval","updateTime","checkTime","time","clearInterval","dateFuture","dateNow","seconds","minutes","hours","MallPreviewContainer","lastFetchedLanding","MallPreviewContainer_SampleNextArrow","MallPreviewContainer_SamplePrevArrow","global_Countdown","slider_default","contexts_ProductContext","Provider","HomeV2","hasMall","slickSettings","transform","goLowes","goIkea","homeSlides","colorTitle","colorSubtitle","buttonText","buttonColor","slide","backgroundImageLazy","extraClassName","Tablas_V2","Banner1Mktools","Banner2Mktools","BannerWorkwear","BannerSupplies","Banner3Mktools","promoNaturalStoneV2","header_MenuContainer","products_ProductsForYouContainer","products_MallPreviewContainer","products_LastBoughtProductsContainer","ChangeLogHomeNews","HomeContainer","homeBanner","virtualVisitEnabled","HomeScreen","home_HomeContainer","LotsFilter","quarryBlockHandleChange","qualityHandleChange","shadeHandleChange","locationHandleChange","emailPromptOpen","promptEmail","inputEmail","onlyLots","searchValue","flush","groupByQuarryBlock","groupBy","groupByShade","groupByQuality","groupByLocation","selectedValue","searchBar","clearFilters","aria-haspopup","aria-describedby","LotTableRow","defaultImage","getMinimumValue","isLot","lotImage","maxQuantity","lunit","_defaultImage","noBundleImage","parentUrl","backgroundBlendMode","LotGridCell","LotComponent","getLUnit","getSelectedLot","selectLot","visibleLotId","isGrid","foundLot","lotInfo","lots_LotGridCell","lots_LotTableRow","lots_LotComponent","LotsGrid","CloseableAlerts","alerts","DEFAULT_PAGE_SIZE","DEFAULT_PAGE_OPTION","LotsList","scrollTableTop","table","selectedBundles","toggleGrid","isList","isListView","currentValue","currentPageSize","noGridLocation","gridLocation","selectedLotsQuantity","addSelectedLotsToCart","showAdvisorAlert","clearSelectedLots","pagesCount","ceil","gtml-label","lots_LotsTable","lots_LotsGrid","react_paginate_default","breakLabel","previousLabel","nextLabel","onPageChange","pageCount","renderOnZeroPageCount","pageClassName","pageLinkClassName","previousClassName","previousLinkClassName","nextClassName","nextLinkClassName","breakClassName","breakLinkClassName","containerClassName","activeClassName","forcePage","alerts_CloseableAlerts","LotsHeader","lotsBooked","Lots","getTotalLotsSize","lotsFiltered","innerLot","il","row","blocked","hasLotId","hasBundleId","hasInnerLotId","calcLotsDimensions","storeCurrentProductLots","initialValuesSet","modalImage","shouldFetchOutlet","trullyOutlet","prevLotsSize","length_ft","length_m","width_ft","width_m","qty_ft2","qty_m2","lotImgData","addLot","setCurrentProductLots","childLot","lots_LotsHeader","lots_LotsFilter","lots_LotsList","LotsContainer","mallProductLots","selectedMallProductId","buyTables","tableData","onLoadLots","LotsScreen","lots_LotsContainer","pedido_creado","aprobado","preparado_para_carga","salida_de_mercancías_realizada","entregado","facturado_finalizado","reserva_cancelada","error_creating_order","error_procesando_oferta","quote_rejected","cambios_pendientes","oferta_creada","OrderStatus","IkeaOrderStatus","order_history_path","onRejectOrder","OldOrders","haveInstallationData","notas","showOrderInstallationData","installationDataSplited","zip","oldInstallationData","selectedOrderId","canDoActions","statusAtRescab","selectedShippingAddressForIkea","ordersFiltered","dataOrders","orders_IkeaOrderStatus","orders_OrderStatus","eta","columnsOfIkea","showMonthDropdown","showYearDropdown","order_history_extends","shipping_truck_path","order_history_SvgComponent","shipping_truck_extends","shipping_truck_SvgComponent","NavigationTabs","OrderLineStatus","Created","Approved","Pending","In_process","Partially_delivered","Delivered","Order_cancelled","NewOrderCardItem","thicknessFormatCtsIntl","finishFormatCtsInt","validOrderLineStatus","orderStatusV3","validOrderLineStatusDate","cut_to_size","configurable","orderLinesStatusColor","positionStatus","deliveryStatusBlock","reject_reason","segmentationBlock","handleOrderLineQuantity","subtypeFormatIntl","productFormatIntl","finishFormatIntl","thicknessFormatIntl","zaddonFormatIntl","descriptionBlock","descriptionBlockConfigBath","features","addon","cutToSizeDescriptionBlock","NewOrderCard","showBtnToDetails","showMoreProducts","positionsMap","idx","order_NewOrderCardItem","handleBtnToDetailsOnClick","sliderSettings","ecosentino_status","debSearch","GoBackButton","onToggleMenu","onTogglePersonalData","FilterButton","isSelected","setIsSelected","_isSelected","toggle","CustomFilter","mapper","_onChange","k","fn","_value","FiltersRow","selections","setSelections","getIsSelected","_selections","multiselect","custom","Filters_CustomFilter","Filters_FilterButton","FiltersModal","setShowFilters","initFilters","_p","_k","_v","currentSelections","_f","prevOutput","customClassName","gtmLabelModal","_filter","Filters_FiltersRow","onClean","gtmLabelApplyFilters","FilterTags","tags","setTags","_tags","parentId","Filters_FilterTag","newTags","defaultLabel","defaultValue","empty","SearchInput","inputType","inputName","inputValue","inputOnChange","dataQa","by_estimated_delivery_date","requested_date","status_type_filter","order_confirmed","dist_center_filter","order_canceled","shipping_type_filter","centerOptions","statusTypeOptions","order_created","cancelled","setSearch","dateFilterMapper","typeDate","changeTypeDate","formatDateLabel","initialFilters","by_date_filter","custom_date_filter","_filters","startMaxDate","endMaxDate","Children","isClearable","setFilters","changeDateFilter","dateFilterActive","global_SearchInput","Filters_FiltersModal","Filters_FilterTags","OrderWalkthrough","stepTwoContent","stepThreeContent","stepFourContent","stepFiveContent","breakpointIndicator","stepFourDesktop","back","buttonSkip","stepFourResponsive","last","endStatus","EVENTS","TOUR_END","STEP_AFTER","TARGET_NOT_FOUND","stepIndex","ACTIONS","PREV","continuous","showProgress","buttonNext","showSkipButton","NewOrderHistory","mapFilters","shouldRenderWalkthrough","currentPage","_this$props3","lastPage","new_order_history_GoBackButton","new_order_history_NavigationTabs","order_OrdersHistoryFilter","order_NewOrderCard","order_OrderWalkthrough","NewOrderHistoryContainer","OrdersSelector","orders_OldOrders","order_NewOrderHistoryContainer","OrdersContainer","preOrderCtsList","cancelPreorder","fetchCutToSizeMainParams","fetchConfigurableModels","fetchCutToSizeSecondaryParams","hasSoleriaDekton","askForBudget","requestPreOrder","fullSelectedSegmentation","downloadPackagingTypesPdf","downloadPreorderFile","file_data","file_name","fetchPreOrdersProjectAvailables","fetchPreOrdersCts","preorderData","isCancelable","sendPreorderMessage","sendApprovePreorderMessage","markMessagesAsReaded","preorder_id","asyncToGenerator","regenerator_default","addConfigurablePlanAcceptanceChecked","fetchConfigurableDrawing","OrderTransfersStatus","avion","lupa","tick","PreOrdersCtsFilters","changeTypeOrder","filterTypeOrder","changeTypeProject","filterProject","fetchPreOrdersCtsPaginate","searchDebounce","inputProjectType","projectList","isNewVersion","inputDateFrom","inputDateTo","inputStatus","inputSearch","onKeyUp","showFilter","REQUESTED","TECHNICAL_REVIEW","CSTMR_APPROVAL","CSTMR_CANCEL","TimelinePreOrder","lastRecord","records","pos","getStepStatus","stepName","preOrder","record","PreOrdersCts","fetchPreOrdersPaginate","clearPreOrderCts","loadMoreButton","unreadedMails","orders_PreOrdersCtsFilters","react_infinite_scroll_component_dist_index_es","dataLength","hasMore","endMessage","hasUnreadedMails","is_read","reservation_id","purchase_order","PreOrdersCts_TimelinePreOrder","CONFIRM_REJECT_PREORDER_ADVISE","CONFIRM_REJECT_PREORDER_OK_BUTTON","CONFIRM_REJECT_PREORDER_CANCEL_BUTTON","CONFIRM_APPROVE_PREORDER","CONFIRM_APPROVE_PREORDER_OK_BUTTON","CONFIRM_APPROVE_PREORDER_CANCEL_BUTTON","CONFIRM_APPROVE_PREORDER_ADVISE_TOP","CONFIRM_APPROVE_PREORDER_ADVISE_BOTTOM","CONFIRM_DENY_PREORDER","PreOrdersCtsContainer","ProfileConfigurationEmails","addEmail","validity","valid","removeEmail","idRemove","idForInput","ProfileConfigurationPromotionEmails","validateAndTransformEmail","promotionEmails","self","highlightCosentinoNotAllowed","transformedEmail","AlertsContainer","CreateAccountForm","usernameInput","onCreateAccount","emailInput","forgotPassword","alerts_AlertsContainer","user_center_placeholder","email_user_center_placeholder","add_account","add_user_center","EMAIL_ERROR_CENTER","EMAIL_EXISTS_CENTER","SUCCESS_EMAIL_CENTER","EMAIL_CENTER_IS_NOT_FORMAT","EMAIL_CENTER_NOT_EMPTY","USER_CENTER_NOT_EMPTY","AddAccountCenterForm","validateForm","onAddEmailCenter","userInput","emptyForm","ROUTE_HOME","ProfileConfiguration","handleChangeCenter","handleChangeWeightUnit","selectedWeightUnit","handleChangeLengthUnit","selectedLengthUnit","handleChangeLang","selectedLang","transformEmailArr","toggleNotificationsCheck","rejectNotifications","surfaceUnit","showModalEmailCenters","handleSubmitChangeEmailsOfShippingAddress","togglePromotionNotificationsCheck","copyOnlyEmailsValid","emailsToConcat","copyEmailAddress","togglePromotionPoliciesCheck","handlePromotionsSubmit","mayus","contain","minus","equal","canSendPassword","canSendEmailsOfShippingAddress","showModalSettings","showModalPassword","showModaNewsLetters","acceptNotifications","copyEmails","filteredShippingAddresses","shipAddress","Number","profile_ProfileConfigurationEmails","emailsNode","defaultChecked","textOverflow","profile_ProfileConfigurationPromotionEmails","login_modal_AddAccountCenterForm","login_modal_CreateAccountForm","showLogin","ProfileConfigurationContainer","DirectSlabAccessForm","handleSubmitByInvoice","invoiceIdInput","handleSubmitByReservation","reservationIdInput","autoFocus","DirectSlabAccess","direct_slab_access_DirectSlabAccessForm","dot_slab","DirectSlabAccessContainer","reservationIdValue","invoiceIdValue","ProductsFavourite","favoritos","ProductsFavouriteContainer","RecurringOrderDetails","createdAt","calendar","num","centerOption","PropTypes","bool","func","isRequired","imageStyle","verticalAlign","icons","onChangeCenter","keepHere","reloadPage","simple","changeShowModal","selectedCenterOnModal","changeSelectedCenter","simpleInput","overflow-y","rtl","reload","confirmChangeCenter","CentersContainer","CentersV2","LineSegmentationRecurring","RecurringOrders","fetchRecurringOrdersSearch","recurringOrdersPaginateFilter","selectedRecurringdOrder","$","hasClass","removeClass","css","addClass","recurringOrdersFilter","recurringOrder","dateRecurringOrder","exist","RecurringOrders_createForOfIteratorHelper","closeModalRecurringOrderDetails","newPagination","_loop","fetchRecurringOrdersPaginate","centers_CentersContainer","fetchRecurringOrdersByDate","alignContent","gtm-id-pedido-recurrente","flexFlow","cart_line_LineSegmentationRecurring","pAll","showHiddenTr","pNotAll","recurring_orders_RecurringOrderDetails","RecurringOrdersContainer","openModalRecurringOrderDetails","confirmDeleteSegmentation","Segmentation","deleteSegmentation","saveSegmentation","poTrue","poItem","modal","formIsFullfilled","submitButton","segmentation_BusinessSegment","segmentation_Channel","viewFullSegmentation","segmentation_SubChannel","segmentation_Typology","segmentation_Use","segmentation_KB","segmentation_Builders","SegmentationForm","changeName","newName","setNameInput","TypologyV3","UseV3","SegmentationConfiguration","editName","getSalesforceAccount","toErase","savedSegmentations","&before:","deleteSegmentationPromptOpen","segmentation_SegmentationForm","SegmentationSelector","isInConfiguration","segmentation_SegmentationConfiguration","segmentation_Segmentation","SegmentationContainer","productColorId","ProfileSegmentation","segmentation_SegmentationContainer","RP","RC","PP","PC","CE","ER","RR","PM","WL","CP","Transfers","dataTransferOrders","orders_OrderTransfersStatus","getTrProps","rowInfo","TransfersContainer","ErrorContainer","Error404Screen","alerts_ErrorContainer","SEARCH_BY_ID_OR_NAME","SEARCH_BY_NAME","LowesReports","downloadCsv","clearLowesOrderDetails","imageBackground","filterable","cutSize","pogType","lowesReorderId","uom","shippingStatus","tscDetailsLine","backOrderQuantity","relatedShipments","trackingNumber","shippingCarrier","trackingId","isLowesAdmin","getColumnsLineOrders","sortable","LowesOrders","catalog_lowes_LowesReports","STORE_INFO_NAME","STORE_INFO_SHIPPINGCOUNTRY","STORE_INFO_SHIPPINGSTREET","STORE_INFO_SHIPPINGCITY","STORE_INFO_SHIPPINGSTATE","STORE_INFO_POSTALCODES","STORE_INFO_ZPHONE","ProfileLowesConfiguration","ProfileLowesConfigurationContainer","createBrowserHistory","actionsMap","listen","ElaborationDetails","modelImage","hasDetail","showDetail","currentModelOption","optionModels","imageFurniture","opacity","setCurrentModelOption","goToURL","showToastNotification","duration","removeToastNotification","FILE_LIMIT","BYTES_IN_MB","ACCEPTED_EXT","REQUIRED_BLUEPRINT","CutToSizeFormPreOrder","currentProjectOptions","selectedProject","deadline","selectedFiles","purchaseOrder","additionalFiles","showExceedFileSizeAlert","showSelectFileType","showCreatedModal","getFileOptions","fileOptions","addedFiles","getMinDate","getSelectedFiles","disableSendButton","onFileChange","addAdditionalFile","fileType","delAdditionalFile","submitData","fileKeys","showNotification","selectedElaboration","cut_to_size_ElaborationDetails","accept","all","FILE_TYPES_MAP","INVERSE_FILE_TYPES_MAP","BLUEPRINT_ICON","LABELS_ICON","EMAIL_ICON","FILE_ICON","PreorderSummary","update_at","PreOrdersCtsDetails","showFileType","attachedFiles","fileInputDialog","fileId","docType","init","goToLastMessage","delFile","getFileTypeIntl","getFileTypeIcon","getCommunicationDate","fDate","sendApproveMessage","deny","pre_order_id","sendMessage","messageInput","filePositionByType","file_type","file_position","intPosition","confirmApproveOrder","confirmDenyOrder","onchange","provCommunicationDate","unreadedMessages","ac","c","canSendMessages","fromCosentino","origin","currentDate","sameDate","cosentinoMessage","user_name","communication_id","downloadFile","boxShadow","fo","PreOrdersCtsDetails_PreorderSummary","updated_at","PreOrdersCtsDetailsContainer","PackingListView","OfferOverview","orders_PackingListView","print_icon_path","confirmOptions","confirmRejectQuote","onRejectQuote","confirmAcceptQuote","onAcceptQuote","OfferStatusHistory","customerOrder","clases","orders_OfferOverview","OfferStatusHistoryContainer","print_icon_extends","print_icon_SvgComponent","defaultButton","ReactTablePaginationCount","getSafePage","changePage","applyPage","updateCurrentRows","sortedData","rowCount","rowMin","rowMax","showPageJump","canPrevious","canNext","onPageSizeChange","_this$props$PreviousC","PreviousComponent","_this$props$NextCompo","NextComponent","classnames","rowsText","canEditPosition","onLineChangeValue","orderShippingType","preferredDeliveryDates","setPreferredDeliveryDates","globalPreferredDeliveryDate","setGlobalPreferredDeliveryDate","isIndividualPreferredDeliveryDatePickerDisabled","setIsIndividualPreferredDeliveryDatePickerDisabled","getOrderToEditLine","Posnr","displayPrice","initialDates","orderLineId","initialDate","getInitialDate","requested_delivery_date","handleUpdatedPreferredDeliveryDate","prevDates","updateOrderToEdit","positionId","formattedDate","isImpersonateBy","mall_promotion_id","additionalInfoBlock","editModeQuantityPosition","editModeRejectPosition","descriptionBlockException","editModePreferredDeliveryDatePosition","editLine","NewOrderDetails_ModifiedLineIndicator","orderLinePositionId","orderLineEstimateDeliveryDate","orderLinePreferredDeliveryDate","onChangePreferredDeliveryDate","placeholderText","updatedOrderInEdition","handleGlobalDateChange","materialName","CutToSizeMaps","samePattern","edge","bevel","packaging","OrderDetailsWalkthrough","stepTwoDesktop","stepTwoResponsive","ModifiedLineIndicator","lineIndicator","orderLineStatus","CONFIRM_REJECT_ORDER","CONFIRM_REJECT_ORDER_SECOND_MSG","CONFIRM_REJECT_ORDER_CANCEL_BUTTON","CONFIRM_REJECT_ORDER_SAVE_BUTTON","CONFIRM_DISCARD_CHANGES_EDIT_ORDER","CONFIRM_DISCARD_CHANGES_EDIT_ORDER_CANCEL_BUTTON","CONFIRM_DISCARD_CHANGES_EDIT_ORDER_SAVE_BUTTON","CONFIRM_SAVE_CHANGES","CONFIRM_SAVE_CHANGES_SECOND_MSG","CONFIRM_SAVE_CHANGES_EDIT_ORDER_CANCEL_BUTTON","CONFIRM_SAVE_CHANGES_EDIT_ORDER_SAVE_BUTTON","order_in_process_of_modification_warning","select_global_date","select_individual_date","NewOrderDetails","showShippingsModal","closeShippingsModal","showInvoiceModal","closeInvoiceModal","writeOrderBody","orderScreenBody","downloadPdfOrderBody","fetchOrderDetailsFn","showPrice","confirmDiscardChanges","resetChangeInPositions","editOrderMode","confirmSaveChanges","onSaveChange","changedOrderInEdition","ele","orderWeightError","canEditPositon","positionToEdit","deliveryStatusLinksEstimatedOn","deliveryStatusLinksDeliveredOn","deliveryStatusLinksPartially","limitDeliveries","deliveriesEntries","deliveryStatusLogic","deliveryInformationBlock","currentOrderLine","headerButtonsGroup","ecosentino_is_deletable","timelineOrderStatusMsg","newTimeline","Utils_DisplayShippingAddress","handleCloseConfigBathModal","order_NewOrderDetailsEditMode","invoiceDate","PaginationComponent","order_OrderDetailsWalkthrough","NewOrderDetailsContainer","NewShippingCardItem","blockQuantity","DeliveryStatus","planned_transportation","NewShippingCard","order_lines","deliveryStatusMap","orderLinesByDeliveryLength","positionsByDeliveryMap","shipping_NewShippingCardItem","delivery_date","shippingTypeOptions","NOT_TREATED","TREATED_PARTIALLY","TREATED_COMPLETELLY","ShippingWalkthrough","stepThreeDesktop","stepThreeResponsive","NewShippingHistory","updateFilters","prevFilters","currentFilters","fetchOrderDeliveries","paginate","shipping_ShippingHistoryFilter","shipping_NewShippingCard","shipping_ShippingWalkthrough","NewShippingHistoryContainer","NewShippingDetails","downloadPdfShippingBody","orderInformationBlock","displayShippingAddress","deliveryOrderLines","shippingAddrByUser","availableShippingAddrId","shipping_address_id","orderLineShippingAddrId","selectedOrderLine","timelineDeliveryContentMsg","expectedDeliveryDate","timelineDeliveryStatusLogic","container_number","container_provider","NewShippingDetailsContainer","ProfileScreen","globalGoBackProfile","showSegmentation","CosentinoSingleSignOn","onSuccess","onError","SignInForm","showOldLogin","isInfoHidden","onLogin","passwordInput","handleSubmitAD","accountsSortedByLastLogin","idTokenClaims","auth_time","request","scopes","account","acquireTokenSilent","tokenResponse","accessToken","InteractionRequiredAuthError","acquireTokenPopup","BrowserAuthError","loginRedirect","componentDidMount","referrer","componentDidUpdate","inProgress","prompt","contextType","MsalContext","ForgotPasswordForm","onRecoverPassword","MandatoryChangePasswordForm","onMandatoryChangePassword","passwordRepeatInput","LoginModal","showCreateAccount","currentView","showForgotPassword","login_modal_ForgotPasswordForm","login_modal_MandatoryChangePasswordForm","login_modal_SignInForm","aligItems","LoginModalContainer","showBigAccount","BundleContent","bundleContent","lotImageResult","global_LengthLotMeasure","global_WidthLotMeasure","QtyLotMeasure","BundleContentContainer","SegmentationModal","modalLabel","AppObsolete","hardRefresh","ModalFormattedMessage","closeModalTranslation","inputTranslate","IkeaModalEmployeeId","HTMLFormElement","reportValidity","toggleShowIkeaModalEmployeeId","pattern","DektonGripModal","linkTechnicalDektonGrip","linkMaintenanceDektonGrip","AskForEmailModal","validateEmail","IncompatibleTypesExceptionModal","EmailPromotionsModal","setUserEmail","previousPreferences","newsletter","dontShowMore","WhatsappOptin","desktopSubmit","2000","2001","2014","placeholderMap","whatsappEcosentinoLogo","inputPhone","InfoModal","ThankYouSubscribeModal","global_InfoModal","AdvertisementModal","hideAdvertisements","PedidosRecurrentesModal","GlobalModals","showTipModal","routeCatalog","routeCheckout","routeProducts","isCheckoutFlow","FloatingAlertContainer","login_modal_LoginModalContainer","catalog_WhatsappOptin","modals_DektonGripModal","segmentation_SegmentationModal","modals_EmailPromotionsModal","modals_PedidosRecurrentesModal","bundle_BundleContentContainer","global_AppObsolete","global_ModalFormattedMessage","global_IncompatibleTypesExceptionModal","global_IkeaModalEmployeeId","BigAccountModal","login_modal_AskForEmailModal","global_ThankYouSubscribeModal","closeThankYouSubscribeModal","advertisements_AdvertisementModal","LotImageViewerScreen","LotImageViewerContainer","layout_GlobalModals","Promotions","promoBanner","promoBanner_fr","promoBanner_en","flyer","flyer_2032_fr","flyer_2032_en","flyer_2011","promoColors","PromotionsContainer","PromotionsScreen","promotions_PromotionsContainer","ActionsCell","_React$Component","inherits","ActionsCell_createSuper","anchor","setWrapperRef","handleClickOutside","linkToCopy","host","ROUTE_LANDING_TEMPLATE","dataItem","wrapperRef","kendo_react_popup_dist_es_main","offset","popupClass","copied","getContent","country_AE","country_AT","country_AU","country_BE","country_BR","country_CA","country_CH","country_DE","country_DK","country_DU","country_ES","country_FI","country_FR","country_GB","country_IE","country_IL","country_IT","country_JP","country_MX","country_MY","country_NL","country_NO","country_NZ","country_PL","country_PR","country_PT","country_SE","country_SG","country_TR","country_US","country_ZA","country_AF","country_AO","country_CN","country_EG","country_GR","country_IN","country_IR","country_MU","country_MZ","country_PK","country_TN","country_VN","country_ZW","trick","ending_date","order_by","remove_success","status_ALL","status_DRAFT","status_EXPIRED","status_PUBLISHED","status_SCHEDULE","upload_image","LandingManager","ActionsCell_ActionsCell","conf","removeLoader","addLoader","isLandingTranslated","dataLang","filtersObject","gridDataState","take","showLangsModal","modalDataLang","modalCommonID","fetchCountriesDescriptions","fetchCentersDescriptions","kendo_react_dropdowns_dist_es_main","dataItemKey","textField","selectedSalesOrgs","kendo_react_dateinputs_dist_es_main","dist_es_main","pageable","onDataStateChange","dataState","cell","data_lang","clearTimeout","LandingManagerContainer","fetchMarketsDescriptions","LandingManagerScreen","landing_manager_LandingManagerContainer","SortableItemUI","attributes","onDeleteImage","onEdit","onShowImage","onFileError","showLotsModal","showAdditionalInfoModal","commingFromMall","thumbnail","tumbnail_image_url","original_thumbnail","isGroup","thumbnail_image_filename","data-text","thumbnail_image","thumbnail_image_preview","detail_image_filename","detail_image","detail_image_preview","background_image_filename","background_image","background_image_preview","PAGE_INDEX","PAGE_SIZE","LotsModal","centersOptions","provisionalLots","lotsAreFetched","expander","handleSelectCenter","addLots","updateGroup","addGroup","selectBundle","disableButton","selectedLotsCount","Expander","isExpanded","column","subRowsKey","pageIndex","expanded","onExpandedChange","newExpanded","lands","setAdditionalInfo","_languages","_setLanguages","_defaultLanguage","_setDefaultLanguage","getParsedAdditionalInfo","_translations","_setTranslations","_availableLanguages","currentLanguages","defaultIndex","al","getInfoLanguages","defaultLang","setDefaultLanguage","handleSetDefaultLanguage","handleChangeComment","newTranslations","overflowY","usedLangs","unusedLangs","Bold","EditorTools","Underline","FontSize","BackColor","ForeColor","Link","Unlink","CONFIRM_DELETE_IMAGE","CONFIRM_DELETE_LANDING","CONFIRM_DELETE_LANGUAGE","creation_error","creation_success","error_image_file","landing_edit","landing_new","product_already_added","translation_edit","translation_new","update_error","update_success","select_center","PORTFOLIO_MODES","_PORTFOLIO_MODES","skRef","LandingCreation","getUri","catalogUri","labelsInput","setExtraData","salesOrgMap","myHttpHeaders","searchOnLoad","useHistory","second","showResults","searchingProducts","setQueryProcessor","plainQueryObject","hideResults","parseBackError","sMessage","onDeleteLanguage","currentIso","handleSaveLanding","dataInput","dataFinal","lang_id","baseLang","_i","_Object$entries","banner_desktop_image","banner_desktop_image_uri","banner_mobile_image","banner_mobile_image_uri","center_id","detail_image_url","background_image_url","handleFinishSaveLanding","preProccessProduct","hit","inner_hits","stockOutlet","stockMall","byCenter","h","ResetSearchbox","SortItemUI","components_SortableItemUI","showModalImage","modalImageSrc","lotsSource","toEdit","itemData","modalItemData","tryAddProductWithLots","tryAddProduct","checkOutlet","showModalAddProduct","lastModalProduct","addProduct","minimun_order","onSave","onValidate","hasErrors","getModeText","modalText","modalTextError","longDescription","bannerDesktopKey","bannerMobileKey","newLandingDraft","template_id","slugTimeout","handleRLDDChange","newItems","isoValue","res","storePortfolioMode","dataToShow","banner_desktop_image_filename","banner_mobile_image_filename","bValid","getBoundingClientRect","pageYOffset","behavior","_this$props4","calendarSettings","startDateInput","endDateInput","sText","newSlug","kendo_react_editor_dist_es_main","tools","defaultContent","html","banner_desktop_image_preview","banner_mobile_image_preview","_id","kendo_react_sortable_dist_es_main","idField","disabledField","itemUI","onDragOver","components_LotsModal","components_AdditionalInfoModal","LandingCreationContainer","LandingCreationScreen","landing_manager_LandingCreationContainer","addProductInFetchedProducts","setSelectedProduct","setProductSelectedToAdd","MallSlider","SwiperCore","Navigation","Pagination","Thumbs","Autoplay","thumbsSwiper","setThumbsSwiper","react_swiper","slidesPerView","768","991","1200","centerInsufficientSlides","spaceBetween","clickable","navigation","modules","watchSlidesVisibility","watchSlidesProgress","onSwiper","swiper_slide","loop","delay","disableOnInteraction","thumbs","swiper","components_SliderItem","AddToCartModalItem","unitsSelected","setUnitsSelected","errorUnits","setErrorUnits","BannerImage","landingData","ImpersonateBar","canShow","fetchRefreshPricesList","centerNames","ProductItem","MallImageViewer","dist_main_default","showValidImage","formattedProducts","productSelectedToAdd","selectedSort","selectFilter","unselectFilters","filtersSelected","toggleState","setToggleState","showImageModal","setShowImageModal","imageModal","setImageModal","setCurrentPage","currentProductList","setCurrentProductList","_useState11","_useState12","nextPage","_currentIndex","_currentProductList","isAnyFilterActive","components_MallSlider","sap_id","isUsaOrCa","components_ImpersonateBar","components_BannerImage","popupSettings","scrollThreshold","components_ProductItem","components_AddToCartModalItem","components_MallImageViewer","previewMode","setFiltersSelected","setFetchedProducts","setFormattedProducts","landingProducts","_formattedProducts","fProduct","LandingTemplates_1","fc","LandingTemplatesContainer","LandingTemplates","LandingTemplatesScreen","landing_templates_LandingTemplatesContainer","Italic","Strikethrough","Subscript","Superscript","AlignLeft","AlignCenter","AlignRight","AlignJustify","Indent","Outdent","OrderedList","UnorderedList","Undo","Redo","FormatBlock","FontName","I18nPromotionModal","allTranslations","showEmptyAlert","charLimitErrors","defaultEmpty","sanitizedText","onSaveForm","onCloseModal","contentStyle","bannerPreview","filled","StepsBar_Sphere","StepsBar","triggerConfirmUnsavedChanges","incomingStep","confirmFromStepOne","confirmFromStepTwo","confirmFromStepThree","confirmFromStepFour","confirmFromStepFive","confirmFromStepSix","confirmFromStepSeven","cancelFromStepOne","cancelFromStepTwo","cancelFromStepThree","cancelFromStepFour","cancelFromStepFive","cancelFromStepSix","cancelFromStepSeven","handleHeaderSubmit","references","chooseAreaRef","chooseCustomersRef","chooseMaterialsRef","chooseDiscountsRef","chooseTemplateRef","chooseBannerRef","stepOneUnsavedChanges","mapValues","setUnsavedChangesStepOne","unsavedChanges","hasUnsavedChanges","setUnsavedChangesStepTwo","setUnsavedChangesStepThree","setUnsavedChangesStepFour","setUnsavedChangesStepFive","setUnsavedChangesStepSix","setUnsavedChangesStepSeven","handleChangeStep","StepsBar_LineSphere","BannerPicker","selectedId","searchBanner","currentBannerEdit","marginPagesDisplayed","pageRangeDisplayed","handlePageClick","setBanner","hiddenImage","bannerSizes","wordBreak","BannerPickerContainer","MAX_SIZE","ERROR_DIMENSIONS","ChooseBanner","handleBannerTitleUnsavedChanges","stateBannerTitle","bannerTitleCloned","propsBannerTitle","handleBannerDescriptionUnsavedChanges","stateBannerDescription","bannerDescriptionCloned","propsBannerDescription","validateImage","typeOfImage","fnAlert","handleSubmitUploadImage","_URL","webkitURL","setCurrentBannerEdit","showAlertRequiredBanners","newBannerLanding","newBannerHome","newBannerNewsLetter","newSideBannerNewsLetter","openModalLanding","currentBannerSelectedId","openModalHome","openModalNewsletter","openModalSideNewsletter","alertBannerLanding","alertBannerHome","alertBannerNewsLetter","alertSideBannerNewsLetter","showModalI18n","objectToTranslate","objectTrans","inputFileBannerLanding","inputFileBannerHome","inputFileBannerNewsletter","inputFileSideBannerNewsletter","letter","side-letter","saveTranslationObject","handleReference","stepBack","updatedTranslations","objectId","ChooseBanner_SelectOrUpload","requirements","isNewBanner","openModal","setNewBanner","max-size","alertSideBannerNewsletter","showI18nModal","promotions_BannerPickerContainer","promotions_I18nPromotionModal","updateTranslations","SelectOrUpload","ChooseCustomers","selectedCustomers","handleCustomersUnsavedChanges","stateCustomers","propsCustomers","selectCustomer","customerId","showModalToSelect","searchOnModal","usersFiltered","usersSelectedFiltered","usersSelected","preferences","newSelectedCustomers","ChooseArea","handleMarketChange","handleCountriesChange","handleMarketUnsavedChanges","salesOrgs","handleCountriesUnsavedChanges","handleCentersChange","handleCentersUnsavedChanges","compareArrayOfObjectsByValue","stateMarket","propsMarket","stateCountries","propsCountries","stateCenters","propsCenters","fetched","oldObjects","newObjects","isEquivalent","oldObject","newObject","Results","StockResult","showModalStock","StockResultContainer","ListResult","cantBeSelected","indRotationLabel","selectMaterial","selectedMaterials","ListResultContainer","TableListResult","boxSizing","materialSearch_ListResultContainer","MaterialsList","finishOptions","thicknessOptions","rotationOptions","getKeyTranslation","outletOptions","brandOptions","typeOptions","materialSearch_StockResultContainer","materialSearch_TableListResult","selectAllMaterials","removeAllMaterials","materialSearch_Results","MaterialsListContainer","multiCenterSearch","ChooseMaterials","setSkStock","skStock","selectedMaterialsData","lastModalProducts","removeMaterial","handleMaterialsUnsavedChanges","selectBulkMaterials","removeBulkMaterials","getNameText","stateMaterials","propsMaterials","selectedMaterialsFiltered","filterBySlabs","filterMethod","_original","productIdToShowStock","materialSearch_MaterialsListContainer","ChooseTemplate","sendPromotionTemplateSelected","selectedLandingTemplate","selectedNewsLetterTemplate","handleLandingTemplateUnsavedChanges","propsLandingTemplateId","stateSelectedLandingTemplate","handleMailTemplateUnsavedChanges","propsMailTemplateId","stateSelectedNewsLetterTemplate","getOptionsLandingTemplate","optionLanding","getOptionsMailTemplate","optionMail","landingTemplates","newsLetterTemplates","VALID_ROTATIONS","ChooseDiscounts","goToStepOne","requestDiscounts","markMaterial","isChecked","handleDiscountsUnsavedChanges","canAskForDiscount","stateDiscounts","discountMaterialsCloned","propsDiscounts","stateDiscountsKeys","propsDiscountsKeys","headerStep","formHandleSubmit","canViewDiscountRequest","country_LT","promotion_confirm_clean_customers_materials","promotion_preferences_title","promotion_preferences_accept_notifications_check","promotion_preferences_copy_email_address","promotion_select_centers","promotion_select_countries","promotion_select_languages","promotion_select_market","promotion_select_user","promotion_select_center","details_of_the_promotion_it_must_include_terms_and_conditions_of_the_campaign","not_applicable","rotation_discontinued_material","rotation_low_rotation","rotation_discontinued_format","rotation_material_no_portfolio","rotation_new_creation","rotation_discontinued_finish","rotation_high_rotation","rotation_medium_rotation","rotation_slow_moving","rotation_purchase_sale","confirm_unsaved_changes","save_and_continue","continue_without_saving","PromotionAdmin","validDateToRequestDiscount","getLanguages","showModali18n","handleDescriptionUnsavedChanges","handleCommercialNameUnsavedChanges","nameInput","alertCommercialNameRequired","alertDescriptionRequired","handlePromotionName","handlePromotionStartDate","handleValidDateToShowDiscountStep","propsStartDate","stateStartDate","handlePromotionEndDate","propsEndDate","stateEndDate","handlePromotionLanguageUnsavedChanges","setAvailableLanguages","stateLanguages","languagesCloned","propsLanguages","stateJsonLanguages","propsJsonLanguages","stateCommercialName","commercialNameCloned","propsCommercialName","stateDescription","descriptionCloned","propsDescription","getComponentOfTheStep","showi18nModal","steps_ChooseArea","steps_ChooseCustomers","steps_ChooseMaterials","steps_ChooseDiscounts","steps_ChooseTemplate","steps_ChooseBanner","fetchedCentres","descriptionModalForDescription","modalType","charLimit","limitWarning","descWarning","goAdminList","promotions_StepsBar","PromotionAdminContainer","reducer","updatedTrans","PromotionAdminScreen","promotions_PromotionAdminContainer","DetailsDefault","logosBrands","logoSilestone","logoDekton","DKTN","logoDktn","logoSensa","DisplayBrandLogo","logoBrand","DetailsLandingDefault","displays_DisplayBrandLogo","ProductLandingOne","firstState","getTypeRectangleResult","DetailsLandingDefault_DetailsLandingDefault","rectangleResult_DetailsDefault","ProductLandingOneContainer","isOutletFixBoolean","LandingOne","bannerSrc","template_ProductLandingOne","DetailsDefaultV2TemporalFix","landingMall","ProductLandingTwo","rectangleResult_DetailsDefaultV2TemporalFix","ProductLandingTwoContainer","template_ProductLandingTwo","LandingPromotions","template_LandingOne","LandingTwo","removePriceList","LandingPromotionsContainer","promotionProducts","LandingPromotionsScreen","promotions_LandingPromotionsContainer","SUBJECT","Suggestion","getTipology","canSendSuggestion","countCharacters","suggestionInput","subjectInput","tipology","validateCountCharacters","minlength","deleteAlert","SuggestionContainer","subject","SuggestionScreen","suggestion_SuggestionContainer","setView","rememberedCenter","ChangeLogScreen","changelog_ChangeLog","MktProductsMax","renderProviderEmail","getValue","renderMin","renderMax","renderMaxMonth","maxWeek","maxMonth","providerEmail","stateItem","newValues","minOk","maxOk","maxWeekOk","maxMonthOk","checkValuesItem","parseValues","itemReset","showAlertFailure","itemsWithError","itemChanged","maxColumnName","saveItems","dataFiltered","MktProductsMaxContainer","textFailure","MktAdminProductsScreen","mkt_admin_MktProductsMaxContainer","Maintenance","MaintenanceScreen","MaintenanceContainer","ResponsiveMenu","userProfile2","countReservations","ResponsiveMenuContainer","onShowUpLogin","onShowUpCart","onShowUpImpersonate","MiniCartSummary","GroupInputVoucher","MiniCart","isMktoolsCart","buttons","mini_cart_MiniCartSummary","global_GroupInputVoucher","showBanner","MiniCartContainer","ImpersonateModal","onImpersonate","deimpersonate","confirmImpersonate","ImpersonateContainer","UserProfileModal","ProfileModalContainer","ProfileModal","TipModal","_props$color","points","SimpleCartLine","closeCrossSellinModal","MultiProductDisplayName","typeName","sufix","SimpleDetailsDefault","isMulti","global_MultiProductDisplayName","SingleRectangleResult","handleClickLink","sendClickMetrics","SimpleDetailsDefault_SimpleDetailsDefault","modelCount","added_products_to_your_cart","CrossSellingModal","isProductTypeSlab","showCrossSelling","global_TipModal","cart_line_SimpleCartLine","rectangleResult_SingleRectangleResult","multi_size","IconButtons","totalBadge","countReservationsBadge","changeLogBadge","changesRead","miniCart","impersonateButton","onToggleImpersonate","iconList","userBadge","iconProfile","iconProfileInverted","logButton","profile_modal_ProfileModalContainer","impersonate_ImpersonateContainer","closeViewOn","canViewCrossellin","cross_selling_CrossSellingModal","IconButtonsContainer","showModalSelectorImpersonate","onShowUpProfile","onToggleCart","onToggleProfile","LanguageSelector","changeLocale","setLocale","nextState","localeSelected","onShowSelector","SelectShippingAddress","shippingAddressesFilteredByCenter","AssignCenterInfoModal","showSelectShippingAddress","global_SelectShippingAddress","ConfirmDialogIkeaCenter","strEmployeeId","store","onChangeIkeaShippingAddress","confirmIkeaCenter","IkeaShippingAddressContainer","IkeaShippingAddress","TopRibbonV2","getWeURLAccessByEnvironment","isRemembered","sippingAddressFilteredToSelectByCenter","showRememberSelectCenter","showRememberSelectShippingAddress","isShippingAddressRemembered","isShippingAddressLoading","global_AssignCenterInfoModal","is_user_active_on_sf","centers_IkeaShippingAddressContainer","language_selector_LanguageSelector","LowesAdminViewSelector","LowesViewSelector","HeaderV2","entorno","hasBanner","isShowBannerComments","data_analytics","sendEvent","infoDev","responsiveMenu","header_ResponsiveMenuContainer","REACT_APP_BRANCH","branch","mf","odata","component_default","header_TopRibbonV2","catalog_lowes_LowesAdminViewSelector","catalog_lowes_LowesViewSelector","header_IconButtonsContainer","build_default","showFastActions","HeaderContainer","RecentlyVisitedProductsContainer","isPromoActive","FooterV2","products_RecentlyVisitedProductsContainer","instagram","pinterest","twitter","youtube","dktn","naturalStone","TinyFooter","ecosentinoNegativeLogo","silestoneLogo","dktnLogo","dektonLogo","sensaLogo","naturalStoneLogo","Layout","errorInfo","showMaintenanceText","Raven","captureException","header_HeaderContainer","somethingWentWrongIcon","lastEventId","showReportDialog","footer_FooterV2","kendo_react_notification_dist_es_main","closable","footer_TinyFooter","ElaborationType","ElaborationTypeSelector","cut_to_size_ElaborationType","backgroundImageV2","stringOrNode","oneOfType","colorOption","colorValue","getFinishOptions","selectedColor","selectedFormat","selectedThickness","selectedAddon","finished","getThicknessOptions","selectedFinished","getAddonOptions","getMaterials","CutToSizeFormBudget","selectedBrand","currentColorOptions","currentBrandOptions","quoteFile","fillColors","colorKey","catalogColor","resetProducts","fileInputs","radio","updateOptions","handleSelectBrand","handleSelectColor","brandOption","fetchSecondaryParams","handleSelectFinish","handleSelectThickness","thicknessOption","handleSelectAddon","addonOption","finishesOptions","addonsOptions","valueComponent","formatValue","intDecParts","decimalPart","decSize","ft","_ref$withUnit","withUnit","userUnitPrefer","unitDefault","modelOption","modelValue","CM_DECIMALS","IN_DECIMALS","MIN_WIDTH","MIN_HEIGHT","MIN_RADIUS","MAX_RADIUS","SECURITY_MARGIN","MAX_INSERTS","CutToSizeFurniture","_minWidth","_minHeight","_securityMargin","_minRadius","_maxRadius","_models","_modelsOptions","_modelsInfo","activeForm","selectedModel","selectedPackaging","setPackingAsDefault","selectedEdge","selectedBevel","selectedQuality","insertsQuantity","currentModelImageOption","extensions","extWidth","extHeight","goToPreOrder","handleSelectModel","extKey","refs","widthInput","heightInput","radiusInput","insertsInput","handleChangeWidth","flipMax","_maxHeight","_maxWidth","setWidth","handleChangeMinWidth","extDimensionsByShape","getDimensionsByShape","isSquare","hasDiameter","isHeightEqualA","handleChangeHeight","setHeight","handleChangeMinHeight","handleChangeRadius","handleChangeInsertsQuantity","handleChangeBevel","bevelOption","handleSelectEdge","edgeOption","handleSelectPackaging","packagingOption","setActiveForm","elementId","scrollIntoView","block","addExtension","samePatternYes","samePatternNo","extensionFormKey","removeExtension","lastExtensionIndex","rawFinish","finishes","rawThickness","thicknesses","hasRadius","dimensionInputsCount","getModelWidth","getModelHeight","getModelHasRadius","getShapeHasRadius","getModelOptions","getModelInfo","getGenericInfo","getModelExtension","ext","getModelOutlineImages","outline_images","getModelDetailImages","detail_images","isMainPieceDone","passRadius","passBlueprint","isExtensionDone","areExtensionsDone","isPackagingDone","submitCartLine","metricMeasureFromInput","extRadius","shapeType","models","shape_type","round","EPSILON","inserts","setDefaultPackaging","getMeasureLabel","dimensionsByShape","modelOptions","packagingOptions","edgeOptions","edges","avoid","restrictions","allowedThicknessByEdge","_ref11","bevelOptions","bevels","_ref12","_ref13","_ref14","_ref15","modelOptionsFilteredByEdge","selectedEdgeData","maxValues","modelDetail","extensionsLenght","extensionsCounter","modelInfo","genericInfo","marginInlineStart","_ref16","_ref17","extensionKey","isLastExtension","fontyWeight","tresd_icon_path","INITIAL_STATE","CutToSizeDefault","isSoleria","isRodapie","isJusCut","keyCode","setDimensionsFromFormat","s_format","selectedModelOption","handleSelectFormat","formatOption","handleRodapiesWidth","widthOption","getFormatOptions","filterOptions","fa","fb","firstComp","getSku","getRawFormat","raw_format","sku","formatsOptions","tresd_icon_extends","tresd_icon_SvgComponent","ConfigBathCard","fullConfig","defaultImageModelUrl","uniqueColors","uniqueBrands","uniqueTypes","selectedOptionType","handleChangeType","selectedOptionModel","handleChangeModel","selectedOptionBrand","handleChangeBrand","selectedOptionColor","handleChangeColor","ConfigurableBathsCatalog","selectQuickShip","showOnlyQuickShip","filteredModels","third_party","filteredModel","brandConfigs","availableColors","availableBrands","availableTypes","_this$getFilteredMode","getFilteredModelsAndColors","switch_Switch","onLabel","offLabel","CatalogFilters","configurable_baths_ConfigBathCard","CutToSize","showForm","goToSection","getElaborationTypeFromUrlParams","handleSelectType","toLocaleUpperCase","elaborationType","fetchMainParams","cut_to_size_ElaborationTypeSelector","cut_to_size_CutToSizeFormBudget","cut_to_size_CutToSizeFormPreOrder","CutToSizeFormFurniture","configurable_baths_ConfigurableBathsCatalog","CutToSizeFormDefault","CutToSizeScreen","cut_to_size_CutToSize","CatalogLowesScreen","LowesUser","searchUsers","searchTemplates","toggleTemplateStore","newstemplatesId","updateStoreLowes","storeSelected","templatesFiltered","unselectAllUsersShopper","selectAllUsersShopper","onToggleUsersTemplate","productOption","productValue","optionTemplateSelected","templateSelected","sampleSelected","showModalUsers","showModalNewTemplate","titleForNewTemplate","sampleType","editingTitle","wantDuplicate","CatalogLowesAdmin","selectProduct","optionSelectedProduct","emptySample","createNewTemplate","selectTemplate","saveTemplate","clearTemplateSelection","saving","createScreenShot","updateTemplate","deleteTemplate","confirmDelete","onRemoveItem","w","_this7","newSamples","Infinity","minH","minW","_this8","_this9","enableTemplate","disableTemplate","newsStores","_this10","domtoimage","toJpeg","bgcolor","dataUrl","_this11","insertItem","maxXaddW","_this12","templatesOptions","changeTitleOfTemplateSelected","toogleAvailableOfTemplateSelected","addNewSample","react_grid_layout_default","useCSSTransforms","isDraggable","isResizable","cols","getCols","rowHeight","onLayoutChange","createElementToEdit","LowesUsers","toggleUsersTemplate","configNewSample","global_ColorSelector","changeLowesCodeForSample","changeTitleForSample","changeTitleForNewTemplate","CatalogLowesAdminScreen","CatalogLowesAdminContainer","canSend","listRequirementsVisible","LowesRegister","atob","haveMayus","haveMinus","haveNumber","haveContain","isEqual","repeatPasswordInput","sendForm","checkForm","emailFromUrl","decodeEmail","LowesNewUserRegister","lastNameInput","storeNumberInput","numberStore","RedirectSSO","handleSubmitSSO","onShowUpRedirect","login_modal_CosentinoSingleSignOn","RedirectSSOScreen","login_modal_RedirectSSO","DeviatedAdmin","deviatedDescription","DeviatedAdminContainer","DeviatedAdminScreen","deviated_admin_DeviatedAdminContainer","RedirectJT","handleSubmitJT","JTData","JTDataJSON","SapID","checkJobTracker","sessionToken","SessionToken","auth","RedirectJTScreen","login_modal_RedirectJT","OldLogin","OldLoginContainer","OldLoginScreen","login_modal_OldLoginContainer","MktAdminColors","inputs","listGroupColors","colorsToAdd","scrollListGroupColors","colorsToDel","navMenuColors","contentColors","MktAdminColorsContainer","MktAdminColorsScreen","mkt_admin_MktAdminColorsContainer","CookiePolicy","englishContent","spanishContent","PrivacyPolicy","DiscountStateLabel","statusMsg","iconClass","_this$props$campaign","campaign","discount_comments","data-placement","CustomersTable","country_id","MaterialsTable","ApproveDiscount","lastInputId","promotionIds","checkData","formatedValue","checkStatus","showAlert","addPromotionId","deleted","sendApproveDiscounts","filteredPrommotionIds","showResponseModal","isDisableSendButton","undeletedPids","fixValues","pId","idsCount","vistexIds","DenyDiscount","rejectReason","sendDenyDiscounts","DISCOUNT_REQUESTED","DENIED","NONE","CampaignInfo","countriesString","countyCode","created_by","centersData","ApplyDiscountsModal","showApprove","showDeny","showCustomers","showMaterials","showResponse","showCampaignInfo","showResponseDeniedModal","showResponseApprovedModal","discounts_MaterialsTable","discounts_CustomersTable","discounts_ApproveDiscount","discounts_DenyDiscount","discounts_CampaignInfo","the_campaign_is_incomplete","enter_the_email_to_send_the_preview","confirmEnablePromotion","PromotionsList","getActionCell","messageId","isPricing","textDecoration","paddingInlineStart","showApplyDiscountsModal","selectedCampaign","isReady","inputEmailValue","showModalPreview","selectedRow","default_text","discounts_DiscountStateLabel","automaticUser","initCreateNewPromotion","fetchPromotion","discounts_ApplyDiscountsModal","PromotionsListContainer","PromotionsListScreen","promotions_PromotionsListContainer","Unsubscribe","unsubscribe","isSubscribe","resubscribe","UnsubscribeScreen","UnsubscribeContainer","lastSelectedMaterial","selectedMaterial","isMktools","isIkea","sendAnalytics","setPageType","pageSection","setPageSection","pageSubsection","setPageSubsection","getUrlSection","urlHasMoreThanOneType","times","RegExp","setPageViewEvent","setPageSections","ctsSection","getUrlType","getUrlBrand","getUrlSubtype","subSect","getWebHeading","hasMoreThanOneType","registerAnalytics","showErrorScreen","screens_Error404Screen","_props","ConfigurableCutToSize","handleSalidaEvent","isModified","isConfigModified","handlePlanAcceptance","addConfigurableModifiedList","storeConfig","currentConfig","getCheckoutLineIdForCurrentConfig","getFormattedData","ctsData","addConfigurableInProgress","routePath","_this$props5","getCurrentConfigQuantity","_this$props6","getUserCurrency","priceListAtSelectedCenter","cosConfigurable","_this$props7","apikey","kunnr","werks","quickship","ownprops","configurable_baths_ConfigurableCutToSize","ConfigCutToSizePlanAcceptance","handleBeforeUnload","isLeavingIntentionally","returnValue","handleNavigationAttempt","handleBackToEditClick","updatedPath","onDocumentLoadSuccess","numPages","handlePlanAcceptanceCheckboxChange","onDownloadClick","getPreparedUrlForDownload","configurableDrawingIsLoading","intervalId","pdfjs","GlobalWorkerOptions","workerSrc","unblock","pollForDrawing","attemptCount","_response$data","checkbokAndButtonBlock","onLoadSuccess","pageNumber","leave_page_plan_acceptance_confirmation_message","leave_page_plan_acceptance_advise_message","leave_page_plan_acceptance_textok_message","configurable_baths_ConfigCutToSizePlanAcceptance","ROUTE_CATALOG","ROUTE_PRODUCT_DETAIL","ROUTE_FLASH_PROMOTIONS","ROUTE_ADMIN_PROMOTIONS","ROUTE_PROMOTIONS_LIST","ROUTE_CART_SUMMARY","ROUTE_CHECKOUT","ROUTE_CHANGELOG","ROUTE_RESERVATIONS","ROUTE_KPI_DETAIL","ROUTE_KPIS","ROUTE_LOT_IMAGE_VIEWER","ROUTE_LOTS","ROUTE_PROFILE","ROUTE_CUT_TO_SIZE","ROUTE_CONFIG_CUT_TO_SIZE","ROUTE_CONFIG_CUT_TO_SIZE_PLAN_ACCEPTANCE","ROUTE_SUGGESTIONS","ROUTE_CATALOG_LOWES","ROUTE_CATALOG_LOWES_SHOP","ROUTE_CATALOG_LOWES_ADMIN","ROUTE_LOWES_REGISTER","ROUTE_LOWES_NEW_USER_REGISTER","ROUTE_MKT_ADMIN_PRODUCTS","ROUTE_MKT_ADMIN_COLORS","ROUTE_DEVIATED_ADMIN_PRODUCTS","ROUTE_COOKIES","ROUTE_PRIVACY","ROUTE_LANDING_MNGR","ROUTE_LANDING_CREATION","ROUTE_LANDING_MANAGER","ROUTE_LANDING_MANAGER_DETAIL","ROUTE_PROMOTION_LANDING","ROUTE_UNSUBSCRIBE","ROUTE_OLD_LOGIN","ROUTE_REDIRECT_JT","ROUTE_SHIPPING_DETAILS","ROUTE_ORDER_DETAILS","PrivateRoute","PageViewRouteComponent","AdminRoute","rest","MktoolsAdminRoute","DeviatedAdminRoute","MallRoute","MallAdminRoute","CampaignAdminRoute","Routes","visibilityState","regex","oldPathname","layout_Layout","exact","getRoute","routes_MallAdminRoute","routes_MallRoute","routes_CampaignAdminRoute","routes_AdminRoute","routes_PrivateRoute","CartSummaryScreen","CheckoutScreen","ConfigCutToSizeScreen","ConfigCutToSizePlanAcceptanceScreen","routes_MktoolsAdminRoute","routes_DeviatedAdminRoute","addLocaleData","enLocale","esLocale","deLocale","fiLocale","frLocale","heLocale","itLocale","jaLocale","nlLocale","noLocale","plLocale","ptLocale","svLocale","trLocale","enUsLocale","daLocale","Error404","parseLangToCldr","loadMessages","daMessages","deMessages","enCaMessages","enUsMessages","enMessages","esMessages","fiMessages","frCaMessages","frMessages","heMessages","itMessages","jaMessages","nlMessages","noMessages","plMessages","ptMessages","svMessages","trMessages","MyIntlProvider","messagesLoaded","callMountApp","documentElement","hotjar","initialize","load","likelySubtags","currencyData","weekData","enCaGregorian","enDateFields","deCaGregorian","deDateFields","esCaGregorian","esDateFields","enCACaGregorian","enCADateFields","enUSCaGregorian","enUSDateFields","daCaGregorian","daDateFields","fiCaGregorian","fiDateFields","frCaGregorian","frDateFields","frCACaGregorian","frCADateFields","heCaGregorian","heDateFields","itCaGregorian","itDateFields","jaCaGregorian","jaDateFields","nlCaGregorian","nlDateFields","noCaGregorian","noDateFields","plCaGregorian","plDateFields","ptCaGregorian","ptDateFields","svCaGregorian","svDateFields","trCaGregorian","trDateFields","kendo_react_intl_dist_es_main","IntlRoute","install","pca","PublicClientApplication","clientId","authority","knownAuthorities","redirectUri","postLogoutRedirectUri","middlewares","thunk","analyticsEventsMiddleware","promiseMiddleware","routerMiddleware","loadingBarMiddleware","promiseTypeSuffixes","migration","currentVersion","_persist","version","loginConfig","storage","stateReconciler","autoMergeLevel2","migrate","centersConfig","shippingAddressesConfig","bigAccountConfig","lotsConfig","promotionsConfig","selectedObjectsConfig","combineReducers","persistReducer","router","connectRouter","loadingBar","loadingBarReducer","composeEnhancers","composeWithDevTools","createStore","applyMiddleware","persistor","persistStore","msal_react_esm","integration_react","esm","i18n","Add2CartSuccess","visible"],"mappings":"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CA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cAUmB2B,SAASmC,aAAY9D,KAChCyB,EAAczB,GAAO0B,cAAcqC,OAAO,SAAAC,GAAY,OAAIH,EAAkBlC,SAASqC,KAAehC,OAAS,IAUhHiC,EAAmB,SAACjE,EAAOkE,GAIpC,OAAKA,KAEDR,EAAkB1D,KAAUkE,EAAQC,OAFnB,MAUZ9B,EAAc,SAAArC,GACvB,OAAKyB,EAAczB,GACZyB,EAAczB,GAAOoE,SADM,MAGzBC,EAAkB,SAAArE,GAC3B,OAAKyB,EAAczB,GACZyB,EAAczB,GAAOsE,aADM,MAGzBC,EAAgB,SAAAvE,GACzB,OAAKyB,EAAczB,GACZyB,EAAczB,GAAOwE,KADM,MAGzBC,EAAoB,SAAAzE,GAC7B,QAAK0E,IAAiB1E,KACjByB,EAAczB,IAGXyB,EAAczB,GAAO2E,OAArB,eAAgDlD,EAAczB,GAAO2E,OAArB,cAA+ClD,EAAczB,GAAO2E,OAArB,YAHrE,OAKzBC,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aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,cCluCSC,EAA2C,CACpD,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,inECxkWG,IAAM1K,EAAY,CACrB2K,UAAU,EACVjF,SAAU,KACVxB,KAAM,KACN0G,MAAO,KACPC,SAAU,KACVP,MAAO,KACPQ,WAAW,EACXC,cAAc,EACdC,aAAa,EACbC,MAAO,KACPC,OAAQ,KACRC,eAAgB,KAChBC,SAAU,KACVC,WAAY,KACZvH,SAAU,KACVwH,aAAc,GACdC,cAAe,KAEfC,UAAW,KACXC,OAAO,EACPC,kBAAmB,KACnBC,yBAA0B,GAC1BC,iBAAiB,EACjBC,MAAO,KACPC,yBAAyB,EACzBC,eAAgB,KAChBC,WAAW,EACXC,sBAAsB,EACtBC,WAAY,KACZpE,kBAAkB,EAClBqE,mCAAoC,KACpCC,yBAAyB,EACzBC,qBAAsB,GACtBC,eAAgB,KAChBC,sBAAsB,EACtBC,iBAAiB,EACjBC,oBAAoB,EACpBC,mBAAkB,EAClBC,mBAAoB,KACpBC,iBAAkB,KAClBC,eAAe,EACfC,eAAgB,IAqIPC,EAAW,SAAArN,GACpB,OAAOA,EAAM+F,MAAM6E,OAEV0C,EAAuB,SAAAtN,GAChC,OAAOA,EAAM+F,MAAM6G,eAAiB5M,EAAM+F,M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,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,uDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,uDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,uDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,wDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,wDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,oDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,2DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,wDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,6DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,4DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,yDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,yDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,oDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,8DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,8DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,iDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,0DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,+DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,yECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,0DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qgzoECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,wDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,yDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,2DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,6DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,4DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,uDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,oDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,oDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,0DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,0DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,4ECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,iECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,iECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,iECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gFCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,6ECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,6DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,4DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF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EAAAC,QAAiBjgF,EAAAqjD,EAAuB,2DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,4DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,yDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAA,2rUCAAD,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,uECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mGCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,oDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,8DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,wDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,uDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,2DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,yDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,uDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,wDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,iDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,2DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,oDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,6DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,uDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,sDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,qDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,gECAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,+DCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,oDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,kDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,wDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,mDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,+bCAxC28B,EAAAC,QAAA,o5ECAAD,EAAAC,QAAA,gzDCAAD,EAAAC,QAAA,w3DCAAD,EAAAC,QAAA,ooDCAAD,EAAAC,QAAA,4pFCAAD,EAAAC,QAAA,oxECAAD,EAAAC,QAAA,w7ECAAD,EAAAC,QAAA,0jNCAAD,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,wDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,uDCAxC28B,EAAAC,QAAA,g9OCAAD,EAAAC,QAAA,oxOCAAD,EAAAC,QAAA,0mYCAAD,EAAAC,QAAiBjgF,EAAAqjD,EAAuB,wDCAxC28B,EAAAC,QAAiBjgF,EAAAqjD,EAAu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","file":"static/js/main.96f8e7b4.chunk.js","sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types';\n\nimport { injectIntl} from 'react-intl'\nimport { getTranslateMode } from '../../store/ui/reducers'\nimport { connect } from 'react-redux'\n\nconst mapStateToProps = state => {\n    return {\n        translateMode: getTranslateMode(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        openModalTranslation: (idTranslation, defaultMessageTranslation) => {\n            dispatch({ type: 'OPEN_MODAL_TRANSLATION', idTranslation, defaultMessageTranslation })\n        }\n    }\n}\n\nclass Translation extends React.Component {\n    constructor(props) {\n        super(props);\n    }\n    render() {\n        return (\n            <React.Fragment>\n                {this.props.translateMode && (\n                    <i\n                        className=\"fal fa-language\"\n                        style={{ margin: '5px', cursor: 'pointer', color: 'black', textShadow: '0px 0px 2px white' }}\n                        onClick={e => {\n                            e.preventDefault()\n                            e.stopPropagation()\n                            this.props.openModalTranslation(this.props.id, this.props.defaultMessage)\n                        }}\n                    />\n                )}\n                {/*<FormattedHTMLMessage id={this.props.id} defaultMessage={this.props.defaultMessage} values={this.props.values}/>*/}\n                {this.props.intl.formatMessage({ id: this.props.id, defaultMessage: this.props.defaultMessage }, this.props.values ? this.props.values : {})}\n            </React.Fragment>\n        )\n    }\n}\n\nTranslation.propTypes = {\n    id: PropTypes.string.isRequired,\n    defaultMessage: PropTypes.string.isRequired\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(Translation)\n)\n","import { weightSelector } from '../cart/reducers'\nimport jwtDecode from 'jwt-decode'\nimport * as user from '../login/reducers'\nimport { getShippingAddressesCenters } from '../shipping-addresses/reducers'\n\nimport bannerHome from '../../assets/img/promotions/italy/banner-home.jpg'\nimport bannerCatalog from '../../assets/img/promotions/italy/banner-catalog.jpg'\nimport flyerPromo from '../../assets/pdf/promotions/flyer-italy-promo-12mm.pdf'\n\nimport {getUserCenter, getUserName} from '../login/reducers'\nimport moment from 'moment'\n\nexport const initState = {\n    selectedCenter: null,\n    selectedCenterPreferences: {\n        productsByType: {\n            slab: null,\n            sink: null,\n            complementary: null,\n            washbasin: null,\n            shower: null,\n            flooring: null,\n            baths: null\n        }\n    },\n    selectedShippingMethod: null,\n    centers: [],\n    remembered: false,\n    animateChangeCenter: false,\n    mktoolsShippingCenter: null,\n    pricesGroup: null\n}\nconst centers = (state = initState, action) => {\n    switch (action.type) {\n        case 'EMPTY_CENTERS':\n            return Object.assign({}, state, { centers: [], selectedCenter: null, selectedShippingMethod: null, mktoolsShippingCenter: null })\n        case 'SIMPLE_LOGIN_SUCCESS':\n        case 'SIMPLE_IMPERSONATE_SUCCESS':\n            const decoded = jwtDecode(action.token)\n            return Object.assign({}, state, { centers: decoded.centers })\n        case 'CHANGE_CENTER':\n            const isBetweenCenters = state.centers.find(center => center.centerId === action.center)\n            const selectedCenter = isBetweenCenters ? action.center : state.centers[0].centerId\n            return Object.assign({}, state, {\n                selectedCenter: selectedCenter,\n                selectedShippingMethod: getCenterDataOf(selectedCenter, state).shippingTypes[0],\n                animateChangeCenter: !state.animateChangeCenter,\n                mktoolsShippingCenter: state.selectedCenter === selectedCenter ? state.mktoolsShippingCenter : null\n            })\n        case 'ONLY_CHANGE_CENTER':\n            return Object.assign({}, state, {\n                selectedCenter: action.center\n            })\n        case 'CHANGE_SHIPPING_METHOD':\n            return Object.assign({}, state, { selectedShippingMethod: action.shippingMethod })\n        case 'FETCH_CENTER_PREFERENCES_SUCCESS':\n            return Object.assign({}, state, { selectedCenterPreferences: action.centerPreferences })\n        case 'REMEMBERED_CENTER':\n            return Object.assign({}, state, { remembered: true })\n        case 'REMEMBER_CENTER':\n            return Object.assign({}, state, { remembered: false })\n        case 'SET_MKTOOLS_SHIPPING_CENTER':\n            return Object.assign({}, state, { mktoolsShippingCenter: action.mktoolsShippingCenter })\n        default:\n            return state\n    }\n}\n\nexport const getIsEndiCenter = state => {\n    const center = getCenterData(state)\n    return center && center.shippingTypes && (center.shippingTypes.includes('ENDI_TRUCK') || center.shippingTypes.includes('ENDI_CONTAINER'))\n}\n\nexport const getCenters = state => {\n    return state.centers ? state.centers.centers : null\n}\n// export const getCentersSuppliers = state => {\n//     return state.centers.centers\n// }\n// export const getCentersAddress = state => {\n//     console.log(state.centers.centers)\n//     return state.centers.centers.filter(center => {\n//         console.log(center)\n//         return center.mkCustomer\n//     })\n// }\nexport const getSelectedCenter = state => {\n    return state.centers ? state.centers.selectedCenter : null\n}\nexport const getShippingMethod = (state, ignoreIsShippingTypeContainerWhenIreland = false) => {\n    if (!ignoreIsShippingTypeContainerWhenIreland && isShippingTypeContainerWhenIreland(state)) {\n        return 'CONTAINER'\n    }\n\n    if (getIsMkToolsCenter(state)) {\n        return 'MKTOOLS'\n    }\n    // if ((getSalesOrg(state) === '2011' || getSalesOrg(state) === '2032') && isMallCartOnly(state)) {\n    //     return 'CONTAINER'\n    // }\n    if (state.centers && state.centers.selectedShippingMethod === 'SINGLE_SLAB' && weightSelector(state) > 12000) {\n        if ((getSalesOrg(state) === '2011' || getSalesOrg(state) === '2032') && weightSelector(state) < 19050) {\n            return 'SINGLE_SLAB'\n        }\n        return 'FULL_TRUCK'\n    }\n\n    return state.centers ? state.centers.selectedShippingMethod : null\n}\n\nexport const getShippingMethodWithoutWeights = (state, ignoreIsShippingTypeContainerWhenIreland = false) => {\n    if (!ignoreIsShippingTypeContainerWhenIreland && isShippingTypeContainerWhenIreland(state)) {\n        return 'CONTAINER'\n    }\n\n    if (getIsMkToolsCenter(state)) {\n        return 'MKTOOLS'\n    }\n    return state.centers ? state.centers.selectedShippingMethod : null\n}\n\nexport const getCenterData = state => {\n    if (state.centers) {\n        let found = state.centers.centers.find(center => {\n            return center.centerId === getSelectedCenter(state)\n        })\n\n        return found\n    }\n    return null\n    \n}\n\nexport const hasIncentives = state => {\n    if (!getCenterData(state)) return null\n    return getCenterData(state).hasIncentives\n}\nexport const getPromoBanners = state => {\n    const promoBanner = {\n        default: {\n            // banner: bannerFR,\n            banner: bannerHome,\n            subBanner: null,\n            catalogBanner: bannerCatalog,\n            catalogBannerMobile: bannerCatalog,\n            homeBannerMobile: null,\n            pdfLink: flyerPromo\n        }\n    }\n    return promoBanner\n}\nexport const hasPromotionLandingActivated = state => {\n    const selectedCenter = getSelectedCenter(state)\n    return state.promotions.promotionsByCenter[selectedCenter] && Array.isArray(state.promotions.promotionsByCenter[selectedCenter])\n}\nexport const hasPromoActivated = state => {\n    // return false\n    if (moment() >= moment(new Date('2020-12-30 GMT+0000'))) {\n        return false\n    }\n    let centersPromo = [7050, 7051, 7052, 7060, 7065]\n    let shippingTypePromo = ['SINGLE_SLAB', 'FULL_TRUCK']\n    let usersWithPromo = [\n        '0000104341',\n        '0000104348',\n        '0000104362',\n        '0000104363',\n        '0000104364',\n        '0000104378',\n        '0000104391',\n        '0000104442',\n        '0000104449',\n        '0000104454',\n        '0000104460',\n        '0000104463',\n        '0000104483',\n        '0000104491',\n        '0000104505',\n        '0000104519',\n        '0000104532',\n        '0000104562',\n        '0000104587',\n        '0000104610',\n        '0000104616',\n        '0000105809',\n        '0000105816',\n        '0000105846',\n        '0000105930',\n        '0000106488',\n        '0000106694',\n        '0000106743',\n        '0000106864',\n        '0000106916',\n        '0000107090',\n        '0000107198',\n        '0000107606',\n        '0000107677',\n        '0000107931',\n        '0000107974',\n        '0000108255',\n        '0000108409',\n        '0000108757',\n        '0000108913',\n        '0000109254',\n        '0000109285',\n        '0000109628',\n        '0000109733',\n        '0000109803',\n        '0000109897',\n        '0000109942',\n        '0000110035',\n        '0000110036',\n        '0000110037',\n        '0000110042',\n        '0000110043',\n        '0000110044',\n        '0000110047',\n        '0000110454',\n        '0000110499',\n        '0000110530',\n        '0000110830',\n        '0000111092',\n        '0000111115',\n        '0000111133',\n        '0000111228',\n        '0000111317',\n        '0000111575',\n        '0000111786',\n        '0000111813',\n        '0000111874',\n        '0000111968',\n        '0000111969',\n        '0000111972',\n        '0000112023',\n        '0000112044',\n        '0000112094',\n        '0000112134',\n        '0000112181',\n        '0000112240',\n        '0000112584',\n        '0000112777',\n        '0000112847',\n        '0000112917',\n        '0000113018',\n        '0000113082',\n        '0000113246',\n        '0000113362',\n        '0000113378',\n        '0000113712',\n        '0000113916',\n        '0000113925',\n        '0000113960',\n        '0000114025',\n        '0000114052',\n        '0000114114',\n        '0000114181',\n        '0000114202',\n        '0000114548',\n        '0000115216',\n        '0000115282',\n        '0000115441',\n        '0000115684',\n        '0000115783',\n        '0000115957',\n        '0000116159',\n        '0000116412',\n        '0000116453',\n        '0000116529',\n        '0000116530',\n        '0000116577',\n        '0000116642',\n        '0000116987',\n        '0000117021',\n        '0000117322',\n        '0000117383',\n        '0000118320',\n        '0000118715',\n        '0000118913',\n        '0000118943',\n        '0000119080',\n        '0000119092',\n        '0000119549',\n        '0000119560',\n        '0000119702',\n        '0000119703',\n        '0000119911',\n        '0000119978',\n        '0000119994',\n        '0000119999',\n        '0000120013',\n        '0000120047',\n        '0000120145',\n        '0000120190',\n        '0000120193',\n        '0000120196',\n        '0000120228',\n        '0000120237',\n        '0000120282',\n        '0000120300',\n        '0000120313',\n        '0000120320',\n        '0000120323',\n        '0000120374',\n        '0000120409',\n        '0000120503',\n        '0000120528',\n        '0000120640',\n        '0000120672',\n        '0000120675',\n        '0000120697',\n        '0000120709',\n        '0000120780',\n        '0000120781',\n        '0000120784',\n        '0000120821',\n        '0000120895',\n        '0000120922',\n        '0000120965',\n        '0000121070',\n        '0000121138',\n        '0000121322',\n        '0000121549',\n        '0000122567',\n        '0000122663',\n        '0000122756',\n        '0000122760',\n        '0000122780',\n        '0000123291',\n        '0000123335',\n        '0000123406',\n        '0000123587',\n        '0000303994',\n        '0000403518',\n        '0000403611',\n        '0000403643',\n        '0000403697',\n        '0000403776',\n        '0000414941',\n        '0000415696'\n    ]\n\n    if (!getCenterData(state)) return false\n\n    //this trick to allow users buy with promo to center 1000 when they have available one of the promo centers\n    // let includesPromoCenter = getCenters(state).find(center => {\n    //     return centersPromo.includes(center.centerId)\n    // })\n    if (centersPromo.includes(getSelectedCenter(state))) {\n        if (usersWithPromo.includes(getUserName(state))) {\n            if (getCenterData(state).shippingTypes.filter(shippingType => shippingTypePromo.includes(shippingType)).length > 0) {\n                return true\n            }\n        }\n    }\n    // if (getSelectedCenter(state) === 1000 && user.getSalesOrg(state) === '1000') return true\n    // if (getSelectedCenter(state) === 1070 && includesPromoCenter) return true\n    return false\n}\n\nexport const productIsInPromo = (state, product) => {\n    // return false\n    // let colorPromo = ['2K', 'BZ', 'BZJ', 'DHA', 'DZE', 'BJJ', 'BJ2', '2KJ', 'M14', 'M1J']\n\n    if (!product) return null\n\n    if (hasPromoActivated(state) && product.promo) return true\n\n    return false\n}\nexport const getAccess = state => {\n    if (!getCenterData(state)) return null\n    return getCenterData(state).access\n}\nexport const getSalesOrg = state => {\n    if (!getCenterData(state)) return null\n    return getCenterData(state).salesOrg\n}\nexport const getHasMinWeight = state => {\n    if (!getCenterData(state)) return null\n    return getCenterData(state).hasMinWeight\n}\nexport const getCenterName = state => {\n    if (!getCenterData(state)) return null\n    return getCenterData(state).name\n}\nexport const canOnlyViewOutlet = state => {\n    if (!user.getIsLogged(state)) return false\n    if (!getCenterData(state)) return null\n    // if (getSelectedCenter(state) === getHQCenterId() && getCurrentUrl(state).pathname.includes('outlet')) return true\n\n    return !getCenterData(state).access['VIEW_CATALOG'] && !getCenterData(state).access['VIEW_MKTOOLS'] && getCenterData(state).access['VIEW_OUTLET']\n}\nexport const canViewCatalog = state => {\n    if (!user.getIsLogged(state)) return true\n    if (!getCenterData(state)) return null\n    if (getSelectedCenter(state) === 7510 && getIsIkeaCenter(state)) return false\n    if (getSelectedCenter(state) === 7777) return false\n    return getCenterData(state) && getCenterData(state).access && getCenterData(state).access['VIEW_CATALOG']\n    // if (getSelectedCenter(state) === 7777) return false\n    // return (\n    //     getCenterData(state).access === 'BUY_ADMIN_AND_CUSTOMER' ||\n    //     getCenterData(state).access === 'BUY_ADMIN' ||\n    //     getCenterData(state).access === 'VIEW_ALL' ||\n    //     getCenterData(state).access === 'BUY_ALL' ||\n    //     getCenterData(state).access === 'BUY_ONLY_MKTOOLS'\n    // )\n}\nexport const canBuyMktools = state => {\n    if (!user.getIsLogged(state)) return false\n    return getCenterData(state) && getCenterData(state).access && getCenterData(state).access['BUY_MKTOOLS']\n    // if (getCenterData(state) && !getCenterData(state).shippingTypes.includes('MKTOOLS')) return false\n    // return (\n    //     getCenterData(state).access === 'BUY_ADMIN_AND_CUSTOMER' ||\n    //     getCenterData(state).access === 'BUY_ADMIN' ||\n    //     getCenterData(state).access === 'VIEW_ALL' ||\n    //     getCenterData(state).access === 'BUY_ALL' ||\n    //     getCenterData(state).access === 'BUY_ONLY_MKTOOLS'\n    // )\n}\nexport const canViewMktools = state => {\n    if (!user.getIsLogged(state)) return false\n    return getCenterData(state) && getCenterData(state).access && (getCenterData(state).access['BUY_MKTOOLS'] || getCenterData(state).access['VIEW_MKTOOLS'])\n    // return canBuyMktools(state)\n}\nexport const canViewOutlet = state => {\n    if (!user.getIsLogged(state)) return true\n    return getCenterData(state) && getCenterData(state).access && (getCenterData(state).access['VIEW_OUTLET'] || getCenterData(state).access['BUY_OUTLET'])\n    // if (getIsIkeaCenter(state)) return false\n    // if (getSelectedCenter(state) === 7777) return false\n    // //AFFECTED-CODE-HQ =\n    // // if (getShippingMethod(state) === 'MKTOOLS') return process.env.REACT_APP_MKTOOLS_OUTLET === 'true'\n    // if (getSelectedCenter(state) === getHQCenterId()) return true\n    // return getShippingMethod(state) !== 'CONTAINER' && getShippingMethod(state) !== 'DIRECT_TRUCK' // en el centro 1000 nunca se puede comprar outlet.\n}\nexport const canViewPromotions = state => {\n    if (hasPromoActivated(state)) return true\n    return false\n}\nexport const canViewBaths = state => {\n    return true\n    // if (getSelectedCenter(state) === 7080 || getSelectedCenter(state) === 7095) return true\n    // if (!user.getIsLogged(state)) return false\n    // if (!getCenterData(state)) return null\n    // let centerNames = ['PRICING']\n    // if (centerNames.includes(getUserName(state))) return true\n    // if (centerNames.includes(user.getImpersonatedBy(state))) return true\n    // let centersWithBathsBefore = [\n    //         '5400',\n    //         '7000',\n    //         '7010',\n    //         '7015',\n    //         '7016',\n    //         '7017',\n    //         '7030',\n    //         '7031',\n    //         '7032',\n    //         '7034',\n    //         '7035',\n    //         '7036',\n    //         '7037',\n    //         '7038',\n    //         '7040',\n    //         '7050',\n    //         '7051',\n    //         '7052',\n    //         '7060',\n    //         '7065',\n    //         '7080',\n    //         '7095',\n    //         '7100',\n    //         '7101',\n    //         '7110',\n    //         '7120',\n    //         '7125',\n    //         '7126',\n    //         '7127',\n    //         '7128',\n    //         '7129',\n    //         '7130',\n    //         '7140',\n    //         '7150',\n    //         '7160',\n    //         '7180',\n    //         '7181',\n    //         '7182',\n    //         '7190',\n    //         '7201',\n    //         '7210',\n    //         '7220',\n    //         '7230',\n    //         '7231',\n    //         '7240',\n    //         '7241',\n    //         '7500',\n    //         '7501',\n    //         '7502',\n    //         '7503',\n    //         '7504',\n    //         '7505',\n    //         '7506',\n    //         '7507',\n    //         '7509',\n    //         '7510',\n    //         '7520',\n    //         '7531',\n    //         '7532',\n    //         '7533',\n    //         '7534',\n    //         '7535',\n    //         '7536',\n    //         '7540',\n    //         '7560',\n    //         '7570',\n    //         '7583',\n    //         '7584',\n    //         '7590',\n    //         '7591',\n    //         '7593',\n    //         '7595',\n    //         '7596',\n    //         '7597',\n    //         '7601',\n    //         '7602',\n    //         '7603',\n    //         '7604',\n    //         '7605',\n    //         '7606',\n    //         '7607',\n    //         '7608',\n    //         '7609',\n    //         '7610',\n    //         '7611',\n    //         '7612',\n    //         '7613',\n    //         '7615',\n    //         '7616',\n    //         '7617',\n    //         '7618',\n    //         '7619',\n    //         '7620',\n    //         '7621',\n    //         '7622',\n    //         '7623',\n    //         '7624',\n    //         '7625',\n    //         '7626',\n    //         '7627',\n    //         '7628',\n    //         '7629',\n    //         '7630',\n    //         '7631',\n    //         '7632',\n    //         '7633',\n    //         '7634',\n    //         '7635',\n    //         '7636',\n    //         '7637',\n    //         '7638',\n    //         '7639',\n    //         '7640',\n    //         '7641',\n    //         '7642',\n    //         '7643',\n    //         '7644',\n    //         '7645',\n    //         '7646',\n    //         '7647',\n    //         '7648',\n    //         '7649',\n    //         '7666']\n    // if (centersWithBathsBefore.includes(getSelectedCenter(state))) return true\n    // return false\n}\nexport const canBuyCatalog = state => {\n    if (!user.getIsLogged(state)) return true\n    if (!getCenterData(state)) return null\n    // if (getSelectedCenter(state) === getHQCenterId() && getCurrentUrl(state).pathname.includes('outlet')) return false\n    return getCenterData(state).access && getCenterData(state).access['BUY_CATALOG']\n}\nexport const canBuy = state => {\n    return canBuyCatalog(state) || canBuyMktools(state)\n}\nexport const canViewCart = state => {\n    if (!getCenterData(state)) return null\n    return getCenterData(state).access && getCenterData(state).access['VIEW_CART']\n    // return (\n    //     getCenterData(state).access === 'BUY_ADMIN_AND_CUSTOMER' ||\n    //     (getCenterData(state).access === 'BUY_ADMIN' && user.getIsAdmin(state)) ||\n    //     getCenterData(state).access === 'BUY_ALL' ||\n    //     (getCenterData(state).access === 'BUY_NO_LOTS' && !user.getIsAdmin(state)) ||\n    //     getCenterData(state).access === 'BUY_ONLY_MKTOOLS'\n    // )\n}\nexport const getNeedsSegmentation = state => {\n    //disable for ikea center and user of ikea mexico\n    //disable for mktools\n    if (\n        getSelectedCenter(state) === getShowroomCenterId() ||\n        getSelectedCenter(state) === getWarehoseCenterId() ||\n        getSelectedCenter(state) === getDRIUSACenterId() ||\n        getSelectedCenter(state) === getIKEACenterId()\n    ) {\n        return false\n    } else {\n        return true\n    }\n}\nexport const getCenterDataOf = (selectedCenter, state) => {\n    let found = state.centers.find(center => {\n        return center.centerId === selectedCenter\n    })\n\n    return found\n}\nexport const getSelectedCenterPreferences = state => {\n    return state.centers ? (state.centers.selectedCenterPreferences ? state.centers.selectedCenterPreferences : initState.selectedCenterPreferences) : null\n}\n\nexport const getIsRemembered = state => {\n    return state.centers.remembered\n}\nexport const getIsMkToolsCenter = state => {\n    return state.centers ? (state.centers.selectedCenter === getDRIUSACenterId() || state.centers.selectedCenter === getWarehoseCenterId() || state.centers.selectedCenter === getShowroomCenterId()) : false\n}\nexport const getIsMktoolsUsaCenter = state => {\n    return state.centers.selectedCenter === getDRIUSACenterId()\n}\nexport const getIsIkeaCenter = state => {\n    //exception for ikea mexico\n    if (state && state.login && (state.login.username === '0000125055' || state.login.username ===  '0000121083')) { //7510\n        return true\n    }\n    return state.centers.selectedCenter === getIKEACenterId() || state.centers.selectedCenter === getIKEACanariasCenterId()\n}\nexport const isBetweenCenters = (centerId, state) => {\n    return state.centers.centers.find(center => center.centerId === centerId)\n}\nexport const getCenterMktool = state => {\n    if (state.centers){\n        if (state.centers.centers.find(center => center.centerId === getShowroomCenterId())) return getShowroomCenterId()\n        else if (state.centers.centers.find(center => center.centerId === getDRIUSACenterId())) return getDRIUSACenterId()\n        else return false\n    }else return false\n   \n}\nexport const getCenterShowroom = state => {\n    if (state.centers) {\n        if (state.centers.centers.find(center => center.centerId === getShowroomCenterId())) return getShowroomCenterId()\n        else if (state.centers.centers.find(center => center.centerId === getDRIUSACenterId())) return getDRIUSACenterId()\n        else return false\n    }else return false\n   \n}\nexport const getCenterWarehose = state => {\n    if (state.centers && state.centers.centers.find(center => center.centerId === getWarehoseCenterId())) return getWarehoseCenterId()\n    else return false\n}\nexport const getAnimateChangeCenter = state => {\n    return state.centers ? state.centers.animateChangeCenter : null\n}\nexport const getIsLowesCenter = state => {\n    return state.centers ? state.centers.selectedCenter === getLowesCenterId() : null\n}\nexport const isEuropeOrIberia = state => {\n    if (!user.getIsLogged(state)) return false\n    let centersOfIberia = [\n        '1000',\n        '1010',\n        '1060',\n        '1070',\n        '1080',\n        '1090',\n        '1100',\n        '4037',\n        '4100',\n        '5000',\n        '7701',\n        '7702',\n        '7703',\n        '7704',\n        '7705',\n        '7706',\n        '7707',\n        '7708',\n        '7710',\n        '7711',\n        '7712',\n        '7713',\n        '7714',\n        '7715',\n        '7716',\n        '7717',\n        '7718',\n        '7719',\n        '7720',\n        '7798',\n        '7799',\n        '7080',\n        '7095'\n    ]\n    let centersOfEuropa = [\n        '7000',\n        '7010',\n        '7015',\n        '7016',\n        '7017',\n        '7030',\n        '7031',\n        '7032',\n        '7034',\n        '7035',\n        '7036',\n        '7037',\n        '7038',\n        '7050',\n        '7051',\n        '7052',\n        '7053',\n        '7054',\n        '7060',\n        '7065',\n        '7100',\n        '7101',\n        '7110',\n        '7120',\n        '7124',\n        '7125',\n        '7126',\n        '7127',\n        '7128',\n        '7129',\n        '7130',\n        '7140',\n        '7150',\n        '7160',\n        '7180',\n        '7181',\n        '7182',\n        '7210',\n        '7220',\n        '7240',\n        '7241',\n        '7242',\n        '7243',\n        '7270',\n        '7280',\n        '7059'\n    ]\n    return getSelectedCenter(state) ? centersOfIberia.includes(getSelectedCenter(state).toString()) || centersOfEuropa.includes(getSelectedCenter(state).toString()) : null\n}\n\nexport const isUsaOrCanada = state => {\n    const salesOrg = getSalesOrg(state)\n    const usaCanadaSalesOrg = getUsaCanadaSalesOrg()\n\n    return salesOrg && usaCanadaSalesOrg.includes(salesOrg) && true\n}\n\nexport const canViewAllLots = state => {\n    return isUsaOrCanada(state) || canOffer(state)\n}\n\nexport const isAustralianCenter = state => {\n    return getSelectedCenter(state) && getAustraliaCenters().includes(getSelectedCenter(state).toString())\n}\n\nexport const isUserAustralianCenter = state => {\n    return getUserCenter(state) && getAustraliaCenters().includes(getUserCenter(state).toString())\n}\n\nexport const isAustraliaSalesOrg = state => {\n    const salesOrg = getSalesOrg(state)\n    const australiaSalesOrg = getAustraliaSalesOrg()\n    return salesOrg && australiaSalesOrg.includes(salesOrg) && true\n}\n\nexport const isNoSilestoneCenter = state => {\n    return getSelectedCenter(state) && getNoSilestoneCenters().includes(getSelectedCenter(state).toString())\n}\n\nexport const isEuropeOrIberiaSalesOrg = state => {\n    const salesOrg = getSalesOrg(state)\n    const europeIberiaSalesOrg = getEuropeIberiaSalesOrg()\n\n    return salesOrg && europeIberiaSalesOrg.includes(salesOrg) && true\n}\n\nexport const getMktoolsShippingCenter = state => {\n    if (state.centers) {\n        if (state.centers.mktoolsShippingCenter) return state.centers.mktoolsShippingCenter\n        if (getSelectedCenter(state) === getShowroomCenterId()) {\n            if (getShippingAddressesCenters(state) && getShippingAddressesCenters(state)[0]) return getShippingAddressesCenters(state)[0].id\n        }\n        return state.centers.mktoolsShippingCenter\n    } else return null\n}\nexport const getIsMktoolsShippingCenterSelected = state => {\n    return state.centers ? state.centers.mktoolsShippingCenter !== null : false\n}\nexport const getMktoolsBudget = state => {\n    if (!getShippingAddressesCenters(state) || !getMktoolsShippingCenter(state)) return null\n    return getShippingAddressesCenters(state).find(center => center.id === getMktoolsShippingCenter(state)).mktoolsBudget\n}\nexport const getMktoolsBudgetWasted = state => {\n    if (!getShippingAddressesCenters(state) || !getMktoolsShippingCenter(state)) return null\n    return getShippingAddressesCenters(state).find(center => center.id === getMktoolsShippingCenter(state)).mktoolsBudgetWasted\n}\nexport const getPricesGroup = state => {\n    if (getIsMktoolsUsaCenter(state)) return '02'\n    if (!getShippingAddressesCenters(state)) return 'default'\n    if (getMktoolsShippingCenter(state) && getShippingAddressesCenters(state))\n        return getShippingAddressesCenters(state).find(center => center.id === getMktoolsShippingCenter(state)).pricesGroup\n}\nexport const getCoin = state => {\n    if (getMktoolsShippingCenter(state) && getShippingAddressesCenters(state))\n        return getShippingAddressesCenters(state).find(center => center.id === getMktoolsShippingCenter(state)).coin\n}\nexport const canOffer = state => {\n    if (!user.getIsLogged(state)) return false\n    const centersCanViewOffer = [7510]\n    if (centersCanViewOffer.includes(getSelectedCenter(state))) return true\n    return false\n}\nexport const canViewNewTracking = state => {\n    // let centerPrototype = [2040, 7080, 7126, 7000, 7030, 7100] // Pilot 11/05\n\n    // if (!getCenterData(state)) return false\n    // let includesPilotCenter = false\n\n    // //TODO: disable 07/05\n    // includesPilotCenter = getCenters(state).find(center => {\n    //     return centerPrototype.includes(center.centerId)\n    // })\n\n    // return includesPilotCenter\n    return state.login.canViewNewOrders\n}\n\n//AFFECTED-CODE-HQ: El Centro nuevo HQ ¿muestra los enlaces de mktools o el de virtualVisit?\nexport const getIsVirtualVisitEnabled = state => {\n    if (!user.getIsLogged(state)) return false\n    if (getIsIkeaCenter(state) || getIsLowesCenter(state) || getSelectedCenter(state) === getDRIUSACenterId()) return false\n    return true\n}\nexport const getCanViewImageByLot = state => {\n    let center = getCenters(state).find(center => center.centerId === getSelectedCenter(state))\n    return center.imageLotAvailable\n}\n\nexport const isOptionalBuilderProjectCenter = state => {\n    const centers = getCenters(state)\n    const optionalSalesOrg = [...getUsaCanadaSalesOrg(), ...getOptionalBuilderProjectsSalesOrg()]\n\n    for (const center of centers) {\n        if (optionalSalesOrg.includes(center.salesOrg)) {\n            return true\n        }\n    }\n    return false\n}\n\nexport const hasSingleSlabAvailableInSelectedCenter = (state) => {\n    const center = state && state.centers && state.centers.centers && state.centers.centers.find(center => center.centerId == getSelectedCenter(state))\n    if (center && center.shippingTypes.includes(\"SINGLE_SLAB\")) {\n        return true\n    }\n\n    return false\n}\n\nexport const isLatamSalesOrg = state => {\n    const salesOrg = getSalesOrg(state)\n    const latamSalesOrg = getLatamSalesOrg()\n\n    if (salesOrg && latamSalesOrg.includes(salesOrg)) {\n        return true\n    }\n\n    return false\n}\n\nexport const isApacSalesOrg = state => {\n    const salesOrg = getSalesOrg(state)\n    const apacSalesOrg = getApacSalesOrg()\n\n    if (salesOrg && apacSalesOrg.includes(salesOrg)) {\n        return true\n    }\n\n    return false\n}\n\n/**\n * If the customer has the ENV3 (Single Slab) type of shipment available in its centers, it will be able to choose the delivery dates by position.\n * Otherwise, it will not be possible to modify the date by position.\n * @returns {boolean}\n */\nexport const isDisabledPreferedDeliveryDatePicker = (state) => {\n    if (hasSingleSlabAvailableInSelectedCenter(state)) {\n        return false\n    }\n\n    return true\n}\n\nexport const isOnlyUsaSalesOrg = state => {\n    const salesOrg = getSalesOrg(state)\n    const usaSalesOrg = getOnlyUsaSalesOrg()\n\n    return salesOrg && usaSalesOrg.includes(salesOrg) && true\n}\n\nexport const isShippingTypeContainerWhenIreland = state => {\n    const userSalesOrg = state && state.login && state.login.salesOrg\n    if ((userSalesOrg && userSalesOrg === getIrelandSalesOrg()) && getSelectedCenter(state) === getHQCenterId()) {\n        return true\n    }\n\n    return false\n}\n\n//List centers\nexport const getHQCenterId = () => 1100\nexport const getShowroomCenterId = () => 1060 //MKTOOLS\nexport const getNaturalStoneSpainCenterId = () => 1070\nexport const getFregaderosCenterId = () => 1080\nexport const getIKEACenterId = () => 4100\nexport const getIKEACanariasCenterId = () => 4037\nexport const getWarehoseCenterId = () => 5000 //MKTOOLS\nexport const getDRIUSACenterId = () => 5200 //MKTOOLS\nexport const getLatinaVitoriaCenterId = () => 7500\nexport const getLatinaDepot = () => 7507\nexport const getHUBSydneyCenterId = () => 7536\nexport const getHUBHoustonCenterId = () => 7625\nexport const getHUBNorfolkCenterId = () => 7626\nexport const getLowesCenterId = () => 7777\nexport const getUsaCanadaSalesOrg = () => ['2011', '2032', '2036', '2037']\nexport const getOptionalBuilderProjectsSalesOrg = () => ['2021', '2031', '2041']\nexport const isLatinaVitoria = state => state.centers.selectedCenter == 7500 && state.centers.selectedShippingMethod === 'CONTAINER'\nexport const getEuropeIberiaSalesOrg = () => ['2003', '2000', '2001', '2002', '2003', '2004', '2030', '2004', '2007', '2008', '2009', '2010', '2014', '2015', '2016', '2038', '2039', '2042', '2047', '1000', '1100', '3000', '2006', '2005', '1037']\nexport const getAustraliaCenters = () => ['7530','7531','7532','7533','7534','7535','7536','7537','7538']\nexport const getNoSilestoneCenters = () => ['7531','7532']\nexport const getAustraliaSalesOrg = () => ['2031']\nexport const getLatamSalesOrg = () => ['2012', '2026', '2027']\nexport const getApacSalesOrg = () => ['2017', '2031', '2034', '2040']\nexport const getOnlyUsaSalesOrg = () => ['2011', '2037', '2046']\nexport const getEuropeAndPortugalCenters = () => [\n    '7000', '7000', '7010', '7015', '7015', '7016', '7017', '7030', '7030',\n    '7031', '7032', '7034', '7035', '7036', '7037', '7038', '7041', '7050',\n    '7053', '7054', '7060', '7065', '7100', '7101', '7110', '7110', '7120',\n    '7122', '7124', '7125', '7126', '7127', '7128', '7128', '7129', '7130',\n    '7130', '7140', '7140', '7280', '7150', '7160', '7051', '7052', '7052',\n    '7210', '7220', '7270', '7240', '7241', '7242', '7242', '7290', '7080',\n    '7095'\n  ]\nexport const getSpainCenters = () => [\n    '7701', '7702', '7703', '7704', '7705', '7706', '7707', '7708', '7709',\n    '7710', '7711', '7712', '7713', '7714', '7715', '7716', '7717', '7718',\n    '7719', '7728', '7729', '7798', '7799', '1100'\n]\nexport const isMexico = state => state.centers.selectedCenter == 7510\nexport const getIrelandSalesOrg = () => '2015'\n\nexport default centers\n","export const PromotionRocketCustomersDataUSA5Percent = [\n    '0000408754',\n    '0000426028',\n    '0000430087',\n    '0000409196',\n    '0000409298',\n    '0000424187',\n    '0000409565',\n    '0000426751',\n    '0000430188',\n    '0000409686',\n    '0000413790',\n    '0000415920',\n    '0000409979',\n    '0000424776',\n    '0000427188',\n    '0000410355',\n    '0000410359',\n    '0000416857',\n    '0000410474',\n    '0000417488',\n    '0000423946',\n    '0000410727',\n    '0000410781',\n    '0000430542',\n    '0000431232',\n    '0000430896',\n    '0000425946',\n    '0000429190',\n    '0000425569',\n    '0000411095',\n    '0000436522',\n    '0000411364',\n    '0000411404',\n    '0000411619',\n    '0000409175',\n    '0000428525',\n    '0000411978',\n    '0000411991',\n    '0000426779',\n    '0000423120',\n    '0000413340',\n    '0000412159',\n    '0000412196',\n    '0000412300',\n    '0000412470',\n    '0000412512',\n    '0000430810',\n    '0000412543',\n    '0000412954',\n    '0000421969',\n    '0000412763',\n    '0000412768',\n    '0000416739',\n    '0000430159',\n    '0000419270',\n    '0000431018',\n    '0000430347',\n    '0000423934',\n    '0000422147',\n    '0000432812',\n    '0000419517',\n    '0000426233',\n    '0000417295',\n    '0000416983',\n    '0000415903',\n    '0000428067',\n    '0000415955',\n    '0000416010',\n    '0000417680',\n    '0000425679',\n    '0000415603',\n    '0000409589',\n    '0000415240',\n    '0000427250',\n    '0000414858',\n    '0000415403',\n    '0000418398',\n    '0000430220',\n    '0000428278',\n    '0000423376',\n    '0000416453',\n    '0000422712',\n    '0000414747',\n    '0000417996',\n    '0000415202',\n    '0000419070',\n    '0000415401',\n    '0000417080',\n    '0000434916',\n    '0000428310',\n    '0000421881',\n    '0000416748',\n    '0000415784',\n    '0000416528',\n    '0000414925',\n    '0000415591',\n    '0000415277',\n    '0000418595',\n    '0000414246',\n    '0000414633',\n    '0000415121',\n    '0000428915',\n    '0000413903',\n    '0000415464',\n    '0000418434',\n    '0000420964',\n    '0000424620',\n    '0000414567',\n    '0000416670',\n    '0000416401',\n    '0000418315',\n    '0000424998',\n    '0000415970',\n    '0000415565',\n    '0000414352',\n    '0000416056',\n    '0000421238',\n    '0000418867',\n    '0000432043',\n    '0000434103',\n    '0000432980',\n    '0000434967',\n    '0000435120',\n    '0000432520',\n    '0000424054',\n    '0000413646',\n    '0000434886',\n    '0000424796',\n    '0000429503',\n    '0000424394',\n    '0000414362',\n    '0000426912',\n    '0000409093',\n    '0000424130',\n    '0000425474',\n    '0000414010',\n    '0000422328',\n    '0000424393',\n    '0000413391',\n    '0000414741',\n    '0000420727',\n    '0000415905',\n    '0000421258',\n    '0000421635',\n    '0000423508',\n    '0000424510',\n    '0000423618',\n    '0000416181',\n    '0000420803',\n    '0000423765',\n    '0000421054',\n    '0000423516',\n    '0000415838',\n    '0000424604',\n    '0000428105',\n    '0000413361',\n    '0000421293',\n    '0000434462',\n    '0000425322',\n    '0000425927',\n    '0000413590',\n    '0000414576',\n    '0000428041',\n    '0000417254',\n    '0000416939',\n    '0000420905',\n    '0000423799',\n    '0000413265',\n    '0000421306',\n    '0000421357',\n    '0000414215',\n    '0000415492',\n    '0000428386',\n    '0000413677',\n    '0000431141',\n    '0000420652',\n    '0000422615',\n    '0000427750',\n    '0000421870',\n    '0000417970',\n    '0000429591',\n    '0000415065',\n    '0000415939',\n    '0000415347',\n    '0000413354',\n    '0000416163',\n    '0000414259',\n    '0000414738',\n    '0000413956',\n    '0000414836',\n    '0000414500',\n    '0000431171',\n    '0000424622',\n    '0000435776',\n    '0000431956',\n    '0000413547',\n    '0000414848',\n    '0000413967',\n    '0000413454',\n    '0000435475',\n    '0000426382',\n    '0000418006',\n    '0000408926',\n    '0000428472',\n    '0000419231',\n    '0000418052',\n    '0000428945',\n    '0000420359',\n    '0000418305',\n    '0000422133',\n    '0000426488',\n    '0000419134',\n    '0000413684',\n    '0000418030',\n    '0000416756',\n    '0000416460',\n    '0000426205',\n    '0000417275',\n    '0000431192',\n    '0000428463',\n    '0000414867',\n    '0000417877',\n    '0000428985',\n    '0000415000',\n    '0000414743',\n    '0000417961',\n    '0000418230',\n    '0000417580',\n    '0000414718',\n    '0000418397',\n    '0000421890',\n    '0000422911',\n    '0000430261',\n    '0000410986',\n    '0000414358',\n    '0000427957',\n    '0000412490',\n    '0000413591',\n    '0000408897',\n    '0000415478',\n    '0000427512',\n    '0000420637',\n    '0000409528',\n    '0000422111',\n    '0000409893',\n    '0000410015',\n    '0000413281',\n    '0000410372',\n    '0000435485',\n    '0000410417',\n    '0000414794',\n    '0000428179',\n    '0000426168',\n    '0000420913',\n    '0000423977',\n    '0000413814',\n    '0000426073',\n    '0000418948',\n    '0000424496',\n    '0000421266',\n    '0000427890',\n    '0000416469',\n    '0000432402',\n    '0000412148',\n    '0000416478',\n    '0000417891',\n    '0000423262',\n    '0000414658',\n    '0000426219',\n    '0000412945',\n    '0000414445',\n    '0000431250',\n    '0000429217',\n    '0000417317',\n    '0000409254',\n    '0000409662',\n    '0000410188',\n    '0000416280',\n    '0000410444',\n    '0000410447',\n    '0000417191',\n    '0000414001',\n    '0000410792',\n    '0000432275',\n    '0000411056',\n    '0000432267',\n    '0000409664',\n    '0000411276',\n    '0000411340',\n    '0000415110',\n    '0000434449',\n    '0000412341',\n    '0000412452',\n    '0000417149',\n    '0000411294',\n    '0000415672',\n    '0000414301',\n    '0000418984',\n    '0000421760',\n    '0000411504',\n    '0000428479',\n    '0000409097',\n    '0000409105',\n    '0000420836',\n    '0000416641',\n    '0000431868',\n    '0000409513',\n    '0000409714',\n    '0000409754',\n    '0000414969',\n    '0000410216',\n    '0000417237',\n    '0000423800',\n    '0000410305',\n    '0000428122',\n    '0000410341',\n    '0000424992',\n    '0000410428',\n    '0000410445',\n    '0000410452',\n    '0000410563',\n    '0000410654',\n    '0000421897',\n    '0000410688',\n    '0000410698',\n    '0000410800',\n    '0000431387',\n    '0000434280',\n    '0000429654',\n    '0000420080',\n    '0000433063',\n    '0000416156',\n    '0000411359',\n    '0000411413',\n    '0000411434',\n    '0000411474',\n    '0000411476',\n    '0000411531',\n    '0000411626',\n    '0000428664',\n    '0000422067',\n    '0000411904',\n    '0000421766',\n    '0000431990',\n    '0000411955',\n    '0000420834',\n    '0000412252',\n    '0000427772',\n    '0000413915',\n    '0000412514',\n    '0000430101',\n    '0000430398',\n    '0000412750',\n    '0000412796',\n    '0000412812',\n    '0000413821',\n    '0000415208',\n    '0000420335',\n    '0000408967',\n    '0000427959',\n    '0000409269',\n    '0000420910',\n    '0000409333',\n    '0000431993',\n    '0000409434',\n    '0000420801',\n    '0000414516',\n    '0000432489',\n    '0000436663',\n    '0000429211',\n    '0000409672',\n    '0000420525',\n    '0000435991',\n    '0000413303',\n    '0000424805',\n    '0000435956',\n    '0000424152',\n    '0000431371',\n    '0000423993',\n    '0000410647',\n    '0000410674',\n    '0000416807',\n    '0000422746',\n    '0000424804',\n    '0000423655',\n    '0000426199',\n    '0000414515',\n    '0000413680',\n    '0000417658',\n    '0000411083',\n    '0000431175',\n    '0000434196',\n    '0000432146',\n    '0000411297',\n    '0000428091',\n    '0000417426',\n    '0000411480',\n    '0000434550',\n    '0000416783',\n    '0000421065',\n    '0000411868',\n    '0000424656',\n    '0000415460',\n    '0000424591',\n    '0000431676',\n    '0000417192',\n    '0000412222',\n    '0000429675',\n    '0000436582',\n    '0000422640',\n    '0000434856',\n    '0000430903',\n    '0000416558',\n    '0000424555',\n    '0000425134',\n    '0000412975',\n    '0000434421',\n    '0000409262',\n    '0000415269',\n    '0000409510',\n    '0000409793',\n    '0000431737',\n    '0000412897',\n    '0000411050',\n    '0000425928',\n    '0000412150',\n    '0000412373',\n    '0000431181',\n    '0000408814',\n    '0000416374',\n    '0000426505',\n    '0000409185',\n    '0000422135',\n    '0000409725',\n    '0000410457',\n    '0000410673',\n    '0000428409',\n    '0000411026',\n    '0000411189',\n    '0000411342',\n    '0000423630',\n    '0000436826',\n    '0000412388',\n    '0000412678',\n    '0000412681',\n    '0000428124',\n    '0000436256',\n    '0000424756',\n    '0000428078',\n    '0000413995',\n    '0000416127',\n    '0000415203',\n    '0000416150',\n    '0000413795',\n    '0000416286',\n    '0000420985',\n    '0000430769',\n    '0000413100',\n    '0000413125',\n    '0000429800',\n    '0000427223',\n    '0000413192',\n    '0000413222',\n    '0000414735',\n    '0000428661',\n    '0000414536',\n    '0000423375',\n    '0000423887',\n    '0000410251',\n    '0000410755',\n    '0000413582',\n    '0000421768',\n    '0000414759',\n    '0000411687',\n    '0000416426',\n    '0000433589',\n    '0000421287',\n    '0000413626',\n    '0000417204',\n    '0000414795',\n    '0000423690',\n    '0000412892',\n    '0000412894',\n    '0000413895',\n    '0000419287',\n    '0000423997',\n    '0000424475',\n    '0000414189',\n    '0000414898',\n    '0000415737',\n    '0000420047',\n    '0000420813',\n    '0000412357',\n    '0000421702',\n    '0000419203',\n    '0000419214',\n    '0000419221',\n    '0000419259',\n    '0000419261',\n    '0000419263',\n    '0000419304',\n    '0000419318',\n    '0000421862',\n    '0000419330',\n    '0000419339',\n    '0000433132',\n    '0000431920',\n    '0000424806',\n    '0000433501',\n    '0000430894',\n    '0000419378',\n    '0000427116',\n    '0000419391',\n    '0000419412',\n    '0000419439',\n    '0000419450',\n    '0000432309',\n    '0000420800',\n    '0000419459',\n    '0000429922',\n    '0000427033',\n    '0000436265',\n    '0000419492',\n    '0000419495',\n    '0000419498',\n    '0000419506',\n    '0000419531',\n    '0000422897',\n    '0000419535',\n    '0000424711',\n    '0000431352',\n    '0000422639',\n    '0000422771',\n    '0000423580',\n    '0000422993',\n    '0000413801',\n    '0000423525',\n    '0000414348',\n    '0000422856',\n    '0000432394',\n    '0000417272',\n    '0000424910',\n    '0000431301',\n    '0000410968',\n    '0000428552',\n    '0000426126',\n    '0000422708',\n    '0000413800',\n    '0000427138',\n    '0000424173',\n    '0000427576',\n    '0000422886',\n    '0000412377',\n    '0000422207',\n    '0000421744',\n    '0000433238',\n    '0000413008',\n    '0000430464',\n    '0000409410',\n    '0000412971',\n    '0000409583',\n    '0000422715',\n    '0000424876',\n    '0000414577',\n    '0000415140',\n    '0000415704',\n    '0000429475',\n    '0000417651',\n    '0000427695',\n    '0000417625',\n    '0000412710',\n    '0000423076',\n    '0000434410',\n    '0000424927',\n    '0000414935',\n    '0000433972',\n    '0000413549',\n    '0000426616',\n    '0000413106',\n    '0000417591',\n    '0000413138',\n    '0000435432',\n    '0000432880',\n    '0000415339',\n    '0000413636',\n    '0000417693',\n    '0000422731',\n    '0000428143',\n    '0000426617',\n    '0000417095',\n    '0000413170',\n    '0000413184',\n    '0000413321',\n    '0000431955',\n    '0000432867',\n    '0000428284',\n    '0000418294',\n    '0000418902',\n    '0000420452',\n    '0000418253',\n    '0000420351',\n    '0000418207',\n    '0000418299',\n    '0000418752',\n    '0000422155',\n    '0000420170',\n    '0000418215',\n    '0000428190',\n    '0000418344',\n    '0000420511',\n    '0000423146',\n    '0000418365',\n    '0000420300',\n    '0000420118',\n    '0000418987',\n    '0000428417',\n    '0000420642',\n    '0000425576',\n    '0000428201',\n    '0000418480',\n    '0000430457',\n    '0000419736',\n    '0000429901',\n    '0000431700',\n    '0000431806',\n    '0000418569',\n    '0000419855',\n    '0000434914',\n    '0000418577',\n    '0000419989',\n    '0000418467',\n    '0000418486',\n    '0000418515',\n    '0000418497',\n    '0000429774',\n    '0000418565',\n    '0000429797',\n    '0000419554',\n    '0000423641',\n    '0000420451',\n    '0000419607',\n    '0000419617',\n    '0000424400',\n    '0000425642',\n    '0000419654',\n    '0000419657',\n    '0000419663',\n    '0000419669',\n    '0000419673',\n    '0000419675',\n    '0000430698',\n    '0000419703',\n    '0000419708',\n    '0000419733',\n    '0000421957',\n    '0000432424',\n    '0000428725',\n    '0000419788',\n    '0000419810',\n    '0000419816',\n    '0000419871',\n    '0000116576',\n    '0000419918',\n    '0000422175',\n    '0000419982',\n    '0000427457',\n    '0000430860',\n    '0000426241',\n    '0000431283',\n    '0000432080',\n    '0000430225',\n    '0000423405',\n    '0000423512',\n    '0000423791',\n    '0000420120',\n    '0000423301',\n    '0000426963',\n    '0000432596',\n    '0000431703',\n    '0000431335',\n    '0000436649',\n    '0000430037',\n    '0000436886',\n    '0000430459',\n    '0000420771',\n    '0000430360',\n    '0000436753',\n    '0000424107',\n    '0000431419',\n    '0000428326',\n    '0000423766',\n    '0000432200',\n    '0000430549',\n    '0000423639',\n    '0000426833',\n    '0000432969',\n    '0000428387',\n    '0000414830',\n    '0000428519',\n    '0000408833',\n    '0000434285',\n    '0000409109',\n    '0000409236',\n    '0000415306',\n    '0000409332',\n    '0000435216',\n    '0000409504',\n    '0000423485',\n    '0000426523',\n    '0000409600',\n    '0000433861',\n    '0000409805',\n    '0000417901',\n    '0000409818',\n    '0000417993',\n    '0000410027',\n    '0000423884',\n    '0000414985',\n    '0000410218',\n    '0000431261',\n    '0000431706',\n    '0000429752',\n    '0000426895',\n    '0000424309',\n    '0000410908',\n    '0000423579',\n    '0000429466',\n    '0000411148',\n    '0000411218',\n    '0000413953',\n    '0000413660',\n    '0000421097',\n    '0000417742',\n    '0000414373',\n    '0000430475',\n    '0000417863',\n    '0000418903',\n    '0000414924',\n    '0000412172',\n    '0000417864',\n    '0000412242',\n    '0000428681',\n    '0000412365',\n    '0000412414',\n    '0000417880',\n    '0000412669',\n    '0000412737',\n    '0000428779',\n    '0000412784',\n    '0000412799',\n    '0000417369',\n    '0000425172',\n    '0000416696',\n    '0000409531',\n    '0000429861',\n    '0000409994',\n    '0000426968',\n    '0000422817',\n    '0000429513',\n    '0000420236',\n    '0000425963',\n    '0000410533',\n    '0000410555',\n    '0000410572',\n    '0000410574',\n    '0000426042',\n    '0000426144',\n    '0000413341',\n    '0000416644',\n    '0000416326',\n    '0000414981',\n    '0000412893',\n    '0000408944',\n    '0000413845',\n    '0000409776',\n    '0000423372',\n    '0000415731',\n    '0000414705',\n    '0000422316',\n    '0000417234',\n    '0000411288',\n    '0000414192',\n    '0000417677',\n    '0000419129',\n    '0000432169',\n    '0000411786',\n    '0000420883',\n    '0000427378',\n    '0000412950',\n    '0000432585',\n    '0000428206',\n    '0000414951',\n    '0000431773',\n    '0000430153',\n    '0000417972',\n    '0000431898',\n    '0000432689',\n    '0000430540',\n    '0000416096',\n    '0000416266',\n    '0000417983',\n    '0000408885',\n    '0000409046',\n    '0000409102',\n    '0000431079',\n    '0000409763',\n    '0000412187',\n    '0000431174',\n    '0000410404',\n    '0000424898',\n    '0000416866',\n    '0000410788',\n    '0000414984',\n    '0000423810',\n    '0000411421',\n    '0000411804',\n    '0000429720',\n    '0000411988',\n    '0000431264',\n    '0000412492',\n    '0000412800',\n    '0000412877',\n    '0000412937',\n    '0000412982',\n    '0000413452',\n    '0000426039',\n    '0000410228',\n    '0000411170',\n    '0000411401',\n    '0000434169',\n    '0000412231',\n    '0000412325',\n    '0000424031',\n    '0000432579',\n    '0000417057',\n    '0000423091',\n    '0000427320',\n    '0000426426',\n    '0000436356',\n    '0000421884',\n    '0000409176',\n    '0000430145',\n    '0000409469',\n    '0000425563',\n    '0000432640',\n    '0000434340',\n    '0000427202',\n    '0000409813',\n    '0000411813',\n    '0000409880',\n    '0000428360',\n    '0000428564',\n    '0000425394',\n    '0000432635',\n    '0000414401',\n    '0000410427',\n    '0000431597',\n    '0000410482',\n    '0000415001',\n    '0000420105',\n    '0000427100',\n    '0000430100',\n    '0000415410',\n    '0000425931',\n    '0000410982',\n    '0000415608',\n    '0000411231',\n    '0000411307',\n    '0000411385',\n    '0000413523',\n    '0000431865',\n    '0000415886',\n    '0000428062',\n    '0000424316',\n    '0000431074',\n    '0000430329',\n    '0000412310',\n    '0000416328',\n    '0000429719',\n    '0000413578',\n    '0000412528',\n    '0000412583',\n    '0000428164',\n    '0000420084',\n    '0000412605',\n    '0000414038',\n    '0000428158',\n    '0000412837',\n    '0000432129',\n    '0000412879',\n    '0000418696',\n    '0000418743',\n    '0000415451',\n    '0000430454',\n    '0000435987',\n    '0000424694',\n    '0000412564',\n    '0000408771',\n    '0000435400',\n    '0000424136',\n    '0000426331',\n    '0000408996',\n    '0000427611',\n    '0000418756',\n    '0000428328',\n    '0000409075',\n    '0000426720',\n    '0000430779',\n    '0000409138',\n    '0000422621',\n    '0000432499',\n    '0000409197',\n    '0000415867',\n    '0000409323',\n    '0000425945',\n    '0000415437',\n    '0000409491',\n    '0000409516',\n    '0000423929',\n    '0000426049',\n    '0000434215',\n    '0000409936',\n    '0000409962',\n    '0000414194',\n    '0000410159',\n    '0000410152',\n    '0000413700',\n    '0000425703',\n    '0000410293',\n    '0000428922',\n    '0000418184',\n    '0000408980',\n    '0000410435',\n    '0000428554',\n    '0000414165',\n    '0000419116',\n    '0000422982',\n    '0000424509',\n    '0000424762',\n    '0000430134',\n    '0000416065',\n    '0000415564',\n    '0000433164',\n    '0000410912',\n    '0000426425',\n    '0000421277',\n    '0000428524',\n    '0000427291',\n    '0000433127',\n    '0000414574',\n    '0000411117',\n    '0000411238',\n    '0000411261',\n    '0000436510',\n    '0000422334',\n    '0000430857',\n    '0000411511',\n    '0000411537',\n    '0000430742',\n    '0000430650',\n    '0000417240',\n    '0000417499',\n    '0000435123',\n    '0000431178',\n    '0000414209',\n    '0000424004',\n    '0000427471',\n    '0000430519',\n    '0000435492',\n    '0000411963',\n    '0000433054',\n    '0000412033',\n    '0000435877',\n    '0000425975',\n    '0000412154',\n    '0000412194',\n    '0000422320',\n    '0000434027',\n    '0000429601',\n    '0000415256',\n    '0000412353',\n    '0000414540',\n    '0000414710',\n    '0000423085',\n    '0000412486',\n    '0000412433',\n    '0000427072',\n    '0000418421',\n    '0000415820',\n    '0000424197',\n    '0000412777',\n    '0000412860',\n    '0000412875',\n    '0000412898',\n    '0000432526',\n    '0000431424',\n    '0000436404',\n    '0000413049',\n    '0000422853',\n    '0000413054',\n    '0000416445',\n    '0000409074',\n    '0000430271',\n    '0000435266',\n    '0000430917',\n    '0000430618',\n    '0000428764',\n    '0000428948',\n    '0000409932',\n    '0000436403',\n    '0000414700',\n    '0000411363',\n    '0000423727',\n    '0000423816',\n    '0000427364',\n    '0000428718',\n    '0000411873',\n    '0000112661',\n    '0000416578',\n    '0000412491',\n    '0000427552',\n    '0000431265',\n    '0000435895',\n    '0000434828',\n    '0000414475',\n    '0000409913',\n    '0000429306',\n    '0000422880',\n    '0000414405',\n    '0000424868',\n    '0000411469',\n    '0000427630',\n    '0000428204',\n    '0000427751',\n    '0000429103',\n    '0000426499',\n    '0000428907',\n    '0000409872',\n    '0000415241',\n    '0000413467',\n    '0000416607',\n    '0000418038',\n    '0000434398',\n    '0000420296',\n    '0000429313',\n    '0000424109',\n    '0000420757',\n    '0000429489',\n    '0000417887',\n    '0000426749',\n    '0000415104',\n    '0000430121',\n    '0000411118',\n    '0000411550',\n    '0000434907',\n    '0000429981',\n    '0000427447',\n    '0000434846',\n    '0000418665',\n    '0000430070',\n    '0000415063',\n    '0000417701',\n    '0000423409',\n    '0000423416',\n    '0000412790',\n    '0000429360',\n    '0000415753',\n    '0000409179',\n    '0000417729',\n    '0000409508',\n    '0000415982',\n    '0000431273',\n    '0000409890',\n    '0000429777',\n    '0000420277',\n    '0000431262',\n    '0000410418',\n    '0000415409',\n    '0000430515',\n    '0000430293',\n    '0000413829',\n    '0000418210',\n    '0000434290',\n    '0000423514',\n    '0000411348',\n    '0000426619',\n    '0000418614',\n    '0000411730',\n    '0000427566',\n    '0000413820',\n    '0000423427',\n    '0000430117',\n    '0000432564',\n    '0000408801',\n    '0000427334',\n    '0000423596',\n    '0000409566',\n    '0000409817',\n    '0000413835',\n    '0000420291',\n    '0000410559',\n    '0000422061',\n    '0000428888',\n    '0000424095',\n    '0000439333',\n    '0000428642',\n    '0000417087',\n    '0000425535',\n    '0000417116',\n    '0000410217',\n    '0000410235',\n    '0000410863',\n    '0000424165',\n    '0000415999',\n    '0000411951',\n    '0000417999',\n    '0000418241',\n    '0000417344',\n    '0000432636',\n    '0000409263',\n    '0000434542',\n    '0000410189',\n    '0000410298',\n    '0000410398',\n    '0000410407',\n    '0000429624',\n    '0000410832',\n    '0000410837',\n    '0000432584',\n    '0000411373',\n    '0000414035',\n    '0000411458',\n    '0000411485',\n    '0000411623',\n    '0000411677',\n    '0000115488',\n    '0000412139',\n    '0000417226',\n    '0000412170',\n    '0000424143',\n    '0000412740',\n    '0000426509',\n    '0000424215',\n    '0000417058',\n    '0000417220',\n    '0000415446',\n    '0000431866',\n    '0000429415',\n    '0000412048',\n    '0000415264',\n    '0000417363',\n    '0000409056',\n    '0000414959',\n    '0000408894',\n    '0000409543',\n    '0000416161',\n    '0000423179',\n    '0000423435',\n    '0000410897',\n    '0000415179',\n    '0000418419',\n    '0000411127',\n    '0000425717',\n    '0000411593',\n    '0000411611',\n    '0000411918',\n    '0000417123',\n    '0000433752',\n    '0000409080',\n    '0000420382',\n    '0000426229',\n    '0000413463',\n    '0000410998',\n    '0000414072',\n    '0000425325',\n    '0000415862',\n    '0000416792',\n    '0000411944',\n    '0000427623',\n    '0000414338',\n    '0000412200',\n    '0000427545',\n    '0000409460',\n    '0000431058',\n    '0000410661',\n    '0000427006',\n    '0000422780',\n    '0000414646',\n    '0000428341',\n    '0000427510',\n    '0000431485',\n    '0000432796',\n    '0000428214',\n    '0000409208',\n    '0000424945',\n    '0000409261',\n    '0000432909',\n    '0000438513',\n    '0000436878',\n    '0000435683',\n    '0000438130',\n    '0000410115',\n    '0000410181',\n    '0000410421',\n    '0000436636',\n    '0000410754',\n    '0000411123',\n    '0000416121',\n    '0000411372',\n    '0000411441',\n    '0000425122',\n    '0000414383',\n    '0000425351',\n    '0000411881',\n    '0000411930',\n    '0000432366',\n    '0000428639',\n    '0000435947',\n    '0000412425',\n    '0000412537',\n    '0000412577',\n    '0000412845',\n    '0000437927',\n    '0000438828',\n    '0000440170',\n    '0000430083',\n    '0000434441',\n    '0000438288',\n    '0000437899',\n    '0000423425',\n    '0000439894',\n    '0000433863',\n    '0000432681',\n    '0000425242',\n    '0000412647',\n    '0000437600',\n    '0000440163',\n    '0000440120',\n    '0000440082',\n    '0000440207',\n    '0000436259',\n    '0000427655',\n    '0000439831',\n    '0000423694',\n    '0000436093',\n    '0000439918',\n    '0000425373',\n    '0000431340',\n    '0000440380',\n    '0000412158'\n]\n","export const PromotionRocketCustomersDataUSA10Percent = [\n    '0000408744',\n    '0000423486',\n    '0000434026',\n    '0000414932',\n    '0000416955',\n    '0000414808',\n    '0000408808',\n    '0000408816',\n    '0000408843',\n    '0000431030',\n    '0000421345',\n    '0000424306',\n    '0000408873',\n    '0000426927',\n    '0000426572',\n    '0000408927',\n    '0000425002',\n    '0000418420',\n    '0000424781',\n    '0000413971',\n    '0000408988',\n    '0000424962',\n    '0000423779',\n    '0000418292',\n    '0000409032',\n    '0000417417',\n    '0000414285',\n    '0000421619',\n    '0000416837',\n    '0000432574',\n    '0000409123',\n    '0000409133',\n    '0000417829',\n    '0000429531',\n    '0000409137',\n    '0000409148',\n    '0000423882',\n    '0000422292',\n    '0000418167',\n    '0000415270',\n    '0000428659',\n    '0000433202',\n    '0000409220',\n    '0000416045',\n    '0000414612',\n    '0000416784',\n    '0000421252',\n    '0000422249',\n    '0000428311',\n    '0000409271',\n    '0000409275',\n    '0000416504',\n    '0000413965',\n    '0000411961',\n    '0000429236',\n    '0000409300',\n    '0000424642',\n    '0000413645',\n    '0000409316',\n    '0000420853',\n    '0000424777',\n    '0000420728',\n    '0000418808',\n    '0000409342',\n    '0000409363',\n    '0000430295',\n    '0000420268',\n    '0000409402',\n    '0000413655',\n    '0000409438',\n    '0000422089',\n    '0000432646',\n    '0000431127',\n    '0000420466',\n    '0000426265',\n    '0000409481',\n    '0000409484',\n    '0000409489',\n    '0000431735',\n    '0000421861',\n    '0000414778',\n    '0000420218',\n    '0000429723',\n    '0000426948',\n    '0000417014',\n    '0000431992',\n    '0000434608',\n    '0000417450',\n    '0000409619',\n    '0000409620',\n    '0000409621',\n    '0000416336',\n    '0000409629',\n    '0000409647',\n    '0000409669',\n    '0000419087',\n    '0000416718',\n    '0000431912',\n    '0000413621',\n    '0000416305',\n    '0000430495',\n    '0000409786',\n    '0000409835',\n    '0000409847',\n    '0000409855',\n    '0000409904',\n    '0000426676',\n    '0000421353',\n    '0000409960',\n    '0000426905',\n    '0000416468',\n    '0000408892',\n    '0000417050',\n    '0000428527',\n    '0000426301',\n    '0000422794',\n    '0000421338',\n    '0000414396',\n    '0000410042',\n    '0000410049',\n    '0000416072',\n    '0000414639',\n    '0000410061',\n    '0000427972',\n    '0000420819',\n    '0000416729',\n    '0000410088',\n    '0000427018',\n    '0000410114',\n    '0000410118',\n    '0000410126',\n    '0000410129',\n    '0000410133',\n    '0000426863',\n    '0000410162',\n    '0000410171',\n    '0000421739',\n    '0000418100',\n    '0000428644',\n    '0000420361',\n    '0000416055',\n    '0000410224',\n    '0000421671',\n    '0000429749',\n    '0000428261',\n    '0000423267',\n    '0000413342',\n    '0000410309',\n    '0000409663',\n    '0000413746',\n    '0000410349',\n    '0000416117',\n    '0000410367',\n    '0000421582',\n    '0000438249',\n    '0000430476',\n    '0000416749',\n    '0000410403',\n    '0000421395',\n    '0000414530',\n    '0000428350',\n    '0000410430',\n    '0000419141',\n    '0000410475',\n    '0000416032',\n    '0000410484',\n    '0000410489',\n    '0000410492',\n    '0000417956',\n    '0000410560',\n    '0000410564',\n    '0000417974',\n    '0000430477',\n    '0000423638',\n    '0000410624',\n    '0000434468',\n    '0000421819',\n    '0000415993',\n    '0000425414',\n    '0000410664',\n    '0000421134',\n    '0000416747',\n    '0000422726',\n    '0000416650',\n    '0000433330',\n    '0000430932',\n    '0000429758',\n    '0000415727',\n    '0000423728',\n    '0000418611',\n    '0000418377',\n    '0000423824',\n    '0000423027',\n    '0000427757',\n    '0000410793',\n    '0000410805',\n    '0000417384',\n    '0000425102',\n    '0000432434',\n    '0000417389',\n    '0000417973',\n    '0000432563',\n    '0000422195',\n    '0000422904',\n    '0000410918',\n    '0000410936',\n    '0000424687',\n    '0000410944',\n    '0000429852',\n    '0000413807',\n    '0000433926',\n    '0000434220',\n    '0000411008',\n    '0000418293',\n    '0000411018',\n    '0000411027',\n    '0000435314',\n    '0000420823',\n    '0000413688',\n    '0000423014',\n    '0000428686',\n    '0000433252',\n    '0000431066',\n    '0000416692',\n    '0000411121',\n    '0000417610',\n    '0000411145',\n    '0000411158',\n    '0000426596',\n    '0000411164',\n    '0000434328',\n    '0000416938',\n    '0000411182',\n    '0000411188',\n    '0000420036',\n    '0000415616',\n    '0000434595',\n    '0000415163',\n    '0000411268',\n    '0000431416',\n    '0000430720',\n    '0000411349',\n    '0000423402',\n    '0000411415',\n    '0000430561',\n    '0000423443',\n    '0000411426',\n    '0000428550',\n    '0000426892',\n    '0000411453',\n    '0000411460',\n    '0000432321',\n    '0000411466',\n    '0000411473',\n    '0000411482',\n    '0000415877',\n    '0000421115',\n    '0000435029',\n    '0000430052',\n    '0000430176',\n    '0000424191',\n    '0000416856',\n    '0000426871',\n    '0000421511',\n    '0000435108',\n    '0000411520',\n    '0000411551',\n    '0000411554',\n    '0000411555',\n    '0000422263',\n    '0000420900',\n    '0000430456',\n    '0000425331',\n    '0000411581',\n    '0000411585',\n    '0000427101',\n    '0000422908',\n    '0000418607',\n    '0000430259',\n    '0000421364',\n    '0000415049',\n    '0000411628',\n    '0000430478',\n    '0000428770',\n    '0000424629',\n    '0000416327',\n    '0000420751',\n    '0000411682',\n    '0000434980',\n    '0000431582',\n    '0000425177',\n    '0000419050',\n    '0000416803',\n    '0000423640',\n    '0000411778',\n    '0000426306',\n    '0000413747',\n    '0000425058',\n    '0000426503',\n    '0000411810',\n    '0000415604',\n    '0000417604',\n    '0000420506',\n    '0000411844',\n    '0000415935',\n    '0000411869',\n    '0000415557',\n    '0000429618',\n    '0000411886',\n    '0000428788',\n    '0000420904',\n    '0000421689',\n    '0000411971',\n    '0000421088',\n    '0000411999',\n    '0000426567',\n    '0000420798',\n    '0000417690',\n    '0000426472',\n    '0000417878',\n    '0000429085',\n    '0000412066',\n    '0000412069',\n    '0000412083',\n    '0000424345',\n    '0000429973',\n    '0000430204',\n    '0000414056',\n    '0000431290',\n    '0000421736',\n    '0000423317',\n    '0000412168',\n    '0000415758',\n    '0000412181',\n    '0000412191',\n    '0000412193',\n    '0000413902',\n    '0000412214',\n    '0000413605',\n    '0000412264',\n    '0000421572',\n    '0000414532',\n    '0000421805',\n    '0000412311',\n    '0000421556',\n    '0000421681',\n    '0000412335',\n    '0000412336',\n    '0000412347',\n    '0000412386',\n    '0000426551',\n    '0000412418',\n    '0000412419',\n    '0000436317',\n    '0000425627',\n    '0000430838',\n    '0000412441',\n    '0000412456',\n    '0000425419',\n    '0000422789',\n    '0000432599',\n    '0000412502',\n    '0000429917',\n    '0000412566',\n    '0000423568',\n    '0000413824',\n    '0000412593',\n    '0000414160',\n    '0000417269',\n    '0000412624',\n    '0000416548',\n    '0000420379',\n    '0000431417',\n    '0000412705',\n    '0000412706',\n    '0000412707',\n    '0000412714',\n    '0000424170',\n    '0000414282',\n    '0000412778',\n    '0000412785',\n    '0000414416',\n    '0000421194',\n    '0000412853',\n    '0000428388',\n    '0000416104',\n    '0000424848',\n    '0000412883',\n    '0000412890',\n    '0000430897',\n    '0000417556',\n    '0000424473',\n    '0000434149',\n    '0000412980',\n    '0000423321',\n    '0000413024',\n    '0000413027',\n    '0000419182',\n    '0000413038',\n    '0000413041',\n    '0000424585',\n    '0000420804',\n    '0000433017',\n    '0000421400',\n    '0000409218',\n    '0000423002',\n    '0000423028',\n    '0000426823',\n    '0000409657',\n    '0000423983',\n    '0000434025',\n    '0000435434',\n    '0000423856',\n    '0000417695',\n    '0000410900',\n    '0000416118',\n    '0000410966',\n    '0000417209',\n    '0000416587',\n    '0000411091',\n    '0000418684',\n    '0000436184',\n    '0000426642',\n    '0000426701',\n    '0000411494',\n    '0000425636',\n    '0000411698',\n    '0000411876',\n    '0000426694',\n    '0000423814',\n    '0000429180',\n    '0000412475',\n    '0000412505',\n    '0000430185',\n    '0000439174',\n    '0000413958',\n    '0000419208',\n    '0000418078',\n    '0000430829',\n    '0000419217',\n    '0000426231',\n    '0000421838',\n    '0000419222',\n    '0000418393',\n    '0000426949',\n    '0000422782',\n    '0000419235',\n    '0000427150',\n    '0000434728',\n    '0000419251',\n    '0000419258',\n    '0000419184',\n    '0000414649',\n    '0000419278',\n    '0000419280',\n    '0000419293',\n    '0000430625',\n    '0000419308',\n    '0000422913',\n    '0000422714',\n    '0000423520',\n    '0000419323',\n    '0000427175',\n    '0000429517',\n    '0000419352',\n    '0000425541',\n    '0000427436',\n    '0000425217',\n    '0000417208',\n    '0000418046',\n    '0000419399',\n    '0000417292',\n    '0000418591',\n    '0000421008',\n    '0000425096',\n    '0000423518',\n    '0000419417',\n    '0000419418',\n    '0000418099',\n    '0000422961',\n    '0000419421',\n    '0000419422',\n    '0000413897',\n    '0000423865',\n    '0000419452',\n    '0000415391',\n    '0000428449',\n    '0000414368',\n    '0000412251',\n    '0000413652',\n    '0000419489',\n    '0000419493',\n    '0000419496',\n    '0000421672',\n    '0000420289',\n    '0000433607',\n    '0000416375',\n    '0000429952',\n    '0000419532',\n    '0000416039',\n    '0000414841',\n    '0000425932',\n    '0000421882',\n    '0000425241',\n    '0000417491',\n    '0000414911',\n    '0000430492',\n    '0000431534',\n    '0000425313',\n    '0000414999',\n    '0000415887',\n    '0000419153',\n    '0000416137',\n    '0000418764',\n    '0000424950',\n    '0000417029',\n    '0000413993',\n    '0000416202',\n    '0000415294',\n    '0000425933',\n    '0000414542',\n    '0000420971',\n    '0000415048',\n    '0000408964',\n    '0000416967',\n    '0000418933',\n    '0000421525',\n    '0000414839',\n    '0000421680',\n    '0000418744',\n    '0000428909',\n    '0000421869',\n    '0000418173',\n    '0000409081',\n    '0000417156',\n    '0000420177',\n    '0000424024',\n    '0000414982',\n    '0000423950',\n    '0000416520',\n    '0000425253',\n    '0000415253',\n    '0000420633',\n    '0000418736',\n    '0000419033',\n    '0000430465',\n    '0000415335',\n    '0000414455',\n    '0000416980',\n    '0000413942',\n    '0000426092',\n    '0000426135',\n    '0000423880',\n    '0000415849',\n    '0000432736',\n    '0000435350',\n    '0000417497',\n    '0000415338',\n    '0000425420',\n    '0000424300',\n    '0000416811',\n    '0000415344',\n    '0000421098',\n    '0000423897',\n    '0000414780',\n    '0000414097',\n    '0000416659',\n    '0000424102',\n    '0000414837',\n    '0000420773',\n    '0000423064',\n    '0000415083',\n    '0000422744',\n    '0000415204',\n    '0000428739',\n    '0000417801',\n    '0000417221',\n    '0000423531',\n    '0000428407',\n    '0000433686',\n    '0000416867',\n    '0000424202',\n    '0000436255',\n    '0000415404',\n    '0000409701',\n    '0000425677',\n    '0000422620',\n    '0000416133',\n    '0000429848',\n    '0000423131',\n    '0000416664',\n    '0000415268',\n    '0000414737',\n    '0000417596',\n    '0000422802',\n    '0000416926',\n    '0000417650',\n    '0000422330',\n    '0000414827',\n    '0000427027',\n    '0000414630',\n    '0000418438',\n    '0000425393',\n    '0000431896',\n    '0000415589',\n    '0000414234',\n    '0000425464',\n    '0000415168',\n    '0000425340',\n    '0000416434',\n    '0000417288',\n    '0000410005',\n    '0000429642',\n    '0000417385',\n    '0000417840',\n    '0000428879',\n    '0000424147',\n    '0000424891',\n    '0000420194',\n    '0000431895',\n    '0000418342',\n    '0000413574',\n    '0000410130',\n    '0000426367',\n    '0000416458',\n    '0000430778',\n    '0000420125',\n    '0000421113',\n    '0000426418',\n    '0000415261',\n    '0000423102',\n    '0000428843',\n    '0000417490',\n    '0000415931',\n    '0000413632',\n    '0000413878',\n    '0000427076',\n    '0000417583',\n    '0000413883',\n    '0000431190',\n    '0000416495',\n    '0000415299',\n    '0000415566',\n    '0000415085',\n    '0000417064',\n    '0000414926',\n    '0000422781',\n    '0000415374',\n    '0000418738',\n    '0000417797',\n    '0000424271',\n    '0000415613',\n    '0000415717',\n    '0000415350',\n    '0000427341',\n    '0000420064',\n    '0000418276',\n    '0000420405',\n    '0000416330',\n    '0000426101',\n    '0000424090',\n    '0000418116',\n    '0000420503',\n    '0000415750',\n    '0000415033',\n    '0000416880',\n    '0000430546',\n    '0000430381',\n    '0000417888',\n    '0000416828',\n    '0000424757',\n    '0000416588',\n    '0000433801',\n    '0000413954',\n    '0000420421',\n    '0000428494',\n    '0000425741',\n    '0000414049',\n    '0000422946',\n    '0000418199',\n    '0000416663',\n    '0000424275',\n    '0000427015',\n    '0000417545',\n    '0000415590',\n    '0000415271',\n    '0000414519',\n    '0000429896',\n    '0000415423',\n    '0000420258',\n    '0000423294',\n    '0000427651',\n    '0000422160',\n    '0000424399',\n    '0000425691',\n    '0000415522',\n    '0000421342',\n    '0000416572',\n    '0000417728',\n    '0000423281',\n    '0000421591',\n    '0000425584',\n    '0000427258',\n    '0000417214',\n    '0000422656',\n    '0000431969',\n    '0000418889',\n    '0000427415',\n    '0000414048',\n    '0000422178',\n    '0000423554',\n    '0000427788',\n    '0000418395',\n    '0000418243',\n    '0000417445',\n    '0000416303',\n    '0000427586',\n    '0000422072',\n    '0000415855',\n    '0000416048',\n    '0000411016',\n    '0000415968',\n    '0000425704',\n    '0000422154',\n    '0000433276',\n    '0000423980',\n    '0000414350',\n    '0000417132',\n    '0000425543',\n    '0000414376',\n    '0000428318',\n    '0000429447',\n    '0000423483',\n    '0000432079',\n    '0000415067',\n    '0000414966',\n    '0000428562',\n    '0000415531',\n    '0000416810',\n    '0000414997',\n    '0000415220',\n    '0000423149',\n    '0000416530',\n    '0000415305',\n    '0000417475',\n    '0000428896',\n    '0000413647',\n    '0000415523',\n    '0000422932',\n    '0000415975',\n    '0000421679',\n    '0000411236',\n    '0000415716',\n    '0000413324',\n    '0000424526',\n    '0000425168',\n    '0000418623',\n    '0000416128',\n    '0000422179',\n    '0000425104',\n    '0000433845',\n    '0000416969',\n    '0000425345',\n    '0000416501',\n    '0000416193',\n    '0000414635',\n    '0000415421',\n    '0000424006',\n    '0000419014',\n    '0000428408',\n    '0000416480',\n    '0000428304',\n    '0000415313',\n    '0000420956',\n    '0000415504',\n    '0000419144',\n    '0000421312',\n    '0000418050',\n    '0000416167',\n    '0000416486',\n    '0000415491',\n    '0000416432',\n    '0000416584',\n    '0000429754',\n    '0000414456',\n    '0000426266',\n    '0000414946',\n    '0000419131',\n    '0000429857',\n    '0000413748',\n    '0000414740',\n    '0000427571',\n    '0000429738',\n    '0000413964',\n    '0000418156',\n    '0000416817',\n    '0000415308',\n    '0000415319',\n    '0000420393',\n    '0000423171',\n    '0000415532',\n    '0000415351',\n    '0000415715',\n    '0000411658',\n    '0000416482',\n    '0000411704',\n    '0000416255',\n    '0000423989',\n    '0000420234',\n    '0000414030',\n    '0000415455',\n    '0000418239',\n    '0000416428',\n    '0000417593',\n    '0000426585',\n    '0000418317',\n    '0000416284',\n    '0000424818',\n    '0000416906',\n    '0000414037',\n    '0000427391',\n    '0000424888',\n    '0000421116',\n    '0000421814',\n    '0000420960',\n    '0000413609',\n    '0000430500',\n    '0000421009',\n    '0000415635',\n    '0000427808',\n    '0000419052',\n    '0000114303',\n    '0000420155',\n    '0000415230',\n    '0000420695',\n    '0000416568',\n    '0000423042',\n    '0000416961',\n    '0000414609',\n    '0000413383',\n    '0000416683',\n    '0000418416',\n    '0000416634',\n    '0000427001',\n    '0000417199',\n    '0000424587',\n    '0000414943',\n    '0000415252',\n    '0000426190',\n    '0000415852',\n    '0000421276',\n    '0000433925',\n    '0000416838',\n    '0000422747',\n    '0000421628',\n    '0000427810',\n    '0000416182',\n    '0000425270',\n    '0000429875',\n    '0000433650',\n    '0000426213',\n    '0000417564',\n    '0000436865',\n    '0000433250',\n    '0000413963',\n    '0000420786',\n    '0000418313',\n    '0000414942',\n    '0000423092',\n    '0000418240',\n    '0000415405',\n    '0000422641',\n    '0000412413',\n    '0000415035',\n    '0000422986',\n    '0000430076',\n    '0000415349',\n    '0000412447',\n    '0000424946',\n    '0000415376',\n    '0000416806',\n    '0000417010',\n    '0000421808',\n    '0000417847',\n    '0000417521',\n    '0000423519',\n    '0000421863',\n    '0000416479',\n    '0000415164',\n    '0000437348',\n    '0000423932',\n    '0000415540',\n    '0000418439',\n    '0000417131',\n    '0000413329',\n    '0000425612',\n    '0000428247',\n    '0000415336',\n    '0000414560',\n    '0000418237',\n    '0000416322',\n    '0000419035',\n    '0000426836',\n    '0000416362',\n    '0000431730',\n    '0000421064',\n    '0000418139',\n    '0000415634',\n    '0000435559',\n    '0000414947',\n    '0000429399',\n    '0000421526',\n    '0000413860',\n    '0000421029',\n    '0000424930',\n    '0000427938',\n    '0000415422',\n    '0000422137',\n    '0000415019',\n    '0000424499',\n    '0000417193',\n    '0000415082',\n    '0000429328',\n    '0000415441',\n    '0000429937',\n    '0000415592',\n    '0000418713',\n    '0000432566',\n    '0000428816',\n    '0000421555',\n    '0000416598',\n    '0000426108',\n    '0000416981',\n    '0000437556',\n    '0000423418',\n    '0000415851',\n    '0000424780',\n    '0000421211',\n    '0000418663',\n    '0000420114',\n    '0000416542',\n    '0000414116',\n    '0000425475',\n    '0000427052',\n    '0000413023',\n    '0000430908',\n    '0000413033',\n    '0000425007',\n    '0000416658',\n    '0000415802',\n    '0000426485',\n    '0000424647',\n    '0000416300',\n    '0000427026',\n    '0000430771',\n    '0000415289',\n    '0000414589',\n    '0000423001',\n    '0000421315',\n    '0000416971',\n    '0000421428',\n    '0000416361',\n    '0000417075',\n    '0000413750',\n    '0000421001',\n    '0000420899',\n    '0000425254',\n    '0000416192',\n    '0000417088',\n    '0000416709',\n    '0000417723',\n    '0000416026',\n    '0000425085',\n    '0000414166',\n    '0000423963',\n    '0000421959',\n    '0000422874',\n    '0000429127',\n    '0000428413',\n    '0000437457',\n    '0000421759',\n    '0000437711',\n    '0000431016',\n    '0000432958',\n    '0000422719',\n    '0000424371',\n    '0000416566',\n    '0000416836',\n    '0000425463',\n    '0000425987',\n    '0000430442',\n    '0000425397',\n    '0000417444',\n    '0000436941',\n    '0000416475',\n    '0000421280',\n    '0000437111',\n    '0000423877',\n    '0000430878',\n    '0000424389',\n    '0000430228',\n    '0000418408',\n    '0000431254',\n    '0000434403',\n    '0000424822',\n    '0000433245',\n    '0000432708',\n    '0000430895',\n    '0000427440',\n    '0000431802',\n    '0000428444',\n    '0000414986',\n    '0000433862',\n    '0000430039',\n    '0000418431',\n    '0000439871',\n    '0000424266',\n    '0000428919',\n    '0000431065',\n    '0000436094',\n    '0000432688',\n    '0000421148',\n    '0000415378',\n    '0000434631',\n    '0000431891',\n    '0000424211',\n    '0000425086',\n    '0000413749',\n    '0000421917',\n    '0000424380',\n    '0000422110',\n    '0000439381',\n    '0000430983',\n    '0000431034',\n    '0000434338',\n    '0000413757',\n    '0000424254',\n    '0000423133',\n    '0000425240',\n    '0000420734',\n    '0000421245',\n    '0000429356',\n    '0000418127',\n    '0000428418',\n    '0000413399',\n    '0000413417',\n    '0000416337',\n    '0000414186',\n    '0000421268',\n    '0000417300',\n    '0000421336',\n    '0000427492',\n    '0000413693',\n    '0000426413',\n    '0000428492',\n    '0000424529',\n    '0000434283',\n    '0000413343',\n    '0000422984',\n    '0000417301',\n    '0000414264',\n    '0000424301',\n    '0000422692',\n    '0000421916',\n    '0000424809',\n    '0000423025',\n    '0000415081',\n    '0000423918',\n    '0000432002',\n    '0000422766',\n    '0000437612',\n    '0000424601',\n    '0000421770',\n    '0000416465',\n    '0000414062',\n    '0000418592',\n    '0000425154',\n    '0000417138',\n    '0000414036',\n    '0000429243',\n    '0000428270',\n    '0000431950',\n    '0000431496',\n    '0000431199',\n    '0000416549',\n    '0000423958',\n    '0000436744',\n    '0000413698',\n    '0000427755',\n    '0000414859',\n    '0000413411',\n    '0000415039',\n    '0000430127',\n    '0000420623',\n    '0000425389',\n    '0000433996',\n    '0000423170',\n    '0000413277',\n    '0000425061',\n    '0000416830',\n    '0000413414',\n    '0000409674',\n    '0000428156',\n    '0000420741',\n    '0000439872',\n    '0000413751',\n    '0000424600',\n    '0000415981',\n    '0000422859',\n    '0000413852',\n    '0000418097',\n    '0000426314',\n    '0000417000',\n    '0000426052',\n    '0000433338',\n    '0000424183',\n    '0000426799',\n    '0000425327',\n    '0000434974',\n    '0000415392',\n    '0000414180',\n    '0000416574',\n    '0000424726',\n    '0000427496',\n    '0000426194',\n    '0000415014',\n    '0000421149',\n    '0000415231',\n    '0000415246',\n    '0000432782',\n    '0000418907',\n    '0000423410',\n    '0000417188',\n    '0000415221',\n    '0000423990',\n    '0000428801',\n    '0000426059',\n    '0000416125',\n    '0000435537',\n    '0000416815',\n    '0000418126',\n    '0000415044',\n    '0000434145',\n    '0000421073',\n    '0000427292',\n    '0000424534',\n    '0000413870',\n    '0000413412',\n    '0000416176',\n    '0000413752',\n    '0000417752',\n    '0000415984',\n    '0000429668',\n    '0000413697',\n    '0000422775',\n    '0000421347',\n    '0000413733',\n    '0000423368',\n    '0000427490',\n    '0000431533',\n    '0000414073',\n    '0000416523',\n    '0000430957',\n    '0000414701',\n    '0000416951',\n    '0000421346',\n    '0000417990',\n    '0000415214',\n    '0000417612',\n    '0000413402',\n    '0000428785',\n    '0000413449',\n    '0000424812',\n    '0000422078',\n    '0000431741',\n    '0000429919',\n    '0000418008',\n    '0000423078',\n    '0000433929',\n    '0000417529',\n    '0000423920',\n    '0000426713',\n    '0000434208',\n    '0000424169',\n    '0000421317',\n    '0000428138',\n    '0000421257',\n    '0000423007',\n    '0000433916',\n    '0000415413',\n    '0000414851',\n    '0000428813',\n    '0000414237',\n    '0000421055',\n    '0000413410',\n    '0000431501',\n    '0000415375',\n    '0000426446',\n    '0000423369',\n    '0000417404',\n    '0000433322',\n    '0000417849',\n    '0000427668',\n    '0000419169',\n    '0000428086',\n    '0000424623',\n    '0000424959',\n    '0000414235',\n    '0000413682',\n    '0000415086',\n    '0000415588',\n    '0000414568',\n    '0000417889',\n    '0000421631',\n    '0000426026',\n    '0000424490',\n    '0000429780',\n    '0000432879',\n    '0000414233',\n    '0000414444',\n    '0000416169',\n    '0000420718',\n    '0000418341',\n    '0000415278',\n    '0000426360',\n    '0000428077',\n    '0000430673',\n    '0000438549',\n    '0000415377',\n    '0000415316',\n    '0000430753',\n    '0000418714',\n    '0000415311',\n    '0000426320',\n    '0000425603',\n    '0000115257',\n    '0000415318',\n    '0000420689',\n    '0000426816',\n    '0000418979',\n    '0000424231',\n    '0000418879',\n    '0000427777',\n    '0000433440',\n    '0000427853',\n    '0000424103',\n    '0000416129',\n    '0000416727',\n    '0000425473',\n    '0000426474',\n    '0000413583',\n    '0000423235',\n    '0000428490',\n    '0000420370',\n    '0000423902',\n    '0000422920',\n    '0000415693',\n    '0000430576',\n    '0000426860',\n    '0000429094',\n    '0000415493',\n    '0000420976',\n    '0000421296',\n    '0000416151',\n    '0000421204',\n    '0000413355',\n    '0000430179',\n    '0000412478',\n    '0000421337',\n    '0000432148',\n    '0000426898',\n    '0000423423',\n    '0000426404',\n    '0000418198',\n    '0000414686',\n    '0000429376',\n    '0000423976',\n    '0000422048',\n    '0000426626',\n    '0000438148',\n    '0000424021',\n    '0000426716',\n    '0000423689',\n    '0000425988',\n    '0000414923',\n    '0000417464',\n    '0000418222',\n    '0000427826',\n    '0000427177',\n    '0000415290',\n    '0000415640',\n    '0000413482',\n    '0000422109',\n    '0000415447',\n    '0000418721',\n    '0000426029',\n    '0000430574',\n    '0000428626',\n    '0000428990',\n    '0000418691',\n    '0000431800',\n    '0000418996',\n    '0000431393',\n    '0000415210',\n    '0000423895',\n    '0000420912',\n    '0000423033',\n    '0000430701',\n    '0000418304',\n    '0000420719',\n    '0000422831',\n    '0000420256',\n    '0000425645',\n    '0000413811',\n    '0000413617',\n    '0000415387',\n    '0000413712',\n    '0000414968',\n    '0000418417',\n    '0000408986',\n    '0000414687',\n    '0000414736',\n    '0000429223',\n    '0000414069',\n    '0000416030',\n    '0000431370',\n    '0000431158',\n    '0000413470',\n    '0000414937',\n    '0000421923',\n    '0000415860',\n    '0000428791',\n    '0000416029',\n    '0000414773',\n    '0000424593',\n    '0000433471',\n    '0000413972',\n    '0000422951',\n    '0000417427',\n    '0000425281',\n    '0000431231',\n    '0000426155',\n    '0000417466',\n    '0000431480',\n    '0000425487',\n    '0000417285',\n    '0000414865',\n    '0000423056',\n    '0000414054',\n    '0000415842',\n    '0000414091',\n    '0000427562',\n    '0000415263',\n    '0000417598',\n    '0000409688',\n    '0000417114',\n    '0000416654',\n    '0000428815',\n    '0000420679',\n    '0000424971',\n    '0000421387',\n    '0000427438',\n    '0000415674',\n    '0000427521',\n    '0000422079',\n    '0000425064',\n    '0000427674',\n    '0000413939',\n    '0000414020',\n    '0000420927',\n    '0000425271',\n    '0000420879',\n    '0000418742',\n    '0000418427',\n    '0000430919',\n    '0000417062',\n    '0000413928',\n    '0000423717',\n    '0000430582',\n    '0000424364',\n    '0000436367',\n    '0000414763',\n    '0000414067',\n    '0000415907',\n    '0000425649',\n    '0000430791',\n    '0000420044',\n    '0000417708',\n    '0000423185',\n    '0000428643',\n    '0000418128',\n    '0000433129',\n    '0000424451',\n    '0000415298',\n    '0000432296',\n    '0000433048',\n    '0000425244',\n    '0000418331',\n    '0000430683',\n    '0000428295',\n    '0000414956',\n    '0000426769',\n    '0000425304',\n    '0000417049',\n    '0000427478',\n    '0000428662',\n    '0000424146',\n    '0000415832',\n    '0000426184',\n    '0000424640',\n    '0000432006',\n    '0000413405',\n    '0000421033',\n    '0000414683',\n    '0000430970',\n    '0000431453',\n    '0000415772',\n    '0000415245',\n    '0000415756',\n    '0000414449',\n    '0000416466',\n    '0000413390',\n    '0000415705',\n    '0000426988',\n    '0000413695',\n    '0000421162',\n    '0000427477',\n    '0000422045',\n    '0000418056',\n    '0000413620',\n    '0000417914',\n    '0000422081',\n    '0000416196',\n    '0000416144',\n    '0000413357',\n    '0000414899',\n    '0000420372',\n    '0000424304',\n    '0000432738',\n    '0000433243',\n    '0000420711',\n    '0000413270',\n    '0000413385',\n    '0000416808',\n    '0000414972',\n    '0000426414',\n    '0000414055',\n    '0000414994',\n    '0000112692',\n    '0000427524',\n    '0000433079',\n    '0000415420',\n    '0000422077',\n    '0000413451',\n    '0000415783',\n    '0000418115',\n    '0000414679',\n    '0000433011',\n    '0000427251',\n    '0000413378',\n    '0000413696',\n    '0000439357',\n    '0000427493',\n    '0000413543',\n    '0000421330',\n    '0000414543',\n    '0000413446',\n    '0000421286',\n    '0000418040',\n    '0000426357',\n    '0000413406',\n    '0000417859',\n    '0000417870',\n    '0000431183',\n    '0000423632',\n    '0000415398',\n    '0000429075',\n    '0000433853',\n    '0000424537',\n    '0000425630',\n    '0000413978',\n    '0000425333',\n    '0000434481',\n    '0000416799',\n    '0000415831',\n    '0000417068',\n    '0000420968',\n    '0000427807',\n    '0000433854',\n    '0000426350',\n    '0000416037',\n    '0000414347',\n    '0000416947',\n    '0000427688',\n    '0000428824',\n    '0000418067',\n    '0000425284',\n    '0000409878',\n    '0000427879',\n    '0000416636',\n    '0000438600',\n    '0000427170',\n    '0000438901',\n    '0000413425',\n    '0000416451',\n    '0000422143',\n    '0000438601',\n    '0000428414',\n    '0000426781',\n    '0000424366',\n    '0000420709',\n    '0000427479',\n    '0000425605',\n    '0000417941',\n    '0000414011',\n    '0000430025',\n    '0000419195',\n    '0000414289',\n    '0000415100',\n    '0000415016',\n    '0000418877',\n    '0000419216',\n    '0000417566',\n    '0000425730',\n    '0000439665',\n    '0000419225',\n    '0000423105',\n    '0000418145',\n    '0000416600',\n    '0000425260',\n    '0000424668',\n    '0000418705',\n    '0000421270',\n    '0000423700',\n    '0000415120',\n    '0000417684',\n    '0000415017',\n    '0000426366',\n    '0000417860',\n    '0000417370',\n    '0000417882',\n    '0000427443',\n    '0000419302',\n    '0000424697',\n    '0000413527',\n    '0000426424',\n    '0000417441',\n    '0000417357',\n    '0000418947',\n    '0000422667',\n    '0000418962',\n    '0000420731',\n    '0000417934',\n    '0000418992',\n    '0000418384',\n    '0000435031',\n    '0000421007',\n    '0000421933',\n    '0000415206',\n    '0000418289',\n    '0000425138',\n    '0000432618',\n    '0000424731',\n    '0000420181',\n    '0000421013',\n    '0000418051',\n    '0000417991',\n    '0000418296',\n    '0000424100',\n    '0000420688',\n    '0000417995',\n    '0000421092',\n    '0000429613',\n    '0000413086',\n    '0000415425',\n    '0000429225',\n    '0000422727',\n    '0000428864',\n    '0000418600',\n    '0000417601',\n    '0000420687',\n    '0000420402',\n    '0000427327',\n    '0000418225',\n    '0000417253',\n    '0000419471',\n    '0000420171',\n    '0000417676',\n    '0000418757',\n    '0000420134',\n    '0000427625',\n    '0000420304',\n    '0000416184',\n    '0000427282',\n    '0000417989',\n    '0000423160',\n    '0000430904',\n    '0000427689',\n    '0000419516',\n    '0000421931',\n    '0000428258',\n    '0000413415',\n    '0000414353',\n    '0000414174',\n    '0000416647',\n    '0000418680',\n    '0000417554',\n    '0000434452',\n    '0000423373',\n    '0000415575',\n    '0000421978',\n    '0000416339',\n    '0000430699',\n    '0000422988',\n    '0000432072',\n    '0000415476',\n    '0000427774',\n    '0000415393',\n    '0000428454',\n    '0000429540',\n    '0000420925',\n    '0000421066',\n    '0000414825',\n    '0000424899',\n    '0000417061',\n    '0000427784',\n    '0000424459',\n    '0000418662',\n    '0000431059',\n    '0000428368',\n    '0000428728',\n    '0000418944',\n    '0000413849',\n    '0000428717',\n    '0000415195',\n    '0000429037',\n    '0000421146',\n    '0000425119',\n    '0000430252',\n    '0000420076',\n    '0000413789',\n    '0000414781',\n    '0000414805',\n    '0000423815',\n    '0000415126',\n    '0000418120',\n    '0000425907',\n    '0000414203',\n    '0000430315',\n    '0000423480',\n    '0000423446',\n    '0000430602',\n    '0000419166',\n    '0000434855',\n    '0000427925',\n    '0000427844',\n    '0000429672',\n    '0000427568',\n    '0000430547',\n    '0000428140',\n    '0000421083',\n    '0000430088',\n    '0000414953',\n    '0000413088',\n    '0000414742',\n    '0000417063',\n    '0000434337',\n    '0000417715',\n    '0000425674',\n    '0000415346',\n    '0000424634',\n    '0000429621',\n    '0000426498',\n    '0000421091',\n    '0000421051',\n    '0000428511',\n    '0000421663',\n    '0000418381',\n    '0000414828',\n    '0000408940',\n    '0000409060',\n    '0000420344',\n    '0000427606',\n    '0000414879',\n    '0000425066',\n    '0000415827',\n    '0000409561',\n    '0000420684',\n    '0000409637',\n    '0000409641',\n    '0000414136',\n    '0000421369',\n    '0000414967',\n    '0000414281',\n    '0000414714',\n    '0000414510',\n    '0000410894',\n    '0000411065',\n    '0000420164',\n    '0000413618',\n    '0000414955',\n    '0000411179',\n    '0000427173',\n    '0000415664',\n    '0000411335',\n    '0000411392',\n    '0000421574',\n    '0000414561',\n    '0000414357',\n    '0000430128',\n    '0000425071',\n    '0000424360',\n    '0000418170',\n    '0000415280',\n    '0000435936',\n    '0000418352',\n    '0000430631',\n    '0000412659',\n    '0000418348',\n    '0000414321',\n    '0000426607',\n    '0000427940',\n    '0000418971',\n    '0000410866',\n    '0000408786',\n    '0000408828',\n    '0000423919',\n    '0000413450',\n    '0000413070',\n    '0000413615',\n    '0000423113',\n    '0000413553',\n    '0000417413',\n    '0000418251',\n    '0000409047',\n    '0000426141',\n    '0000415302',\n    '0000409079',\n    '0000409083',\n    '0000409151',\n    '0000417340',\n    '0000409152',\n    '0000409153',\n    '0000409155',\n    '0000417343',\n    '0000414263',\n    '0000418019',\n    '0000428874',\n    '0000424199',\n    '0000416522',\n    '0000409329',\n    '0000427275',\n    '0000428039',\n    '0000428944',\n    '0000428061',\n    '0000419126',\n    '0000430280',\n    '0000420241',\n    '0000417614',\n    '0000422112',\n    '0000423308',\n    '0000409493',\n    '0000416620',\n    '0000423263',\n    '0000415917',\n    '0000414643',\n    '0000414744',\n    '0000420240',\n    '0000409796',\n    '0000409900',\n    '0000409903',\n    '0000422114',\n    '0000424420',\n    '0000413905',\n    '0000422184',\n    '0000420042',\n    '0000430467',\n    '0000419135',\n    '0000429902',\n    '0000413226',\n    '0000417109',\n    '0000415596',\n    '0000416532',\n    '0000421634',\n    '0000418914',\n    '0000416473',\n    '0000410279',\n    '0000414382',\n    '0000410331',\n    '0000413690',\n    '0000413440',\n    '0000417407',\n    '0000420408',\n    '0000423922',\n    '0000424820',\n    '0000415072',\n    '0000413302',\n    '0000415166',\n    '0000420646',\n    '0000414135',\n    '0000415215',\n    '0000416790',\n    '0000425409',\n    '0000410820',\n    '0000421275',\n    '0000422046',\n    '0000416094',\n    '0000416109',\n    '0000414442',\n    '0000410957',\n    '0000417667',\n    '0000417588',\n    '0000417933',\n    '0000421554',\n    '0000415002',\n    '0000424590',\n    '0000414952',\n    '0000423539',\n    '0000426848',\n    '0000418848',\n    '0000418896',\n    '0000429121',\n    '0000421231',\n    '0000424911',\n    '0000414757',\n    '0000411391',\n    '0000418432',\n    '0000417821',\n    '0000411435',\n    '0000420339',\n    '0000418083',\n    '0000414163',\n    '0000418220',\n    '0000421282',\n    '0000427726',\n    '0000421426',\n    '0000417406',\n    '0000423471',\n    '0000417031',\n    '0000423487',\n    '0000416680',\n    '0000422228',\n    '0000422185',\n    '0000417624',\n    '0000411790',\n    '0000428917',\n    '0000417885',\n    '0000421885',\n    '0000417767',\n    '0000423309',\n    '0000428393',\n    '0000411962',\n    '0000112656',\n    '0000421904',\n    '0000421948',\n    '0000415951',\n    '0000417964',\n    '0000412047',\n    '0000414531',\n    '0000416364',\n    '0000415199',\n    '0000416402',\n    '0000418609',\n    '0000418168',\n    '0000415511',\n    '0000420320',\n    '0000412286',\n    '0000414302',\n    '0000412322',\n    '0000414185',\n    '0000415909',\n    '0000421836',\n    '0000421887',\n    '0000416723',\n    '0000416526',\n    '0000432121',\n    '0000412432',\n    '0000417927',\n    '0000412542',\n    '0000412589',\n    '0000412601',\n    '0000418017',\n    '0000416573',\n    '0000412642',\n    '0000412644',\n    '0000421269',\n    '0000415977',\n    '0000414378',\n    '0000432032',\n    '0000417955',\n    '0000416235',\n    '0000412781',\n    '0000414343',\n    '0000414127',\n    '0000414245',\n    '0000420328',\n    '0000418910',\n    '0000426830',\n    '0000421811',\n    '0000416217',\n    '0000417611',\n    '0000416321',\n    '0000414690',\n    '0000416360',\n    '0000412098',\n    '0000421903',\n    '0000420706',\n    '0000436144',\n    '0000435404',\n    '0000417121',\n    '0000416342',\n    '0000431590',\n    '0000424488',\n    '0000408777',\n    '0000430693',\n    '0000408838',\n    '0000414712',\n    '0000408911',\n    '0000426063',\n    '0000432592',\n    '0000419020',\n    '0000414950',\n    '0000428634',\n    '0000413278',\n    '0000422668',\n    '0000409108',\n    '0000409145',\n    '0000409161',\n    '0000420073',\n    '0000409165',\n    '0000421295',\n    '0000409177',\n    '0000413237',\n    '0000425145',\n    '0000409258',\n    '0000431255',\n    '0000422847',\n    '0000409297',\n    '0000409318',\n    '0000428244',\n    '0000418800',\n    '0000419248',\n    '0000414871',\n    '0000416543',\n    '0000414007',\n    '0000430175',\n    '0000433170',\n    '0000415940',\n    '0000423658',\n    '0000409626',\n    '0000420621',\n    '0000415480',\n    '0000418803',\n    '0000420974',\n    '0000420066',\n    '0000415496',\n    '0000427581',\n    '0000414078',\n    '0000414006',\n    '0000417182',\n    '0000409844',\n    '0000414117',\n    '0000432124',\n    '0000427055',\n    '0000409924',\n    '0000416372',\n    '0000415497',\n    '0000409949',\n    '0000418354',\n    '0000431313',\n    '0000416731',\n    '0000425546',\n    '0000423533',\n    '0000424734',\n    '0000416625',\n    '0000410064',\n    '0000413997',\n    '0000410082',\n    '0000410099',\n    '0000410172',\n    '0000431957',\n    '0000410197',\n    '0000410201',\n    '0000414028',\n    '0000421629',\n    '0000410232',\n    '0000410249',\n    '0000421160',\n    '0000425897',\n    '0000414106',\n    '0000410326',\n    '0000420069',\n    '0000417725',\n    '0000420216',\n    '0000415452',\n    '0000410379',\n    '0000410384',\n    '0000417160',\n    '0000426102',\n    '0000415941',\n    '0000416018',\n    '0000418802',\n    '0000432029',\n    '0000430577',\n    '0000410477',\n    '0000410488',\n    '0000419139',\n    '0000410495',\n    '0000410496',\n    '0000410501',\n    '0000410502',\n    '0000425665',\n    '0000437831',\n    '0000410510',\n    '0000421705',\n    '0000419344',\n    '0000410517',\n    '0000425125',\n    '0000433095',\n    '0000410518',\n    '0000415265',\n    '0000410522',\n    '0000425089',\n    '0000414393',\n    '0000430619',\n    '0000410537',\n    '0000410540',\n    '0000437819',\n    '0000410569',\n    '0000410575',\n    '0000419040',\n    '0000427119',\n    '0000410600',\n    '0000410604',\n    '0000424034',\n    '0000424416',\n    '0000422970',\n    '0000410713',\n    '0000420107',\n    '0000410739',\n    '0000410750',\n    '0000414887',\n    '0000410765',\n    '0000424359',\n    '0000413299',\n    '0000415950',\n    '0000410833',\n    '0000419158',\n    '0000410902',\n    '0000431507',\n    '0000420068',\n    '0000422093',\n    '0000425724',\n    '0000423631',\n    '0000426030',\n    '0000418391',\n    '0000411007',\n    '0000422810',\n    '0000414771',\n    '0000422709',\n    '0000411072',\n    '0000411086',\n    '0000415333',\n    '0000416384',\n    '0000422685',\n    '0000411185',\n    '0000411192',\n    '0000411196',\n    '0000411207',\n    '0000414412',\n    '0000411210',\n    '0000411225',\n    '0000411232',\n    '0000427544',\n    '0000414153',\n    '0000411293',\n    '0000411295',\n    '0000422246',\n    '0000411320',\n    '0000411333',\n    '0000411341',\n    '0000423966',\n    '0000411425',\n    '0000411442',\n    '0000425133',\n    '0000416017',\n    '0000411522',\n    '0000413996',\n    '0000415248',\n    '0000425280',\n    '0000411638',\n    '0000423438',\n    '0000422940',\n    '0000418795',\n    '0000431413',\n    '0000423220',\n    '0000411749',\n    '0000426962',\n    '0000424445',\n    '0000411796',\n    '0000419445',\n    '0000424628',\n    '0000411843',\n    '0000426754',\n    '0000411877',\n    '0000430635',\n    '0000432648',\n    '0000418860',\n    '0000413225',\n    '0000411985',\n    '0000417136',\n    '0000411997',\n    '0000412008',\n    '0000412038',\n    '0000412039',\n    '0000423469',\n    '0000424530',\n    '0000423744',\n    '0000417602',\n    '0000412142',\n    '0000422840',\n    '0000415266',\n    '0000413994',\n    '0000414573',\n    '0000412371',\n    '0000412390',\n    '0000412407',\n    '0000412410',\n    '0000412415',\n    '0000416603',\n    '0000412484',\n    '0000412497',\n    '0000412501',\n    '0000412519',\n    '0000418861',\n    '0000427269',\n    '0000429337',\n    '0000424383',\n    '0000412586',\n    '0000419097',\n    '0000414005',\n    '0000412627',\n    '0000420326',\n    '0000415499',\n    '0000412711',\n    '0000416022',\n    '0000412773',\n    '0000417731',\n    '0000430209',\n    '0000420807',\n    '0000412809',\n    '0000412827',\n    '0000412835',\n    '0000420227',\n    '0000431078',\n    '0000424926',\n    '0000412916',\n    '0000412948',\n    '0000417958',\n    '0000433118',\n    '0000413569',\n    '0000412994',\n    '0000413026',\n    '0000414096',\n    '0000417318',\n    '0000429425',\n    '0000416484',\n    '0000427620',\n    '0000408762',\n    '0000408763',\n    '0000420838',\n    '0000432679',\n    '0000415309',\n    '0000408812',\n    '0000408819',\n    '0000410214',\n    '0000408845',\n    '0000423156',\n    '0000414125',\n    '0000408884',\n    '0000429247',\n    '0000414527',\n    '0000437717',\n    '0000408937',\n    '0000420205',\n    '0000408962',\n    '0000408973',\n    '0000409003',\n    '0000429504',\n    '0000428988',\n    '0000409103',\n    '0000409126',\n    '0000420821',\n    '0000416279',\n    '0000409223',\n    '0000420799',\n    '0000412856',\n    '0000409273',\n    '0000410507',\n    '0000428545',\n    '0000409351',\n    '0000409352',\n    '0000420145',\n    '0000411601',\n    '0000438947',\n    '0000437867',\n    '0000409485',\n    '0000409535',\n    '0000413949',\n    '0000409555',\n    '0000409556',\n    '0000409557',\n    '0000429032',\n    '0000430227',\n    '0000413736',\n    '0000422622',\n    '0000409681',\n    '0000409800',\n    '0000409699',\n    '0000409713',\n    '0000409722',\n    '0000428296',\n    '0000413068',\n    '0000409727',\n    '0000409731',\n    '0000425640',\n    '0000420984',\n    '0000429616',\n    '0000409823',\n    '0000416759',\n    '0000413874',\n    '0000409856',\n    '0000409858',\n    '0000409860',\n    '0000433479',\n    '0000436140',\n    '0000428872',\n    '0000409879',\n    '0000416760',\n    '0000416844',\n    '0000409942',\n    '0000416835',\n    '0000425551',\n    '0000430731',\n    '0000417747',\n    '0000409963',\n    '0000415470',\n    '0000432220',\n    '0000410017',\n    '0000410025',\n    '0000410026',\n    '0000421837',\n    '0000410044',\n    '0000418937',\n    '0000421398',\n    '0000415893',\n    '0000413398',\n    '0000413906',\n    '0000416877',\n    '0000430994',\n    '0000410237',\n    '0000410240',\n    '0000434853',\n    '0000410246',\n    '0000418865',\n    '0000410260',\n    '0000420733',\n    '0000428478',\n    '0000414601',\n    '0000434797',\n    '0000435105',\n    '0000414395',\n    '0000422900',\n    '0000410322',\n    '0000410325',\n    '0000432242',\n    '0000410347',\n    '0000421307',\n    '0000420303',\n    '0000427609',\n    '0000410370',\n    '0000424545',\n    '0000412727',\n    '0000410438',\n    '0000415611',\n    '0000410449',\n    '0000410461',\n    '0000421953',\n    '0000415045',\n    '0000410479',\n    '0000410481',\n    '0000410499',\n    '0000425215',\n    '0000428263',\n    '0000420898',\n    '0000410515',\n    '0000413305',\n    '0000418620',\n    '0000426043',\n    '0000430570',\n    '0000410558',\n    '0000413734',\n    '0000410599',\n    '0000419055',\n    '0000415629',\n    '0000416437',\n    '0000429136',\n    '0000410656',\n    '0000414570',\n    '0000420683',\n    '0000420276',\n    '0000427136',\n    '0000435102',\n    '0000415257',\n    '0000410697',\n    '0000429436',\n    '0000410724',\n    '0000410740',\n    '0000427310',\n    '0000428688',\n    '0000418941',\n    '0000423661',\n    '0000436764',\n    '0000410829',\n    '0000414613',\n    '0000414375',\n    '0000430048',\n    '0000410871',\n    '0000426471',\n    '0000410899',\n    '0000429518',\n    '0000434744',\n    '0000410911',\n    '0000418202',\n    '0000410942',\n    '0000410951',\n    '0000428180',\n    '0000416794',\n    '0000418911',\n    '0000434407',\n    '0000421356',\n    '0000429670',\n    '0000437837',\n    '0000420897',\n    '0000411049',\n    '0000430909',\n    '0000433964',\n    '0000411096',\n    '0000424867',\n    '0000438319',\n    '0000411128',\n    '0000411137',\n    '0000429091',\n    '0000411154',\n    '0000425926',\n    '0000418894',\n    '0000411244',\n    '0000415061',\n    '0000418762',\n    '0000411338',\n    '0000417400',\n    '0000426377',\n    '0000416824',\n    '0000411411',\n    '0000417804',\n    '0000430305',\n    '0000431894',\n    '0000414211',\n    '0000411471',\n    '0000411475',\n    '0000411493',\n    '0000438619',\n    '0000411524',\n    '0000427212',\n    '0000438247',\n    '0000413432',\n    '0000411589',\n    '0000411594',\n    '0000409287',\n    '0000411606',\n    '0000417931',\n    '0000417238',\n    '0000411639',\n    '0000417524',\n    '0000439682',\n    '0000415844',\n    '0000432147',\n    '0000427935',\n    '0000411755',\n    '0000421812',\n    '0000419026',\n    '0000431180',\n    '0000411807',\n    '0000422279',\n    '0000422290',\n    '0000422286',\n    '0000432700',\n    '0000414888',\n    '0000413873',\n    '0000420508',\n    '0000411909',\n    '0000411920',\n    '0000433966',\n    '0000423143',\n    '0000411950',\n    '0000421414',\n    '0000112659',\n    '0000421290',\n    '0000412056',\n    '0000412127',\n    '0000412132',\n    '0000417368',\n    '0000412156',\n    '0000431561',\n    '0000429339',\n    '0000435784',\n    '0000432845',\n    '0000414325',\n    '0000434315',\n    '0000415354',\n    '0000433062',\n    '0000412285',\n    '0000412289',\n    '0000412301',\n    '0000417858',\n    '0000436775',\n    '0000412337',\n    '0000412350',\n    '0000418049',\n    '0000412380',\n    '0000417523',\n    '0000412403',\n    '0000431979',\n    '0000434758',\n    '0000415918',\n    '0000427460',\n    '0000412444',\n    '0000414797',\n    '0000412495',\n    '0000412515',\n    '0000412520',\n    '0000435499',\n    '0000427986',\n    '0000431858',\n    '0000426584',\n    '0000426839',\n    '0000412645',\n    '0000412646',\n    '0000427169',\n    '0000420758',\n    '0000418953',\n    '0000416833',\n    '0000430938',\n    '0000409463',\n    '0000429346',\n    '0000412674',\n    '0000412677',\n    '0000418057',\n    '0000423530',\n    '0000412731',\n    '0000412749',\n    '0000412779',\n    '0000435795',\n    '0000434962',\n    '0000412899',\n    '0000425675',\n    '0000418301',\n    '0000412918',\n    '0000412930',\n    '0000417809',\n    '0000426739',\n    '0000432166',\n    '0000418980',\n    '0000413022',\n    '0000413051',\n    '0000408829',\n    '0000425020',\n    '0000437752',\n    '0000437898',\n    '0000432078',\n    '0000433478',\n    '0000437173',\n    '0000417018',\n    '0000409609',\n    '0000416418',\n    '0000430871',\n    '0000429207',\n    '0000410002',\n    '0000416158',\n    '0000410039',\n    '0000417654',\n    '0000415561',\n    '0000422857',\n    '0000426591',\n    '0000410514',\n    '0000410570',\n    '0000422219',\n    '0000418367',\n    '0000425160',\n    '0000416294',\n    '0000411419',\n    '0000431320',\n    '0000426598',\n    '0000411923',\n    '0000416892',\n    '0000423759',\n    '0000412457',\n    '0000425403',\n    '0000433108',\n    '0000439076',\n    '0000408743',\n    '0000418715',\n    '0000413946',\n    '0000421587',\n    '0000430990',\n    '0000408751',\n    '0000422098',\n    '0000418118',\n    '0000432003',\n    '0000421701',\n    '0000427003',\n    '0000424000',\n    '0000433508',\n    '0000438804',\n    '0000417429',\n    '0000421085',\n    '0000421977',\n    '0000428000',\n    '0000426667',\n    '0000428043',\n    '0000422314',\n    '0000430585',\n    '0000427218',\n    '0000430161',\n    '0000439082',\n    '0000427416',\n    '0000417187',\n    '0000421792',\n    '0000415861',\n    '0000425444',\n    '0000408924',\n    '0000416843',\n    '0000429354',\n    '0000414557',\n    '0000415932',\n    '0000431667',\n    '0000416840',\n    '0000433930',\n    '0000431445',\n    '0000424715',\n    '0000408984',\n    '0000408987',\n    '0000431203',\n    '0000432485',\n    '0000426448',\n    '0000422821',\n    '0000426001',\n    '0000417476',\n    '0000421618',\n    '0000439460',\n    '0000424263',\n    '0000427121',\n    '0000427032',\n    '0000431136',\n    '0000409114',\n    '0000415976',\n    '0000417855',\n    '0000430755',\n    '0000409159',\n    '0000409162',\n    '0000432092',\n    '0000416596',\n    '0000428151',\n    '0000409195',\n    '0000413606',\n    '0000409207',\n    '0000414499',\n    '0000409211',\n    '0000427412',\n    '0000429572',\n    '0000421393',\n    '0000424176',\n    '0000423636',\n    '0000432116',\n    '0000410730',\n    '0000430670',\n    '0000409305',\n    '0000409735',\n    '0000421000',\n    '0000414562',\n    '0000420400',\n    '0000409311',\n    '0000424110',\n    '0000420867',\n    '0000409331',\n    '0000429835',\n    '0000424274',\n    '0000420737',\n    '0000409365',\n    '0000428093',\n    '0000425251',\n    '0000419113',\n    '0000420522',\n    '0000432871',\n    '0000409429',\n    '0000424357',\n    '0000417743',\n    '0000424093',\n    '0000416801',\n    '0000431398',\n    '0000417796',\n    '0000422879',\n    '0000418813',\n    '0000428914',\n    '0000409486',\n    '0000428184',\n    '0000417816',\n    '0000424829',\n    '0000409527',\n    '0000416851',\n    '0000432264',\n    '0000426305',\n    '0000423960',\n    '0000421673',\n    '0000418232',\n    '0000430565',\n    '0000421746',\n    '0000409582',\n    '0000409595',\n    '0000431625',\n    '0000418968',\n    '0000422887',\n    '0000413504',\n    '0000416959',\n    '0000416788',\n    '0000424001',\n    '0000418072',\n    '0000415102',\n    '0000418900',\n    '0000420526',\n    '0000409718',\n    '0000409740',\n    '0000409777',\n    '0000421738',\n    '0000418716',\n    '0000409779',\n    '0000420785',\n    '0000417876',\n    '0000418983',\n    '0000433199',\n    '0000409837',\n    '0000409840',\n    '0000428783',\n    '0000431317',\n    '0000409871',\n    '0000409881',\n    '0000432502',\n    '0000432908',\n    '0000418203',\n    '0000418655',\n    '0000432478',\n    '0000421834',\n    '0000424522',\n    '0000428185',\n    '0000418718',\n    '0000414944',\n    '0000426822',\n    '0000410018',\n    '0000432788',\n    '0000410028',\n    '0000432371',\n    '0000423687',\n    '0000410074',\n    '0000410090',\n    '0000432853',\n    '0000432343',\n    '0000418319',\n    '0000410102',\n    '0000427197',\n    '0000430410',\n    '0000423830',\n    '0000413683',\n    '0000427159',\n    '0000432649',\n    '0000415043',\n    '0000425292',\n    '0000423441',\n    '0000413599',\n    '0000410210',\n    '0000428054',\n    '0000417106',\n    '0000417705',\n    '0000433776',\n    '0000418693',\n    '0000416992',\n    '0000413913',\n    '0000431397',\n    '0000422955',\n    '0000424807',\n    '0000425163',\n    '0000417507',\n    '0000426557',\n    '0000414682',\n    '0000425557',\n    '0000422193',\n    '0000410270',\n    '0000413862',\n    '0000429535',\n    '0000422864',\n    '0000430032',\n    '0000414987',\n    '0000427397',\n    '0000410277',\n    '0000418390',\n    '0000410280',\n    '0000423837',\n    '0000410283',\n    '0000431888',\n    '0000427340',\n    '0000425088',\n    '0000414666',\n    '0000416773',\n    '0000420738',\n    '0000416852',\n    '0000417308',\n    '0000420347',\n    '0000432347',\n    '0000415822',\n    '0000410358',\n    '0000426891',\n    '0000410360',\n    '0000429369',\n    '0000428633',\n    '0000410368',\n    '0000422643',\n    '0000410388',\n    '0000426820',\n    '0000421934',\n    '0000426385',\n    '0000419076',\n    '0000425296',\n    '0000423312',\n    '0000424434',\n    '0000426568',\n    '0000431322',\n    '0000424164',\n    '0000417798',\n    '0000425711',\n    '0000424778',\n    '0000418389',\n    '0000421920',\n    '0000421335',\n    '0000430527',\n    '0000424630',\n    '0000418964',\n    '0000430581',\n    '0000424403',\n    '0000418138',\n    '0000426460',\n    '0000426569',\n    '0000421670',\n    '0000424758',\n    '0000416738',\n    '0000430282',\n    '0000418234',\n    '0000426299',\n    '0000415997',\n    '0000426355',\n    '0000424465',\n    '0000420301',\n    '0000434862',\n    '0000410612',\n    '0000413388',\n    '0000418191',\n    '0000421718',\n    '0000433509',\n    '0000422997',\n    '0000425367',\n    '0000421876',\n    '0000414916',\n    '0000410652',\n    '0000430512',\n    '0000410659',\n    '0000410663',\n    '0000416872',\n    '0000425222',\n    '0000410675',\n    '0000431563',\n    '0000439393',\n    '0000413560',\n    '0000413261',\n    '0000429048',\n    '0000410690',\n    '0000430531',\n    '0000418943',\n    '0000413889',\n    '0000418036',\n    '0000414938',\n    '0000410706',\n    '0000410710',\n    '0000413579',\n    '0000420401',\n    '0000423127',\n    '0000428602',\n    '0000413864',\n    '0000410763',\n    '0000417198',\n    '0000420449',\n    '0000410776',\n    '0000410795',\n    '0000410803',\n    '0000434528',\n    '0000410818',\n    '0000410819',\n    '0000410823',\n    '0000418233',\n    '0000423888',\n    '0000424507',\n    '0000429821',\n    '0000410858',\n    '0000410865',\n    '0000422672',\n    '0000420885',\n    '0000429238',\n    '0000414547',\n    '0000435847',\n    '0000424935',\n    '0000410901',\n    '0000423063',\n    '0000425256',\n    '0000410927',\n    '0000416887',\n    '0000410928',\n    '0000410929',\n    '0000410930',\n    '0000410938',\n    '0000413863',\n    '0000429104',\n    '0000414664',\n    '0000424592',\n    '0000413537',\n    '0000431346',\n    '0000424207',\n    '0000413619',\n    '0000427372',\n    '0000419150',\n    '0000425342',\n    '0000418123',\n    '0000420348',\n    '0000432665',\n    '0000420549',\n    '0000410990',\n    '0000430483',\n    '0000431673',\n    '0000411006',\n    '0000430941',\n    '0000411014',\n    '0000411019',\n    '0000411021',\n    '0000421688',\n    '0000411042',\n    '0000426614',\n    '0000420782',\n    '0000425257',\n    '0000418214',\n    '0000437097',\n    '0000411077',\n    '0000411079',\n    '0000426780',\n    '0000431580',\n    '0000411106',\n    '0000422633',\n    '0000430122',\n    '0000411115',\n    '0000422313',\n    '0000431733',\n    '0000424028',\n    '0000419029',\n    '0000429911',\n    '0000432149',\n    '0000411159',\n    '0000421163',\n    '0000435752',\n    '0000416500',\n    '0000430682',\n    '0000411175',\n    '0000411180',\n    '0000415527',\n    '0000422844',\n    '0000411199',\n    '0000416110',\n    '0000418372',\n    '0000420554',\n    '0000422786',\n    '0000411234',\n    '0000424682',\n    '0000418378',\n    '0000421379',\n    '0000423126',\n    '0000432168',\n    '0000424947',\n    '0000429320',\n    '0000421171',\n    '0000414064',\n    '0000416963',\n    '0000414138',\n    '0000411271',\n    '0000417982',\n    '0000420309',\n    '0000429307',\n    '0000411286',\n    '0000421063',\n    '0000417003',\n    '0000430180',\n    '0000420657',\n    '0000411343',\n    '0000411377',\n    '0000415895',\n    '0000427342',\n    '0000427383',\n    '0000418602',\n    '0000421376',\n    '0000414084',\n    '0000438246',\n    '0000424764',\n    '0000432231',\n    '0000431400',\n    '0000424897',\n    '0000417749',\n    '0000411448',\n    '0000411451',\n    '0000431031',\n    '0000411461',\n    '0000413674',\n    '0000424761',\n    '0000425009',\n    '0000411505',\n    '0000422134',\n    '0000411519',\n    '0000427859',\n    '0000418603',\n    '0000411543',\n    '0000425910',\n    '0000420077',\n    '0000411595',\n    '0000421285',\n    '0000418236',\n    '0000408742',\n    '0000411622',\n    '0000418719',\n    '0000423949',\n    '0000418748',\n    '0000417947',\n    '0000433675',\n    '0000417857',\n    '0000430732',\n    '0000418924',\n    '0000417210',\n    '0000416822',\n    '0000428559',\n    '0000414776',\n    '0000422101',\n    '0000430788',\n    '0000417679',\n    '0000434504',\n    '0000411781',\n    '0000420926',\n    '0000413983',\n    '0000422745',\n    '0000411836',\n    '0000430337',\n    '0000419028',\n    '0000411848',\n    '0000411852',\n    '0000414040',\n    '0000433477',\n    '0000417039',\n    '0000411874',\n    '0000423324',\n    '0000428339',\n    '0000428289',\n    '0000411880',\n    '0000423228',\n    '0000418601',\n    '0000424506',\n    '0000411894',\n    '0000431707',\n    '0000411898',\n    '0000418758',\n    '0000430258',\n    '0000431431',\n    '0000418975',\n    '0000432122',\n    '0000425905',\n    '0000416885',\n    '0000422630',\n    '0000430440',\n    '0000431816',\n    '0000417307',\n    '0000411968',\n    '0000419192',\n    '0000424788',\n    '0000414478',\n    '0000416708',\n    '0000416964',\n    '0000411994',\n    '0000420090',\n    '0000424370',\n    '0000431781',\n    '0000412007',\n    '0000425180',\n    '0000412013',\n    '0000418838',\n    '0000432397',\n    '0000412065',\n    '0000422058',\n    '0000423591',\n    '0000426354',\n    '0000412090',\n    '0000424779',\n    '0000415125',\n    '0000427299',\n    '0000412115',\n    '0000426259',\n    '0000418107',\n    '0000430045',\n    '0000418812',\n    '0000418928',\n    '0000432064',\n    '0000412137',\n    '0000427860',\n    '0000414374',\n    '0000429359',\n    '0000418847',\n    '0000417048',\n    '0000420136',\n    '0000429241',\n    '0000421602',\n    '0000418153',\n    '0000418429',\n    '0000415430',\n    '0000431913',\n    '0000417657',\n    '0000412248',\n    '0000412253',\n    '0000416861',\n    '0000412260',\n    '0000422934',\n    '0000412263',\n    '0000416312',\n    '0000418106',\n    '0000415123',\n    '0000425896',\n    '0000418886',\n    '0000427582',\n    '0000418596',\n    '0000420929',\n    '0000412333',\n    '0000421877',\n    '0000412343',\n    '0000412348',\n    '0000414488',\n    '0000413536',\n    '0000412379',\n    '0000412395',\n    '0000418037',\n    '0000412443',\n    '0000412482',\n    '0000436897',\n    '0000412488',\n    '0000424533',\n    '0000424913',\n    '0000429189',\n    '0000417819',\n    '0000418013',\n    '0000426248',\n    '0000412563',\n    '0000429532',\n    '0000427268',\n    '0000417909',\n    '0000428343',\n    '0000412599',\n    '0000430918',\n    '0000439040',\n    '0000416166',\n    '0000414948',\n    '0000416873',\n    '0000417414',\n    '0000424065',\n    '0000422861',\n    '0000412639',\n    '0000423440',\n    '0000416948',\n    '0000420121',\n    '0000427002',\n    '0000413561',\n    '0000424967',\n    '0000412652',\n    '0000432066',\n    '0000426813',\n    '0000425227',\n    '0000418357',\n    '0000424894',\n    '0000423577',\n    '0000426801',\n    '0000432989',\n    '0000430913',\n    '0000414891',\n    '0000412720',\n    '0000412723',\n    '0000416883',\n    '0000414949',\n    '0000420302',\n    '0000421505',\n    '0000413601',\n    '0000421212',\n    '0000412803',\n    '0000414620',\n    '0000412821',\n    '0000423379',\n    '0000424539',\n    '0000419005',\n    '0000418285',\n    '0000422662',\n    '0000417142',\n    '0000431668',\n    '0000430837',\n    '0000412869',\n    '0000418335',\n    '0000418849',\n    '0000418362',\n    '0000423662',\n    '0000418844',\n    '0000426969',\n    '0000412907',\n    '0000431622',\n    '0000422194',\n    '0000436038',\n    '0000413804',\n    '0000426869',\n    '0000412934',\n    '0000418262',\n    '0000424305',\n    '0000412972',\n    '0000414363',\n    '0000418913',\n    '0000424144',\n    '0000420469',\n    '0000432614',\n    '0000413037',\n    '0000413046',\n    '0000413052',\n    '0000432154',\n    '0000424243',\n    '0000413063',\n    '0000426510',\n    '0000422172',\n    '0000424125',\n    '0000423801',\n    '0000417298',\n    '0000425028',\n    '0000424150',\n    '0000424151',\n    '0000421023',\n    '0000410315',\n    '0000418440',\n    '0000436781',\n    '0000424724',\n    '0000410425',\n    '0000424741',\n    '0000425029',\n    '0000415178',\n    '0000423688',\n    '0000424249',\n    '0000418683',\n    '0000424937',\n    '0000416276',\n    '0000418982',\n    '0000410879',\n    '0000421921',\n    '0000420333',\n    '0000417655',\n    '0000411028',\n    '0000424002',\n    '0000418840',\n    '0000432524',\n    '0000424787',\n    '0000411246',\n    '0000424049',\n    '0000421806',\n    '0000421791',\n    '0000418272',\n    '0000417530',\n    '0000426461',\n    '0000418926',\n    '0000417402',\n    '0000415098',\n    '0000425174',\n    '0000430735',\n    '0000423556',\n    '0000422070',\n    '0000414090',\n    '0000417656',\n    '0000412094',\n    '0000300027',\n    '0000422990',\n    '0000412331',\n    '0000412338',\n    '0000412435',\n    '0000424802',\n    '0000424161',\n    '0000423691',\n    '0000423193',\n    '0000418111',\n    '0000418963',\n    '0000413348',\n    '0000424662',\n    '0000421164',\n    '0000425027',\n    '0000412946',\n    '0000414411',\n    '0000434556',\n    '0000425289',\n    '0000418906',\n    '0000408781',\n    '0000421687',\n    '0000427727',\n    '0000408854',\n    '0000425415',\n    '0000418012',\n    '0000424258',\n    '0000427908',\n    '0000427204',\n    '0000413935',\n    '0000436437',\n    '0000414236',\n    '0000434519',\n    '0000409257',\n    '0000428416',\n    '0000409276',\n    '0000415122',\n    '0000415689',\n    '0000409322',\n    '0000409324',\n    '0000421782',\n    '0000424940',\n    '0000409360',\n    '0000409370',\n    '0000415657',\n    '0000409419',\n    '0000409427',\n    '0000415966',\n    '0000417721',\n    '0000417704',\n    '0000415094',\n    '0000416416',\n    '0000431048',\n    '0000409532',\n    '0000434482',\n    '0000415793',\n    '0000423954',\n    '0000409710',\n    '0000414105',\n    '0000420329',\n    '0000425380',\n    '0000416085',\n    '0000409770',\n    '0000418311',\n    '0000409792',\n    '0000415725',\n    '0000415507',\n    '0000427098',\n    '0000422764',\n    '0000413938',\n    '0000429623',\n    '0000427753',\n    '0000427790',\n    '0000420793',\n    '0000410100',\n    '0000410627',\n    '0000421321',\n    '0000418834',\n    '0000425396',\n    '0000415502',\n    '0000416805',\n    '0000426595',\n    '0000422809',\n    '0000410344',\n    '0000418698',\n    '0000424487',\n    '0000414842',\n    '0000410487',\n    '0000415555',\n    '0000430393',\n    '0000428754',\n    '0000423154',\n    '0000420317',\n    '0000428392',\n    '0000425044',\n    '0000410547',\n    '0000413945',\n    '0000425155',\n    '0000410603',\n    '0000415752',\n    '0000416142',\n    '0000431613',\n    '0000430206',\n    '0000410791',\n    '0000410797',\n    '0000435311',\n    '0000410850',\n    '0000415792',\n    '0000424327',\n    '0000410886',\n    '0000416367',\n    '0000415396',\n    '0000410924',\n    '0000430510',\n    '0000415800',\n    '0000416599',\n    '0000411000',\n    '0000418041',\n    '0000428620',\n    '0000414843',\n    '0000411066',\n    '0000411090',\n    '0000434617',\n    '0000426437',\n    '0000431945',\n    '0000415026',\n    '0000422811',\n    '0000416721',\n    '0000411309',\n    '0000427948',\n    '0000415255',\n    '0000411334',\n    '0000433130',\n    '0000417353',\n    '0000415295',\n    '0000430389',\n    '0000417164',\n    '0000417945',\n    '0000414486',\n    '0000435182',\n    '0000416685',\n    '0000411659',\n    '0000429680',\n    '0000411849',\n    '0000413957',\n    '0000411960',\n    '0000422895',\n    '0000113494',\n    '0000411976',\n    '0000415402',\n    '0000420318',\n    '0000416331',\n    '0000428186',\n    '0000415345',\n    '0000412071',\n    '0000429629',\n    '0000434748',\n    '0000412135',\n    '0000430591',\n    '0000426850',\n    '0000412207',\n    '0000424334',\n    '0000416461',\n    '0000412236',\n    '0000429045',\n    '0000428651',\n    '0000419064',\n    '0000426934',\n    '0000422085',\n    '0000426594',\n    '0000428001',\n    '0000415069',\n    '0000412587',\n    '0000413936',\n    '0000417036',\n    '0000412657',\n    '0000415995',\n    '0000434548',\n    '0000412712',\n    '0000415213',\n    '0000412786',\n    '0000417107',\n    '0000413929',\n    '0000427348',\n    '0000418216',\n    '0000416563',\n    '0000426768',\n    '0000425591',\n    '0000429653',\n    '0000421322',\n    '0000431875',\n    '0000415395',\n    '0000417338',\n    '0000427289',\n    '0000430034',\n    '0000415028',\n    '0000416070',\n    '0000421721',\n    '0000409002',\n    '0000409203',\n    '0000409235',\n    '0000424074',\n    '0000427756',\n    '0000420092',\n    '0000429587',\n    '0000429926',\n    '0000438067',\n    '0000409737',\n    '0000431115',\n    '0000432940',\n    '0000427260',\n    '0000416593',\n    '0000410497',\n    '0000425385',\n    '0000422325',\n    '0000437896',\n    '0000424166',\n    '0000432810',\n    '0000410956',\n    '0000430634',\n    '0000425366',\n    '0000411146',\n    '0000423840',\n    '0000411361',\n    '0000432570',\n    '0000411538',\n    '0000419193',\n    '0000423340',\n    '0000417405',\n    '0000411821',\n    '0000411872',\n    '0000410375',\n    '0000412613',\n    '0000421973',\n    '0000415385',\n    '0000430638',\n    '0000413031',\n    '0000426673',\n    '0000439230',\n    '0000422260',\n    '0000424840',\n    '0000432921',\n    '0000422637',\n    '0000409059',\n    '0000439122',\n    '0000428678',\n    '0000428726',\n    '0000430538',\n    '0000433134',\n    '0000433247',\n    '0000429867',\n    '0000430610',\n    '0000419167',\n    '0000432490',\n    '0000430671',\n    '0000428987',\n    '0000431671',\n    '0000433169',\n    '0000435494',\n    '0000433196',\n    '0000435428',\n    '0000435175',\n    '0000435631',\n    '0000438032',\n    '0000424795',\n    '0000415598',\n    '0000416352',\n    '0000415945',\n    '0000418442',\n    '0000409386',\n    '0000420841',\n    '0000415434',\n    '0000426613',\n    '0000424234',\n    '0000427989',\n    '0000415193',\n    '0000415656',\n    '0000428635',\n    '0000433785',\n    '0000425948',\n    '0000429547',\n    '0000416632',\n    '0000416707',\n    '0000415258',\n    '0000434408',\n    '0000430243',\n    '0000432061',\n    '0000420685',\n    '0000415506',\n    '0000430824',\n    '0000428702',\n    '0000431616',\n    '0000424548',\n    '0000411114',\n    '0000423702',\n    '0000423559',\n    '0000416051',\n    '0000411800',\n    '0000411864',\n    '0000430468',\n    '0000118308',\n    '0000432619',\n    '0000417457',\n    '0000431998',\n    '0000436013',\n    '0000416633',\n    '0000424470',\n    '0000421580',\n    '0000414983',\n    '0000420311',\n    '0000431075',\n    '0000423908',\n    '0000416705',\n    '0000414077',\n    '0000420198',\n    '0000416694',\n    '0000425094',\n    '0000416440',\n    '0000429276',\n    '0000414798',\n    '0000413510',\n    '0000416517',\n    '0000414463',\n    '0000416301',\n    '0000413107',\n    '0000423458',\n    '0000414580',\n    '0000413977',\n    '0000417004',\n    '0000414675',\n    '0000414461',\n    '0000413126',\n    '0000413127',\n    '0000416139',\n    '0000413130',\n    '0000415879',\n    '0000413136',\n    '0000421584',\n    '0000419083',\n    '0000430479',\n    '0000416686',\n    '0000425224',\n    '0000421859',\n    '0000414474',\n    '0000413154',\n    '0000416675',\n    '0000430463',\n    '0000421737',\n    '0000418885',\n    '0000424078',\n    '0000417348',\n    '0000413505',\n    '0000413163',\n    '0000420412',\n    '0000424920',\n    '0000424976',\n    '0000426699',\n    '0000424871',\n    '0000424696',\n    '0000425347',\n    '0000428033',\n    '0000413174',\n    '0000413175',\n    '0000413291',\n    '0000418271',\n    '0000431618',\n    '0000413570',\n    '0000416254',\n    '0000415648',\n    '0000427936',\n    '0000414379',\n    '0000422126',\n    '0000433241',\n    '0000413456',\n    '0000414132',\n    '0000426142',\n    '0000413209',\n    '0000419154',\n    '0000413211',\n    '0000418361',\n    '0000421691',\n    '0000415535',\n    '0000428385',\n    '0000415139',\n    '0000423021',\n    '0000417215',\n    '0000414579',\n    '0000429421',\n    '0000427540',\n    '0000420418',\n    '0000417756',\n    '0000408868',\n    '0000420934',\n    '0000420659',\n    '0000426196',\n    '0000408901',\n    '0000439781',\n    '0000413678',\n    '0000423150',\n    '0000430995',\n    '0000423128',\n    '0000409124',\n    '0000413681',\n    '0000432211',\n    '0000414758',\n    '0000421263',\n    '0000422064',\n    '0000411688',\n    '0000414459',\n    '0000429538',\n    '0000437238',\n    '0000427400',\n    '0000423090',\n    '0000411979',\n    '0000409353',\n    '0000421318',\n    '0000428391',\n    '0000409395',\n    '0000409397',\n    '0000409423',\n    '0000420325',\n    '0000418323',\n    '0000409450',\n    '0000430754',\n    '0000415141',\n    '0000417628',\n    '0000425916',\n    '0000409455',\n    '0000432031',\n    '0000414511',\n    '0000414596',\n    '0000409500',\n    '0000423660',\n    '0000428170',\n    '0000421041',\n    '0000409563',\n    '0000415863',\n    '0000417150',\n    '0000416197',\n    '0000409586',\n    '0000425921',\n    '0000415880',\n    '0000409649',\n    '0000417364',\n    '0000424480',\n    '0000409728',\n    '0000434440',\n    '0000430388',\n    '0000425282',\n    '0000426937',\n    '0000417673',\n    '0000425005',\n    '0000420476',\n    '0000421241',\n    '0000422797',\n    '0000409834',\n    '0000429166',\n    '0000409926',\n    '0000429748',\n    '0000427215',\n    '0000409981',\n    '0000421896',\n    '0000428502',\n    '0000420928',\n    '0000418258',\n    '0000426882',\n    '0000410051',\n    '0000422785',\n    '0000421633',\n    '0000432673',\n    '0000427328',\n    '0000422784',\n    '0000413256',\n    '0000416433',\n    '0000410091',\n    '0000431386',\n    '0000432350',\n    '0000415680',\n    '0000428003',\n    '0000418772',\n    '0000410194',\n    '0000415679',\n    '0000416661',\n    '0000410303',\n    '0000423602',\n    '0000420295',\n    '0000423574',\n    '0000430455',\n    '0000430118',\n    '0000423248',\n    '0000423854',\n    '0000420759',\n    '0000410471',\n    '0000426105',\n    '0000431753',\n    '0000410512',\n    '0000414202',\n    '0000420058',\n    '0000410534',\n    '0000431535',\n    '0000420059',\n    '0000429204',\n    '0000423886',\n    '0000422307',\n    '0000424177',\n    '0000410641',\n    '0000410642',\n    '0000410645',\n    '0000410650',\n    '0000421183',\n    '0000418172',\n    '0000416993',\n    '0000410716',\n    '0000414317',\n    '0000410760',\n    '0000432595',\n    '0000427347',\n    '0000423957',\n    '0000424879',\n    '0000425231',\n    '0000426683',\n    '0000415508',\n    '0000426015',\n    '0000427669',\n    '0000428485',\n    '0000414329',\n    '0000415505',\n    '0000410952',\n    '0000429049',\n    '0000424948',\n    '0000420810',\n    '0000415803',\n    '0000415361',\n    '0000415865',\n    '0000415624',\n    '0000411044',\n    '0000435178',\n    '0000424859',\n    '0000420857',\n    '0000417844',\n    '0000420427',\n    '0000411097',\n    '0000411098',\n    '0000423675',\n    '0000426307',\n    '0000415514',\n    '0000411183',\n    '0000414053',\n    '0000421506',\n    '0000411290',\n    '0000436316',\n    '0000416920',\n    '0000411327',\n    '0000431565',\n    '0000423197',\n    '0000420292',\n    '0000433412',\n    '0000432030',\n    '0000433271',\n    '0000411191',\n    '0000434861',\n    '0000411492',\n    '0000411574',\n    '0000438471',\n    '0000426592',\n    '0000413300',\n    '0000420748',\n    '0000423029',\n    '0000417161',\n    '0000415130',\n    '0000426128',\n    '0000411746',\n    '0000411791',\n    '0000430952',\n    '0000414637',\n    '0000411824',\n    '0000411826',\n    '0000430953',\n    '0000411893',\n    '0000411899',\n    '0000415468',\n    '0000415145',\n    '0000411946',\n    '0000415394',\n    '0000112632',\n    '0000416848',\n    '0000412021',\n    '0000417247',\n    '0000420941',\n    '0000428134',\n    '0000432826',\n    '0000412134',\n    '0000432873',\n    '0000413557',\n    '0000427331',\n    '0000438120',\n    '0000418628',\n    '0000412257',\n    '0000421639',\n    '0000427114',\n    '0000415609',\n    '0000429279',\n    '0000415147',\n    '0000429446',\n    '0000412316',\n    '0000419049',\n    '0000422805',\n    '0000415138',\n    '0000417627',\n    '0000415623',\n    '0000416672',\n    '0000412405',\n    '0000416452',\n    '0000417346',\n    '0000423192',\n    '0000421507',\n    '0000421319',\n    '0000420856',\n    '0000421841',\n    '0000412584',\n    '0000412595',\n    '0000416876',\n    '0000412623',\n    '0000418619',\n    '0000429534',\n    '0000412661',\n    '0000412665',\n    '0000424119',\n    '0000412682',\n    '0000412741',\n    '0000427994',\n    '0000424259',\n    '0000416834',\n    '0000423155',\n    '0000422980',\n    '0000412955',\n    '0000412978',\n    '0000432816',\n    '0000423345',\n    '0000422761',\n    '0000423493',\n    '0000423426',\n    '0000409280',\n    '0000414342',\n    '0000425248',\n    '0000423472',\n    '0000416099',\n    '0000424280',\n    '0000412807',\n    '0000413249',\n    '0000414448',\n    '0000416097',\n    '0000410557',\n    '0000420811',\n    '0000422244',\n    '0000421087',\n    '0000411977',\n    '0000412019',\n    '0000412342',\n    '0000414485',\n    '0000412578',\n    '0000412622',\n    '0000421242',\n    '0000413710',\n    '0000408832',\n    '0000419206',\n    '0000417125',\n    '0000432010',\n    '0000417515',\n    '0000419211',\n    '0000414195',\n    '0000413711',\n    '0000419220',\n    '0000413631',\n    '0000416493',\n    '0000414930',\n    '0000419226',\n    '0000417006',\n    '0000430628',\n    '0000416183',\n    '0000415662',\n    '0000420173',\n    '0000423956',\n    '0000414441',\n    '0000430518',\n    '0000414796',\n    '0000409361',\n    '0000419245',\n    '0000416191',\n    '0000427317',\n    '0000423320',\n    '0000419253',\n    '0000423488',\n    '0000429476',\n    '0000419254',\n    '0000409540',\n    '0000429695',\n    '0000417568',\n    '0000419264',\n    '0000417618',\n    '0000428491',\n    '0000416067',\n    '0000415368',\n    '0000409684',\n    '0000409709',\n    '0000421062',\n    '0000409694',\n    '0000417534',\n    '0000419286',\n    '0000419284',\n    '0000421072',\n    '0000413887',\n    '0000431883',\n    '0000425708',\n    '0000420970',\n    '0000424980',\n    '0000421262',\n    '0000421298',\n    '0000417585',\n    '0000421880',\n    '0000420341',\n    '0000420713',\n    '0000410184',\n    '0000415646',\n    '0000428106',\n    '0000427283',\n    '0000427462',\n    '0000416436',\n    '0000415454',\n    '0000421900',\n    '0000420122',\n    '0000419331',\n    '0000419332',\n    '0000414418',\n    '0000421284',\n    '0000414224',\n    '0000431672',\n    '0000413360',\n    '0000420312',\n    '0000429631',\n    '0000418625',\n    '0000424684',\n    '0000413979',\n    '0000422326',\n    '0000413999',\n    '0000431302',\n    '0000430173',\n    '0000416263',\n    '0000420459',\n    '0000413484',\n    '0000413476',\n    '0000413322',\n    '0000434802',\n    '0000419360',\n    '0000439175',\n    '0000422915',\n    '0000419363',\n    '0000426546',\n    '0000434350',\n    '0000423931',\n    '0000428667',\n    '0000413656',\n    '0000416509',\n    '0000414504',\n    '0000430539',\n    '0000420924',\n    '0000419072',\n    '0000425985',\n    '0000419387',\n    '0000417412',\n    '0000426467',\n    '0000418643',\n    '0000417898',\n    '0000423447',\n    '0000420195',\n    '0000429649',\n    '0000419396',\n    '0000411201',\n    '0000430366',\n    '0000417884',\n    '0000415923',\n    '0000424612',\n    '0000417033',\n    '0000427805',\n    '0000424033',\n    '0000414433',\n    '0000419414',\n    '0000415184',\n    '0000421089',\n    '0000411596',\n    '0000419424',\n    '0000430453',\n    '0000423643',\n    '0000415296',\n    '0000411731',\n    '0000413420',\n    '0000426932',\n    '0000416462',\n    '0000428861',\n    '0000414970',\n    '0000415550',\n    '0000414390',\n    '0000415442',\n    '0000419453',\n    '0000420123',\n    '0000427949',\n    '0000413879',\n    '0000416310',\n    '0000419454',\n    '0000112653',\n    '0000418608',\n    '0000414128',\n    '0000436409',\n    '0000417492',\n    '0000412073',\n    '0000420246',\n    '0000419465',\n    '0000416441',\n    '0000427963',\n    '0000430615',\n    '0000414284',\n    '0000419470',\n    '0000427195',\n    '0000419473',\n    '0000413483',\n    '0000419474',\n    '0000416271',\n    '0000419476',\n    '0000419479',\n    '0000422654',\n    '0000436182',\n    '0000413880',\n    '0000420206',\n    '0000422822',\n    '0000412428',\n    '0000430516',\n    '0000421192',\n    '0000412466',\n    '0000416624',\n    '0000438149',\n    '0000414308',\n    '0000419488',\n    '0000430866',\n    '0000412541',\n    '0000427585',\n    '0000413359',\n    '0000425288',\n    '0000418250',\n    '0000425178',\n    '0000416274',\n    '0000415439',\n    '0000419017',\n    '0000423290',\n    '0000415389',\n    '0000419518',\n    '0000423239',\n    '0000425209',\n    '0000428142',\n    '0000413447',\n    '0000425208',\n    '0000419500',\n    '0000418332',\n    '0000413787',\n    '0000428125',\n    '0000419375',\n    '0000419197',\n    '0000419201',\n    '0000429975',\n    '0000419468',\n    '0000419204',\n    '0000420274',\n    '0000419196',\n    '0000423187',\n    '0000419218',\n    '0000427848',\n    '0000427153',\n    '0000419224',\n    '0000434764',\n    '0000433860',\n    '0000419228',\n    '0000426370',\n    '0000419229',\n    '0000419230',\n    '0000427181',\n    '0000423546',\n    '0000419233',\n    '0000419234',\n    '0000428666',\n    '0000419237',\n    '0000423476',\n    '0000419239',\n    '0000419341',\n    '0000421686',\n    '0000419295',\n    '0000433973',\n    '0000419241',\n    '0000425388',\n    '0000419249',\n    '0000419252',\n    '0000431019',\n    '0000427809',\n    '0000419255',\n    '0000423974',\n    '0000419272',\n    '0000419279',\n    '0000419282',\n    '0000419285',\n    '0000419288',\n    '0000429818',\n    '0000436139',\n    '0000419294',\n    '0000419296',\n    '0000419297',\n    '0000419236',\n    '0000419300',\n    '0000419305',\n    '0000419309',\n    '0000433335',\n    '0000429076',\n    '0000419312',\n    '0000423450',\n    '0000419314',\n    '0000419316',\n    '0000413082',\n    '0000419317',\n    '0000419320',\n    '0000419321',\n    '0000421560',\n    '0000419322',\n    '0000424167',\n    '0000419325',\n    '0000419328',\n    '0000419354',\n    '0000420967',\n    '0000419333',\n    '0000428638',\n    '0000419428',\n    '0000419337',\n    '0000419338',\n    '0000426272',\n    '0000419340',\n    '0000426931',\n    '0000422954',\n    '0000421632',\n    '0000423319',\n    '0000421153',\n    '0000419345',\n    '0000419346',\n    '0000419348',\n    '0000419349',\n    '0000419351',\n    '0000426315',\n    '0000419356',\n    '0000419359',\n    '0000422636',\n    '0000428763',\n    '0000419361',\n    '0000419362',\n    '0000433254',\n    '0000419370',\n    '0000419371',\n    '0000419372',\n    '0000423300',\n    '0000419377',\n    '0000419382',\n    '0000419383',\n    '0000425273',\n    '0000419388',\n    '0000432874',\n    '0000420409',\n    '0000426319',\n    '0000419390',\n    '0000424303',\n    '0000419393',\n    '0000423467',\n    '0000419394',\n    '0000424883',\n    '0000419397',\n    '0000419400',\n    '0000429643',\n    '0000419409',\n    '0000419410',\n    '0000431732',\n    '0000418025',\n    '0000419413',\n    '0000419415',\n    '0000423429',\n    '0000419416',\n    '0000419425',\n    '0000429141',\n    '0000419429',\n    '0000426873',\n    '0000430633',\n    '0000419431',\n    '0000419434',\n    '0000419437',\n    '0000419438',\n    '0000423106',\n    '0000419446',\n    '0000419447',\n    '0000420712',\n    '0000434545',\n    '0000419451',\n    '0000419456',\n    '0000435940',\n    '0000429057',\n    '0000419458',\n    '0000427375',\n    '0000433328',\n    '0000419461',\n    '0000419462',\n    '0000419466',\n    '0000423256',\n    '0000419469',\n    '0000421829',\n    '0000419478',\n    '0000429305',\n    '0000419483',\n    '0000419484',\n    '0000419487',\n    '0000419490',\n    '0000427720',\n    '0000432633',\n    '0000422765',\n    '0000412527',\n    '0000420979',\n    '0000422674',\n    '0000419497',\n    '0000419499',\n    '0000419502',\n    '0000419503',\n    '0000419504',\n    '0000419507',\n    '0000419510',\n    '0000419511',\n    '0000419512',\n    '0000420354',\n    '0000423769',\n    '0000423917',\n    '0000419519',\n    '0000419520',\n    '0000421704',\n    '0000431033',\n    '0000419527',\n    '0000419528',\n    '0000424354',\n    '0000426048',\n    '0000424148',\n    '0000431949',\n    '0000419537',\n    '0000425602',\n    '0000422958',\n    '0000416713',\n    '0000423417',\n    '0000429120',\n    '0000427124',\n    '0000423047',\n    '0000408972',\n    '0000431482',\n    '0000429759',\n    '0000409029',\n    '0000424547',\n    '0000413287',\n    '0000409119',\n    '0000425283',\n    '0000427137',\n    '0000430853',\n    '0000436750',\n    '0000424450',\n    '0000413844',\n    '0000429496',\n    '0000430575',\n    '0000416904',\n    '0000426275',\n    '0000422820',\n    '0000421761',\n    '0000427692',\n    '0000426125',\n    '0000430501',\n    '0000417590',\n    '0000430186',\n    '0000418338',\n    '0000428473',\n    '0000423475',\n    '0000409693',\n    '0000424363',\n    '0000422943',\n    '0000423232',\n    '0000409743',\n    '0000431421',\n    '0000421588',\n    '0000413783',\n    '0000423457',\n    '0000409785',\n    '0000414122',\n    '0000428921',\n    '0000422852',\n    '0000423567',\n    '0000426041',\n    '0000424069',\n    '0000420774',\n    '0000432319',\n    '0000413941',\n    '0000423663',\n    '0000422878',\n    '0000424683',\n    '0000430537',\n    '0000432331',\n    '0000423352',\n    '0000432492',\n    '0000426855',\n    '0000432571',\n    '0000422205',\n    '0000426086',\n    '0000425269',\n    '0000437347',\n    '0000426312',\n    '0000424436',\n    '0000425211',\n    '0000427298',\n    '0000410617',\n    '0000438435',\n    '0000410632',\n    '0000410726',\n    '0000422206',\n    '0000432639',\n    '0000415788',\n    '0000426396',\n    '0000423006',\n    '0000426068',\n    '0000429674',\n    '0000432905',\n    '0000417751',\n    '0000422153',\n    '0000424860',\n    '0000426554',\n    '0000415607',\n    '0000437092',\n    '0000417167',\n    '0000414611',\n    '0000425301',\n    '0000424532',\n    '0000427187',\n    '0000431240',\n    '0000423249',\n    '0000414123',\n    '0000429439',\n    '0000433331',\n    '0000417347',\n    '0000417382',\n    '0000411418',\n    '0000420682',\n    '0000426722',\n    '0000428606',\n    '0000423282',\n    '0000422125',\n    '0000413073',\n    '0000418151',\n    '0000430189',\n    '0000424889',\n    '0000413763',\n    '0000426116',\n    '0000424253',\n    '0000413762',\n    '0000422308',\n    '0000411819',\n    '0000424808',\n    '0000414991',\n    '0000424599',\n    '0000430406',\n    '0000424270',\n    '0000118309',\n    '0000435318',\n    '0000417571',\n    '0000412043',\n    '0000423415',\n    '0000428926',\n    '0000422899',\n    '0000431999',\n    '0000413374',\n    '0000421166',\n    '0000431383',\n    '0000424759',\n    '0000424685',\n    '0000423298',\n    '0000421825',\n    '0000412306',\n    '0000425092',\n    '0000421228',\n    '0000427371',\n    '0000423039',\n    '0000412450',\n    '0000415526',\n    '0000426945',\n    '0000429781',\n    '0000424237',\n    '0000427041',\n    '0000418805',\n    '0000415643',\n    '0000415489',\n    '0000422759',\n    '0000423016',\n    '0000417273',\n    '0000424842',\n    '0000427182',\n    '0000425233',\n    '0000422165',\n    '0000420858',\n    '0000416966',\n    '0000421826',\n    '0000423114',\n    '0000416949',\n    '0000413799',\n    '0000425293',\n    '0000422159',\n    '0000432365',\n    '0000413798',\n    '0000425300',\n    '0000409294',\n    '0000413802',\n    '0000424862',\n    '0000424244',\n    '0000413796',\n    '0000413803',\n    '0000422123',\n    '0000432727',\n    '0000415707',\n    '0000412279',\n    '0000412280',\n    '0000428924',\n    '0000426928',\n    '0000425069',\n    '0000426939',\n    '0000409024',\n    '0000418242',\n    '0000416921',\n    '0000416985',\n    '0000432637',\n    '0000409131',\n    '0000424508',\n    '0000416245',\n    '0000409289',\n    '0000409292',\n    '0000430583',\n    '0000409304',\n    '0000426661',\n    '0000424586',\n    '0000428884',\n    '0000423448',\n    '0000424783',\n    '0000422289',\n    '0000409451',\n    '0000409452',\n    '0000427337',\n    '0000420117',\n    '0000422540',\n    '0000421370',\n    '0000431528',\n    '0000426589',\n    '0000427140',\n    '0000420655',\n    '0000424803',\n    '0000413140',\n    '0000432025',\n    '0000410112',\n    '0000416415',\n    '0000424893',\n    '0000425245',\n    '0000421550',\n    '0000431857',\n    '0000426436',\n    '0000424589',\n    '0000417047',\n    '0000415131',\n    '0000413776',\n    '0000430809',\n    '0000432811',\n    '0000417632',\n    '0000424330',\n    '0000433400',\n    '0000411126',\n    '0000429895',\n    '0000427213',\n    '0000413778',\n    '0000425540',\n    '0000428042',\n    '0000416884',\n    '0000422556',\n    '0000425021',\n    '0000432330',\n    '0000425077',\n    '0000411496',\n    '0000427528',\n    '0000430777',\n    '0000411615',\n    '0000413526',\n    '0000435227',\n    '0000429374',\n    '0000433459',\n    '0000422569',\n    '0000416745',\n    '0000412044',\n    '0000418846',\n    '0000428126',\n    '0000431377',\n    '0000429573',\n    '0000417046',\n    '0000432840',\n    '0000427803',\n    '0000412476',\n    '0000432451',\n    '0000425032',\n    '0000432813',\n    '0000422327',\n    '0000420809',\n    '0000420350',\n    '0000415135',\n    '0000412830',\n    '0000424921',\n    '0000412904',\n    '0000413017',\n    '0000423545',\n    '0000427252',\n    '0000431749',\n    '0000434496',\n    '0000413460',\n    '0000423322',\n    '0000423708',\n    '0000413102',\n    '0000413103',\n    '0000420923',\n    '0000413108',\n    '0000415736',\n    '0000422108',\n    '0000416701',\n    '0000413115',\n    '0000413116',\n    '0000413121',\n    '0000413122',\n    '0000413363',\n    '0000424856',\n    '0000413131',\n    '0000413542',\n    '0000413134',\n    '0000429362',\n    '0000425383',\n    '0000413144',\n    '0000430257',\n    '0000422711',\n    '0000413151',\n    '0000418755',\n    '0000413158',\n    '0000414482',\n    '0000413455',\n    '0000414044',\n    '0000413162',\n    '0000438059',\n    '0000426069',\n    '0000420494',\n    '0000429957',\n    '0000422284',\n    '0000418353',\n    '0000427894',\n    '0000413182',\n    '0000413339',\n    '0000418694',\n    '0000413893',\n    '0000432049',\n    '0000413298',\n    '0000413188',\n    '0000413189',\n    '0000417890',\n    '0000433995',\n    '0000416215',\n    '0000427791',\n    '0000420768',\n    '0000431256',\n    '0000413200',\n    '0000428576',\n    '0000414672',\n    '0000428293',\n    '0000414882',\n    '0000436533',\n    '0000413203',\n    '0000416798',\n    '0000428514',\n    '0000430405',\n    '0000425436',\n    '0000428999',\n    '0000426520',\n    '0000431353',\n    '0000422675',\n    '0000418068',\n    '0000415020',\n    '0000425210',\n    '0000422642',\n    '0000404019',\n    '0000414392',\n    '0000413095',\n    '0000418940',\n    '0000413096',\n    '0000425065',\n    '0000415326',\n    '0000413493',\n    '0000435989',\n    '0000414821',\n    '0000415710',\n    '0000418938',\n    '0000432472',\n    '0000415285',\n    '0000421830',\n    '0000413101',\n    '0000414061',\n    '0000424114',\n    '0000420285',\n    '0000409050',\n    '0000413317',\n    '0000429956',\n    '0000413104',\n    '0000416036',\n    '0000413638',\n    '0000413110',\n    '0000415869',\n    '0000413352',\n    '0000416502',\n    '0000413111',\n    '0000414636',\n    '0000410566',\n    '0000414927',\n    '0000418152',\n    '0000415606',\n    '0000414462',\n    '0000427314',\n    '0000423413',\n    '0000429855',\n    '0000424344',\n    '0000413117',\n    '0000413635',\n    '0000438217',\n    '0000435305',\n    '0000413123',\n    '0000413931',\n    '0000413659',\n    '0000413124',\n    '0000414026',\n    '0000418685',\n    '0000425100',\n    '0000414420',\n    '0000413496',\n    '0000414207',\n    '0000425198',\n    '0000423252',\n    '0000413133',\n    '0000415260',\n    '0000421018',\n    '0000415079',\n    '0000428103',\n    '0000413137',\n    '0000415719',\n    '0000434751',\n    '0000419009',\n    '0000431268',\n    '0000413139',\n    '0000413141',\n    '0000422971',\n    '0000421797',\n    '0000418837',\n    '0000413145',\n    '0000418064',\n    '0000413147',\n    '0000417076',\n    '0000413550',\n    '0000417117',\n    '0000415182',\n    '0000430488',\n    '0000413457',\n    '0000431462',\n    '0000413319',\n    '0000426825',\n    '0000413150',\n    '0000414386',\n    '0000420794',\n    '0000413152',\n    '0000429021',\n    '0000415022',\n    '0000422953',\n    '0000423026',\n    '0000414473',\n    '0000422062',\n    '0000424356',\n    '0000413372',\n    '0000426327',\n    '0000423548',\n    '0000415012',\n    '0000413501',\n    '0000414631',\n    '0000418358',\n    '0000420043',\n    '0000421638',\n    '0000418223',\n    '0000413458',\n    '0000413155',\n    '0000416868',\n    '0000413490',\n    '0000414481',\n    '0000424531',\n    '0000417423',\n    '0000413156',\n    '0000413157',\n    '0000424195',\n    '0000420267',\n    '0000415068',\n    '0000426170',\n    '0000413533',\n    '0000414893',\n    '0000413465',\n    '0000415003',\n    '0000430154',\n    '0000431100',\n    '0000415108',\n    '0000428558',\n    '0000417648',\n    '0000415180',\n    '0000416787',\n    '0000413161',\n    '0000425997',\n    '0000413514',\n    '0000417279',\n    '0000422992',\n    '0000413274',\n    '0000428521',\n    '0000417099',\n    '0000421103',\n    '0000429060',\n    '0000424196',\n    '0000418678',\n    '0000420673',\n    '0000413164',\n    '0000413434',\n    '0000423496',\n    '0000413387',\n    '0000415225',\n    '0000418784',\n    '0000413165',\n    '0000413166',\n    '0000416615',\n    '0000413603',\n    '0000416216',\n    '0000432308',\n    '0000416368',\n    '0000413612',\n    '0000436320',\n    '0000413169',\n    '0000415926',\n    '0000413489',\n    '0000414161',\n    '0000413171',\n    '0000420201',\n    '0000414518',\n    '0000413173',\n    '0000425114',\n    '0000421361',\n    '0000422950',\n    '0000421790',\n    '0000422173',\n    '0000418101',\n    '0000428520',\n    '0000423288',\n    '0000414356',\n    '0000413178',\n    '0000429175',\n    '0000413179',\n    '0000418015',\n    '0000413462',\n    '0000428627',\n    '0000421549',\n    '0000413181',\n    '0000431299',\n    '0000413459',\n    '0000413686',\n    '0000416101',\n    '0000413185',\n    '0000414993',\n    '0000424892',\n    '0000413187',\n    '0000112664',\n    '0000421716',\n    '0000420244',\n    '0000418077',\n    '0000414184',\n    '0000413194',\n    '0000415812',\n    '0000415728',\n    '0000424388',\n    '0000430124',\n    '0000428130',\n    '0000413488',\n    '0000415247',\n    '0000415873',\n    '0000417952',\n    '0000425994',\n    '0000414489',\n    '0000423388',\n    '0000413474',\n    '0000414906',\n    '0000414558',\n    '0000428570',\n    '0000417207',\n    '0000431675',\n    '0000414723',\n    '0000415286',\n    '0000413658',\n    '0000414525',\n    '0000423515',\n    '0000417940',\n    '0000413205',\n    '0000413208',\n    '0000414501',\n    '0000415383',\n    '0000417921',\n    '0000417929',\n    '0000418686',\n    '0000413210',\n    '0000413213',\n    '0000413214',\n    '0000413336',\n    '0000425341',\n    '0000413217',\n    '0000413218',\n    '0000417754',\n    '0000413461',\n    '0000424979',\n    '0000418278',\n    '0000435252',\n    '0000430120',\n    '0000418322',\n    '0000413255',\n    '0000413221',\n    '0000423271',\n    '0000414549',\n    '0000422998',\n    '0000423437',\n    '0000425610',\n    '0000417760',\n    '0000421402',\n    '0000416292',\n    '0000420672',\n    '0000417371',\n    '0000413944',\n    '0000423053',\n    '0000426521',\n    '0000418899',\n    '0000417056',\n    '0000423428',\n    '0000414793',\n    '0000414618',\n    '0000430943',\n    '0000431619',\n    '0000428571',\n    '0000418074',\n    '0000417360',\n    '0000425714',\n    '0000413223',\n    '0000425696',\n    '0000431020',\n    '0000423318',\n    '0000419353',\n    '0000419366',\n    '0000438057',\n    '0000416309',\n    '0000421403',\n    '0000416249',\n    '0000422262',\n    '0000409576',\n    '0000427071',\n    '0000414400',\n    '0000415244',\n    '0000419419',\n    '0000425962',\n    '0000422664',\n    '0000417169',\n    '0000424932',\n    '0000415034',\n    '0000414992',\n    '0000436967',\n    '0000432937',\n    '0000434549',\n    '0000429482',\n    '0000420278',\n    '0000422096',\n    '0000431288',\n    '0000418977',\n    '0000417262',\n    '0000417263',\n    '0000427696',\n    '0000419071',\n    '0000418329',\n    '0000420641',\n    '0000418369',\n    '0000435023',\n    '0000417979',\n    '0000423644',\n    '0000433121',\n    '0000418999',\n    '0000422315',\n    '0000428428',\n    '0000431021',\n    '0000420666',\n    '0000426276',\n    '0000427847',\n    '0000429491',\n    '0000424660',\n    '0000420963',\n    '0000421061',\n    '0000418364',\n    '0000410996',\n    '0000418599',\n    '0000421161',\n    '0000420324',\n    '0000424080',\n    '0000423558',\n    '0000426440',\n    '0000425381',\n    '0000418728',\n    '0000421581',\n    '0000430787',\n    '0000418227',\n    '0000420233',\n    '0000427216',\n    '0000421699',\n    '0000430991',\n    '0000424347',\n    '0000423453',\n    '0000429750',\n    '0000422236',\n    '0000432083',\n    '0000420447',\n    '0000431260',\n    '0000434752',\n    '0000422216',\n    '0000420178',\n    '0000418325',\n    '0000420078',\n    '0000422138',\n    '0000416930',\n    '0000420397',\n    '0000427858',\n    '0000418166',\n    '0000418224',\n    '0000432340',\n    '0000428998',\n    '0000417366',\n    '0000428447',\n    '0000431162',\n    '0000420410',\n    '0000418656',\n    '0000421794',\n    '0000420119',\n    '0000421748',\n    '0000420330',\n    '0000427869',\n    '0000420131',\n    '0000418976',\n    '0000432580',\n    '0000422665',\n    '0000418659',\n    '0000421796',\n    '0000431053',\n    '0000423845',\n    '0000418402',\n    '0000431325',\n    '0000425493',\n    '0000431394',\n    '0000434130',\n    '0000418835',\n    '0000431717',\n    '0000423347',\n    '0000420212',\n    '0000422964',\n    '0000417155',\n    '0000420321',\n    '0000418707',\n    '0000421779',\n    '0000419081',\n    '0000429454',\n    '0000423828',\n    '0000429134',\n    '0000115258',\n    '0000419138',\n    '0000423745',\n    '0000434324',\n    '0000425468',\n    '0000432222',\n    '0000416900',\n    '0000418284',\n    '0000421399',\n    '0000418658',\n    '0000431252',\n    '0000426273',\n    '0000418217',\n    '0000420988',\n    '0000418753',\n    '0000429208',\n    '0000424710',\n    '0000423785',\n    '0000418901',\n    '0000418257',\n    '0000420493',\n    '0000417342',\n    '0000432837',\n    '0000423194',\n    '0000428756',\n    '0000424248',\n    '0000421042',\n    '0000423497',\n    '0000435048',\n    '0000421195',\n    '0000418147',\n    '0000420230',\n    '0000424013',\n    '0000424179',\n    '0000421086',\n    '0000418708',\n    '0000429435',\n    '0000428291',\n    '0000423157',\n    '0000425698',\n    '0000419111',\n    '0000421741',\n    '0000424680',\n    '0000428422',\n    '0000428312',\n    '0000431911',\n    '0000432792',\n    '0000419580',\n    '0000419586',\n    '0000433268',\n    '0000419608',\n    '0000419609',\n    '0000431512',\n    '0000419627',\n    '0000429967',\n    '0000429843',\n    '0000430006',\n    '0000427392',\n    '0000418482',\n    '0000425310',\n    '0000436041',\n    '0000419692',\n    '0000424082',\n    '0000426252',\n    '0000426469',\n    '0000418491',\n    '0000426251',\n    '0000427117',\n    '0000425579',\n    '0000424189',\n    '0000418520',\n    '0000420110',\n    '0000419683',\n    '0000418521',\n    '0000418528',\n    '0000433684',\n    '0000427662',\n    '0000418529',\n    '0000429468',\n    '0000419737',\n    '0000418536',\n    '0000424252',\n    '0000419749',\n    '0000419756',\n    '0000421112',\n    '0000434860',\n    '0000430183',\n    '0000429955',\n    '0000427855',\n    '0000426462',\n    '0000424598',\n    '0000434812',\n    '0000419815',\n    '0000426214',\n    '0000430190',\n    '0000419837',\n    '0000428982',\n    '0000431013',\n    '0000419853',\n    '0000419854',\n    '0000427987',\n    '0000423225',\n    '0000419861',\n    '0000431807',\n    '0000422644',\n    '0000121207',\n    '0000418570',\n    '0000424886',\n    '0000419954',\n    '0000418580',\n    '0000425720',\n    '0000419996',\n    '0000420001',\n    '0000425719',\n    '0000420010',\n    '0000429237',\n    '0000426351',\n    '0000435367',\n    '0000418459',\n    '0000419591',\n    '0000419606',\n    '0000418471',\n    '0000419646',\n    '0000418483',\n    '0000418485',\n    '0000418490',\n    '0000418447',\n    '0000419704',\n    '0000418514',\n    '0000418518',\n    '0000418509',\n    '0000418527',\n    '0000419715',\n    '0000419717',\n    '0000418507',\n    '0000420694',\n    '0000419759',\n    '0000418553',\n    '0000418573',\n    '0000418466',\n    '0000419822',\n    '0000418554',\n    '0000419872',\n    '0000418567',\n    '0000419948',\n    '0000418576',\n    '0000419971',\n    '0000418582',\n    '0000420003',\n    '0000418584',\n    '0000418550',\n    '0000418451',\n    '0000421810',\n    '0000418453',\n    '0000418458',\n    '0000428903',\n    '0000418562',\n    '0000418457',\n    '0000418461',\n    '0000430928',\n    '0000431189',\n    '0000429543',\n    '0000436238',\n    '0000418468',\n    '0000432399',\n    '0000427029',\n    '0000428457',\n    '0000418481',\n    '0000418492',\n    '0000418530',\n    '0000418504',\n    '0000423811',\n    '0000427210',\n    '0000418535',\n    '0000437180',\n    '0000418542',\n    '0000418546',\n    '0000418474',\n    '0000429024',\n    '0000418552',\n    '0000424162',\n    '0000418551',\n    '0000418555',\n    '0000418566',\n    '0000436664',\n    '0000433255',\n    '0000432440',\n    '0000418540',\n    '0000418532',\n    '0000429020',\n    '0000419540',\n    '0000431947',\n    '0000419887',\n    '0000419542',\n    '0000430356',\n    '0000423315',\n    '0000419543',\n    '0000419545',\n    '0000430710',\n    '0000419547',\n    '0000419549',\n    '0000427057',\n    '0000419551',\n    '0000430845',\n    '0000419553',\n    '0000439256',\n    '0000419555',\n    '0000432087',\n    '0000419557',\n    '0000421780',\n    '0000419558',\n    '0000419559',\n    '0000429013',\n    '0000419560',\n    '0000419561',\n    '0000419567',\n    '0000419570',\n    '0000419571',\n    '0000419572',\n    '0000423199',\n    '0000419582',\n    '0000419584',\n    '0000419585',\n    '0000419902',\n    '0000419587',\n    '0000419588',\n    '0000419590',\n    '0000430604',\n    '0000429277',\n    '0000428624',\n    '0000419598',\n    '0000432044',\n    '0000419600',\n    '0000419601',\n    '0000419677',\n    '0000419602',\n    '0000425149',\n    '0000419604',\n    '0000419605',\n    '0000423330',\n    '0000422113',\n    '0000428298',\n    '0000422271',\n    '0000419618',\n    '0000423454',\n    '0000419620',\n    '0000421690',\n    '0000426996',\n    '0000419622',\n    '0000429086',\n    '0000419626',\n    '0000427973',\n    '0000419630',\n    '0000419632',\n    '0000427078',\n    '0000419635',\n    '0000419637',\n    '0000428810',\n    '0000419641',\n    '0000430067',\n    '0000419645',\n    '0000431169',\n    '0000419648',\n    '0000421813',\n    '0000419650',\n    '0000419651',\n    '0000419652',\n    '0000422952',\n    '0000419658',\n    '0000424882',\n    '0000419660',\n    '0000432508',\n    '0000419667',\n    '0000427968',\n    '0000423226',\n    '0000422941',\n    '0000419672',\n    '0000419676',\n    '0000423266',\n    '0000423062',\n    '0000419680',\n    '0000419681',\n    '0000421982',\n    '0000431794',\n    '0000419686',\n    '0000419690',\n    '0000422252',\n    '0000430099',\n    '0000419694',\n    '0000419695',\n    '0000419696',\n    '0000420776',\n    '0000421323',\n    '0000423703',\n    '0000424279',\n    '0000419699',\n    '0000419700',\n    '0000419701',\n    '0000422666',\n    '0000428384',\n    '0000428035',\n    '0000419707',\n    '0000419710',\n    '0000419711',\n    '0000421936',\n    '0000419712',\n    '0000423991',\n    '0000427541',\n    '0000419716',\n    '0000419719',\n    '0000419724',\n    '0000419725',\n    '0000424225',\n    '0000419731',\n    '0000419738',\n    '0000422947',\n    '0000419739',\n    '0000419740',\n    '0000420882',\n    '0000419742',\n    '0000419743',\n    '0000419747',\n    '0000419748',\n    '0000423707',\n    '0000425716',\n    '0000419750',\n    '0000419751',\n    '0000419752',\n    '0000420026',\n    '0000421508',\n    '0000421575',\n    '0000419755',\n    '0000422095',\n    '0000419757',\n    '0000419762',\n    '0000420355',\n    '0000419765',\n    '0000419766',\n    '0000419767',\n    '0000419768',\n    '0000423827',\n    '0000428458',\n    '0000427698',\n    '0000419771',\n    '0000419772',\n    '0000429110',\n    '0000419773',\n    '0000427237',\n    '0000427819',\n    '0000419781',\n    '0000419782',\n    '0000431339',\n    '0000419784',\n    '0000419785',\n    '0000429162',\n    '0000428464',\n    '0000423733',\n    '0000419790',\n    '0000419796',\n    '0000419797',\n    '0000419799',\n    '0000419801',\n    '0000419802',\n    '0000419803',\n    '0000424735',\n    '0000423218',\n    '0000419807',\n    '0000419809',\n    '0000424453',\n    '0000428540',\n    '0000419812',\n    '0000419813',\n    '0000419814',\n    '0000421968',\n    '0000425545',\n    '0000421749',\n    '0000419818',\n    '0000431968',\n    '0000419819',\n    '0000419820',\n    '0000419823',\n    '0000434552',\n    '0000419825',\n    '0000419826',\n    '0000419828',\n    '0000419833',\n    '0000432554',\n    '0000419844',\n    '0000427358',\n    '0000419845',\n    '0000419846',\n    '0000419848',\n    '0000429698',\n    '0000419850',\n    '0000424118',\n    '0000419858',\n    '0000419863',\n    '0000419865',\n    '0000419866',\n    '0000419867',\n    '0000419874',\n    '0000419879',\n    '0000423500',\n    '0000426506',\n    '0000429921',\n    '0000419881',\n    '0000421617',\n    '0000419882',\n    '0000419883',\n    '0000419885',\n    '0000419886',\n    '0000419888',\n    '0000419890',\n    '0000419892',\n    '0000427663',\n    '0000419895',\n    '0000419896',\n    '0000419901',\n    '0000419903',\n    '0000419904',\n    '0000419905',\n    '0000433075',\n    '0000432106',\n    '0000419915',\n    '0000419919',\n    '0000419924',\n    '0000419926',\n    '0000426529',\n    '0000419929',\n    '0000431024',\n    '0000419932',\n    '0000419934',\n    '0000425057',\n    '0000419936',\n    '0000421626',\n    '0000419938',\n    '0000419942',\n    '0000419944',\n    '0000419945',\n    '0000419947',\n    '0000419952',\n    '0000430646',\n    '0000419953',\n    '0000419956',\n    '0000419960',\n    '0000432255',\n    '0000419962',\n    '0000419963',\n    '0000423159',\n    '0000419966',\n    '0000419969',\n    '0000421598',\n    '0000419970',\n    '0000428981',\n    '0000419975',\n    '0000419976',\n    '0000427515',\n    '0000419981',\n    '0000428110',\n    '0000419987',\n    '0000419988',\n    '0000419990',\n    '0000419994',\n    '0000423148',\n    '0000419995',\n    '0000427683',\n    '0000419998',\n    '0000429055',\n    '0000420000',\n    '0000431086',\n    '0000429647',\n    '0000423136',\n    '0000420006',\n    '0000420007',\n    '0000429133',\n    '0000420016',\n    '0000423967',\n    '0000420020',\n    '0000427420',\n    '0000420021',\n    '0000420022',\n    '0000420023',\n    '0000420024',\n    '0000430411',\n    '0000420030',\n    '0000419541',\n    '0000419544',\n    '0000419550',\n    '0000419564',\n    '0000419566',\n    '0000419574',\n    '0000419575',\n    '0000419581',\n    '0000419589',\n    '0000427902',\n    '0000419599',\n    '0000424302',\n    '0000419610',\n    '0000419614',\n    '0000419621',\n    '0000419631',\n    '0000419636',\n    '0000419643',\n    '0000419653',\n    '0000419655',\n    '0000419664',\n    '0000419668',\n    '0000419674',\n    '0000419678',\n    '0000419682',\n    '0000419684',\n    '0000419687',\n    '0000419697',\n    '0000423528',\n    '0000419705',\n    '0000419706',\n    '0000419709',\n    '0000422942',\n    '0000419713',\n    '0000419720',\n    '0000419727',\n    '0000419728',\n    '0000419732',\n    '0000419735',\n    '0000423176',\n    '0000419741',\n    '0000419744',\n    '0000419758',\n    '0000419760',\n    '0000432538',\n    '0000423871',\n    '0000419763',\n    '0000427922',\n    '0000419769',\n    '0000419774',\n    '0000419776',\n    '0000419777',\n    '0000419780',\n    '0000419786',\n    '0000419789',\n    '0000419791',\n    '0000419792',\n    '0000419794',\n    '0000419798',\n    '0000419805',\n    '0000419808',\n    '0000419811',\n    '0000419817',\n    '0000419821',\n    '0000419824',\n    '0000419834',\n    '0000419838',\n    '0000419839',\n    '0000419840',\n    '0000419842',\n    '0000419843',\n    '0000419847',\n    '0000419849',\n    '0000419851',\n    '0000419852',\n    '0000419860',\n    '0000421899',\n    '0000425046',\n    '0000423465',\n    '0000419873',\n    '0000419878',\n    '0000424847',\n    '0000419880',\n    '0000424713',\n    '0000419884',\n    '0000419889',\n    '0000424961',\n    '0000419899',\n    '0000419900',\n    '0000419909',\n    '0000419911',\n    '0000419910',\n    '0000419913',\n    '0000419916',\n    '0000419922',\n    '0000419923',\n    '0000419927',\n    '0000419931',\n    '0000419967',\n    '0000419974',\n    '0000419983',\n    '0000419997',\n    '0000420002',\n    '0000420004',\n    '0000420005',\n    '0000420025',\n    '0000419548',\n    '0000419573',\n    '0000428774',\n    '0000419593',\n    '0000419611',\n    '0000433333',\n    '0000431155',\n    '0000419628',\n    '0000422807',\n    '0000429252',\n    '0000423833',\n    '0000433339',\n    '0000419679',\n    '0000427738',\n    '0000425590',\n    '0000433962',\n    '0000419718',\n    '0000426336',\n    '0000431520',\n    '0000419745',\n    '0000425220',\n    '0000438702',\n    '0000423921',\n    '0000427522',\n    '0000427329',\n    '0000427360',\n    '0000436822',\n    '0000427108',\n    '0000424277',\n    '0000425404',\n    '0000423743',\n    '0000419835',\n    '0000438769',\n    '0000422758',\n    '0000419856',\n    '0000423685',\n    '0000419977',\n    '0000419875',\n    '0000424641',\n    '0000425022',\n    '0000419898',\n    '0000422066',\n    '0000419943',\n    '0000426040',\n    '0000431851',\n    '0000419959',\n    '0000419961',\n    '0000419973',\n    '0000427242',\n    '0000429244',\n    '0000419991',\n    '0000419993',\n    '0000423945',\n    '0000425194',\n    '0000429702',\n    '0000438004',\n    '0000419546',\n    '0000419562',\n    '0000419577',\n    '0000419579',\n    '0000419616',\n    '0000419592',\n    '0000419597',\n    '0000419603',\n    '0000419613',\n    '0000419624',\n    '0000419629',\n    '0000419642',\n    '0000419644',\n    '0000422273',\n    '0000419656',\n    '0000419685',\n    '0000419702',\n    '0000419714',\n    '0000419721',\n    '0000419722',\n    '0000419723',\n    '0000419726',\n    '0000419729',\n    '0000419746',\n    '0000419761',\n    '0000419764',\n    '0000419770',\n    '0000419793',\n    '0000419827',\n    '0000419829',\n    '0000419831',\n    '0000419836',\n    '0000421649',\n    '0000419857',\n    '0000419859',\n    '0000419862',\n    '0000419891',\n    '0000419897',\n    '0000419933',\n    '0000419935',\n    '0000419946',\n    '0000419950',\n    '0000419951',\n    '0000419964',\n    '0000419965',\n    '0000419985',\n    '0000420011',\n    '0000420013',\n    '0000420017',\n    '0000420018',\n    '0000420019',\n    '0000421793',\n    '0000423099',\n    '0000421344',\n    '0000425161',\n    '0000426421',\n    '0000425533',\n    '0000424546',\n    '0000430808',\n    '0000420816',\n    '0000423742',\n    '0000431583',\n    '0000424351',\n    '0000429606',\n    '0000432652',\n    '0000428673',\n    '0000424584',\n    '0000435172',\n    '0000428445',\n    '0000425109',\n    '0000426018',\n    '0000431039',\n    '0000431647',\n    '0000431201',\n    '0000433195',\n    '0000432460',\n    '0000121208',\n    '0000431983',\n    '0000430077',\n    '0000423770',\n    '0000431804',\n    '0000431587',\n    '0000436310',\n    '0000426371',\n    '0000426328',\n    '0000415397',\n    '0000413943',\n    '0000416559',\n    '0000414846',\n    '0000417623',\n    '0000414100',\n    '0000413072',\n    '0000431502',\n    '0000434125',\n    '0000410576',\n    '0000432904',\n    '0000430435',\n    '0000411029',\n    '0000428040',\n    '0000415380',\n    '0000428694',\n    '0000425552',\n    '0000427288',\n    '0000416091',\n    '0000426975',\n    '0000427627',\n    '0000416547',\n    '0000421531',\n    '0000412977',\n    '0000418347',\n    '0000411280',\n    '0000426876',\n    '0000418921',\n    '0000414921',\n    '0000414734',\n    '0000408774',\n    '0000417873',\n    '0000434547',\n    '0000422743',\n    '0000408790',\n    '0000420852',\n    '0000421362',\n    '0000408824',\n    '0000421297',\n    '0000423867',\n    '0000408860',\n    '0000429724',\n    '0000420199',\n    '0000423647',\n    '0000424800',\n    '0000416443',\n    '0000420714',\n    '0000428561',\n    '0000417750',\n    '0000434551',\n    '0000433167',\n    '0000431237',\n    '0000408966',\n    '0000416387',\n    '0000409000',\n    '0000416618',\n    '0000425418',\n    '0000431193',\n    '0000409066',\n    '0000409071',\n    '0000409085',\n    '0000409110',\n    '0000437883',\n    '0000409111',\n    '0000422057',\n    '0000409188',\n    '0000420972',\n    '0000409213',\n    '0000409222',\n    '0000409229',\n    '0000417868',\n    '0000409245',\n    '0000413499',\n    '0000409277',\n    '0000423625',\n    '0000418413',\n    '0000409328',\n    '0000431109',\n    '0000425361',\n    '0000426065',\n    '0000421053',\n    '0000409487',\n    '0000409538',\n    '0000410988',\n    '0000414546',\n    '0000431428',\n    '0000414424',\n    '0000409591',\n    '0000422697',\n    '0000426084',\n    '0000409601',\n    '0000425638',\n    '0000417508',\n    '0000409602',\n    '0000418436',\n    '0000414351',\n    '0000427194',\n    '0000423933',\n    '0000415556',\n    '0000415605',\n    '0000413365',\n    '0000421552',\n    '0000409659',\n    '0000436173',\n    '0000409671',\n    '0000409682',\n    '0000424267',\n    '0000431985',\n    '0000414311',\n    '0000415559',\n    '0000414283',\n    '0000417688',\n    '0000409811',\n    '0000414149',\n    '0000426524',\n    '0000415916',\n    '0000433865',\n    '0000431621',\n    '0000420892',\n    '0000409911',\n    '0000409953',\n    '0000409972',\n    '0000409982',\n    '0000410448',\n    '0000410012',\n    '0000420226',\n    '0000423272',\n    '0000410040',\n    '0000410041',\n    '0000410045',\n    '0000423452',\n    '0000410086',\n    '0000417196',\n    '0000410094',\n    '0000410103',\n    '0000417915',\n    '0000413952',\n    '0000410149',\n    '0000410155',\n    '0000410169',\n    '0000413666',\n    '0000416272',\n    '0000410180',\n    '0000429678',\n    '0000410241',\n    '0000418922',\n    '0000410300',\n    '0000435103',\n    '0000410311',\n    '0000427664',\n    '0000415965',\n    '0000410342',\n    '0000418985',\n    '0000410366',\n    '0000417992',\n    '0000428329',\n    '0000424350',\n    '0000420314',\n    '0000422987',\n    '0000418318',\n    '0000431107',\n    '0000423313',\n    '0000410437',\n    '0000422318',\n    '0000427266',\n    '0000427509',\n    '0000429912',\n    '0000415729',\n    '0000418110',\n    '0000410580',\n    '0000427508',\n    '0000430316',\n    '0000410610',\n    '0000417681',\n    '0000417975',\n    '0000413544',\n    '0000424404',\n    '0000410634',\n    '0000413816',\n    '0000410637',\n    '0000415013',\n    '0000415323',\n    '0000420450',\n    '0000418022',\n    '0000425042',\n    '0000424801',\n    '0000413818',\n    '0000421695',\n    '0000421858',\n    '0000410701',\n    '0000430046',\n    '0000410753',\n    '0000418070',\n    '0000429445',\n    '0000427441',\n    '0000410766',\n    '0000410768',\n    '0000416660',\n    '0000422901',\n    '0000417027',\n    '0000410813',\n    '0000426249',\n    '0000421016',\n    '0000434286',\n    '0000428995',\n    '0000433726',\n    '0000410836',\n    '0000420286',\n    '0000428825',\n    '0000410895',\n    '0000420721',\n    '0000410970',\n    '0000410979',\n    '0000428256',\n    '0000410995',\n    '0000420739',\n    '0000426907',\n    '0000411036',\n    '0000411046',\n    '0000414660',\n    '0000411064',\n    '0000430580',\n    '0000417435',\n    '0000411142',\n    '0000415552',\n    '0000413649',\n    '0000414958',\n    '0000428882',\n    '0000425609',\n    '0000422616',\n    '0000411395',\n    '0000413272',\n    '0000415095',\n    '0000411416',\n    '0000416732',\n    '0000418990',\n    '0000431372',\n    '0000430047',\n    '0000415740',\n    '0000423553',\n    '0000411422',\n    '0000423552',\n    '0000417013',\n    '0000432400',\n    '0000411497',\n    '0000421052',\n    '0000420420',\n    '0000413671',\n    '0000425041',\n    '0000415198',\n    '0000411701',\n    '0000431420',\n    '0000411723',\n    '0000431975',\n    '0000420507',\n    '0000411757',\n    '0000411769',\n    '0000432467',\n    '0000416826',\n    '0000420893',\n    '0000418343',\n    '0000423755',\n    '0000425202',\n    '0000411863',\n    '0000413269',\n    '0000414852',\n    '0000423407',\n    '0000415593',\n    '0000420477',\n    '0000420983',\n    '0000424885',\n    '0000423659',\n    '0000421656',\n    '0000412020',\n    '0000415015',\n    '0000412032',\n    '0000409529',\n    '0000425267',\n    '0000412041',\n    '0000429206',\n    '0000431263',\n    '0000418782',\n    '0000412100',\n    '0000412109',\n    '0000413530',\n    '0000411166',\n    '0000426257',\n    '0000425201',\n    '0000425334',\n    '0000417815',\n    '0000418986',\n    '0000412232',\n    '0000417181',\n    '0000419078',\n    '0000417473',\n    '0000418974',\n    '0000428775',\n    '0000412361',\n    '0000418435',\n    '0000421320',\n    '0000413661',\n    '0000412381',\n    '0000415030',\n    '0000412402',\n    '0000435672',\n    '0000434555',\n    '0000415599',\n    '0000412451',\n    '0000420824',\n    '0000426786',\n    '0000412485',\n    '0000420263',\n    '0000412546',\n    '0000412548',\n    '0000418593',\n    '0000412615',\n    '0000412621',\n    '0000414199',\n    '0000436059',\n    '0000426893',\n    '0000412662',\n    '0000412675',\n    '0000417786',\n    '0000412695',\n    '0000425167',\n    '0000412715',\n    '0000416089',\n    '0000416580',\n    '0000429502',\n    '0000417365',\n    '0000427077',\n    '0000426079',\n    '0000416481',\n    '0000421544',\n    '0000413768',\n    '0000421513',\n    '0000417516',\n    '0000431771',\n    '0000412921',\n    '0000417496',\n    '0000415433',\n    '0000432223',\n    '0000423394',\n    '0000430221',\n    '0000417286',\n    '0000417574',\n    '0000426965',\n    '0000408870',\n    '0000408872',\n    '0000408878',\n    '0000431085',\n    '0000422198',\n    '0000421328',\n    '0000426185',\n    '0000409067',\n    '0000428931',\n    '0000409506',\n    '0000426098',\n    '0000416506',\n    '0000409204',\n    '0000409340',\n    '0000428957',\n    '0000409348',\n    '0000409440',\n    '0000409494',\n    '0000415190',\n    '0000409668',\n    '0000409680',\n    '0000430745',\n    '0000415259',\n    '0000420948',\n    '0000415882',\n    '0000409825',\n    '0000426160',\n    '0000416311',\n    '0000409896',\n    '0000409931',\n    '0000415158',\n    '0000420065',\n    '0000414514',\n    '0000425173',\n    '0000414634',\n    '0000410078',\n    '0000410083',\n    '0000422245',\n    '0000414316',\n    '0000431054',\n    '0000416325',\n    '0000415129',\n    '0000416869',\n    '0000410455',\n    '0000417200',\n    '0000410485',\n    '0000430751',\n    '0000422176',\n    '0000414370',\n    '0000413050',\n    '0000415201',\n    '0000415284',\n    '0000410521',\n    '0000410531',\n    '0000410440',\n    '0000410543',\n    '0000416886',\n    '0000410565',\n    '0000410578',\n    '0000414428',\n    '0000427104',\n    '0000420310',\n    '0000422791',\n    '0000417462',\n    '0000428658',\n    '0000417408',\n    '0000415155',\n    '0000431711',\n    '0000411023',\n    '0000411025',\n    '0000430750',\n    '0000414965',\n    '0000426389',\n    '0000417354',\n    '0000429713',\n    '0000411336',\n    '0000411366',\n    '0000416212',\n    '0000430162',\n    '0000411463',\n    '0000427394',\n    '0000415157',\n    '0000411552',\n    '0000428769',\n    '0000426311',\n    '0000411561',\n    '0000425446',\n    '0000426707',\n    '0000417730',\n    '0000411703',\n    '0000418660',\n    '0000411779',\n    '0000433180',\n    '0000414403',\n    '0000413856',\n    '0000411817',\n    '0000422760',\n    '0000411925',\n    '0000112654',\n    '0000427876',\n    '0000412036',\n    '0000428178',\n    '0000414154',\n    '0000421755',\n    '0000412305',\n    '0000415156',\n    '0000416442',\n    '0000412509',\n    '0000416956',\n    '0000422225',\n    '0000414850',\n    '0000426118',\n    '0000424009',\n    '0000414126',\n    '0000421032',\n    '0000425112',\n    '0000412722',\n    '0000412758',\n    '0000433495',\n    '0000413497',\n    '0000416626',\n    '0000425236',\n    '0000412818',\n    '0000416717',\n    '0000421093',\n    '0000412854',\n    '0000416785',\n    '0000429131',\n    '0000420454',\n    '0000427428',\n    '0000415582',\n    '0000408846',\n    '0000415554',\n    '0000430279',\n    '0000415597',\n    '0000429586',\n    '0000408975',\n    '0000435663',\n    '0000433499',\n    '0000428029',\n    '0000419137',\n    '0000426166',\n    '0000420383',\n    '0000409122',\n    '0000413304',\n    '0000417084',\n    '0000430011',\n    '0000420471',\n    '0000422995',\n    '0000422996',\n    '0000423524',\n    '0000424908',\n    '0000428996',\n    '0000409622',\n    '0000409631',\n    '0000427736',\n    '0000430346',\n    '0000420116',\n    '0000416171',\n    '0000409884',\n    '0000425521',\n    '0000431356',\n    '0000417755',\n    '0000416903',\n    '0000421662',\n    '0000420755',\n    '0000429607',\n    '0000431615',\n    '0000425542',\n    '0000410480',\n    '0000425575',\n    '0000432026',\n    '0000414979',\n    '0000416302',\n    '0000413912',\n    '0000410733',\n    '0000426316',\n    '0000420215',\n    '0000418875',\n    '0000436190',\n    '0000418825',\n    '0000426640',\n    '0000430752',\n    '0000435403',\n    '0000422696',\n    '0000418893',\n    '0000427563',\n    '0000421972',\n    '0000426449',\n    '0000419048',\n    '0000427549',\n    '0000423015',\n    '0000411444',\n    '0000411478',\n    '0000414892',\n    '0000425641',\n    '0000411583',\n    '0000426656',\n    '0000423767',\n    '0000418807',\n    '0000424674',\n    '0000417458',\n    '0000438077',\n    '0000431349',\n    '0000435568',\n    '0000413306',\n    '0000411838',\n    '0000426172',\n    '0000416894',\n    '0000115489',\n    '0000413961',\n    '0000421375',\n    '0000412060',\n    '0000425095',\n    '0000424540',\n    '0000412167',\n    '0000428946',\n    '0000418044',\n    '0000412210',\n    '0000417874',\n    '0000416201',\n    '0000421878',\n    '0000415774',\n    '0000424775',\n    '0000426762',\n    '0000418336',\n    '0000412516',\n    '0000427974',\n    '0000412554',\n    '0000416819',\n    '0000424003',\n    '0000432082',\n    '0000432134',\n    '0000412670',\n    '0000426489',\n    '0000423246',\n    '0000427537',\n    '0000413554',\n    '0000412814',\n    '0000416345',\n    '0000414640',\n    '0000426933',\n    '0000424269',\n    '0000415815',\n    '0000426247',\n    '0000420106',\n    '0000420756',\n    '0000421767',\n    '0000408788',\n    '0000426072',\n    '0000427351',\n    '0000425075',\n    '0000431430',\n    '0000422663',\n    '0000415228',\n    '0000430590',\n    '0000426245',\n    '0000429925',\n    '0000426329',\n    '0000427775',\n    '0000414520',\n    '0000423701',\n    '0000430019',\n    '0000428013',\n    '0000416639',\n    '0000409492',\n    '0000426778',\n    '0000417358',\n    '0000426193',\n    '0000415040',\n    '0000426792',\n    '0000416643',\n    '0000409791',\n    '0000415373',\n    '0000424861',\n    '0000428675',\n    '0000426127',\n    '0000423803',\n    '0000436143',\n    '0000435756',\n    '0000427773',\n    '0000427350',\n    '0000426156',\n    '0000427456',\n    '0000425117',\n    '0000414326',\n    '0000425040',\n    '0000431275',\n    '0000416797',\n    '0000428037',\n    '0000422638',\n    '0000430705',\n    '0000425601',\n    '0000418995',\n    '0000414674',\n    '0000433166',\n    '0000426088',\n    '0000433681',\n    '0000426702',\n    '0000429168',\n    '0000425190',\n    '0000426236',\n    '0000429881',\n    '0000430898',\n    '0000428153',\n    '0000426824',\n    '0000426157',\n    '0000426732',\n    '0000416165',\n    '0000426250',\n    '0000426143',\n    '0000410991',\n    '0000424987',\n    '0000424293',\n    '0000421827',\n    '0000429440',\n    '0000425483',\n    '0000432175',\n    '0000427871',\n    '0000424986',\n    '0000414861',\n    '0000424560',\n    '0000414280',\n    '0000428394',\n    '0000419018',\n    '0000426481',\n    '0000422139',\n    '0000425255',\n    '0000425957',\n    '0000427511',\n    '0000423915',\n    '0000427067',\n    '0000425482',\n    '0000411614',\n    '0000426119',\n    '0000424887',\n    '0000426832',\n    '0000416774',\n    '0000426153',\n    '0000428707',\n    '0000411815',\n    '0000429474',\n    '0000416444',\n    '0000431408',\n    '0000428727',\n    '0000424272',\n    '0000416662',\n    '0000426486',\n    '0000424365',\n    '0000425399',\n    '0000423101',\n    '0000422094',\n    '0000416645',\n    '0000425959',\n    '0000426093',\n    '0000413805',\n    '0000420174',\n    '0000427335',\n    '0000412573',\n    '0000428495',\n    '0000414223',\n    '0000414017',\n    '0000426992',\n    '0000418379',\n    '0000424816',\n    '0000431379',\n    '0000429326',\n    '0000432667',\n    '0000417527',\n    '0000416157',\n    '0000409645',\n    '0000418781',\n    '0000426793',\n    '0000427069',\n    '0000424614',\n    '0000422795',\n    '0000425371',\n    '0000428625',\n    '0000423731',\n    '0000404022',\n    '0000423058',\n    '0000408745',\n    '0000408766',\n    '0000408769',\n    '0000421288',\n    '0000437977',\n    '0000417453',\n    '0000408795',\n    '0000424626',\n    '0000433674',\n    '0000408807',\n    '0000408811',\n    '0000426800',\n    '0000424819',\n    '0000414272',\n    '0000425285',\n    '0000427332',\n    '0000408886',\n    '0000423229',\n    '0000408896',\n    '0000408902',\n    '0000434905',\n    '0000432943',\n    '0000433154',\n    '0000425407',\n    '0000416758',\n    '0000424964',\n    '0000430524',\n    '0000436230',\n    '0000427981',\n    '0000421056',\n    '0000430727',\n    '0000409147',\n    '0000423852',\n    '0000416901',\n    '0000423771',\n    '0000428784',\n    '0000409199',\n    '0000430776',\n    '0000409217',\n    '0000409221',\n    '0000423729',\n    '0000429135',\n    '0000425287',\n    '0000409374',\n    '0000431584',\n    '0000409435',\n    '0000436268',\n    '0000409803',\n    '0000429379',\n    '0000409521',\n    '0000409523',\n    '0000414641',\n    '0000410176',\n    '0000411571',\n    '0000432889',\n    '0000438174',\n    '0000414193',\n    '0000409634',\n    '0000409646',\n    '0000432522',\n    '0000417043',\n    '0000409730',\n    '0000409765',\n    '0000431045',\n    '0000423341',\n    '0000425507',\n    '0000420903',\n    '0000409788',\n    '0000409789',\n    '0000423762',\n    '0000431529',\n    '0000415185',\n    '0000409862',\n    '0000413009',\n    '0000414169',\n    '0000409907',\n    '0000413754',\n    '0000438659',\n    '0000426744',\n    '0000425972',\n    '0000415777',\n    '0000414998',\n    '0000424216',\n    '0000410036',\n    '0000421725',\n    '0000410068',\n    '0000428592',\n    '0000428208',\n    '0000410173',\n    '0000415871',\n    '0000427626',\n    '0000419155',\n    '0000416439',\n    '0000430027',\n    '0000429508',\n    '0000416177',\n    '0000414290',\n    '0000421558',\n    '0000410301',\n    '0000432118',\n    '0000426877',\n    '0000427591',\n    '0000428759',\n    '0000410371',\n    '0000426582',\n    '0000410394',\n    '0000410413',\n    '0000410431',\n    '0000410436',\n    '0000410506',\n    '0000425695',\n    '0000410519',\n    '0000410545',\n    '0000410568',\n    '0000424755',\n    '0000423237',\n    '0000425956',\n    '0000424909',\n    '0000413634',\n    '0000428836',\n    '0000410678',\n    '0000423302',\n    '0000410705',\n    '0000413301',\n    '0000430967',\n    '0000410771',\n    '0000410794',\n    '0000417245',\n    '0000432843',\n    '0000410816',\n    '0000423104',\n    '0000425449',\n    '0000417271',\n    '0000410891',\n    '0000422250',\n    '0000428703',\n    '0000421354',\n    '0000411062',\n    '0000414845',\n    '0000431872',\n    '0000435624',\n    '0000423342',\n    '0000411153',\n    '0000411386',\n    '0000414107',\n    '0000420327',\n    '0000411249',\n    '0000417700',\n    '0000411375',\n    '0000422698',\n    '0000423730',\n    '0000430309',\n    '0000411407',\n    '0000423818',\n    '0000416550',\n    '0000411470',\n    '0000414919',\n    '0000423583',\n    '0000411507',\n    '0000411526',\n    '0000428823',\n    '0000417362',\n    '0000424627',\n    '0000414191',\n    '0000415307',\n    '0000411564',\n    '0000411565',\n    '0000411568',\n    '0000420262',\n    '0000436777',\n    '0000411578',\n    '0000419092',\n    '0000436141',\n    '0000435217',\n    '0000411605',\n    '0000411607',\n    '0000411627',\n    '0000427746',\n    '0000411644',\n    '0000415778',\n    '0000411665',\n    '0000411666',\n    '0000422075',\n    '0000426885',\n    '0000426442',\n    '0000411673',\n    '0000411679',\n    '0000417722',\n    '0000424754',\n    '0000411739',\n    '0000423442',\n    '0000414143',\n    '0000411830',\n    '0000426935',\n    '0000417334',\n    '0000415864',\n    '0000411859',\n    '0000411871',\n    '0000425651',\n    '0000411879',\n    '0000411882',\n    '0000411981',\n    '0000438951',\n    '0000411952',\n    '0000430906',\n    '0000112651',\n    '0000411982',\n    '0000411986',\n    '0000409095',\n    '0000419120',\n    '0000416825',\n    '0000412040',\n    '0000429515',\n    '0000417030',\n    '0000412124',\n    '0000425570',\n    '0000428680',\n    '0000430863',\n    '0000428632',\n    '0000421210',\n    '0000412163',\n    '0000431818',\n    '0000417025',\n    '0000423070',\n    '0000412271',\n    '0000425973',\n    '0000412272',\n    '0000412296',\n    '0000431527',\n    '0000423103',\n    '0000412385',\n    '0000434646',\n    '0000420055',\n    '0000412523',\n    '0000414147',\n    '0000423378',\n    '0000414590',\n    '0000429052',\n    '0000436047',\n    '0000412698',\n    '0000428451',\n    '0000414012',\n    '0000412724',\n    '0000412729',\n    '0000412757',\n    '0000421114',\n    '0000425164',\n    '0000414914',\n    '0000417694',\n    '0000438988',\n    '0000412872',\n    '0000417586',\n    '0000410914',\n    '0000419142',\n    '0000428760',\n    '0000414085',\n    '0000429542',\n    '0000412933',\n    '0000421425',\n    '0000412951',\n    '0000412981',\n    '0000413000',\n    '0000428593',\n    '0000413011',\n    '0000416308',\n    '0000426879',\n    '0000424650',\n    '0000408849',\n    '0000408858',\n    '0000425295',\n    '0000409007',\n    '0000416945',\n    '0000427862',\n    '0000415858',\n    '0000409326',\n    '0000416116',\n    '0000409375',\n    '0000436252',\n    '0000415089',\n    '0000416446',\n    '0000427913',\n    '0000410221',\n    '0000416195',\n    '0000410414',\n    '0000427924',\n    '0000410508',\n    '0000410676',\n    '0000410815',\n    '0000425099',\n    '0000410881',\n    '0000424635',\n    '0000425460',\n    '0000414853',\n    '0000434857',\n    '0000434404',\n    '0000411424',\n    '0000414764',\n    '0000423411',\n    '0000411563',\n    '0000411792',\n    '0000411847',\n    '0000424016',\n    '0000412022',\n    '0000412321',\n    '0000423732',\n    '0000412449',\n    '0000417726',\n    '0000414013',\n    '0000417019',\n    '0000412896',\n    '0000421799',\n    '0000412984',\n    '0000429536',\n    '0000408945',\n    '0000420686',\n    '0000416567',\n    '0000417297',\n    '0000409253',\n    '0000409278',\n    '0000409279',\n    '0000421772',\n    '0000411761',\n    '0000415353',\n    '0000409656',\n    '0000409739',\n    '0000425176',\n    '0000409819',\n    '0000409888',\n    '0000430369',\n    '0000418640',\n    '0000431573',\n    '0000421401',\n    '0000410395',\n    '0000410552',\n    '0000426027',\n    '0000434443',\n    '0000410691',\n    '0000410852',\n    '0000411070',\n    '0000411205',\n    '0000421590',\n    '0000423855',\n    '0000411397',\n    '0000415449',\n    '0000411486',\n    '0000416569',\n    '0000424843',\n    '0000427096',\n    '0000411734',\n    '0000430038',\n    '0000411878',\n    '0000411972',\n    '0000423195',\n    '0000412015',\n    '0000425127',\n    '0000422059',\n    '0000412099',\n    '0000426207',\n    '0000422146',\n    '0000429931',\n    '0000426038',\n    '0000432458',\n    '0000420128',\n    '0000412983',\n    '0000426708',\n    '0000426124',\n    '0000421154',\n    '0000418238',\n    '0000408830',\n    '0000408837',\n    '0000431206',\n    '0000431471',\n    '0000408866',\n    '0000428528',\n    '0000419118',\n    '0000426187',\n    '0000408917',\n    '0000415023',\n    '0000408959',\n    '0000416154',\n    '0000429756',\n    '0000409038',\n    '0000409039',\n    '0000424702',\n    '0000422722',\n    '0000417314',\n    '0000409072',\n    '0000409090',\n    '0000430963',\n    '0000416733',\n    '0000422618',\n    '0000431460',\n    '0000418871',\n    '0000414571',\n    '0000416871',\n    '0000416152',\n    '0000413587',\n    '0000409144',\n    '0000409149',\n    '0000431564',\n    '0000426186',\n    '0000432041',\n    '0000425920',\n    '0000409242',\n    '0000424969',\n    '0000414089',\n    '0000431715',\n    '0000416716',\n    '0000413784',\n    '0000416982',\n    '0000429112',\n    '0000424335',\n    '0000424230',\n    '0000427105',\n    '0000421697',\n    '0000431478',\n    '0000409483',\n    '0000409514',\n    '0000423034',\n    '0000416081',\n    '0000424218',\n    '0000416024',\n    '0000420765',\n    '0000422823',\n    '0000420426',\n    '0000416332',\n    '0000415076',\n    '0000409695',\n    '0000409698',\n    '0000409702',\n    '0000409703',\n    '0000422801',\n    '0000409711',\n    '0000415924',\n    '0000426563',\n    '0000409742',\n    '0000415519',\n    '0000409760',\n    '0000429722',\n    '0000418651',\n    '0000409806',\n    '0000415755',\n    '0000431602',\n    '0000409841',\n    '0000416219',\n    '0000418887',\n    '0000432962',\n    '0000431808',\n    '0000427349',\n    '0000426565',\n    '0000426851',\n    '0000423844',\n    '0000410010',\n    '0000410033',\n    '0000410047',\n    '0000417645',\n    '0000410070',\n    '0000410087',\n    '0000423648',\n    '0000432162',\n    '0000421804',\n    '0000427318',\n    '0000425368',\n    '0000428141',\n    '0000432898',\n    '0000427126',\n    '0000423788',\n    '0000432726',\n    '0000410323',\n    '0000419119',\n    '0000424390',\n    '0000431526',\n    '0000427543',\n    '0000431612',\n    '0000432151',\n    '0000427344',\n    '0000426668',\n    '0000422866',\n    '0000431505',\n    '0000429959',\n    '0000419004',\n    '0000413370',\n    '0000425690',\n    '0000410459',\n    '0000416119',\n    '0000426575',\n    '0000432822',\n    '0000429965',\n    '0000413371',\n    '0000415854',\n    '0000420993',\n    '0000432016',\n    '0000426054',\n    '0000422687',\n    '0000427102',\n    '0000431207',\n    '0000418373',\n    '0000424117',\n    '0000428513',\n    '0000429771',\n    '0000410683',\n    '0000429961',\n    '0000410696',\n    '0000430135',\n    '0000426317',\n    '0000426274',\n    '0000423692',\n    '0000432662',\n    '0000414665',\n    '0000417594',\n    '0000431389',\n    '0000410856',\n    '0000430571',\n    '0000429840',\n    '0000427377',\n    '0000416958',\n    '0000410889',\n    '0000410933',\n    '0000410953',\n    '0000427207',\n    '0000417104',\n    '0000429429',\n    '0000416297',\n    '0000422767',\n    '0000416175',\n    '0000428068',\n    '0000429784',\n    '0000415990',\n    '0000411045',\n    '0000431562',\n    '0000416333',\n    '0000433224',\n    '0000428111',\n    '0000426103',\n    '0000421570',\n    '0000424978',\n    '0000416282',\n    '0000415876',\n    '0000421251',\n    '0000411247',\n    '0000411259',\n    '0000435869',\n    '0000424200',\n    '0000432616',\n    '0000423088',\n    '0000433007',\n    '0000411360',\n    '0000432313',\n    '0000431042',\n    '0000422768',\n    '0000414584',\n    '0000411468',\n    '0000416080',\n    '0000427885',\n    '0000437987',\n    '0000428953',\n    '0000423311',\n    '0000411697',\n    '0000417409',\n    '0000429325',\n    '0000415751',\n    '0000411803',\n    '0000411812',\n    '0000411840',\n    '0000423117',\n    '0000420752',\n    '0000426733',\n    '0000421583',\n    '0000423664',\n    '0000429137',\n    '0000420622',\n    '0000431341',\n    '0000426986',\n    '0000411965',\n    '0000424265',\n    '0000413785',\n    '0000413786',\n    '0000423207',\n    '0000428522',\n    '0000412004',\n    '0000417669',\n    '0000425647',\n    '0000428114',\n    '0000435686',\n    '0000429363',\n    '0000417442',\n    '0000429495',\n    '0000421740',\n    '0000412195',\n    '0000425131',\n    '0000429593',\n    '0000415580',\n    '0000415324',\n    '0000412261',\n    '0000409107',\n    '0000415678',\n    '0000414029',\n    '0000414151',\n    '0000425243',\n    '0000424790',\n    '0000412308',\n    '0000413933',\n    '0000415666',\n    '0000413507',\n    '0000430713',\n    '0000412438',\n    '0000421343',\n    '0000420193',\n    '0000412459',\n    '0000412499',\n    '0000436556',\n    '0000415805',\n    '0000424233',\n    '0000412540',\n    '0000430230',\n    '0000429470',\n    '0000428456',\n    '0000421392',\n    '0000412602',\n    '0000426270',\n    '0000432544',\n    '0000415667',\n    '0000412651',\n    '0000426718',\n    '0000429315',\n    '0000429885',\n    '0000430744',\n    '0000423430',\n    '0000414975',\n    '0000428862',\n    '0000420157',\n    '0000412794',\n    '0000432778',\n    '0000432481',\n    '0000420901',\n    '0000424011',\n    '0000429707',\n    '0000416950',\n    '0000415653',\n    '0000429914',\n    '0000429886',\n    '0000427086',\n    '0000431686',\n    '0000424352',\n    '0000429381',\n    '0000422264',\n    '0000412973',\n    '0000417017',\n    '0000417341',\n    '0000417158',\n    '0000432048',\n    '0000429044',\n    '0000408974',\n    '0000436069',\n    '0000430089',\n    '0000431817',\n    '0000432680',\n    '0000435269',\n    '0000434117',\n    '0000432448',\n    '0000423077',\n    '0000423196',\n    '0000409011',\n    '0000429795',\n    '0000431257',\n    '0000416818',\n    '0000422871',\n    '0000435032',\n    '0000432984',\n    '0000410111',\n    '0000422213',\n    '0000425898',\n    '0000423017',\n    '0000435109',\n    '0000435130',\n    '0000422071',\n    '0000427049',\n    '0000420434',\n    '0000424235',\n    '0000427030',\n    '0000426466',\n    '0000436940',\n    '0000426831',\n    '0000424108',\n    '0000419037',\n    '0000431748',\n    '0000424462',\n    '0000424844',\n    '0000421127',\n    '0000434413',\n    '0000423608',\n    '0000418930',\n    '0000432373',\n    '0000424597',\n    '0000416629',\n    '0000408770',\n    '0000421564',\n    '0000408880',\n    '0000417175',\n    '0000408778',\n    '0000425894',\n    '0000416405',\n    '0000408782',\n    '0000408785',\n    '0000408791',\n    '0000437428',\n    '0000420676',\n    '0000408798',\n    '0000408800',\n    '0000408809',\n    '0000408813',\n    '0000408822',\n    '0000430072',\n    '0000429970',\n    '0000419115',\n    '0000408835',\n    '0000425207',\n    '0000408840',\n    '0000419157',\n    '0000408841',\n    '0000428167',\n    '0000408850',\n    '0000411177',\n    '0000432760',\n    '0000424328',\n    '0000432307',\n    '0000408871',\n    '0000438723',\n    '0000408875',\n    '0000415510',\n    '0000439054',\n    '0000408882',\n    '0000432360',\n    '0000408898',\n    '0000415847',\n    '0000414864',\n    '0000408903',\n    '0000408904',\n    '0000408905',\n    '0000416782',\n    '0000417394',\n    '0000428581',\n    '0000413891',\n    '0000408934',\n    '0000423758',\n    '0000418854',\n    '0000417806',\n    '0000408947',\n    '0000425000',\n    '0000408951',\n    '0000408957',\n    '0000414917',\n    '0000420156',\n    '0000417881',\n    '0000429820',\n    '0000415602',\n    '0000433147',\n    '0000412297',\n    '0000415980',\n    '0000409008',\n    '0000409014',\n    '0000416933',\n    '0000409036',\n    '0000414333',\n    '0000409048',\n    '0000409049',\n    '0000409053',\n    '0000427491',\n    '0000420297',\n    '0000414889',\n    '0000416689',\n    '0000409088',\n    '0000409098',\n    '0000409099',\n    '0000409100',\n    '0000415218',\n    '0000409045',\n    '0000426566',\n    '0000409113',\n    '0000417265',\n    '0000415676',\n    '0000409132',\n    '0000418726',\n    '0000413793',\n    '0000409135',\n    '0000424863',\n    '0000422144',\n    '0000428745',\n    '0000420419',\n    '0000425625',\n    '0000417779',\n    '0000409186',\n    '0000417312',\n    '0000409189',\n    '0000414360',\n    '0000425034',\n    '0000409198',\n    '0000416823',\n    '0000413444',\n    '0000415633',\n    '0000409201',\n    '0000414693',\n    '0000433163',\n    '0000409212',\n    '0000426439',\n    '0000426659',\n    '0000420832',\n    '0000409225',\n    '0000409237',\n    '0000414717',\n    '0000427336',\n    '0000413890',\n    '0000434836',\n    '0000435979',\n    '0000423071',\n    '0000431076',\n    '0000427458',\n    '0000435983',\n    '0000425477',\n    '0000413742',\n    '0000417577',\n    '0000415856',\n    '0000415868',\n    '0000414240',\n    '0000429689',\n    '0000439041',\n    '0000409299',\n    '0000416781',\n    '0000439232',\n    '0000423060',\n    '0000423385',\n    '0000427125',\n    '0000415675',\n    '0000414957',\n    '0000412726',\n    '0000415747',\n    '0000425523',\n    '0000409339',\n    '0000435425',\n    '0000415949',\n    '0000409355',\n    '0000438892',\n    '0000426139',\n    '0000416006',\n    '0000414439',\n    '0000409373',\n    '0000416383',\n    '0000415418',\n    '0000428375',\n    '0000421413',\n    '0000415467',\n    '0000426698',\n    '0000438021',\n    '0000417094',\n    '0000414512',\n    '0000409420',\n    '0000414219',\n    '0000417937',\n    '0000425232',\n    '0000436111',\n    '0000415568',\n    '0000414102',\n    '0000418780',\n    '0000409447',\n    '0000409456',\n    '0000413386',\n    '0000422222',\n    '0000409477',\n    '0000421150',\n    '0000425458',\n    '0000429753',\n    '0000422917',\n    '0000413869',\n    '0000409478',\n    '0000419085',\n    '0000415721',\n    '0000426198',\n    '0000427056',\n    '0000409490',\n    '0000417305',\n    '0000433676',\n    '0000423287',\n    '0000409501',\n    '0000418275',\n    '0000438765',\n    '0000423384',\n    '0000409536',\n    '0000409548',\n    '0000409550',\n    '0000432240',\n    '0000427551',\n    '0000420887',\n    '0000415630',\n    '0000409568',\n    '0000425316',\n    '0000415744',\n    '0000413310',\n    '0000410208',\n    '0000420802',\n    '0000431910',\n    '0000427357',\n    '0000415073',\n    '0000432876',\n    '0000418330',\n    '0000415174',\n    '0000427660',\n    '0000424085',\n    '0000429158',\n    '0000414521',\n    '0000414146',\n    '0000428742',\n    '0000413292',\n    '0000416397',\n    '0000432557',\n    '0000409613',\n    '0000431073',\n    '0000409614',\n    '0000416601',\n    '0000436312',\n    '0000409630',\n    '0000415412',\n    '0000426650',\n    '0000417713',\n    '0000409640',\n    '0000431722',\n    '0000414270',\n    '0000433240',\n    '0000414977',\n    '0000427097',\n    '0000417310',\n    '0000419086',\n    '0000409706',\n    '0000413472',\n    '0000417745',\n    '0000425495',\n    '0000433407',\n    '0000417825',\n    '0000409741',\n    '0000418213',\n    '0000417838',\n    '0000423456',\n    '0000409755',\n    '0000423794',\n    '0000409758',\n    '0000409766',\n    '0000427232',\n    '0000409771',\n    '0000424201',\n    '0000409778',\n    '0000416256',\n    '0000409780',\n    '0000431396',\n    '0000421226',\n    '0000418045',\n    '0000426391',\n    '0000420456',\n    '0000418868',\n    '0000409787',\n    '0000424742',\n    '0000409797',\n    '0000414811',\n    '0000414751',\n    '0000421895',\n    '0000409830',\n    '0000433035',\n    '0000420513',\n    '0000409857',\n    '0000425476',\n    '0000409865',\n    '0000409868',\n    '0000416020',\n    '0000409875',\n    '0000433213',\n    '0000413382',\n    '0000409886',\n    '0000430554',\n    '0000413538',\n    '0000410467',\n    '0000409892',\n    '0000409891',\n    '0000424012',\n    '0000417942',\n    '0000415109',\n    '0000414168',\n    '0000416013',\n    '0000427045',\n    '0000430283',\n    '0000420980',\n    '0000415937',\n    '0000417430',\n    '0000409935',\n    '0000416690',\n    '0000416779',\n    '0000409937',\n    '0000414322',\n    '0000416062',\n    '0000426285',\n    '0000429539',\n    '0000409965',\n    '0000421339',\n    '0000428713',\n    '0000413702',\n    '0000413522',\n    '0000409974',\n    '0000409977',\n    '0000418747',\n    '0000413594',\n    '0000409991',\n    '0000432352',\n    '0000410004',\n    '0000425548',\n    '0000432872',\n    '0000419172',\n    '0000434232',\n    '0000410016',\n    '0000421930',\n    '0000414305',\n    '0000410032',\n    '0000417835',\n    '0000425934',\n    '0000417630',\n    '0000414140',\n    '0000431742',\n    '0000436778',\n    '0000410055',\n    '0000423414',\n    '0000431137',\n    '0000414684',\n    '0000426666',\n    '0000410065',\n    '0000421367',\n    '0000421696',\n    '0000415475',\n    '0000410092',\n    '0000415814',\n    '0000410097',\n    '0000425902',\n    '0000414104',\n    '0000428297',\n    '0000410127',\n    '0000435808',\n    '0000410136',\n    '0000418130',\n    '0000410142',\n    '0000410148',\n    '0000417316',\n    '0000419149',\n    '0000413539',\n    '0000410177',\n    '0000423158',\n    '0000429733',\n    '0000410135',\n    '0000410185',\n    '0000410186',\n    '0000432038',\n    '0000410198',\n    '0000415357',\n    '0000410199',\n    '0000432042',\n    '0000409832',\n    '0000415369',\n    '0000431879',\n    '0000410215',\n    '0000421123',\n    '0000410227',\n    '0000433031',\n    '0000421873',\n    '0000424572',\n    '0000417213',\n    '0000433173',\n    '0000415032',\n    '0000418410',\n    '0000410236',\n    '0000410238',\n    '0000415866',\n    '0000410245',\n    '0000410247',\n    '0000410248',\n    '0000414002',\n    '0000414491',\n    '0000410250',\n    '0000410252',\n    '0000414472',\n    '0000410258',\n    '0000423134',\n    '0000413593',\n    '0000410281',\n    '0000426906',\n    '0000413694',\n    '0000414688',\n    '0000415711',\n    '0000439124',\n    '0000413325',\n    '0000438800',\n    '0000417710',\n    '0000410268',\n    '0000410329',\n    '0000410330',\n    '0000429617',\n    '0000413908',\n    '0000431461',\n    '0000423582',\n    '0000427718',\n    '0000424469',\n    '0000410351',\n    '0000410352',\n    '0000410353',\n    '0000314794',\n    '0000415900',\n    '0000410376',\n    '0000410378',\n    '0000422306',\n    '0000415458',\n    '0000425506',\n    '0000410397',\n    '0000410400',\n    '0000415901',\n    '0000422309',\n    '0000410419',\n    '0000414769',\n    '0000418295',\n    '0000414615',\n    '0000415250',\n    '0000416780',\n    '0000432471',\n    '0000416267',\n    '0000415763',\n    '0000439072',\n    '0000429473',\n    '0000410446',\n    '0000410454',\n    '0000430274',\n    '0000425078',\n    '0000410498',\n    '0000438960',\n    '0000411221',\n    '0000414513',\n    '0000427179',\n    '0000410551',\n    '0000410583',\n    '0000410584',\n    '0000429370',\n    '0000410587',\n    '0000414890',\n    '0000426525',\n    '0000413585',\n    '0000415317',\n    '0000417820',\n    '0000419084',\n    '0000416494',\n    '0000413637',\n    '0000418321',\n    '0000410622',\n    '0000422910',\n    '0000410626',\n    '0000416796',\n    '0000417268',\n    '0000427208',\n    '0000428640',\n    '0000410633',\n    '0000425006',\n    '0000410639',\n    '0000410640',\n    '0000414662',\n    '0000422681',\n    '0000415105',\n    '0000414784',\n    '0000417776',\n    '0000412913',\n    '0000416560',\n    '0000431648',\n    '0000424782',\n    '0000431492',\n    '0000425238',\n    '0000418158',\n    '0000432487',\n    '0000426422',\n    '0000432374',\n    '0000428342',\n    '0000416376',\n    '0000410699',\n    '0000424619',\n    '0000436042',\n    '0000410712',\n    '0000410720',\n    '0000416409',\n    '0000420169',\n    '0000417599',\n    '0000417359',\n    '0000429167',\n    '0000426734',\n    '0000434786',\n    '0000430681',\n    '0000414271',\n    '0000426783',\n    '0000428778',\n    '0000418630',\n    '0000410778',\n    '0000418759',\n    '0000415946',\n    '0000427297',\n    '0000410784',\n    '0000414031',\n    '0000438108',\n    '0000426400',\n    '0000415301',\n    '0000410802',\n    '0000414753',\n    '0000436217',\n    '0000422732',\n    '0000418252',\n    '0000431849',\n    '0000420945',\n    '0000426361',\n    '0000410811',\n    '0000416753',\n    '0000414680',\n    '0000410821',\n    '0000410825',\n    '0000410835',\n    '0000418771',\n    '0000414619',\n    '0000428895',\n    '0000416839',\n    '0000410847',\n    '0000416407',\n    '0000414748',\n    '0000421758',\n    '0000427602',\n    '0000434089',\n    '0000425219',\n    '0000410870',\n    '0000427267',\n    '0000410874',\n    '0000428506',\n    '0000424582',\n    '0000410878',\n    '0000410884',\n    '0000429761',\n    '0000423590',\n    '0000410892',\n    '0000439684',\n    '0000439698',\n    '0000415356',\n    '0000410903',\n    '0000426161',\n    '0000418283',\n    '0000439404',\n    '0000417770',\n    '0000420936',\n    '0000431874',\n    '0000427839',\n    '0000430338',\n    '0000410935',\n    '0000417355',\n    '0000413857',\n    '0000410948',\n    '0000410954',\n    '0000415807',\n    '0000415766',\n    '0000416720',\n    '0000425412',\n    '0000424018',\n    '0000432841',\n    '0000410973',\n    '0000415367',\n    '0000410974',\n    '0000410975',\n    '0000410976',\n    '0000410978',\n    '0000414884',\n    '0000417543',\n    '0000416371',\n    '0000424355',\n    '0000415915',\n    '0000418433',\n    '0000429438',\n    '0000413436',\n    '0000411013',\n    '0000428668',\n    '0000423431',\n    '0000425673',\n    '0000416185',\n    '0000414022',\n    '0000411034',\n    '0000426810',\n    '0000417267',\n    '0000431291',\n    '0000434024',\n    '0000417037',\n    '0000414817',\n    '0000427389',\n    '0000420214',\n    '0000411076',\n    '0000411080',\n    '0000423726',\n    '0000429760',\n    '0000413438',\n    '0000417814',\n    '0000411103',\n    '0000429390',\n    '0000422121',\n    '0000411119',\n    '0000435931',\n    '0000425646',\n    '0000411132',\n    '0000430102',\n    '0000411139',\n    '0000411143',\n    '0000415485',\n    '0000426113',\n    '0000427103',\n    '0000411151',\n    '0000422177',\n    '0000414427',\n    '0000420225',\n    '0000426618',\n    '0000414050',\n    '0000411173',\n    '0000433484',\n    '0000411178',\n    '0000424774',\n    '0000411187',\n    '0000411195',\n    '0000411202',\n    '0000426526',\n    '0000427370',\n    '0000414042',\n    '0000423862',\n    '0000413926',\n    '0000439832',\n    '0000431540',\n    '0000414564',\n    '0000415720',\n    '0000427624',\n    '0000411255',\n    '0000417672',\n    '0000417759',\n    '0000416974',\n    '0000424567',\n    '0000424830',\n    '0000430708',\n    '0000411272',\n    '0000413675',\n    '0000416750',\n    '0000424832',\n    '0000417660',\n    '0000423238',\n    '0000411350',\n    '0000434081',\n    '0000416227',\n    '0000416847',\n    '0000414685',\n    '0000416106',\n    '0000421789',\n    '0000416113',\n    '0000426886',\n    '0000415320',\n    '0000411321',\n    '0000411324',\n    '0000411325',\n    '0000411326',\n    '0000414230',\n    '0000432430',\n    '0000411345',\n    '0000413453',\n    '0000417482',\n    '0000424786',\n    '0000418371',\n    '0000424624',\n    '0000424828',\n    '0000422957',\n    '0000410389',\n    '0000409368',\n    '0000425213',\n    '0000413923',\n    '0000427374',\n    '0000415612',\n    '0000413914',\n    '0000411430',\n    '0000415419',\n    '0000428568',\n    '0000411443',\n    '0000417110',\n    '0000411449',\n    '0000411452',\n    '0000414838',\n    '0000439042',\n    '0000426522',\n    '0000422120',\n    '0000411490',\n    '0000411491',\n    '0000429338',\n    '0000425218',\n    '0000411495',\n    '0000423798',\n    '0000417702',\n    '0000415938',\n    '0000411506',\n    '0000429714',\n    '0000439324',\n    '0000425059',\n    '0000411514',\n    '0000431952',\n    '0000413271',\n    '0000423576',\n    '0000425700',\n    '0000411528',\n    '0000418374',\n    '0000424479',\n    '0000421637',\n    '0000415226',\n    '0000413739',\n    '0000427724',\n    '0000428870',\n    '0000418254',\n    '0000430567',\n    '0000417376',\n    '0000439616',\n    '0000411591',\n    '0000421015',\n    '0000426195',\n    '0000411632',\n    '0000432572',\n    '0000419123',\n    '0000429575',\n    '0000421579',\n    '0000411653',\n    '0000431984',\n    '0000411656',\n    '0000413517',\n    '0000411660',\n    '0000418155',\n    '0000413654',\n    '0000431329',\n    '0000421274',\n    '0000411685',\n    '0000417712',\n    '0000416973',\n    '0000427631',\n    '0000431343',\n    '0000411692',\n    '0000411694',\n    '0000424044',\n    '0000421237',\n    '0000424022',\n    '0000415695',\n    '0000425727',\n    '0000421966',\n    '0000415639',\n    '0000411708',\n    '0000423930',\n    '0000414663',\n    '0000411719',\n    '0000415655',\n    '0000425644',\n    '0000413909',\n    '0000411733',\n    '0000411736',\n    '0000431981',\n    '0000423642',\n    '0000423959',\n    '0000415052',\n    '0000417703',\n    '0000417917',\n    '0000413562',\n    '0000411771',\n    '0000426854',\n    '0000416879',\n    '0000411784',\n    '0000425619',\n    '0000417022',\n    '0000411787',\n    '0000430051',\n    '0000416556',\n    '0000413437',\n    '0000411833',\n    '0000425369',\n    '0000436545',\n    '0000432081',\n    '0000411860',\n    '0000411862',\n    '0000417311',\n    '0000413916',\n    '0000422248',\n    '0000411895',\n    '0000418642',\n    '0000411903',\n    '0000411906',\n    '0000425408',\n    '0000411913',\n    '0000413737',\n    '0000422319',\n    '0000425329',\n    '0000416525',\n    '0000424618',\n    '0000432415',\n    '0000425321',\n    '0000430358',\n    '0000417381',\n    '0000423132',\n    '0000426669',\n    '0000417828',\n    '0000411967',\n    '0000416698',\n    '0000428601',\n    '0000414108',\n    '0000411973',\n    '0000431105',\n    '0000431305',\n    '0000426719',\n    '0000418931',\n    '0000426938',\n    '0000423597',\n    '0000415232',\n    '0000412003',\n    '0000420492',\n    '0000417525',\n    '0000412009',\n    '0000412010',\n    '0000420384',\n    '0000420783',\n    '0000413925',\n    '0000415785',\n    '0000429798',\n    '0000421151',\n    '0000413290',\n    '0000412087',\n    '0000411912',\n    '0000415010',\n    '0000421935',\n    '0000416927',\n    '0000412114',\n    '0000415587',\n    '0000421698',\n    '0000428794',\n    '0000412126',\n    '0000412131',\n    '0000412133',\n    '0000429383',\n    '0000412149',\n    '0000425049',\n    '0000428366',\n    '0000412179',\n    '0000437513',\n    '0000434835',\n    '0000415251',\n    '0000434592',\n    '0000427542',\n    '0000412190',\n    '0000414188',\n    '0000416114',\n    '0000417565',\n    '0000416408',\n    '0000430729',\n    '0000412230',\n    '0000437765',\n    '0000429451',\n    '0000429762',\n    '0000426482',\n    '0000412244',\n    '0000420770',\n    '0000423656',\n    '0000412276',\n    '0000431893',\n    '0000416554',\n    '0000415979',\n    '0000416575',\n    '0000416576',\n    '0000416896',\n    '0000432598',\n    '0000423046',\n    '0000414860',\n    '0000428228',\n    '0000421949',\n    '0000414990',\n    '0000412330',\n    '0000414457',\n    '0000412332',\n    '0000425614',\n    '0000419106',\n    '0000412349',\n    '0000418681',\n    '0000412352',\n    '0000420158',\n    '0000415427',\n    '0000412374',\n    '0000417865',\n    '0000431497',\n    '0000423551',\n    '0000426868',\n    '0000415205',\n    '0000415426',\n    '0000421865',\n    '0000419180',\n    '0000414826',\n    '0000412427',\n    '0000412434',\n    '0000421227',\n    '0000425107',\n    '0000412455',\n    '0000412460',\n    '0000412479',\n    '0000421568',\n    '0000425008',\n    '0000412522',\n    '0000413586',\n    '0000412531',\n    '0000424497',\n    '0000436113',\n    '0000413687',\n    '0000412557',\n    '0000423408',\n    '0000425043',\n    '0000416172',\n    '0000412565',\n    '0000430950',\n    '0000427142',\n    '0000412628',\n    '0000417291',\n    '0000413741',\n    '0000425003',\n    '0000418192',\n    '0000427494',\n    '0000414555',\n    '0000415216',\n    '0000417777',\n    '0000414508',\n    '0000412686',\n    '0000417290',\n    '0000412688',\n    '0000430933',\n    '0000417416',\n    '0000415066',\n    '0000412694',\n    '0000415817',\n    '0000423637',\n    '0000412709',\n    '0000417140',\n    '0000418989',\n    '0000432785',\n    '0000437901',\n    '0000413487',\n    '0000417813',\n    '0000412770',\n    '0000423436',\n    '0000418423',\n    '0000418411',\n    '0000421175',\n    '0000413238',\n    '0000417083',\n    '0000417005',\n    '0000412815',\n    '0000434289',\n    '0000413479',\n    '0000432165',\n    '0000427239',\n    '0000426875',\n    '0000419045',\n    '0000427040',\n    '0000429747',\n    '0000423209',\n    '0000425076',\n    '0000424944',\n    '0000412884',\n    '0000417241',\n    '0000417304',\n    '0000412889',\n    '0000418932',\n    '0000416929',\n    '0000421559',\n    '0000412857',\n    '0000418117',\n    '0000418206',\n    '0000428961',\n    '0000414332',\n    '0000416604',\n    '0000417038',\n    '0000412947',\n    '0000416507',\n    '0000436183',\n    '0000432156',\n    '0000412952',\n    '0000412958',\n    '0000412962',\n    '0000412964',\n    '0000416706',\n    '0000423227',\n    '0000424285',\n    '0000416059',\n    '0000431915',\n    '0000412976',\n    '0000426742',\n    '0000412988',\n    '0000412991',\n    '0000412992',\n    '0000432004',\n    '0000414885',\n    '0000423606',\n    '0000417403',\n    '0000424116',\n    '0000413018',\n    '0000424942',\n    '0000413034',\n    '0000425083',\n    '0000425443',\n    '0000413043',\n    '0000415960',\n    '0000424068',\n    '0000431738',\n    '0000415829',\n    '0000413657',\n    '0000423459',\n    '0000433119',\n    '0000416135',\n    '0000422812',\n    '0000418925',\n    '0000430821',\n    '0000413057',\n    '0000423529',\n    '0000430236',\n    '0000424669',\n    '0000413061',\n    '0000417541',\n    '0000436414',\n    '0000421504',\n    '0000421243',\n    '0000421229',\n    '0000416863',\n    '0000431701',\n    '0000415366',\n    '0000423400',\n    '0000408906',\n    '0000408955',\n    '0000413435',\n    '0000417988',\n    '0000438639',\n    '0000420781',\n    '0000417664',\n    '0000425986',\n    '0000420654',\n    '0000409163',\n    '0000422869',\n    '0000414754',\n    '0000423870',\n    '0000418119',\n    '0000426352',\n    '0000417692',\n    '0000415764',\n    '0000416413',\n    '0000409303',\n    '0000409354',\n    '0000420099',\n    '0000409385',\n    '0000416778',\n    '0000423023',\n    '0000409430',\n    '0000415859',\n    '0000414964',\n    '0000422723',\n    '0000417836',\n    '0000427249',\n    '0000410666',\n    '0000410670',\n    '0000410685',\n    '0000411122',\n    '0000414249',\n    '0000416577',\n    '0000409616',\n    '0000426347',\n    '0000427632',\n    '0000436673',\n    '0000424401',\n    '0000421366',\n    '0000416995',\n    '0000413832',\n    '0000409901',\n    '0000417837',\n    '0000423718',\n    '0000422115',\n    '0000409986',\n    '0000416470',\n    '0000410023',\n    '0000425074',\n    '0000418316',\n    '0000425026',\n    '0000410062',\n    '0000410163',\n    '0000418441',\n    '0000425262',\n    '0000417542',\n    '0000436271',\n    '0000410226',\n    '0000410255',\n    '0000410275',\n    '0000421980',\n    '0000418175',\n    '0000410374',\n    '0000415617',\n    '0000426104',\n    '0000415176',\n    '0000424311',\n    '0000425901',\n    '0000415463',\n    '0000413442',\n    '0000426740',\n    '0000423200',\n    '0000415087',\n    '0000410611',\n    '0000410655',\n    '0000426835',\n    '0000434437',\n    '0000436204',\n    '0000414361',\n    '0000417324',\n    '0000418060',\n    '0000421889',\n    '0000410804',\n    '0000410810',\n    '0000416656',\n    '0000428755',\n    '0000426693',\n    '0000425441',\n    '0000426849',\n    '0000416090',\n    '0000423848',\n    '0000421803',\n    '0000427442',\n    '0000410969',\n    '0000420889',\n    '0000429681',\n    '0000410985',\n    '0000425935',\n    '0000410993',\n    '0000411009',\n    '0000411010',\n    '0000411015',\n    '0000411022',\n    '0000411031',\n    '0000426365',\n    '0000417953',\n    '0000411054',\n    '0000426387',\n    '0000418032',\n    '0000432461',\n    '0000411133',\n    '0000426802',\n    '0000436091',\n    '0000420746',\n    '0000422333',\n    '0000425718',\n    '0000424020',\n    '0000420052',\n    '0000411298',\n    '0000424427',\n    '0000423757',\n    '0000426197',\n    '0000416370',\n    '0000427417',\n    '0000411379',\n    '0000424454',\n    '0000424949',\n    '0000411515',\n    '0000416897',\n    '0000411580',\n    '0000415558',\n    '0000425252',\n    '0000436114',\n    '0000428034',\n    '0000411686',\n    '0000413848',\n    '0000411776',\n    '0000426704',\n    '0000435226',\n    '0000431740',\n    '0000429864',\n    '0000423705',\n    '0000411825',\n    '0000414226',\n    '0000423969',\n    '0000426977',\n    '0000421565',\n    '0000429494',\n    '0000423598',\n    '0000411966',\n    '0000412001',\n    '0000421788',\n    '0000419177',\n    '0000415466',\n    '0000425554',\n    '0000436672',\n    '0000412215',\n    '0000414895',\n    '0000412254',\n    '0000418212',\n    '0000422806',\n    '0000431899',\n    '0000412383',\n    '0000423175',\n    '0000412417',\n    '0000417345',\n    '0000422197',\n    '0000425225',\n    '0000426709',\n    '0000426818',\n    '0000415765',\n    '0000425031',\n    '0000424019',\n    '0000416406',\n    '0000427211',\n    '0000426723',\n    '0000413293',\n    '0000412867',\n    '0000426218',\n    '0000429201',\n    '0000416998',\n    '0000427656',\n    '0000421807',\n    '0000421102',\n    '0000424553',\n    '0000413019',\n    '0000413042',\n    '0000423162',\n    '0000424461',\n    '0000419063',\n    '0000417871',\n    '0000423955',\n    '0000416996',\n    '0000425139',\n    '0000428165',\n    '0000426527',\n    '0000408783',\n    '0000427160',\n    '0000416592',\n    '0000426528',\n    '0000415534',\n    '0000422254',\n    '0000413847',\n    '0000424208',\n    '0000414598',\n    '0000426045',\n    '0000409246',\n    '0000416450',\n    '0000425302',\n    '0000417261',\n    '0000417866',\n    '0000420944',\n    '0000423841',\n    '0000409625',\n    '0000409628',\n    '0000428831',\n    '0000428881',\n    '0000425597',\n    '0000410120',\n    '0000410140',\n    '0000416123',\n    '0000433404',\n    '0000424062',\n    '0000426487',\n    '0000422676',\n    '0000410619',\n    '0000415722',\n    '0000417850',\n    '0000426653',\n    '0000431176',\n    '0000410824',\n    '0000416454',\n    '0000415892',\n    '0000410939',\n    '0000417008',\n    '0000423829',\n    '0000416304',\n    '0000411075',\n    '0000426752',\n    '0000439386',\n    '0000417932',\n    '0000438879',\n    '0000431315',\n    '0000423360',\n    '0000423819',\n    '0000427941',\n    '0000430616',\n    '0000416076',\n    '0000426254',\n    '0000411768',\n    '0000411770',\n    '0000437069',\n    '0000421182',\n    '0000412147',\n    '0000422690',\n    '0000412387',\n    '0000412430',\n    '0000421902',\n    '0000412581',\n    '0000417769',\n    '0000423951',\n    '0000431884',\n    '0000429093',\n    '0000428916',\n    '0000426789',\n    '0000436331',\n    '0000420204',\n    '0000432015',\n    '0000408805',\n    '0000423188',\n    '0000408839',\n    '0000408867',\n    '0000432558',\n    '0000414745',\n    '0000414201',\n    '0000425715',\n    '0000416671',\n    '0000417168',\n    '0000415370',\n    '0000416381',\n    '0000413760',\n    '0000425922',\n    '0000409677',\n    '0000409712',\n    '0000414200',\n    '0000432389',\n    '0000409848',\n    '0000415811',\n    '0000430696',\n    '0000422229',\n    '0000431347',\n    '0000432696',\n    '0000434586',\n    '0000410229',\n    '0000414954',\n    '0000431429',\n    '0000428585',\n    '0000433724',\n    '0000415748',\n    '0000416148',\n    '0000415669',\n    '0000413892',\n    '0000426463',\n    '0000413689',\n    '0000421291',\n    '0000417896',\n    '0000430717',\n    '0000431734',\n    '0000424375',\n    '0000431140',\n    '0000431234',\n    '0000424723',\n    '0000420922',\n    '0000411203',\n    '0000411208',\n    '0000415222',\n    '0000411233',\n    '0000411245',\n    '0000415315',\n    '0000420448',\n    '0000426911',\n    '0000425604',\n    '0000432014',\n    '0000424048',\n    '0000431970',\n    '0000432391',\n    '0000433244',\n    '0000426100',\n    '0000430322',\n    '0000431965',\n    '0000413888',\n    '0000411938',\n    '0000430320',\n    '0000411987',\n    '0000426735',\n    '0000412016',\n    '0000427629',\n    '0000417805',\n    '0000429005',\n    '0000421389',\n    '0000415632',\n    '0000428448',\n    '0000412287',\n    '0000412317',\n    '0000430238',\n    '0000412401',\n    '0000414553',\n    '0000412439',\n    '0000432310',\n    '0000422122',\n    '0000423140',\n    '0000412534',\n    '0000420716',\n    '0000413980',\n    '0000424588',\n    '0000427793',\n    '0000438255',\n    '0000414677',\n    '0000408826',\n    '0000427657',\n    '0000433022',\n    '0000420795',\n    '0000408985',\n    '0000417100',\n    '0000409116',\n    '0000409157',\n    '0000416791',\n    '0000431951',\n    '0000420498',\n    '0000439083',\n    '0000417225',\n    '0000423761',\n    '0000422087',\n    '0000433051',\n    '0000409393',\n    '0000426859',\n    '0000409462',\n    '0000438066',\n    '0000430992',\n    '0000423898',\n    '0000428548',\n    '0000424609',\n    '0000420167',\n    '0000425120',\n    '0000429023',\n    '0000421012',\n    '0000423172',\n    '0000421100',\n    '0000409866',\n    '0000423097',\n    '0000409964',\n    '0000424030',\n    '0000423086',\n    '0000438952',\n    '0000431704',\n    '0000417886',\n    '0000421292',\n    '0000416681',\n    '0000429655',\n    '0000423901',\n    '0000426711',\n    '0000415064',\n    '0000427144',\n    '0000422691',\n    '0000430850',\n    '0000430262',\n    '0000421894',\n    '0000422171',\n    '0000433006',\n    '0000421250',\n    '0000425573',\n    '0000416902',\n    '0000422916',\n    '0000422678',\n    '0000423746',\n    '0000421866',\n    '0000418866',\n    '0000422152',\n    '0000429883',\n    '0000432685',\n    '0000424495',\n    '0000431966',\n    '0000429117',\n    '0000413295',\n    '0000423725',\n    '0000416579',\n    '0000425923',\n    '0000413709',\n    '0000424917',\n    '0000427286',\n    '0000428541',\n    '0000411684',\n    '0000416617',\n    '0000428855',\n    '0000428617',\n    '0000423044',\n    '0000432276',\n    '0000417976',\n    '0000421888',\n    '0000411983',\n    '0000433052',\n    '0000421569',\n    '0000428468',\n    '0000438679',\n    '0000412162',\n    '0000424712',\n    '0000436527',\n    '0000431373',\n    '0000413349',\n    '0000418031',\n    '0000426216',\n    '0000434453',\n    '0000412375',\n    '0000420433',\n    '0000419151',\n    '0000414678',\n    '0000412562',\n    '0000428531',\n    '0000426402',\n    '0000423994',\n    '0000427728',\n    '0000422189',\n    '0000427316',\n    '0000427988',\n    '0000423161',\n    '0000429585',\n    '0000430108',\n    '0000425914',\n    '0000413441',\n    '0000408848',\n    '0000438349',\n    '0000408916',\n    '0000433957',\n    '0000422251',\n    '0000438682',\n    '0000433411',\n    '0000438431',\n    '0000409028',\n    '0000423270',\n    '0000421096',\n    '0000415739',\n    '0000409084',\n    '0000430165',\n    '0000435813',\n    '0000413819',\n    '0000418339',\n    '0000415928',\n    '0000427583',\n    '0000433251',\n    '0000409334',\n    '0000429765',\n    '0000423293',\n    '0000422799',\n    '0000409433',\n    '0000432457',\n    '0000417775',\n    '0000431242',\n    '0000415826',\n    '0000414945',\n    '0000426692',\n    '0000421576',\n    '0000429791',\n    '0000409692',\n    '0000435427',\n    '0000418113',\n    '0000426364',\n    '0000438142',\n    '0000423285',\n    '0000428580',\n    '0000416243',\n    '0000431536',\n    '0000432456',\n    '0000430608',\n    '0000410022',\n    '0000416047',\n    '0000416100',\n    '0000431106',\n    '0000435702',\n    '0000410166',\n    '0000419051',\n    '0000427992',\n    '0000410187',\n    '0000416000',\n    '0000431805',\n    '0000417398',\n    '0000422268',\n    '0000410284',\n    '0000427587',\n    '0000416762',\n    '0000431986',\n    '0000438663',\n    '0000410295',\n    '0000427831',\n    '0000410348',\n    '0000431308',\n    '0000437827',\n    '0000424397',\n    '0000430385',\n    '0000414255',\n    '0000416540',\n    '0000419183',\n    '0000422870',\n    '0000416850',\n    '0000410536',\n    '0000426363',\n    '0000415641',\n    '0000416521',\n    '0000410638',\n    '0000431182',\n    '0000417514',\n    '0000414768',\n    '0000432318',\n    '0000431126',\n    '0000428239',\n    '0000425574',\n    '0000415821',\n    '0000428162',\n    '0000430872',\n    '0000437944',\n    '0000431284',\n    '0000425607',\n    '0000413917',\n    '0000410913',\n    '0000414722',\n    '0000425151',\n    '0000421913',\n    '0000432425',\n    '0000423872',\n    '0000424460',\n    '0000439084',\n    '0000430383',\n    '0000416722',\n    '0000428014',\n    '0000427910',\n    '0000433402',\n    '0000411120',\n    '0000426736',\n    '0000436908',\n    '0000433474',\n    '0000431111',\n    '0000430470',\n    '0000422798',\n    '0000420079',\n    '0000427161',\n    '0000431948',\n    '0000426300',\n    '0000431680',\n    '0000423219',\n    '0000423907',\n    '0000415046',\n    '0000432950',\n    '0000411481',\n    '0000416412',\n    '0000411625',\n    '0000429778',\n    '0000427325',\n    '0000430491',\n    '0000427087',\n    '0000430514',\n    '0000430785',\n    '0000431131',\n    '0000416552',\n    '0000423756',\n    '0000421501',\n    '0000423299',\n    '0000429994',\n    '0000425384',\n    '0000415985',\n    '0000412138',\n    '0000412208',\n    '0000421217',\n    '0000412245',\n    '0000432470',\n    '0000412354',\n    '0000439013',\n    '0000412360',\n    '0000412372',\n    '0000412397',\n    '0000422124',\n    '0000412834',\n    '0000412489',\n    '0000412496',\n    '0000412500',\n    '0000412511',\n    '0000415991',\n    '0000434454',\n    '0000423178',\n    '0000412569',\n    '0000413827',\n    '0000418826',\n    '0000424991',\n    '0000415151',\n    '0000433377',\n    '0000412885',\n    '0000412901',\n    '0000428154',\n    '0000437838',\n    '0000417089',\n    '0000427561',\n    '0000412970',\n    '0000413015',\n    '0000417212',\n    '0000429089',\n    '0000429212',\n    '0000434854',\n    '0000434339',\n    '0000439426',\n    '0000438940',\n    '0000430548',\n    '0000418140',\n    '0000430394',\n    '0000427648',\n    '0000413253',\n    '0000412732',\n    '0000424955',\n    '0000420656',\n    '0000424670',\n    '0000409934',\n    '0000429808',\n    '0000415665',\n    '0000427886',\n    '0000421349',\n    '0000426189',\n    '0000423869',\n    '0000432405',\n    '0000429993',\n    '0000427778',\n    '0000415137',\n    '0000423381',\n    '0000431142',\n    '0000430852',\n    '0000430268',\n    '0000425598',\n    '0000424047',\n    '0000430939',\n    '0000427553',\n    '0000414095',\n    '0000427806',\n    '0000431108',\n    '0000430304',\n    '0000427892',\n    '0000429448',\n    '0000429884',\n    '0000429837',\n    '0000408784',\n    '0000423000',\n    '0000431069',\n    '0000416058',\n    '0000417246',\n    '0000413376',\n    '0000422851',\n    '0000408776',\n    '0000423365',\n    '0000408804',\n    '0000408855',\n    '0000415487',\n    '0000414364',\n    '0000408909',\n    '0000422902',\n    '0000414267',\n    '0000439319',\n    '0000432219',\n    '0000413481',\n    '0000428025',\n    '0000423406',\n    '0000409120',\n    '0000435927',\n    '0000415196',\n    '0000416987',\n    '0000409371',\n    '0000426586',\n    '0000423523',\n    '0000426583',\n    '0000416623',\n    '0000422720',\n    '0000409610',\n    '0000436786',\n    '0000419185',\n    '0000428088',\n    '0000409877',\n    '0000415482',\n    '0000413828',\n    '0000425372',\n    '0000417559',\n    '0000422157',\n    '0000410085',\n    '0000419025',\n    '0000431258',\n    '0000433317',\n    '0000416483',\n    '0000410160',\n    '0000410170',\n    '0000413830',\n    '0000421244',\n    '0000428285',\n    '0000415786',\n    '0000414789',\n    '0000410259',\n    '0000410285',\n    '0000418418',\n    '0000408749',\n    '0000414496',\n    '0000430407',\n    '0000426298',\n    '0000410396',\n    '0000431550',\n    '0000428952',\n    '0000422073',\n    '0000410442',\n    '0000421647',\n    '0000410473',\n    '0000434499',\n    '0000439006',\n    '0000425030',\n    '0000425950',\n    '0000432915',\n    '0000425405',\n    '0000422283',\n    '0000429368',\n    '0000422824',\n    '0000410752',\n    '0000432172',\n    '0000425492',\n    '0000410742',\n    '0000410972',\n    '0000411057',\n    '0000411107',\n    '0000428572',\n    '0000433002',\n    '0000431472',\n    '0000435265',\n    '0000423979',\n    '0000421816',\n    '0000417399',\n    '0000414820',\n    '0000432521',\n    '0000417126',\n    '0000411484',\n    '0000436888',\n    '0000416676',\n    '0000411521',\n    '0000411590',\n    '0000431617',\n    '0000411613',\n    '0000429258',\n    '0000431907',\n    '0000420778',\n    '0000424395',\n    '0000411774',\n    '0000419117',\n    '0000417069',\n    '0000429813',\n    '0000438701',\n    '0000412017',\n    '0000427224',\n    '0000415099',\n    '0000433611',\n    '0000428009',\n    '0000418735',\n    '0000422265',\n    '0000431599',\n    '0000416092',\n    '0000412326',\n    '0000412346',\n    '0000431614',\n    '0000412477',\n    '0000432202',\n    '0000432023',\n    '0000428369',\n    '0000423890',\n    '0000427321',\n    '0000432452',\n    '0000412919',\n    '0000425148',\n    '0000414638',\n    '0000424695',\n    '0000428364',\n    '0000427990',\n    '0000422921',\n    '0000413726',\n    '0000415925',\n    '0000420210',\n    '0000420753',\n    '0000438089',\n    '0000429677',\n    '0000408977',\n    '0000424346',\n    '0000438364',\n    '0000416860',\n    '0000423190',\n    '0000408750',\n    '0000408756',\n    '0000408765',\n    '0000415325',\n    '0000416385',\n    '0000417629',\n    '0000408825',\n    '0000428653',\n    '0000422084',\n    '0000424958',\n    '0000408863',\n    '0000408877',\n    '0000423145',\n    '0000408891',\n    '0000430303',\n    '0000408919',\n    '0000420982',\n    '0000417795',\n    '0000408950',\n    '0000408952',\n    '0000424242',\n    '0000408956',\n    '0000408960',\n    '0000408963',\n    '0000428768',\n    '0000408982',\n    '0000408989',\n    '0000415331',\n    '0000418279',\n    '0000408993',\n    '0000413529',\n    '0000428932',\n    '0000408997',\n    '0000414196',\n    '0000409022',\n    '0000410096',\n    '0000420060',\n    '0000409023',\n    '0000421267',\n    '0000415929',\n    '0000421955',\n    '0000413625',\n    '0000428573',\n    '0000424387',\n    '0000409127',\n    '0000409141',\n    '0000433056',\n    '0000409164',\n    '0000425132',\n    '0000421314',\n    '0000413286',\n    '0000409226',\n    '0000432855',\n    '0000438054',\n    '0000409243',\n    '0000410888',\n    '0000409247',\n    '0000409248',\n    '0000417223',\n    '0000422321',\n    '0000431665',\n    '0000410801',\n    '0000415006',\n    '0000409295',\n    '0000426612',\n    '0000409302',\n    '0000436254',\n    '0000415770',\n    '0000414835',\n    '0000428024',\n    '0000409345',\n    '0000436311',\n    '0000430075',\n    '0000417553',\n    '0000409384',\n    '0000409391',\n    '0000420392',\n    '0000409398',\n    '0000428846',\n    '0000424551',\n    '0000409404',\n    '0000424673',\n    '0000414429',\n    '0000416968',\n    '0000438796',\n    '0000416009',\n    '0000414804',\n    '0000409464',\n    '0000409467',\n    '0000435512',\n    '0000415288',\n    '0000409526',\n    '0000416145',\n    '0000429905',\n    '0000418836',\n    '0000409553',\n    '0000409562',\n    '0000409579',\n    '0000412157',\n    '0000417463',\n    '0000409590',\n    '0000409608',\n    '0000417511',\n    '0000414526',\n    '0000424853',\n    '0000431454',\n    '0000409648',\n    '0000409670',\n    '0000409678',\n    '0000409679',\n    '0000409723',\n    '0000415891',\n    '0000409752',\n    '0000409762',\n    '0000409764',\n    '0000414425',\n    '0000409772',\n    '0000423881',\n    '0000409790',\n    '0000409802',\n    '0000431518',\n    '0000409809',\n    '0000409812',\n    '0000409828',\n    '0000419010',\n    '0000416093',\n    '0000409849',\n    '0000409850',\n    '0000409864',\n    '0000429071',\n    '0000409882',\n    '0000409885',\n    '0000420235',\n    '0000409894',\n    '0000409898',\n    '0000422724',\n    '0000409909',\n    '0000419027',\n    '0000417827',\n    '0000423183',\n    '0000409940',\n    '0000414716',\n    '0000409956',\n    '0000409957',\n    '0000409958',\n    '0000422684',\n    '0000410001',\n    '0000431598',\n    '0000410011',\n    '0000410013',\n    '0000435308',\n    '0000410024',\n    '0000415878',\n    '0000428200',\n    '0000422200',\n    '0000410059',\n    '0000417649',\n    '0000427821',\n    '0000438795',\n    '0000410076',\n    '0000411487',\n    '0000414381',\n    '0000417550',\n    '0000413930',\n    '0000410105',\n    '0000410123',\n    '0000417396',\n    '0000415348',\n    '0000410143',\n    '0000423264',\n    '0000410151',\n    '0000410157',\n    '0000423138',\n    '0000416829',\n    '0000410190',\n    '0000415124',\n    '0000417118',\n    '0000413076',\n    '0000424276',\n    '0000410225',\n    '0000434976',\n    '0000417201',\n    '0000410231',\n    '0000421593',\n    '0000410253',\n    '0000430975',\n    '0000410262',\n    '0000420859',\n    '0000416390',\n    '0000410282',\n    '0000410289',\n    '0000417299',\n    '0000410290',\n    '0000410299',\n    '0000420864',\n    '0000410316',\n    '0000417943',\n    '0000410340',\n    '0000422090',\n    '0000410361',\n    '0000410362',\n    '0000423796',\n    '0000417350',\n    '0000410392',\n    '0000410406',\n    '0000410410',\n    '0000423240',\n    '0000410424',\n    '0000417557',\n    '0000410490',\n    '0000421967',\n    '0000414595',\n    '0000410562',\n    '0000428714',\n    '0000410589',\n    '0000410601',\n    '0000427961',\n    '0000410631',\n    '0000410649',\n    '0000424238',\n    '0000415840',\n    '0000410665',\n    '0000430251',\n    '0000429889',\n    '0000410677',\n    '0000424081',\n    '0000436438',\n    '0000422710',\n    '0000410700',\n    '0000432877',\n    '0000410717',\n    '0000415743',\n    '0000410729',\n    '0000410741',\n    '0000425116',\n    '0000422261',\n    '0000416147',\n    '0000433082',\n    '0000410767',\n    '0000409166',\n    '0000410772',\n    '0000415060',\n    '0000410798',\n    '0000410799',\n    '0000410807',\n    '0000410817',\n    '0000419079',\n    '0000418084',\n    '0000410828',\n    '0000410838',\n    '0000413846',\n    '0000415853',\n    '0000415954',\n    '0000422787',\n    '0000431307',\n    '0000425426',\n    '0000410857',\n    '0000424406',\n    '0000410864',\n    '0000427919',\n    '0000410880',\n    '0000410883',\n    '0000415563',\n    '0000415890',\n    '0000410907',\n    '0000410909',\n    '0000410917',\n    '0000432157',\n    '0000430587',\n    '0000417197',\n    '0000419022',\n    '0000424377',\n    '0000416053',\n    '0000410987',\n    '0000410992',\n    '0000410994',\n    '0000428905',\n    '0000424722',\n    '0000414331',\n    '0000429779',\n    '0000418035',\n    '0000413974',\n    '0000411035',\n    '0000424574',\n    '0000411038',\n    '0000414157',\n    '0000419091',\n    '0000411087',\n    '0000414903',\n    '0000414309',\n    '0000423948',\n    '0000411092',\n    '0000411099',\n    '0000415730',\n    '0000434231',\n    '0000411104',\n    '0000411105',\n    '0000411108',\n    '0000411112',\n    '0000439211',\n    '0000414023',\n    '0000411134',\n    '0000411124',\n    '0000429588',\n    '0000411167',\n    '0000431159',\n    '0000411168',\n    '0000411169',\n    '0000411171',\n    '0000423141',\n    '0000411176',\n    '0000420087',\n    '0000414435',\n    '0000411206',\n    '0000411209',\n    '0000411213',\n    '0000411222',\n    '0000418287',\n    '0000411229',\n    '0000411230',\n    '0000413327',\n    '0000411242',\n    '0000411250',\n    '0000411251',\n    '0000411254',\n    '0000414617',\n    '0000411265',\n    '0000422981',\n    '0000414799',\n    '0000422060',\n    '0000411331',\n    '0000411355',\n    '0000411357',\n    '0000419122',\n    '0000429829',\n    '0000436747',\n    '0000438511',\n    '0000431014',\n    '0000411389',\n    '0000423635',\n    '0000413556',\n    '0000411412',\n    '0000413284',\n    '0000414695',\n    '0000430915',\n    '0000411431',\n    '0000411432',\n    '0000411454',\n    '0000416277',\n    '0000414599',\n    '0000420861',\n    '0000411483',\n    '0000418862',\n    '0000417560',\n    '0000416557',\n    '0000411516',\n    '0000411517',\n    '0000420502',\n    '0000418157',\n    '0000415627',\n    '0000411525',\n    '0000411529',\n    '0000428438',\n    '0000411542',\n    '0000411579',\n    '0000416682',\n    '0000431205',\n    '0000411587',\n    '0000423265',\n    '0000422999',\n    '0000428399',\n    '0000411602',\n    '0000411609',\n    '0000411616',\n    '0000422317',\n    '0000411621',\n    '0000430489',\n    '0000411637',\n    '0000411642',\n    '0000411643',\n    '0000414703',\n    '0000411649',\n    '0000411067',\n    '0000420202',\n    '0000420035',\n    '0000411675',\n    '0000411680',\n    '0000414545',\n    '0000411681',\n    '0000420336',\n    '0000414137',\n    '0000418312',\n    '0000425940',\n    '0000411712',\n    '0000423258',\n    '0000411716',\n    '0000411717',\n    '0000424644',\n    '0000423236',\n    '0000411721',\n    '0000420855',\n    '0000411722',\n    '0000423061',\n    '0000411735',\n    '0000411745',\n    '0000420337',\n    '0000413707',\n    '0000411762',\n    '0000420902',\n    '0000419011',\n    '0000414082',\n    '0000411782',\n    '0000411785',\n    '0000415274',\n    '0000414014',\n    '0000426495',\n    '0000413283',\n    '0000411814',\n    '0000411816',\n    '0000411823',\n    '0000411832',\n    '0000411842',\n    '0000424850',\n    '0000415115',\n    '0000433111',\n    '0000422233',\n    '0000422088',\n    '0000434921',\n    '0000411867',\n    '0000411902',\n    '0000411908',\n    '0000419173',\n    '0000411919',\n    '0000411929',\n    '0000422230',\n    '0000411934',\n    '0000420625',\n    '0000413326',\n    '0000422695',\n    '0000421169',\n    '0000411957',\n    '0000416640',\n    '0000112631',\n    '0000411974',\n    '0000411984',\n    '0000411990',\n    '0000416122',\n    '0000415706',\n    '0000411998',\n    '0000428145',\n    '0000420514',\n    '0000412051',\n    '0000412055',\n    '0000412063',\n    '0000412070',\n    '0000414120',\n    '0000412082',\n    '0000417741',\n    '0000412093',\n    '0000412112',\n    '0000423575',\n    '0000412116',\n    '0000432944',\n    '0000423125',\n    '0000424550',\n    '0000412178',\n    '0000424338',\n    '0000412185',\n    '0000428101',\n    '0000412198',\n    '0000412204',\n    '0000412209',\n    '0000416146',\n    '0000412218',\n    '0000424729',\n    '0000412220',\n    '0000420056',\n    '0000412223',\n    '0000420137',\n    '0000418085',\n    '0000412238',\n    '0000412239',\n    '0000420440',\n    '0000433323',\n    '0000421294',\n    '0000423607',\n    '0000412270',\n    '0000412274',\n    '0000412290',\n    '0000412294',\n    '0000415677',\n    '0000430133',\n    '0000412319',\n    '0000414111',\n    '0000424045',\n    '0000412334',\n    '0000412339',\n    '0000437029',\n    '0000422253',\n    '0000412389',\n    '0000412400',\n    '0000412411',\n    '0000426946',\n    '0000435473',\n    '0000412437',\n    '0000412440',\n    '0000412454',\n    '0000412463',\n    '0000427118',\n    '0000412481',\n    '0000412494',\n    '0000423998',\n    '0000412533',\n    '0000416684',\n    '0000414770',\n    '0000418895',\n    '0000412579',\n    '0000412585',\n    '0000422846',\n    '0000412598',\n    '0000412606',\n    '0000413254',\n    '0000426674',\n    '0000432455',\n    '0000417009',\n    '0000429770',\n    '0000428596',\n    '0000425062',\n    '0000412633',\n    '0000412634',\n    '0000412635',\n    '0000412649',\n    '0000412663',\n    '0000438954',\n    '0000418969',\n    '0000412700',\n    '0000412701',\n    '0000412703',\n    '0000420416',\n    '0000412717',\n    '0000414621',\n    '0000423289',\n    '0000414696',\n    '0000412774',\n    '0000417778',\n    '0000422949',\n    '0000414476',\n    '0000412822',\n    '0000423617',\n    '0000414533',\n    '0000414043',\n    '0000412831',\n    '0000412841',\n    '0000422092',\n    '0000422872',\n    '0000412849',\n    '0000412852',\n    '0000412862',\n    '0000421094',\n    '0000412876',\n    '0000424999',\n    '0000434788',\n    '0000412906',\n    '0000424145',\n    '0000424106',\n    '0000416044',\n    '0000412938',\n    '0000412939',\n    '0000423566',\n    '0000427983',\n    '0000438307',\n    '0000412956',\n    '0000431052',\n    '0000426782',\n    '0000412963',\n    '0000423600',\n    '0000413810',\n    '0000415660',\n    '0000428023',\n    '0000417296',\n    '0000412996',\n    '0000414877',\n    '0000413002',\n    '0000413021',\n    '0000421842',\n    '0000413047',\n    '0000430517',\n    '0000425137',\n    '0000424292',\n    '0000436762',\n    '0000408935',\n    '0000416541',\n    '0000422617',\n    '0000414572',\n    '0000409062',\n    '0000423087',\n    '0000424536',\n    '0000409260',\n    '0000409381',\n    '0000412101',\n    '0000420176',\n    '0000409417',\n    '0000409475',\n    '0000427934',\n    '0000414000',\n    '0000416712',\n    '0000423555',\n    '0000422845',\n    '0000420349',\n    '0000409929',\n    '0000422882',\n    '0000422231',\n    '0000430966',\n    '0000430107',\n    '0000422214',\n    '0000416746',\n    '0000427787',\n    '0000410318',\n    '0000410354',\n    '0000420839',\n    '0000415952',\n    '0000431658',\n    '0000410469',\n    '0000424631',\n    '0000410597',\n    '0000428137',\n    '0000414563',\n    '0000410737',\n    '0000427516',\n    '0000419136',\n    '0000410822',\n    '0000436315',\n    '0000427419',\n    '0000410904',\n    '0000423563',\n    '0000422770',\n    '0000410989',\n    '0000413545',\n    '0000430444',\n    '0000414939',\n    '0000411253',\n    '0000411332',\n    '0000411446',\n    '0000425038',\n    '0000411652',\n    '0000414310',\n    '0000438927',\n    '0000434123',\n    '0000411693',\n    '0000423866',\n    '0000411711',\n    '0000426501',\n    '0000411801',\n    '0000424821',\n    '0000411901',\n    '0000411910',\n    '0000430448',\n    '0000430513',\n    '0000424714',\n    '0000412072',\n    '0000422896',\n    '0000412225',\n    '0000412233',\n    '0000416565',\n    '0000412318',\n    '0000412356',\n    '0000415953',\n    '0000412467',\n    '0000420717',\n    '0000430241',\n    '0000428986',\n    '0000423204',\n    '0000412959',\n    '0000424784',\n    '0000413770',\n    '0000427418',\n    '0000425484',\n    '0000422220',\n    '0000424025',\n    '0000421324',\n    '0000424478',\n    '0000427835',\n    '0000420665',\n    '0000420830',\n    '0000420072',\n    '0000420939',\n    '0000425970',\n    '0000420377',\n    '0000420190',\n    '0000419105',\n    '0000420316',\n    '0000421706',\n    '0000420940',\n    '0000424858',\n    '0000420445',\n    '0000422288',\n    '0000424616',\n    '0000421117',\n    '0000424268',\n    '0000420806',\n    '0000430955',\n    '0000422136',\n    '0000422305',\n    '0000432013',\n    '0000421809',\n    '0000420378',\n    '0000426615',\n    '0000420249',\n    '0000429615',\n    '0000431504',\n    '0000423782',\n    '0000422858',\n    '0000420261',\n    '0000420772',\n    '0000426827',\n    '0000423772',\n    '0000431595',\n    '0000427603',\n    '0000420835',\n    '0000420184',\n    '0000419132',\n    '0000428530',\n    '0000423975',\n    '0000425320',\n    '0000426215',\n    '0000428736',\n    '0000412761',\n    '0000414597',\n    '0000419104',\n    '0000420197',\n    '0000431118',\n    '0000430272',\n    '0000415191',\n    '0000420843',\n    '0000410234',\n    '0000415509',\n    '0000417944',\n    '0000435604',\n    '0000421188',\n    '0000420257',\n    '0000417148',\n    '0000420179',\n    '0000413328',\n    '0000424386',\n    '0000417474',\n    '0000431135',\n    '0000410553',\n    '0000410554',\n    '0000427084',\n    '0000420159',\n    '0000412943',\n    '0000421057',\n    '0000408747',\n    '0000408748',\n    '0000408752',\n    '0000415500',\n    '0000408768',\n    '0000417984',\n    '0000424056',\n    '0000408823',\n    '0000414855',\n    '0000408859',\n    '0000408861',\n    '0000416007',\n    '0000408881',\n    '0000408883',\n    '0000408889',\n    '0000413992',\n    '0000408893',\n    '0000414732',\n    '0000408900',\n    '0000408910',\n    '0000408914',\n    '0000408930',\n    '0000418011',\n    '0000414366',\n    '0000430949',\n    '0000409012',\n    '0000409013',\n    '0000409017',\n    '0000409020',\n    '0000409035',\n    '0000409037',\n    '0000414652',\n    '0000409635',\n    '0000409063',\n    '0000409065',\n    '0000423351',\n    '0000417166',\n    '0000418605',\n    '0000414502',\n    '0000409089',\n    '0000409096',\n    '0000413866',\n    '0000409117',\n    '0000416248',\n    '0000414339',\n    '0000409170',\n    '0000416456',\n    '0000418741',\n    '0000409183',\n    '0000422080',\n    '0000424348',\n    '0000417352',\n    '0000409232',\n    '0000409241',\n    '0000413379',\n    '0000417946',\n    '0000409283',\n    '0000414152',\n    '0000409301',\n    '0000422948',\n    '0000409307',\n    '0000409317',\n    '0000409320',\n    '0000428807',\n    '0000409335',\n    '0000409350',\n    '0000409377',\n    '0000409379',\n    '0000409383',\n    '0000409388',\n    '0000409392',\n    '0000418176',\n    '0000416561',\n    '0000409407',\n    '0000409413',\n    '0000415400',\n    '0000418878',\n    '0000409424',\n    '0000409436',\n    '0000409437',\n    '0000431630',\n    '0000409449',\n    '0000409457',\n    '0000421901',\n    '0000414032',\n    '0000424055',\n    '0000409499',\n    '0000421636',\n    '0000409511',\n    '0000409512',\n    '0000409515',\n    '0000415520',\n    '0000434562',\n    '0000409534',\n    '0000409545',\n    '0000416261',\n    '0000409551',\n    '0000409560',\n    '0000422105',\n    '0000416832',\n    '0000414493',\n    '0000409574',\n    '0000409596',\n    '0000409604',\n    '0000416198',\n    '0000409617',\n    '0000415249',\n    '0000415708',\n    '0000409627',\n    '0000420395',\n    '0000409675',\n    '0000409747',\n    '0000413285',\n    '0000411503',\n    '0000409783',\n    '0000418783',\n    '0000409820',\n    '0000409827',\n    '0000416594',\n    '0000415998',\n    '0000409852',\n    '0000410613',\n    '0000409863',\n    '0000417401',\n    '0000409870',\n    '0000429614',\n    '0000420504',\n    '0000409897',\n    '0000409920',\n    '0000409925',\n    '0000409928',\n    '0000413825',\n    '0000409945',\n    '0000415051',\n    '0000417315',\n    '0000409971',\n    '0000421230',\n    '0000409998',\n    '0000410006',\n    '0000410008',\n    '0000424841',\n    '0000410014',\n    '0000410020',\n    '0000410038',\n    '0000410043',\n    '0000415850',\n    '0000410060',\n    '0000410063',\n    '0000410066',\n    '0000410071',\n    '0000410080',\n    '0000410101',\n    '0000411510',\n    '0000410106',\n    '0000426766',\n    '0000410117',\n    '0000415355',\n    '0000410137',\n    '0000410139',\n    '0000413990',\n    '0000410146',\n    '0000410156',\n    '0000418857',\n    '0000410161',\n    '0000423247',\n    '0000410192',\n    '0000410195',\n    '0000410200',\n    '0000410203',\n    '0000410213',\n    '0000414337',\n    '0000410222',\n    '0000410242',\n    '0000424182',\n    '0000415227',\n    '0000410304',\n    '0000410307',\n    '0000413608',\n    '0000410317',\n    '0000410319',\n    '0000428380',\n    '0000410328',\n    '0000416341',\n    '0000410381',\n    '0000410383',\n    '0000410386',\n    '0000410387',\n    '0000414436',\n    '0000410399',\n    '0000423723',\n    '0000416459',\n    '0000410429',\n    '0000410470',\n    '0000435167',\n    '0000420707',\n    '0000410549',\n    '0000410581',\n    '0000410591',\n    '0000410596',\n    '0000422091',\n    '0000420500',\n    '0000420742',\n    '0000410657',\n    '0000417331',\n    '0000410671',\n    '0000410679',\n    '0000410682',\n    '0000414659',\n    '0000417504',\n    '0000410694',\n    '0000426146',\n    '0000410722',\n    '0000410731',\n    '0000410747',\n    '0000410762',\n    '0000413920',\n    '0000421327',\n    '0000416490',\n    '0000414544',\n    '0000413664',\n    '0000423797',\n    '0000410841',\n    '0000410861',\n    '0000421184',\n    '0000410896',\n    '0000410898',\n    '0000410910',\n    '0000410950',\n    '0000410960',\n    '0000411011',\n    '0000431569',\n    '0000426878',\n    '0000437666',\n    '0000437211',\n    '0000413691',\n    '0000411041',\n    '0000411060',\n    '0000411061',\n    '0000411073',\n    '0000411078',\n    '0000411089',\n    '0000411100',\n    '0000411102',\n    '0000411110',\n    '0000411129',\n    '0000413500',\n    '0000411186',\n    '0000411194',\n    '0000411235',\n    '0000411266',\n    '0000411270',\n    '0000417951',\n    '0000411274',\n    '0000411277',\n    '0000414033',\n    '0000416962',\n    '0000416581',\n    '0000415870',\n    '0000422670',\n    '0000411300',\n    '0000414402',\n    '0000411318',\n    '0000411322',\n    '0000411328',\n    '0000411346',\n    '0000417977',\n    '0000411370',\n    '0000419077',\n    '0000411382',\n    '0000411410',\n    '0000411414',\n    '0000416772',\n    '0000411428',\n    '0000416510',\n    '0000410728',\n    '0000416281',\n    '0000418062',\n    '0000411455',\n    '0000411457',\n    '0000411462',\n    '0000418010',\n    '0000414904',\n    '0000411498',\n    '0000411620',\n    '0000414477',\n    '0000411530',\n    '0000411534',\n    '0000424192',\n    '0000411576',\n    '0000418997',\n    '0000423547',\n    '0000416403',\n    '0000411617',\n    '0000421004',\n    '0000411624',\n    '0000411631',\n    '0000411640',\n    '0000411654',\n    '0000411661',\n    '0000411663',\n    '0000429469',\n    '0000411671',\n    '0000411676',\n    '0000423741',\n    '0000429652',\n    '0000411707',\n    '0000411710',\n    '0000411732',\n    '0000411753',\n    '0000415791',\n    '0000411772',\n    '0000411841',\n    '0000434851',\n    '0000415050',\n    '0000411865',\n    '0000411866',\n    '0000411888',\n    '0000424083',\n    '0000411897',\n    '0000411900',\n    '0000428107',\n    '0000411917',\n    '0000411947',\n    '0000411949',\n    '0000424171',\n    '0000411953',\n    '0000421236',\n    '0000416046',\n    '0000416816',\n    '0000414315',\n    '0000411970',\n    '0000425223',\n    '0000412030',\n    '0000412049',\n    '0000412050',\n    '0000413651',\n    '0000421005',\n    '0000415773',\n    '0000426866',\n    '0000412075',\n    '0000412077',\n    '0000416073',\n    '0000412091',\n    '0000412104',\n    '0000412106',\n    '0000412120',\n    '0000412125',\n    '0000412128',\n    '0000420730',\n    '0000412140',\n    '0000415843',\n    '0000412164',\n    '0000422634',\n    '0000414257',\n    '0000412175',\n    '0000427975',\n    '0000413564',\n    '0000412217',\n    '0000420413',\n    '0000412234',\n    '0000430151',\n    '0000413653',\n    '0000412241',\n    '0000412243',\n    '0000416637',\n    '0000412259',\n    '0000412262',\n    '0000412275',\n    '0000412277',\n    '0000412288',\n    '0000414058',\n    '0000413966',\n    '0000417053',\n    '0000412327',\n    '0000417332',\n    '0000418047',\n    '0000428504',\n    '0000412351',\n    '0000412378',\n    '0000412424',\n    '0000412426',\n    '0000412429',\n    '0000413758',\n    '0000413973',\n    '0000412480',\n    '0000413258',\n    '0000414822',\n    '0000412367',\n    '0000413831',\n    '0000412536',\n    '0000412553',\n    '0000412567',\n    '0000415471',\n    '0000422688',\n    '0000412575',\n    '0000409587',\n    '0000412576',\n    '0000414057',\n    '0000412600',\n    '0000412607',\n    '0000412620',\n    '0000412630',\n    '0000416229',\n    '0000417091',\n    '0000416691',\n    '0000413264',\n    '0000425275',\n    '0000412728',\n    '0000412753',\n    '0000412730',\n    '0000412738',\n    '0000409524',\n    '0000412739',\n    '0000416770',\n    '0000423343',\n    '0000412742',\n    '0000412743',\n    '0000412744',\n    '0000412745',\n    '0000412762',\n    '0000412769',\n    '0000412776',\n    '0000418082',\n    '0000414509',\n    '0000412782',\n    '0000412802',\n    '0000414253',\n    '0000432329',\n    '0000416477',\n    '0000412874',\n    '0000416496',\n    '0000412882',\n    '0000435225',\n    '0000414438',\n    '0000412895',\n    '0000421058',\n    '0000412920',\n    '0000412923',\n    '0000412924',\n    '0000412926',\n    '0000412928',\n    '0000413822',\n    '0000412931',\n    '0000412932',\n    '0000412942',\n    '0000430387',\n    '0000423123',\n    '0000412953',\n    '0000412965',\n    '0000413922',\n    '0000431692',\n    '0000412993',\n    '0000412997',\n    '0000414588',\n    '0000413036',\n    '0000413039',\n    '0000423534',\n    '0000413065',\n    '0000413066',\n    '0000415372',\n    '0000408820',\n    '0000418132',\n    '0000409010',\n    '0000416648',\n    '0000409076',\n    '0000409319',\n    '0000415762',\n    '0000423072',\n    '0000409409',\n    '0000417002',\n    '0000421776',\n    '0000423527',\n    '0000425263',\n    '0000414655',\n    '0000409851',\n    '0000417333',\n    '0000414800',\n    '0000410134',\n    '0000410196',\n    '0000410297',\n    '0000410377',\n    '0000418351',\n    '0000430951',\n    '0000423938',\n    '0000428075',\n    '0000410757',\n    '0000411052',\n    '0000423786',\n    '0000411111',\n    '0000411113',\n    '0000411144',\n    '0000422311',\n    '0000411313',\n    '0000411323',\n    '0000414131',\n    '0000411634',\n    '0000416329',\n    '0000421541',\n    '0000411700',\n    '0000414484',\n    '0000425297',\n    '0000423231',\n    '0000411861',\n    '0000414654',\n    '0000423939',\n    '0000415297',\n    '0000412081',\n    '0000412092',\n    '0000412111',\n    '0000434083',\n    '0000412130',\n    '0000412136',\n    '0000420046',\n    '0000417428',\n    '0000423787',\n    '0000412616',\n    '0000412640',\n    '0000414059',\n    '0000415490',\n    '0000412733',\n    '0000414372',\n    '0000413003',\n    '0000414856',\n    '0000422655',\n    '0000415183',\n    '0000418281',\n    '0000417060',\n    '0000428918',\n    '0000409444',\n    '0000409558',\n    '0000417978',\n    '0000436120',\n    '0000412224',\n    '0000411292',\n    '0000418066',\n    '0000414720',\n    '0000416107',\n    '0000410075',\n    '0000418286',\n    '0000418677',\n    '0000410145',\n    '0000417054',\n    '0000410493',\n    '0000410834',\n    '0000422267',\n    '0000410983',\n    '0000422649',\n    '0000411152',\n    '0000415701',\n    '0000421824',\n    '0000431426',\n    '0000411536',\n    '0000411738',\n    '0000416551',\n    '0000411928',\n    '0000411940',\n    '0000417960',\n    '0000427834',\n    '0000418739',\n    '0000424817',\n    '0000412188',\n    '0000423422',\n    '0000420840',\n    '0000427106',\n    '0000410264',\n    '0000412591',\n    '0000423314',\n    '0000414214',\n    '0000427155',\n    '0000418392',\n    '0000412957',\n    '0000426031',\n    '0000404023',\n    '0000408772',\n    '0000422848',\n    '0000428551',\n    '0000414314',\n    '0000421099',\n    '0000435112',\n    '0000408793',\n    '0000408815',\n    '0000428547',\n    '0000426122',\n    '0000428415',\n    '0000426787',\n    '0000408874',\n    '0000408888',\n    '0000408895',\n    '0000408915',\n    '0000408939',\n    '0000408976',\n    '0000427139',\n    '0000409004',\n    '0000409041',\n    '0000409052',\n    '0000430498',\n    '0000414092',\n    '0000428144',\n    '0000427584',\n    '0000422199',\n    '0000409055',\n    '0000418876',\n    '0000415897',\n    '0000428163',\n    '0000409058',\n    '0000421677',\n    '0000423541',\n    '0000409101',\n    '0000434638',\n    '0000409121',\n    '0000409140',\n    '0000433728',\n    '0000417252',\n    '0000409156',\n    '0000426553',\n    '0000429185',\n    '0000438078',\n    '0000409167',\n    '0000437593',\n    '0000426712',\n    '0000409169',\n    '0000409181',\n    '0000435228',\n    '0000424520',\n    '0000409192',\n    '0000427461',\n    '0000420203',\n    '0000409228',\n    '0000428210',\n    '0000409265',\n    '0000427921',\n    '0000418745',\n    '0000409826',\n    '0000436555',\n    '0000424602',\n    '0000420872',\n    '0000409356',\n    '0000415790',\n    '0000409362',\n    '0000426896',\n    '0000428645',\n    '0000438065',\n    '0000409426',\n    '0000409441',\n    '0000427158',\n    '0000422259',\n    '0000409542',\n    '0000409552',\n    '0000409573',\n    '0000421612',\n    '0000429417',\n    '0000409578',\n    '0000421545',\n    '0000437775',\n    '0000409638',\n    '0000413672',\n    '0000424084',\n    '0000409655',\n    '0000414385',\n    '0000424405',\n    '0000417549',\n    '0000426883',\n    '0000409708',\n    '0000438076',\n    '0000418196',\n    '0000416989',\n    '0000413937',\n    '0000415884',\n    '0000409801',\n    '0000409810',\n    '0000425111',\n    '0000414432',\n    '0000425152',\n    '0000438484',\n    '0000428997',\n    '0000416570',\n    '0000427263',\n    '0000430119',\n    '0000414746',\n    '0000426559',\n    '0000427903',\n    '0000409919',\n    '0000409951',\n    '0000409954',\n    '0000420183',\n    '0000409980',\n    '0000409987',\n    '0000431750',\n    '0000410029',\n    '0000410035',\n    '0000436452',\n    '0000420669',\n    '0000410054',\n    '0000427861',\n    '0000410077',\n    '0000410079',\n    '0000430600',\n    '0000426420',\n    '0000410128',\n    '0000430651',\n    '0000410132',\n    '0000420661',\n    '0000420364',\n    '0000436080',\n    '0000410183',\n    '0000410206',\n    '0000415515',\n    '0000410211',\n    '0000410212',\n    '0000410286',\n    '0000437081',\n    '0000432617',\n    '0000431378',\n    '0000410308',\n    '0000428900',\n    '0000438942',\n    '0000418806',\n    '0000436408',\n    '0000410412',\n    '0000414083',\n    '0000427222',\n    '0000410491',\n    '0000423710',\n    '0000427099',\n    '0000436099',\n    '0000414715',\n    '0000415223',\n    '0000430275',\n    '0000417862',\n    '0000427923',\n    '0000415799',\n    '0000410616',\n    '0000428671',\n    '0000410621',\n    '0000427661',\n    '0000410628',\n    '0000422191',\n    '0000425740',\n    '0000410653',\n    '0000422303',\n    '0000410715',\n    '0000410719',\n    '0000410144',\n    '0000425015',\n    '0000410759',\n    '0000410770',\n    '0000434353',\n    '0000417696',\n    '0000440258',\n    '0000440259',\n    '0000410862',\n    '0000417895',\n    '0000410876',\n    '0000439033',\n    '0000439854',\n    '0000423543',\n    '0000410919',\n    '0000410921',\n    '0000415197',\n    '0000430439',\n    '0000437582',\n    '0000413345',\n    '0000411063',\n    '0000431869',\n    '0000421615',\n    '0000411135',\n    '0000417082',\n    '0000433012',\n    '0000415310',\n    '0000433461',\n    '0000433336',\n    '0000411165',\n    '0000411239',\n    '0000421156',\n    '0000411243',\n    '0000418080',\n    '0000411262',\n    '0000435828',\n    '0000418245',\n    '0000423412',\n    '0000416115',\n    '0000411304',\n    '0000411337',\n    '0000411344',\n    '0000411354',\n    '0000433480',\n    '0000411369',\n    '0000423191',\n    '0000428575',\n    '0000411388',\n    '0000411399',\n    '0000420243',\n    '0000428804',\n    '0000432643',\n    '0000411509',\n    '0000429537',\n    '0000411557',\n    '0000417108',\n    '0000411584',\n    '0000430993',\n    '0000428159',\n    '0000411604',\n    '0000432844',\n    '0000420729',\n    '0000432107',\n    '0000411683',\n    '0000411695',\n    '0000425001',\n    '0000413904',\n    '0000430959',\n    '0000425669',\n    '0000411748',\n    '0000417910',\n    '0000425699',\n    '0000430395',\n    '0000423022',\n    '0000417134',\n    '0000415663',\n    '0000427645',\n    '0000438190',\n    '0000420407',\n    '0000426651',\n    '0000419041',\n    '0000417579',\n    '0000411956',\n    '0000419053',\n    '0000417519',\n    '0000432597',\n    '0000416296',\n    '0000413268',\n    '0000412005',\n    '0000427073',\n    '0000412034',\n    '0000425182',\n    '0000412046',\n    '0000412054',\n    '0000412062',\n    '0000424890',\n    '0000415898',\n    '0000429471',\n    '0000433431',\n    '0000416289',\n    '0000412113',\n    '0000413932',\n    '0000425183',\n    '0000412160',\n    '0000412189',\n    '0000420143',\n    '0000427554',\n    '0000419047',\n    '0000425478',\n    '0000438373',\n    '0000416605',\n    '0000417078',\n    '0000410905',\n    '0000416651',\n    '0000426324',\n    '0000412362',\n    '0000412368',\n    '0000435981',\n    '0000418760',\n    '0000500228',\n    '0000439423',\n    '0000412517',\n    '0000428507',\n    '0000428152',\n    '0000412550',\n    '0000412560',\n    '0000412571',\n    '0000427183',\n    '0000412631',\n    '0000414840',\n    '0000421801',\n    '0000418211',\n    '0000412673',\n    '0000412676',\n    '0000412693',\n    '0000415058',\n    '0000424613',\n    '0000427151',\n    '0000432271',\n    '0000417042',\n    '0000427068',\n    '0000412870',\n    '0000431348',\n    '0000412905',\n    '0000414874',\n    '0000412914',\n    '0000412969',\n    '0000413705',\n    '0000423081',\n    '0000413014',\n    '0000413016',\n    '0000433685',\n    '0000413025',\n    '0000425036',\n    '0000432028',\n    '0000438937',\n    '0000432108',\n    '0000431032',\n    '0000428300',\n    '0000436324',\n    '0000431780',\n    '0000423783',\n    '0000431991',\n    '0000426654',\n    '0000437436',\n    '0000431702',\n    '0000431481',\n    '0000436526',\n    '0000436787',\n    '0000439125',\n    '0000433149',\n    '0000428450',\n    '0000421313',\n    '0000408787',\n    '0000425961',\n    '0000408852',\n    '0000408876',\n    '0000425457',\n    '0000408922',\n    '0000438096',\n    '0000415988',\n    '0000416346',\n    '0000426910',\n    '0000424554',\n    '0000408995',\n    '0000409025',\n    '0000420192',\n    '0000415703',\n    '0000409092',\n    '0000420040',\n    '0000409139',\n    '0000420063',\n    '0000409146',\n    '0000409150',\n    '0000417899',\n    '0000437541',\n    '0000428856',\n    '0000425017',\n    '0000420380',\n    '0000434218',\n    '0000415330',\n    '0000425430',\n    '0000411181',\n    '0000411759',\n    '0000428202',\n    '0000424458',\n    '0000409347',\n    '0000417911',\n    '0000430541',\n    '0000415787',\n    '0000420831',\n    '0000409366',\n    '0000418604',\n    '0000409415',\n    '0000410695',\n    '0000409442',\n    '0000409482',\n    '0000432005',\n    '0000409518',\n    '0000420512',\n    '0000409537',\n    '0000416693',\n    '0000431218',\n    '0000422750',\n    '0000409804',\n    '0000409815',\n    '0000417085',\n    '0000409842',\n    '0000420038',\n    '0000420947',\n    '0000420140',\n    '0000409955',\n    '0000428168',\n    '0000420943',\n    '0000415818',\n    '0000418412',\n    '0000428906',\n    '0000427965',\n    '0000417306',\n    '0000423968',\n    '0000410113',\n    '0000429915',\n    '0000422725',\n    '0000430422',\n    '0000430830',\n    '0000410271',\n    '0000427520',\n    '0000410320',\n    '0000416108',\n    '0000421844',\n    '0000428313',\n    '0000421533',\n    '0000410511',\n    '0000421071',\n    '0000417851',\n    '0000430064',\n    '0000421645',\n    '0000420760',\n    '0000425200',\n    '0000431687',\n    '0000421365',\n    '0000416854',\n    '0000420653',\n    '0000427604',\n    '0000431202',\n    '0000422266',\n    '0000418437',\n    '0000428139',\n    '0000421278',\n    '0000427701',\n    '0000420457',\n    '0000410981',\n    '0000411068',\n    '0000422962',\n    '0000420674',\n    '0000414886',\n    '0000417015',\n    '0000417913',\n    '0000420670',\n    '0000411396',\n    '0000424160',\n    '0000420777',\n    '0000423257',\n    '0000411539',\n    '0000411541',\n    '0000417105',\n    '0000411586',\n    '0000437840',\n    '0000414004',\n    '0000426083',\n    '0000411641',\n    '0000428060',\n    '0000411664',\n    '0000433316',\n    '0000411725',\n    '0000411793',\n    '0000419165',\n    '0000418621',\n    '0000425192',\n    '0000437962',\n    '0000430380',\n    '0000426496',\n    '0000418059',\n    '0000411980',\n    '0000417395',\n    '0000412067',\n    '0000412105',\n    '0000422635',\n    '0000415153',\n    '0000414661',\n    '0000421010',\n    '0000424903',\n    '0000421095',\n    '0000417276',\n    '0000412212',\n    '0000412219',\n    '0000410937',\n    '0000420631',\n    '0000412265',\n    '0000419098',\n    '0000412298',\n    '0000426555',\n    '0000420272',\n    '0000412324',\n    '0000412345',\n    '0000417309',\n    '0000428358',\n    '0000422074',\n    '0000412398',\n    '0000416905',\n    '0000412538',\n    '0000412539',\n    '0000412551',\n    '0000412612',\n    '0000422860',\n    '0000424299',\n    '0000412725',\n    '0000412735',\n    '0000412748',\n    '0000432999',\n    '0000430823',\n    '0000435197',\n    '0000417319',\n    '0000422783',\n    '0000420624',\n    '0000435268',\n    '0000420994',\n    '0000420463',\n    '0000428255',\n    '0000417998',\n    '0000412922',\n    '0000432045',\n    '0000413717',\n    '0000415448',\n    '0000413060',\n    '0000439387',\n    '0000437237',\n    '0000436227',\n    '0000433807',\n    '0000435267',\n    '0000437916',\n    '0000438910',\n    '0000432669',\n    '0000436272',\n    '0000414019',\n    '0000408865',\n    '0000433351',\n    '0000408965',\n    '0000408999',\n    '0000417597',\n    '0000425903',\n    '0000409069',\n    '0000409091',\n    '0000418076',\n    '0000424700',\n    '0000409330',\n    '0000409346',\n    '0000417489',\n    '0000409382',\n    '0000414702',\n    '0000409414',\n    '0000413781',\n    '0000425113',\n    '0000432716',\n    '0000409549',\n    '0000427379',\n    '0000428229',\n    '0000409581',\n    '0000421614',\n    '0000409605',\n    '0000416074',\n    '0000431994',\n    '0000409721',\n    '0000409756',\n    '0000409781',\n    '0000432586',\n    '0000409854',\n    '0000416141',\n    '0000409873',\n    '0000409905',\n    '0000409946',\n    '0000410773',\n    '0000409990',\n    '0000417902',\n    '0000438208',\n    '0000413289',\n    '0000420680',\n    '0000422876',\n    '0000416724',\n    '0000420113',\n    '0000410174',\n    '0000431037',\n    '0000410223',\n    '0000426504',\n    '0000430250',\n    '0000431768',\n    '0000424339',\n    '0000427028',\n    '0000416503',\n    '0000410509',\n    '0000410532',\n    '0000425410',\n    '0000420894',\n    '0000421571',\n    '0000417026',\n    '0000420360',\n    '0000410692',\n    '0000413616',\n    '0000420041',\n    '0000410860',\n    '0000423382',\n    '0000410962',\n    '0000411003',\n    '0000428316',\n    '0000414247',\n    '0000422914',\n    '0000416555',\n    '0000411125',\n    '0000421956',\n    '0000411216',\n    '0000411257',\n    '0000431253',\n    '0000411365',\n    '0000411376',\n    '0000411390',\n    '0000423581',\n    '0000425121',\n    '0000411141',\n    '0000425672',\n    '0000411548',\n    '0000411630',\n    '0000411763',\n    '0000411795',\n    '0000422705',\n    '0000427971',\n    '0000422117',\n    '0000411945',\n    '0000412026',\n    '0000415757',\n    '0000435656',\n    '0000413843',\n    '0000412078',\n    '0000412096',\n    '0000416687',\n    '0000412702',\n    '0000412169',\n    '0000412173',\n    '0000412184',\n    '0000412197',\n    '0000420342',\n    '0000412240',\n    '0000426587',\n    '0000427255',\n    '0000423089',\n    '0000412442',\n    '0000412474',\n    '0000412498',\n    '0000412594',\n    '0000424273',\n    '0000414094',\n    '0000412687',\n    '0000420051',\n    '0000417032',\n    '0000412719',\n    '0000412736',\n    '0000412766',\n    '0000425056',\n    '0000412805',\n    '0000412806',\n    '0000417493',\n    '0000412817',\n    '0000416891',\n    '0000412847',\n    '0000425974',\n    '0000415207',\n    '0000416492',\n    '0000414413',\n    '0000426067',\n    '0000430568',\n    '0000431238',\n    '0000413029',\n    '0000420880',\n    '0000430756',\n    '0000408994',\n    '0000409073',\n    '0000425130',\n    '0000431465',\n    '0000413610',\n    '0000411256',\n    '0000411306',\n    '0000411547',\n    '0000428315',\n    '0000422183',\n    '0000422632',\n    '0000421186',\n    '0000408740',\n    '0000421546',\n    '0000414554',\n    '0000415243',\n    '0000418054',\n    '0000408821',\n    '0000408827',\n    '0000408844',\n    '0000408856',\n    '0000408862',\n    '0000429179',\n    '0000430764',\n    '0000418121',\n    '0000418448',\n    '0000408969',\n    '0000408970',\n    '0000408990',\n    '0000413567',\n    '0000409019',\n    '0000426513',\n    '0000424749',\n    '0000420630',\n    '0000409042',\n    '0000414144',\n    '0000414775',\n    '0000413951',\n    '0000409142',\n    '0000414380',\n    '0000413480',\n    '0000427143',\n    '0000416054',\n    '0000426384',\n    '0000422196',\n    '0000409210',\n    '0000421333',\n    '0000409314',\n    '0000413573',\n    '0000434476',\n    '0000426979',\n    '0000409380',\n    '0000409400',\n    '0000409403',\n    '0000426002',\n    '0000415545',\n    '0000409431',\n    '0000409468',\n    '0000409502',\n    '0000433971',\n    '0000414287',\n    '0000409821',\n    '0000418005',\n    '0000428591',\n    '0000432291',\n    '0000430335',\n    '0000409952',\n    '0000429650',\n    '0000415610',\n    '0000433065',\n    '0000429437',\n    '0000425170',\n    '0000417935',\n    '0000410373',\n    '0000410380',\n    '0000418856',\n    '0000421167',\n    '0000410408',\n    '0000410420',\n    '0000421726',\n    '0000410466',\n    '0000420422',\n    '0000410614',\n    '0000415782',\n    '0000424952',\n    '0000410711',\n    '0000416295',\n    '0000440257',\n    '0000410830',\n    '0000431064',\n    '0000433349',\n    '0000418645',\n    '0000410882',\n    '0000410915',\n    '0000415983',\n    '0000410923',\n    '0000433503',\n    '0000410946',\n    '0000411005',\n    '0000411030',\n    '0000411058',\n    '0000420271',\n    '0000411069',\n    '0000411094',\n    '0000427190',\n    '0000424864',\n    '0000428213',\n    '0000411200',\n    '0000416741',\n    '0000411212',\n    '0000411217',\n    '0000414585',\n    '0000414306',\n    '0000419074',\n    '0000418058',\n    '0000411381',\n    '0000411402',\n    '0000415059',\n    '0000426971',\n    '0000411535',\n    '0000413918',\n    '0000411545',\n    '0000411553',\n    '0000414426',\n    '0000425123',\n    '0000428120',\n    '0000429107',\n    '0000411672',\n    '0000410089',\n    '0000418396',\n    '0000426721',\n    '0000437164',\n    '0000415986',\n    '0000411773',\n    '0000415075',\n    '0000415594',\n    '0000426335',\n    '0000426383',\n    '0000430543',\n    '0000430036',\n    '0000416488',\n    '0000429789',\n    '0000412180',\n    '0000429703',\n    '0000437702',\n    '0000426517',\n    '0000418855',\n    '0000429213',\n    '0000428121',\n    '0000412269',\n    '0000417800',\n    '0000423273',\n    '0000426502',\n    '0000425332',\n    '0000412393',\n    '0000412436',\n    '0000417071',\n    '0000421168',\n    '0000412507',\n    '0000413761',\n    '0000412574',\n    '0000429831',\n    '0000421601',\n    '0000418929',\n    '0000430249',\n    '0000412683',\n    '0000412690',\n    '0000418221',\n    '0000412755',\n    '0000412765',\n    '0000415626',\n    '0000417765',\n    '0000412936',\n    '0000412941',\n    '0000420854',\n    '0000424226',\n    '0000428603',\n    '0000412998',\n    '0000412999',\n    '0000415165',\n    '0000408899',\n    '0000436123',\n    '0000435583',\n    '0000437594',\n    '0000434960',\n    '0000424186',\n    '0000438553',\n    '0000437683',\n    '0000439167',\n    '0000439924',\n    '0000437054',\n    '0000438730',\n    '0000435894',\n    '0000437897',\n    '0000439197',\n    '0000436850',\n    '0000436889',\n    '0000439617',\n    '0000439427',\n    '0000439849',\n    '0000439958',\n    '0000439433',\n    '0000439773',\n    '0000437918',\n    '0000432368',\n    '0000439729',\n    '0000439331',\n    '0000437548',\n    '0000437900',\n    '0000429254',\n    '0000439492',\n    '0000438627',\n    '0000439565',\n    '0000439759',\n    '0000439403',\n    '0000428022',\n    '0000439922',\n    '0000439945',\n    '0000439732',\n    '0000439870',\n    '0000439875',\n    '0000438866',\n    '0000439971',\n    '0000439150',\n    '0000437493',\n    '0000432903',\n    '0000437798',\n    '0000438514',\n    '0000435798',\n    '0000438705',\n    '0000439771',\n    '0000438706',\n    '0000439916',\n    '0000438480',\n    '0000437971',\n    '0000439501',\n    '0000439770',\n    '0000439979',\n    '0000439431',\n    '0000438167',\n    '0000439948',\n    '0000439383',\n    '0000438843',\n    '0000438314',\n    '0000437421',\n    '0000439974',\n    '0000438080',\n    '0000428363',\n    '0000440450',\n    '0000440436',\n    '0000440437',\n    '0000422679',\n    '0000440441',\n    '0000440481',\n    '0000435321',\n    '0000440455',\n    '0000440435',\n    '0000440424',\n    '0000440475',\n    '0000434464',\n    '0000429697',\n    '0000440008',\n    '0000440014',\n    '0000438293',\n    '0000440048',\n    '0000427882',\n    '0000439937',\n    '0000439882',\n    '0000440080',\n    '0000438640',\n    '0000440055',\n    '0000440105',\n    '0000438025',\n    '0000438100',\n    '0000440125',\n    '0000440052',\n    '0000423184',\n    '0000439234',\n    '0000440132',\n    '0000438603',\n    '0000439836',\n    '0000409899',\n    '0000434082',\n    '0000423906',\n    '0000440153',\n    '0000437424',\n    '0000440083',\n    '0000440152',\n    '0000438568',\n    '0000434763',\n    '0000440137',\n    '0000438876',\n    '0000440213',\n    '0000419036',\n    '0000440240',\n    '0000440198',\n    '0000440204',\n    '0000440236',\n    '0000435844',\n    '0000436525',\n    '0000439853',\n    '0000440211',\n    '0000437773',\n    '0000412006',\n    '0000412323',\n    '0000440297',\n    '0000422282',\n    '0000423601',\n    '0000440160',\n    '0000440254',\n    '0000434450',\n    '0000440265',\n    '0000426630',\n    '0000440383',\n    '0000432895',\n    '0000440255',\n    '0000440375',\n    '0000432017',\n    '0000437575',\n    '0000439089',\n    '0000438285',\n    '0000424017',\n    '0000440342',\n    '0000430578',\n    '0000439380',\n    '0000440379',\n    '0000435526',\n    '0000424194',\n    '0000426717',\n    '0000425626',\n    '0000434711',\n    '0000440456',\n    '0000428704',\n    '0000440461',\n    '0000427217',\n    '0000428628'\n]","import { LOCATION_CHANGE } from 'react-router-redux/reducer'\nimport jwtDecode from 'jwt-decode'\nimport { getLanguageSF } from '../ui/reducers'\nimport { getProfileConfigurationEmails } from '../profile-configuration/reducers'\n\nimport { getLanguage } from '../ui/reducers'\nimport { getSelectedCenter, getIsLowesCenter, getIsMkToolsCenter, getIsIkeaCenter, getNaturalStoneSpainCenterId, getCenterData, getIsEndiCenter, getHQCenterId, isEuropeOrIberia, isUsaOrCanada, isEuropeOrIberiaSalesOrg, isLatamSalesOrg, isApacSalesOrg } from '../centers/reducers'\nimport * as centers from '../centers/reducers'\nimport { PromotionRocketCustomersDataUSA5Percent } from '../../components/banners/banner-rocket/PromotionRocketCustomersDataUSA5Percent'\nimport { PromotionRocketCustomersDataUSA10Percent } from '../../components/banners/banner-rocket/PromotionRocketCustomersDataUSA10Percent'\nimport { getShippingAddresses } from '../shipping-addresses/reducers';\nimport moment from 'moment'\n\nexport const initState = {\n    isLogged: false,\n    username: null,\n    name: null,\n    email: null,\n    emailAAD: null,\n    token: null,\n    showModal: false,\n    showSSOModal: false,\n    showJTModal: false,\n    alert: null,\n    status: null,\n    impersonatedBy: null,\n    userType: null,\n    clientType: null,\n    salesOrg: null,\n    specialNames: [],\n    userPriceList: null,\n    //  discounts: [],\n    priceList: null,\n    lowes: false,\n    shippingAddresses: null,\n    shippingAddressesCenters: [],\n    seenOutletModal: false,\n    sapId: null,\n    lowesStoreDataIsLoading: false,\n    lowesStoreData: null,\n    multicart: false,\n    showPricesDisclaimer: true,\n    userCenter: null,\n    canViewNewOrders: false,\n    mandatoryChangePasswordOldPassword: null,\n    mandatoryChangePassword: false,\n    allProductsDiscounts: [],\n    userAuthorized: null,\n    showAskForEmailModal: false,\n    isCampaignAdmin: false,\n    showBannerComments: false,\n    aiRecommendations:false,\n    dataFromSalesforce: null,\n    emailUsedToLogin: null,\n    isDistributor: false,\n    hasWalkthrough: []\n}\n\nconst login = (state = initState, action) => {\n    switch (action.type) {\n        case LOCATION_CHANGE:\n            return Object.assign({}, state, { alert: null, status: null })\n        case 'FETCH_SPECIAL_NAMES_SUCCESS':\n            return Object.assign({}, state, { specialNames: action.specialNames })\n        case 'FETCH_USER_PRICE_LIST_SUCCESS':\n            return Object.assign({}, state, { userPriceList: action.priceList })\n        case 'SHOW_REDIRECT_SSO_MODAL':\n            return Object.assign({}, state, { showSSOModal: true })\n        case 'CLOSE_REDIRECT_SSO_MODAL':\n            return Object.assign({}, state, { showSSOModal: false })\n        case 'SHOW_REDIRECT_JT_MODAL':\n            return Object.assign({}, state, { showJTModal: true })\n        case 'CLOSE_REDIRECT_JT_MODAL':\n            return Object.assign({}, state, { showJTModal: false })\n        case 'SHOW_LOGIN_MODAL':\n            return Object.assign({}, state, { showModal: true })\n        case 'CLOSE_LOGIN_MODAL':\n            return Object.assign({}, state, { showModal: false, alert: null, status: null, mandatoryChangePassword: false })\n        case 'CLOSE_PRICES_DISCLAIMER':\n            return Object.assign({}, state, { showPricesDisclaimer: false })\n        case 'LOGIN_REQUIRED':\n            return Object.assign({}, state, { showModal: true, callbackCenter: action.callbackCenter, callbackSalesOrg: action.callbackSalesOrg, callback: action.callback, alert: `${action.payload.statusText}` })\n        case 'IMPERSONATE_PROCESS_FINISH':\n        case 'LOGIN_PROCESS_FINISH':\n            return Object.assign({}, state, { isLogged: true, showModal: false, showSSOModal: false, userimage: null, alert: null, userPriceList: null })\n        case 'SIMPLE_LOGIN_SUCCESS':\n        case 'SIMPLE_IMPERSONATE_SUCCESS':\n            const decoded = jwtDecode(action.token)\n            return Object.assign({}, state, {\n                username: decoded.login,\n                token: action.token,\n                name: decoded.name || decoded.login,\n                email: decoded.email,\n                emailAAD: decoded.emailAAD,\n                userType: decoded.type,\n                typeClient: decoded.typeClient,\n                impersonatedBy: decoded.impersonatedBy,\n                salesOrg: decoded.salesOrg,\n                lowes: decoded.lowes,\n                priceList: decoded.priceList,\n                seenOutletModal: false,\n                accountCreated: decoded.accountCreated,\n                multicart: decoded.multicart,\n                userCenter: decoded.userCenter,\n                canViewNewOrders: decoded.canViewNewOrders,\n                allProductsDiscounts: [],\n                aiRecommendations: decoded.aiRecomendations,\n                dataFromSalesforce: decoded.dataFromSalesForce,\n                emailUsedToLogin: decoded.emailUsedToLogin,\n                isDistributor: decoded.isDistributor\n            })\n        case 'CHECK_LOGIN_SUCCESS':\n            return { ...state, userAuthorized: action.userAuthorized }\n        case 'IMPERSONATE_PROCESS_FAILURE':\n        case 'LOGIN_PROCESS_FAILURE':\n            return Object.assign({}, state, { alert: action.statusText })\n        case 'GET_PRICE_LIST_SUCCESS':\n            const tokenDecoded = jwtDecode(action.token)\n            return Object.assign({}, state, {\n                priceList: tokenDecoded.priceList\n            })\n        case 'REMOVE_PRICE_LIST':\n            return Object.assign({}, state, {\n                priceList: []\n            })\n        case 'LOGOUT':\n            return {...initState}\n        case 'CREATE_ACCOUNT_SUCCESS':\n            return Object.assign({}, state, { alert: action.statusText, status: action.status })\n        case 'CREATE_ACCOUNT_FAILURE':\n            return Object.assign({}, state, { alert: action.statusText, status: action.status })\n        case 'RECOVER_PASSWORD_SUCCESS':\n            return Object.assign({}, state, { alert: action.statusText, status: action.status })\n        case 'RECOVER_PASSWORD_FAILURE':\n            return Object.assign({}, state, { alert: action.statusText, status: action.status })\n        case 'RESET_UI':\n            return Object.assign({}, state, { showModal: false, showSSOModal: false })\n        case 'DONT_SHOW_OUTLET_MODAL_AGAIN':\n            return Object.assign({}, state, { seenOutletModal: true })\n        case 'SET_SAP_ID':\n            return { ...state, sapId: action.sapId, simpleAccess: action.simpleAccess }\n        case 'FETCH_LOWES_STORE_DATA_REQUEST':\n            return { ...state, lowesStoreDataIsLoading: true }\n        case 'FETCH_LOWES_STORE_DATA_SUCCESS':\n            return { ...state, lowesStoreDataIsLoading: false, lowesStoreData: action.lowesStoreData }\n        case 'FETCH_LOWES_STORE_DATA_FAILURE':\n            return { ...state, lowesStoreDataIsLoading: false }\n        case 'MANDATORY_CHANGE_PASSWORD':\n            return {\n                ...state,\n                alert: action.alert,\n                status: 'warning',\n                mandatoryChangePasswordUsername: action.username,\n                mandatoryChangePasswordOldPassword: action.oldPassword,\n                mandatoryChangePassword: true\n            }\n        case 'MANDATORY_CHANGE_PASSWORD_REQUEST':\n            return Object.assign({}, state, { alert: null, status: null })\n        case 'MANDATORY_CHANGE_PASSWORD_NOT_MATCH':\n            return Object.assign({}, state, { alert: action.alert, status: 400 })\n        case 'MANDATORY_CHANGE_PASSWORD_SUCCESS':\n            return Object.assign({}, state, { mandatoryChangePassword: false, alert: action.alert, status: 'info' })\n        case 'MANDATORY_CHANGE_PASSWORD_FAILURE':\n            return Object.assign({}, state, { alert: action.alert, status: action.status })\n        case 'FETCH_PRODUCTS_DISCOUNTS_SUCCESS':\n            return { ...state, allProductsDiscounts: action.discounts }\n        case 'FETCH_PRODUCTS_DISCOUNTS_FAILURE':\n            return Object.assign({}, state, { allProductsDiscounts: [] })\n        case 'SET_USER_EMAIL_AAD_SUCCESS':\n            return Object.assign({}, state, { showAskForEmailModal: false })\n        case 'TOGGLE_SHOW_ASK_FOR_EMAIL_MODAL':\n            return Object.assign({}, state, { showAskForEmailModal: !state.showAskForEmailModal })\n\n        case 'GET_IS_CAMPAIGN_ADMIN_REQUEST':\n            return { ...state, isCampaignAdmin: action.isCampaignAdmin }\n        case 'GET_IS_CAMPAIGN_ADMIN_SUCCESS':\n            return { ...state, isCampaignAdmin: action.isCampaignAdmin }\n        case 'GET_IS_CAMPAIGN_ADMIN_FAILURE':\n            return { ...state, isCampaignAdmin: action.isCampaignAdmin }\n        case 'HAS_FEEDBACK':\n            return Object.assign({}, state, { showBannerComments: action.response })\n        case 'FETCH_HAS_WALKTHROUGH_SUCCESS':\n            return Object.assign({}, state, { hasWalkthrough: action.hasWalkthrough })\n        default:\n            return state\n    }\n}\n\nexport const getToken = state => {\n    return state.login.token\n}\nexport const getUserAuthorization = state => {\n    return state.login.userAuthorized ? state.login.userAuthorized.authorized : ''\n}\nexport const showModalSelector = state => {\n    return state.login.showModal\n}\nexport const showRedirectSSOModal = state => {\n    return state.login.showSSOModal\n}\nexport const showRedirectJTModal = state => {\n    return state.login.showJTModal\n}\nexport const getIsLogging = state => {\n    return state.ui.isLogging\n}\nexport const getIsLogged = state => {\n    return state.login && state.login.isLogged\n}\nexport const getIsAdmin = state => {\n    if (state.login.userType === 'ADMIN') {\n        return true\n    } else {\n        return false\n    }\n}\nexport const getUserType = state => {\n    return state.login && state.login.userType\n}\nexport const getTypeClient = state => {\n    return (state.login.typeClient && state.login.typeClient !== '') ? state.login.typeClient : 1\n}\nexport const getTestAB = (state) => {\n    return 'A'\n}\nexport const getAlert = state => {\n    return state.login.alert\n}\nexport const getStatus = state => {\n    return state.login.status\n}\nexport const getUserName = state => {\n    return state.login.username\n}\nexport const getName = state => {\n    return state.login.name\n}\nexport const getEmail = state => {\n    return state.login.email\n}\nexport const getEmailAAD = state => {\n    return state.login.emailAAD\n}\nexport const getSalesOrg = state => {\n    return state.login.salesOrg\n}\n\nexport const getUserImage = state => {\n    return state.login.userimage\n}\nexport const getImpersonatedBy = state => {\n    return state.login.impersonatedBy\n}\nexport const getLoginCallback = state => {\n    return state.login.callback\n}\nexport const getCallbackCenter = state => {\n    return state.login.callbackCenter\n}\nexport const getCallbackSalesOrg = state => {\n    return state.login.callbackSalesOrg\n}\nexport const getSpecialNames = state => {\n    return state.login.specialNames\n}\nexport const getUserLowes = state => {\n    return state.login.lowes\n}\nexport const getHaveUserSeenOutletModal = state => {\n    return state.login.seenOutletModal\n}\nexport const getIsMktoolsAdmin = state => {\n    return (\n        state.login.userType === 'ADMIN' &&\n        (state.login.username === 'MKTOOLS' || state.login.username === 'MKTOOLSUSA' || state.login.username === 'TRADEMARKETING' || state.login.username === 'MKTUSA')\n    )\n}\nexport const getIsMallAdmin = state => {\n    let centerNames = ['OUTLET']\n    if (centerNames.includes(getImpersonatedBy(state))) return true\n\n    return state.login.userType === 'ADMIN' && state.login.username === 'OUTLET'\n}\nexport const getIsMallPilotUser = state => {\n    //SWITCH BETWEEN BLOCK 1 or BLOCK 2 to enable for every user or restrict only for pricing\n\n    //BLOCK1\n    return true\n    //BLOCK2\n    // let centerNames = ['PRICING']\n    // if (!getIsLogged(state)) return false\n    // if (centerNames.includes(getUserName(state))) return true\n    // if (centerNames.includes(getImpersonatedBy(state))) return true\n    // return false\n}\nexport const getIsCampaignsPilotUser = state => {\n    return !!state.login.isCampaignAdmin\n}\nexport const getIsShowBannerComments = state => {\n    return state.login.showBannerComments\n}\nexport const getIsCampaignsPricingUser = state => {\n    return state.login.isCampaignAdmin === 'PRICING' //&& false\n}\nexport const getIsDeviatedAdmin = state => {\n    return state.login.userType === 'ADMIN' && (state.login.username === 'RMCERRO' || state.login.username === 'CMARTINEZ')\n}\nexport const getIsMagazineMk = state => {\n    return state.login.username === 'MAGAZINEMK'\n}\nexport const getSapId = state => {\n    return state.login.sapId\n}\nexport const getIsLowesAdmin = state => {\n    return state.login.username === 'BRAD' || state.login.username === 'LOWESADMIN'\n}\nexport const getLowesStoreData = state => {\n    return state.login.lowesStoreData\n}\nexport const getUserPriceList = state => {\n    return state.login.userPriceList\n}\n// export const getUserDiscounts = state => {\n//     return state.login.discounts\n// }\nexport const getPriceList = state => {\n    return state.login.priceList\n}\nexport const getUserCenter = state => {\n    return state.login.userCenter\n}\n\nexport const getPriceListAtSelectedCenter = state => {\n    let priceList = []\n\n    if (getPriceList(state)) {\n        if (getSelectedCenter(state) == getNaturalStoneSpainCenterId()) return getPriceList(state)\n        priceList = getPriceList(state).filter(priceList => {\n            return priceList.centerId == getSelectedCenter(state)\n        })\n\n        //si estamos en el centro 1000, y el filter anterior no encuentra lista de precios valido.\n        if (getSelectedCenter(state) == 1100 && priceList && priceList.length == 0) {\n            priceList = getPriceList(state).filter(priceList => {\n                return priceList.salesOrg == centers.getCenterData(state).salesOrg\n            })\n        }\n    }\n\n    return priceList\n}\nexport const getMulticartEnabled = state => {\n    return state.login.multicart\n}\nexport const getVirtualVisitURL = state => {\n    try {\n        /* TODO por ahora subimos sin codificar.\n        let AES123Key = process.env.REACT_APP_AES128_KEY\n        var iv = \"eCommerceVectorB\" ;\n        var aesCBC = new aesJs.ModeOfOperation.cbc(aesJs.utils.utf8.toBytes(AES123Key),aesJs.utils.utf8.toBytes(iv))\n        */\n        let sfLang = getLanguageSF(state)\n        //Proccess Sap ID\n        let SapID = state.login.username\n        //let sapIDBytes = aesJs.utils.utf8.toBytes(state.login.username)\n        // let sapIDBytes = aesJs.utils.utf8.toBytes(\"TextMustBe16Byte\")\n\n        // let encryptedSapID = aesCBC.encrypt(sapIDBytes)\n        // var base64SapID = btoa(String.fromCharCode.apply(null,encryptedSapID ))\n\n        //Proccess email\n        //var base64Email = null\n        let emails = getProfileConfigurationEmails(state)\n        let email = null\n        if (emails && emails.length > 0) {\n            //  console.log(\"EMAIL \"+ emails[0])\n            email = emails[0]\n            // let encryptedEmail = aesCBC.encrypt(aesJs.utils.utf8.toBytes(emails[0]))\n            // base64Email = btoa(String.fromCharCode.apply(null,encryptedEmail))\n        }\n\n        let URLVirtualVisit = `${process.env.REACT_APP_SF_BOOKING_URL}?sapID=${state.login.username}${email ? '&email=' + email : ''}&language=${sfLang}`\n        return URLVirtualVisit\n    } catch (e) {\n        // console.log(e)\n    }\n}\nexport const getCommonParams = state => {\n    let commonParams = {}\n    if (getIsLogged(state)) {\n        if (getUserType(state) === 'ADMIN') {\n            commonParams = {\n                userId: getUserName(state),\n                idCenter: getSelectedCenter(state),\n                idCustomer: null,\n                idioma: getLanguage(state)\n            }\n        } else if (getImpersonatedBy(state)) {\n            commonParams = {\n                userId: getImpersonatedBy(state),\n                idCenter: getSelectedCenter(state),\n                idCustomer: getUserName(state),\n                idioma: getLanguage(state)\n            }\n        } else {\n            commonParams = {\n                userId: getUserName(state),\n                idCenter: getSelectedCenter(state),\n                idCustomer: getUserName(state),\n                idioma: getLanguage(state)\n            }\n        }\n    } else {\n        commonParams = {\n            userId: null,\n            idCenter: null,\n            idCustomer: null,\n            idioma: null\n        }\n    }\n\n    //global var for events\n    window.userId = commonParams.userId\n    window.idCenter = commonParams.idCenter\n    window.idCustomer = commonParams.idCustomer\n    window.idioma = commonParams.idioma\n    window.idSupplierCenter = getSelectedCenter(state)\n    window.crossType = hasAiRecommendations(state) ? 'dinamico' : 'estatico'\n    return commonParams\n}\n\nexport const showPricesDisclaimer = state => {\n    if (getIsLowesCenter(state) || getIsMkToolsCenter(state) || getIsIkeaCenter(state)) {\n        return false\n    }\n    return state.login.showPricesDisclaimer\n}\n\nexport const getMandatoryChangePasswordUsername = state => {\n    return state.login.mandatoryChangePasswordUsername\n}\n\nexport const getMandatoryChangePasswordOldPassword = state => {\n    return state.login.mandatoryChangePasswordOldPassword\n}\n\nexport const mandatoryChangePassword = state => {\n    return state.login.mandatoryChangePassword\n}\nexport const getShowAskForEmailModal = state => {\n    return state.login.showAskForEmailModal\n}\nexport const isEmserUser = state => {\n    return state.login.username === '0000410124'\n}\n\nexport const isSimpleAccess = state => {\n    return state.login.simpleAccess\n}\n\nexport const canViewCutToSize = state => {\n    // if (centerId) includes----\n    const centerData = getCenterData(state)\n    return centerData && centerData.access['CAN_VIEW_CUT_TO_SIZE']\n}\n\nexport const canViewPreorder = state => {\n    // if (centerId) includes----\n    const centerData = getCenterData(state)\n    return centerData && centerData.access['CAN_VIEW_PREORDER']\n}\n\nexport const canViewFurniture = state => {\n    // if (centerId) includes----\n    const centerData = getCenterData(state)\n    return centerData && centerData.access['CAN_VIEW_FURNITURE']\n}\n\nexport const canViewConfigurableBath = state => {\n    const centerData = getCenterData(state)\n    return centerData && centerData.access['CAN_VIEW_CONFIGURABLE_BATH']\n}\n\nexport const canViewV2 = state => {\n    const centerData = getCenterData(state)\n    return centerData && centerData.access && centerData.access['CAN_VIEW_V2']\n}\n\nexport const isUserDistributor = state => {\n    return state.login && state.login.isDistributor\n}\n\nexport const canViewNaturalStoneFromHQInOtherCenters = (state) => {\n    if (!getIsLogged(state)) return false\n    if (getIsEndiCenter(state)) return false\n    if (getSelectedCenter(state) === getHQCenterId()) return false\n    if (isEuropeOrIberia(state) !== null && !isEuropeOrIberia(state)) return false\n    if (getUserType(state) == 'ADMIN') return false\n    if (isUserDistributor(state)) return false\n\n    let channel11 = []\n    if (getShippingAddresses(state)) {\n        channel11 = getShippingAddresses(state).filter((shippingAddress) =>\n            shippingAddress.channel == 11\n        )\n    }\n    \n    if (channel11.length > 0) return false\n\n    let channel10 = []\n    if (getShippingAddresses(state)) {\n        channel10 = getShippingAddresses(state).filter((shippingAddress) =>\n            shippingAddress.centerId == '1100' && shippingAddress.channel == 10\n        )\n    }\n    \n    if (channel10.length > 0) return false\n\n    return true\n\n/*     if (!getIsLogged(state)) return false\n    if (getIsEndiCenter(state)) return false\n    if (getSelectedCenter(state) === getHQCenterId()) return false\n    if (getSelectedCenter(state) == 7500) return false\n    if (getUserType(state) === 'ADMIN') return false\n    if (isUserDistributor(state)) return false\n\n    let channel11 = []\n    if (getShippingAddresses(state)) {\n        channel11 = getShippingAddresses(state).filter(\n            (shippingAddress) => shippingAddress.channel == 11\n        )\n    }\n\n    if (channel11.length > 0) return false\n\n    let channel10 = []\n    if (getShippingAddresses(state)) {\n        channel10 = getShippingAddresses(state).filter(\n            (shippingAddress) =>\n                shippingAddress.centerId == '1100' && shippingAddress.channel == 10\n        )\n    }\n\n    if (channel10.length > 0) return false\n\n    return true */\n}\n\nexport const canViewNaturalStoneFromBrazilInOtherCenters = (state) => {\n    return false\n    /* if (!getIsLogged(state)) return false\n    if (getIsEndiCenter(state)) return false\n    if (getSelectedCenter(state) == 7500) return false\n    if (getSelectedCenter(state) === getHQCenterId()) return false\n    if (getUserType(state) == 'ADMIN') return false\n    if (isUserDistributor(state)) return false\n\n    let channel11 = []\n    if (getShippingAddresses(state)) {\n        channel11 = getShippingAddresses(state).filter(\n            (shippingAddress) => shippingAddress.channel == 11\n        )\n    }\n\n    if (channel11.length > 0) return false\n\n    let channel10 = []\n    if (getShippingAddresses(state)) {\n        channel10 = getShippingAddresses(state).filter(\n            (shippingAddress) =>\n                shippingAddress.centerId == '7500' && shippingAddress.channel == 10\n        )\n    }\n\n    if (channel10.length > 0) return false\n\n    if (isUsaOrCanada(state)) return true\n    if (isLatamSalesOrg(state)) return true\n    if (isApacSalesOrg(state)) return true\n\n    return false */\n}\n\nexport const getNaturalStoneViewingPermissions = (state) => {\n    const canViewHQ = canViewNaturalStoneFromHQInOtherCenters(state)\n    const canViewBrazil = canViewNaturalStoneFromBrazilInOtherCenters(state)\n\n    return {\n        canViewHQ: canViewHQ,\n        canViewBrazil: canViewBrazil,\n    }\n}\n\n\nexport const canViewBannerRecurring = state => {\n    const centerData = getCenterData(state)\n    return centerData && centerData.access && centerData.access['CAN_VIEW_BANNER_RECURRING']\n}\n\nexport const canViewCrosselling = state => {\n    const centerData = getCenterData(state)\n    const userType = getUserType(state)\n    return centerData && userType == 'CUSTOMER' && centerData.access['CAN_VIEW_CROSS_SELLING']\n}\n\nexport const hasAiRecommendations = state => {\n    return state.login && state.login.aiRecommendations\n}\nexport const getDataFromSalesforce = state => {\n    return state.login && state.login.dataFromSalesforce\n}\n\nexport const getEmailUsedToLogin = state => {\n    return state.login && state.login.emailUsedToLogin\n}\n\nexport const canViewRocketPromotion = state => {\n    if (!getIsLogged(state)) return false\n    if (getIsMkToolsCenter(state)) return false\n    if (getIsIkeaCenter(state)) return false\n    if (getIsLowesCenter(state)) return false\n    if (PromotionRocketCustomersDataUSA5Percent.includes(getUserName(state).padStart(10,'0'))) return 'USACA5'\n    if (PromotionRocketCustomersDataUSA10Percent.includes(getUserName(state).padStart(10,'0'))) return 'USACA10'\n    //if (PromotionRocketCustomersDataUSA.includes(getUserName(state).padStart(10,'0'))) return 'USACA'\n    //if (PromotionRocketCustomersDataFR.includes(getUserName(state).padStart(10, '0'))) return 'FR'\n    //if (PromotionRocketCustomersDataDE.includes(getUserName(state).padStart(10, '0'))) return 'DE'\n    //if (PromotionRocketCustomersDataBE.includes(getUserName(state).padStart(10, '0'))) return 'BE'\n    //if (PromotionRocketCustomersDataNLD.includes(getUserName(state).padStart(10, '0'))) return 'NLD'\n    //if (PromotionRocketCustomersDataAT.includes(getUserName(state).padStart(10, '0'))) return 'AT'\n    //if (PromotionRocketCustomersDataIT.includes(getUserName(state).padStart(10, '0'))) return 'IT'\n    //if (PromotionRocketCustomersDataCH.includes(getUserName(state).padStart(10, '0'))) return 'CH'\n    //if (PromotionRocketCustomersDataIberia.includes(getUserName(state).padStart(10, '0'))) return 'Iberia'\n    //if (PromotionRocketCustomersDataIRLSCOT.includes(getUserName(state).padStart(10, '0'))) return 'IRLSCOT'\n    //if (PromotionRocketCustomersDataPL.includes(getUserName(state).padStart(10, '0'))) return 'PL'\n    //if (PromotionRocketCustomersDataSE.includes(getUserName(state).padStart(10, '0'))) return 'SE'\n    //if (PromotionRocketCustomersDataUK.includes(getUserName(state).padStart(10, '0'))) return 'UK'\n    //if (PromotionRocketCustomersDataNO.includes(getUserName(state).padStart(10, '0'))) return 'NO'\n    //if (PromotionRocketCustomersDataDK.includes(getUserName(state).padStart(10, '0'))) return 'DK'\n    //if (PromotionRocketCustomersDataFI.includes(getUserName(state).padStart(10, '0'))) return 'FI'\n    //if (PromotionRocketCustomersDataBaltic.includes(getUserName(state).padStart(10, '0'))) return 'Baltic'\n    return false\n}\n\nexport const canViewRockMasterPromotion = state => {\n    if (centers.isAustraliaSalesOrg(state)) return true\n    if (!getIsLogged(state)) return false\n    return false\n}\n\n/**\n * Determines which walkthrough the user should see\n * @param {object} state \n * @param {string} walkthroughType \n * @returns object\n */\nexport const getHasWalkthrough = (state, walkthroughType) => {\n    const walkthroughArr = state.login && state.login.hasWalkthrough.filter((walkthrough) => walkthrough.type === walkthroughType)\n    return walkthroughArr[0]\n}\n\n/**\n * Check if the user is from a spanish sales org\n * @param {object} state \n * @returns {boolean}\n */\nexport const isSpanishSalesOrg = (state) => {\n    if (['1100', '1000'].includes(getSalesOrg(state))) return true\n    return false\n}\n\n/**\n * Check if the user can see the earthic promotion\n * @param {object} state \n * @returns {boolean}\n */\nexport const canViewEarthicPromotion = (state) => {\n    if (centers.isAustraliaSalesOrg(state)) return false\n    if (!getIsLogged(state)) return false\n    return true\n}\n\n/**\n * Check if the user can see the Hybriq banner promotion.\n * @param {object} state \n * @returns {boolean}\n */\nexport const canViewHybriqPromotion = (state) => {\n    if (!getIsLogged(state)) return false\n    return true\n}\n\n/**\n * Check if the user can see the silestone promotion mx\n * @param {object} state \n * @returns {boolean}\n */\nexport const canViewSilestonePromotionXM = (state) => {\n    if (centers.isAustraliaSalesOrg(state)) return false    \n    if (!getIsLogged(state)) return false\n    if (getIsMkToolsCenter(state)) return false\n    if (getIsIkeaCenter(state)) return false\n    if (getIsLowesCenter(state)) return false\n\n    return true\n}\n\n/* export const canViewSilestoneDektonBlackWeekPromotion = state => {\n\n    if (moment().isAfter(moment('2024-11-29T23:59:59Z'))) {\n        return false\n    }\n\n    if (!getIsLogged(state)) return false\n\n    // Cliente con acceso al canal 11\n    // Verifica si el cliente tiene direcciones de envío asociadas al canal 11\n    let channel11 = []\n    if (getShippingAddresses(state)) {\n        channel11 = getShippingAddresses(state).filter(shippingAddress =>\n            shippingAddress.channel == 11\n        )\n    }\n    if (channel11.length > 0) return true\n\n    // Clientes con acceso a los centers de Europa y Portugal\n    // Obtiene los centers del usuario y verifica si coinciden con los de Europa y Portugal\n    const userCenters = centers.getCenters(state)\n    const europeAndPortugalCenters = centers.getEuropeAndPortugalCenters()\n\n    const centerMatch = userCenters && userCenters.some(center =>\n        europeAndPortugalCenters && europeAndPortugalCenters.includes(String(center.centerId))\n    )\n    if (centerMatch) return true\n\n    // Cliente con acceso a 77*\n    // Verifica si alguno de los centerId del usuario comienza con '77'\n    const center77Match = userCenters && userCenters.some(center =>\n        String(center.centerId).startsWith('77')\n    )\n    if (center77Match) return true\n\n\n    return false\n} */\n\nexport const canViewSilestonePromotion = state => {\n    const nowUtc = moment().utc()\n    const nowEST = nowUtc.clone().subtract(5, 'hours')\n\n    return getIsLogged(state) && !nowEST.isAfter('2025-02-07T23:59:59') && isUsaOrCanada(state)\n}\n\n/**\n * Check if the user can see the earthic promotion\n * @param {object} state \n * @returns {boolean}\n */\nexport const canViewSumaPromotion = (state) => {\n    if (centers.isAustraliaSalesOrg(state)) return false\n    if (!getIsLogged(state)) return false\n    return true\n}\n\nexport const canViewSilestoneContainerPromotion = state => {\n    const nowUtc = moment().utc()\n    const nowEST = nowUtc.clone().subtract(5, 'hours')\n\n    return getIsLogged(state) && !nowEST.isAfter('2025-03-28T23:59:59') && isUsaOrCanada(state)\n}\n\nexport default login","import React from 'react'\n\nconst Button = props => {\n    let onClick = props.onClick\n    let cssClasses = 'bt noselect'\n    let title\n    let style = {}\n    let datacy = props.datacy\n    let gtmLabel = props.gtmLabel\n    let gtmUsertype = props.gtmUsertype\n    let dataQas = props.dataQas\n    if (props.inverted) {\n        cssClasses += ' bt-inverted'\n    }\n    if (props.gentle) {\n        cssClasses += ' bt-gentle'\n    }\n    if (props.danger) {\n        cssClasses += ' bt-danger'\n    }\n    if (props.inline) {\n        cssClasses += ' bt-inline'\n    }\n    if (props.noborder) {\n        cssClasses += ' bt-noborder'\n    }\n    if (props.size) {\n        cssClasses += ' bt-size-' + props.size\n    }\n    if (props.customClass) {\n        cssClasses += ' ' + props.customClass\n    }\n    if (props.disabled) {\n        cssClasses += ' bt-disabled'\n        onClick = null\n    }\n    if (props.hidden) {\n        return <div style={{ display: 'none' }} />\n    }\n    let iconCssClasses\n    if (props.far) {\n        iconCssClasses = 'icon far'\n    }  else if (props.fal) {\n        iconCssClasses = 'icon fal'\n    } else {\n        iconCssClasses = 'icon fas'\n    }\n\n    if (props.redIcon) iconCssClasses += \" text-danger\"\n    else if (props.greenIcon) iconCssClasses += \" text-success\"\n\n    if (props.offers) {\n        cssClasses += ' bt-offers'\n    }\n    if (props.icon) {\n        if (props.icon === 'custom') {\n            cssClasses += ' has-custom-icon'\n        } else {\n            iconCssClasses += ' visible fa-' + props.icon\n        }\n    }\n    if (props.title) {\n        title = props.title\n    }\n    if(props.style){\n        style= props.style\n    }\n\n    if (props.backgroundColor) style.backgroundColor = props.backgroundColor\n    if (props.color) style.color = props.color\n\n    cssClasses = props.className ? (cssClasses += ' ' + props.className) : cssClasses\n\n    return (\n        <div className={cssClasses}\n             onClick={onClick}\n             title={title}\n             data-cy={datacy}\n             data-tip={props['data-tip']}\n             data-toggle={props['data-toggle']}\n             style={style} data-qas={dataQas}\n             gtm-label={gtmLabel}\n             gtm-usertype={gtmUsertype}\n        >\n            {\n                !props.iconEnd && (<i className={iconCssClasses} />)\n            }\n            {props.children}\n            {props.iconEnd && (\n                <span>\n                    &nbsp;\n                    <i className={iconCssClasses} />\n                </span>\n            )}\n        </div>\n    )\n}\n\nexport default Button\n","import { LOCATION_CHANGE } from 'react-router-redux'\nimport * as impersonate from '../../store/impersonate/reducers'\nimport * as login from '../../store/login/reducers'\nimport * as cart from '../../store/cart/reducers'\nimport { getSalesOrg, getIsLowesCenter, getIsMkToolsCenter, getIsIkeaCenter, getSelectedCenter, isAustralianCenter, isAustraliaSalesOrg } from '../centers/reducers'\nimport { int } from 'react-intl'\n\nexport const initState = {\n    showMenu: false,\n    showPersonalData: false,\n    showProfileModal: false,\n    showSegmentationModal: false,\n    showDektonGripModal: false,\n    showLanguageModal: false,\n    showEmailPromotionsModal: false,\n    showWhatsappModal:false,\n    showNewVersionModal: false,\n    showPedidosRecurrentesModal: false,\n    showAdd2CartSuccessModal: false,\n    maintenanceScheduled: null,\n    maintenanceScheduledText: null,\n    maintenanceScheduledTextSpanish: null,\n    isLogging: false,\n    language: null,\n    bundle: { lots: [] },\n    mode: null,\n    country: null,\n    translateMode: false,\n    showBannerOldVersion: true,\n    hideAllBannerCatalog: false,\n    availableLands: [\n        {\n            name: 'Italiano',\n            code: 'it',\n            localecode: 'it',\n            langName: 'Italiano',\n            dir: 'ltr',\n            sfLang: 'it'\n        },\n        {\n            name: '日本',\n            code: 'jp',\n            localecode: 'ja',\n            langName: 'Japanese',\n            sfLang: 'en_US'\n        },\n        {\n            name: 'Deutsch',\n            code: 'de',\n            localecode: 'de',\n            langName: 'Deutsch',\n            dir: 'ltr',\n            sfLang: 'de'\n        },\n        {\n            name: 'Español',\n            code: 'es',\n            localecode: 'es',\n            langName: 'Español',\n            dir: 'ltr',\n            sfLang: 'es'\n        },\n        {\n            name: 'עִברִית',\n            code: 'il',\n            localecode: 'he',\n            langName: 'עִברִית',\n            dir: 'rtl',\n            sfLang: 'iw'\n        },\n        {\n            name: 'English',\n            code: 'gb',\n            localecode: 'en',\n            langName: 'English',\n            dir: 'ltr',\n            sfLang: 'en_GB'\n        },\n        {\n            name: 'Français',\n            code: 'fr',\n            localecode: 'fr',\n            langName: 'Français',\n            sfLang: 'fr'\n        },\n        {\n            name: 'Svenska',\n            code: 'se',\n            localecode: 'sv',\n            langName: 'Svenska',\n            sfLang: 'sv'\n        },\n        {\n            name: 'Türkçe',\n            code: 'tr',\n            localecode: 'tr',\n            langName: 'Türkçe',\n            sfLang: 'tr'\n        },\n        {\n            name: 'Norsk',\n            code: 'no',\n            localecode: 'no',\n            langName: 'Norsk',\n            dir: 'ltr',\n            sfLang: 'no'\n        },\n        {\n            name: 'Dansk',\n            code: 'dk',\n            localecode: 'da',\n            langName: 'Dansk',\n            dir: 'ltr',\n            sfLang: 'da'\n        },\n        {\n            name: 'Nederlands',\n            code: 'nl',\n            localecode: 'nl',\n            langName: 'Nederlands',\n            dir: 'ltr',\n            sfLang: 'nl'\n        },\n        {\n            name: 'Suomi',\n            code: 'fi',\n            localecode: 'fi',\n            langName: 'Suomi',\n            dir: 'ltr',\n            sfLang: 'fi'\n        },\n        {\n            name: 'Polish',\n            code: 'pl',\n            localecode: 'pl',\n            langName: 'Polish',\n            dir: 'ltr',\n            sfLang: 'pl'\n        },\n        {\n            name: 'Portugues',\n            code: 'pt',\n            localecode: 'pt',\n            langName: 'Portugues',\n            dir: 'ltr',\n            sfLang: 'pt_PT'\n        },\n        {\n            name: 'English (United States)',\n            code: 'us',\n            localecode: 'en-US',\n            langName: 'English (United States)',\n            dir: 'ltr',\n            sfLang: 'en_US'\n        },\n        {\n            name: 'Français (Canada)',\n            code: 'ca',\n            localecode: 'fr-CA',\n            langName: 'Français (Canada)',\n            dir: 'ltr',\n            sfLang: 'fr_CA'\n        },\n        {\n            name: 'English (Canada)',\n            code: 'ca',\n            localecode: 'en-CA',\n            langName: 'English (Canada)',\n            dir: 'ltr',\n            sfLang: 'en_CA'\n        }\n    ],\n    currentUrl: null,\n    isObsolete: null, //set to true when obsolete\n    showIkeaModalEmployeeId: false,\n    showBigAccountModal: false,\n    //TODO: change to false\n    canViewThresholdMax: true,\n    showInsertTranslation: false,\n    idTranslation: '',\n    defaultMessageTranslation: '',\n    isComingFromMall: false,\n    isComingFromCampaign: false,\n    showThankYouSubscribeModal: false,\n    inProductDetailScreen: false,\n    checkoutStep:0,\n    isShippingHistoryScreen: false,\n    currentLocation: {\n      pageType: '',\n      section: '',\n      subtype: ''\n    },\n    isWalkthroughWatched: false,\n    showSilestoneXMModal: false,\n    isXeronBrandVisible: false,\n    isSilestoneBrandVisible: false\n}\nconst ui = (state = initState, action) => {\n    switch (action.type) {\n        case LOCATION_CHANGE:\n            return Object.assign({}, state, {\n                showMenu: false,\n                showProfileModal: false,\n                showSegmentationModal: false,\n                currentUrl: { pathname: action.payload.location.pathname, search: action.payload.location.search },\n                //TODO - update i18n url mall landing template\n                isComingFromMall: state.currentUrl && (state.currentUrl.pathname.includes('landing-templates') || state.currentUrl.pathname.includes('mall')) ? true : false,\n                isComingFromCampaign: state.currentUrl && state.currentUrl.pathname.includes('/landing/') ? true : false,\n                // checkoutStep: 0\n            })\n        case 'CHECKOUT_SET_STEP':\n            return Object.assign({}, state, { checkoutStep: action.step })\n        case 'SET_LANGUAGE':\n            return Object.assign({}, state, { language: action.locale })\n        case 'CLOSE_BUNDLE_CONTENT':\n            return Object.assign({}, state, { showBundleContent: false, bundle: { lots: [] } })\n        case 'OPEN_BUNDLE_CONTENT':\n            return Object.assign({}, state, { showBundleContent: true, bundle: action.bundle })\n        case 'SHOW_LANGUAGE_MODAL':\n            return Object.assign({}, state, { showLanguageModal: true })\n\n        case 'SHOW_WHATSAPP_MODAL':\n            return Object.assign({}, state, { showWhatsappModal: true })\n        case 'CLOSE_WHATSAPP_MODAL':\n            return Object.assign({}, state, { showWhatsappModal: false })\n\n        case 'SHOW_EMAIL_PROMOTIONS_MODAL':\n            return Object.assign({}, state, { showEmailPromotionsModal: true })\n        case 'CLOSE_EMAIL_PROMOTIONS_MODAL':\n            return Object.assign({}, state, { showEmailPromotionsModal: false })\n\n        case 'SHOW_PEDIDOS_RECURRENTES_MODAL':\n            return Object.assign({}, state, { showPedidosRecurrentesModal: true })\n        case 'CLOSE_PEDIDOS_RECURRENTES_MODAL':\n            return Object.assign({}, state, { showPedidosRecurrentesModal: false })\n\n        case 'SEND_EMAIL_PROMOTIONS_MODAL':\n            return Object.assign({}, state, { showEmailPromotionsModal: false })\n        case 'CLOSE_LANGUAGE_MODAL':\n            return Object.assign({}, state, { showLanguageModal: false })\n        case 'SHOW_ADD2CARTSUCCESS_MODAL':\n            return Object.assign({}, state, { showAdd2CartSuccessModal: true })\n        case 'CLOSE_ADD2CARTSUCCESS_MODAL':\n            return Object.assign({}, state, { showAdd2CartSuccessModal: false })\n        case 'SHOW_SEGMENTATION_MODAL':\n            return Object.assign({}, state, { showSegmentationModal: true, mode: action.mode, callback: action.callback })\n        case 'CLOSE_SEGMENTATION_MODAL':\n            return Object.assign({}, state, { showSegmentationModal: false })\n        case 'SHOW_DEKTON_GRIP_MODAL':\n            return Object.assign({}, state, { showDektonGripModal: true, callback: action.callback })\n        case 'CLOSE_DEKTON_GRIP_MODAL':\n            return Object.assign({}, state, { showDektonGripModal: false })\n        case 'SHOW_PROFILE_MODAL':\n            return Object.assign({}, state, { showProfileModal: true })\n        case 'CLOSE_PROFILE_MODAL':\n            return Object.assign({}, state, { showProfileModal: false })\n        case 'SHOW_MENU':\n            return Object.assign({}, state, { showMenu: true })\n        case 'CLOSE_MENU':\n            return Object.assign({}, state, { showMenu: false })\n        case 'SHOW_PERSONAL_DATA':\n            return Object.assign({}, state, { showPersonalData: true })\n        case 'CLOSE_PERSONAL_DATA':\n            return Object.assign({}, state, { showPersonalData: false })\n        case 'RESET_UI':\n            return Object.assign({}, state, {\n                showMenu: false,\n                showPersonalData: false,\n                showProfileModal: false,\n                showSegmentationModal: false,\n                showLanguageModal: false,\n                showBundleContent: false,\n                showAdd2CartSuccessModal: false\n            })\n        case 'IMPERSONATE_PROCESS_INIT':\n        case 'LOGIN_PROCESS_INIT':\n            return Object.assign({}, state, { isLogging: true })\n        case 'IMPERSONATE_PROCESS_FINISH':\n        case 'LOGIN_PROCESS_FINISH':\n            return Object.assign({}, state, { isLogging: false })\n        case 'IMPERSONATE_REQUEST':\n            return Object.assign({}, state, { isLogging: true })\n        case 'IMPERSONATE_SUCCESS':\n            return Object.assign({}, state, { isLogging: false })\n        case 'MANDATORY_CHANGE_PASSWORD':\n        case 'IMPERSONATE_PROCESS_FAILURE':\n        case 'LOGIN_PROCESS_FAILURE':\n            return Object.assign({}, state, { isLogging: false })\n        case 'FETCH_LOCATION_COUNTRY_SUCCESS':\n            return Object.assign({}, state, { country: action.location.landIsoCode })\n        case 'FETCH_LOCATION_COUNTRY_FAILURE_SAVE_DEFAULT':\n            return Object.assign({}, state, { country: 'US' })\n\n        case 'FETCH_MAINTENANCE_SCHEDULED_SUCCESS':\n            return Object.assign({}, state, {\n                maintenanceScheduled: action.maintenance.maintenanceScheduled,\n                maintenanceScheduledText: action.maintenance.maintenanceScheduledText,\n                maintenanceScheduledTextSpanish: action.maintenance.maintenanceScheduledTextSpanish\n            })\n        case 'TOGGLE_TRANSLATE_MODE':\n            return Object.assign({}, state, { translateMode: !state.translateMode })\n        case 'TOGGLE_ISOBSOLETE':\n            return Object.assign({}, state, { isObsolete: false })\n        case 'TOGGLE_SHOW_IKEA_MODAL_EMPLOYEE_ID':\n            return Object.assign({}, state, { showIkeaModalEmployeeId: !(action.open === null || action.open === undefined) ? action.open : !state.showIkeaModalEmployeeId })\n        case 'TOGGLE_SHOW_BIG_ACCOUNT_MODAL':\n            return Object.assign({}, state, { showBigAccountModal: !(action.open === null || action.open === undefined) ? action.open : !state.showBigAccountModal })\n        case 'OPEN_MODAL_TRANSLATION':\n            return Object.assign({}, state, { showInsertTranslation: true, idTranslation: action.idTranslation, defaultMessageTranslation: action.defaultMessageTranslation })\n        case 'CLOSE_MODAL_TRANSLATION':\n            return Object.assign({}, state, { showInsertTranslation: false })\n        case 'OPEN_THANK_YOU_SUBSCRIBE_MODAL':\n        case 'SAVE_EMAIL_PROMOTIONS_MODAL_SUCCESS':\n            return Object.assign({}, state, { showThankYouSubscribeModal: true })\n        case 'CLOSE_THANK_YOU_SUBSCRIBE_MODAL':\n            return Object.assign({}, state, { showThankYouSubscribeModal: false })\n        case 'CLOSE_BANNER_OLD_VERSION':\n            return Object.assign({}, state, { showBannerOldVersion: false })\n        case 'SHOW_BANNER_OLD_VERSION':\n            return Object.assign({}, state, { showBannerOldVersion: true })\n        case 'HIDE_ALL_BANNER_CATALOG':\n            return Object.assign({}, state, { hideAllBannerCatalog: true })\n        case 'SET_IS_COMMING_FROM_MALL':\n            return Object.assign({}, state, { isComingFromMall: action.isComingFromMall })\n        case 'PROCCESS_IN_DETAILS_SCREEN':\n            return Object.assign({}, state, { inProductDetailScreen: action.inProductDetailScreen })\n        case 'PROCCESS_IS_ORDER_HISTORY_SCREEN':\n            return Object.assign({}, state, { isOrderHistoryScreen: action.isOrderHistoryScreen })\n        case 'PROCCESS_IS_SHIPPING_HISTORY_SCREEN':\n            return Object.assign({}, state, { isShippingHistoryScreen: action.isShippingHistoryScreen })\n        case 'SET_LOCATION':\n            return Object.assign({}, state, { currentLocation: { pageType: action.pageType, section: action.section, subtype: action.subsection }})\n        case 'WALTHROUGH_HAS_BEEN_WATCHED':\n            return Object.assign({}, state, { isWalkthroughWatched: true })\n        case 'SHOW_SILESTONEXM_MODAL':\n            return Object.assign({}, state, { showSilestoneXMModal: true })\n        case 'CLOSE_SILESTONEXM_MODAL':\n            return Object.assign({}, state, { showSilestoneXMModal: false })\n        case 'SET_XERON_BRAND_VISIBILITY':\n            return {\n                ...state,\n                isXeronBrandVisible: action.isXeronBrandVisible,\n            }\n        case 'SET_SILESTONE_BRAND_VISIBILITY':\n        return {\n            ...state,\n            isSilestoneBrandVisible: action.isSilestoneBrandVisible,\n        }\n        case 'PROCCESS_IS_CONFIGURABLE_BATH_EDIT_SCREEN':\n            return Object.assign({}, state, { isConfigurableBathEditScreen: action.isConfigurableBathEditScreen })\n        case 'PROCCESS_IS_CONFIGURABLE_PLAN_ACCEPTANCE_SCREEN':\n            return Object.assign({}, state, { isConfigurablePlanAcceptanceScreen: action.isConfigurablePlanAcceptanceScreen })\n        default:\n            return state\n    }\n}\n\nexport const showBannerOldVersion = state => {\n    return state.ui.showBannerOldVersion\n}\n\nexport const showMenuSelector = state => {\n    return state.ui.showMenu\n}\n\nexport const showPersonalDataSelector = state => {\n    return state.ui.showPersonalData\n}\nexport const showLanguageSelector = state => {\n    return state.ui.showLanguageModal\n}\nexport const showingProfileModal = state => {\n    return state.ui.showProfileModal\n}\nexport const showingEmailPromotionsModal = state => {\n    //show when login process finished\n    return state.ui.showEmailPromotionsModal && !state.ui.isLogging && state.login.isLogged\n}\nexport const showingWhatsappModal = state => {\n    //show when login process finished\n    return state.ui.showWhatsappModal && !state.ui.isLogging && state.login.isLogged\n}\nexport const showingNewVersionModal = state => {\n    //show when login process finished\n    return state.ui.showNewVersionModal && !state.ui.isLogging && state.login.isLogged\n}\nexport const showingPedidosRecurrentesModal = state => {\n    //show when login process finished\n    return state.ui.showPedidosRecurrentesModal && !state.ui.isLogging && state.login.isLogged\n}\nexport const showingSegmentationModal = state => {\n    return state.ui.showSegmentationModal\n}\nexport const showingDektonGripModal = state => {\n    return state.ui.showDektonGripModal\n}\nexport const showingAdd2CartSuccessModal = state => {\n    return state.ui.showAdd2CartSuccessModal\n}\nexport const showBundleContent = state => {\n    return state.ui.showBundleContent\n}\nexport const showingAnyModal = state => {\n    let showing = false\n    if (\n        impersonate.showModalSelector(state) ||\n        login.showModalSelector(state) ||\n        cart.showModalSelector(state) ||\n        cart.showCheckoutModalSelector(state) ||\n        state.ui.showProfileModal ||\n        state.ui.showSegmentationModal ||\n        state.ui.showLanguageModal ||\n        state.ui.showBundleContent\n    ) {\n        showing = true\n    }\n    return showing\n}\nexport const getUICallback = state => {\n    return state.ui.callback\n}\nexport const getLanguage = state => {\n    return state.ui.language\n}\n\nexport const getLocalizedUrl = (state, intl, routeId) => {\n    const {language} = state.ui\n    const prefix = (language !== 'en-US' ? ('/' + language) : '')\n    const path = prefix + intl.formatMessage({ id: routeId })\n    return path\n}\n\nexport const getLanguageDir = state => {\n    let lang = state.ui.availableLands.find(lang => lang.localecode === state.ui.language)\n    return lang && lang.dir\n}\n\nexport const getLanguageToFetchZ2 = state => {\n    let locale = state.ui.language === 'fr-CA' || state.ui.language === 'en-CA' || state.ui.language === 'pl' ? 'en-US' : state.ui.language\n\n    return locale\n}\nexport const getMode = state => {\n    return state.ui.mode\n}\nexport const getTranslateMode = state => {\n    return state.ui.translateMode\n}\nexport const getCountry = state => {\n    return state.ui.country\n}\nexport const getAvailableLands = state => {\n    return state.ui.availableLands\n}\nexport const getCurrentUrl = state => {\n    return state.ui.currentUrl\n}\nexport const getIsObsolete = state => {\n    return state.ui.isObsolete\n}\nexport const getBundleContent = state => {\n    return state.ui.bundle.lots\n}\nexport const getOriginalBundle = state => {\n    return state.ui.bundle\n}\nexport const getShowIkeaModalEmployeeId = state => {\n    return state.ui.showIkeaModalEmployeeId\n}\nexport const getShowBigAccountModal = state => {\n    return state.ui.showBigAccountModal\n}\nexport const getMaintenanceScheduled = state => {\n    return state.ui.maintenanceScheduled\n}\nexport const getMaintenanceScheduledText = state => {\n    if (getLanguage(state) == 'es') return state.ui.maintenanceScheduledTextSpanish\n    return state.ui.maintenanceScheduledText\n}\nexport const canViewThresholdMax = state => {\n    return true\n}\nexport const getShowSaleConditions = state => {\n    return true\n}\nexport const getShowHealthConditions = state => {\n    if (getIsLowesCenter(state) || getIsMkToolsCenter(state) || getIsIkeaCenter(state)) {\n        return false\n    }\n    return true\n}\nexport const getShowInsertTranslation = state => state.ui.showInsertTranslation\nexport const getIdTranslation = state => state.ui.idTranslation\nexport const getDefaultMessageTranslation = state => state.ui.defaultMessageTranslation\nexport const getLanguageSF = state => {\n    let lang = state.ui.availableLands.find(lang => lang.localecode === state.ui.language)\n    return lang && lang.sfLang\n}\n\nexport const isComingFromMall = state => {\n    return state.ui.isComingFromMall\n}\nexport const isComingFromCampaign = state => {\n    return state.ui.isComingFromCampaign\n}\nexport const fetchPromotionConfigurationEmail = state => {\n    return state.profileConfiguration.promotionConfiguration.email\n}\n\nexport const getHideAllBannerCatalog = state => {\n    return state.ui.hideAllBannerCatalog\n}\n\nexport const getCheckoutStep = state => {\n    return state.ui.checkoutStep\n}\n\nexport const getShowThankYouSubscribeModal = state => state.ui.showThankYouSubscribeModal\n\nexport const getIsOrderHistoryScreen = state => {\n    return state.ui.isOrderHistoryScreen\n}\n\nexport const getIsShippingHistoryScreen = state => {\n    return state.ui.isShippingHistoryScreen\n}\n\nexport const getInProductDetailScreen = state => {\n    return state.ui.inProductDetailScreen\n}\n\nexport const getCurrentLocation = state => {\n    return state.ui.currentLocation\n}\n\nexport const getWalkthroughWatched = state => {\n    return state.ui.isWalkthroughWatched\n}\n\nexport const getShowCheckboxAustraliaLegalProcess = state => {\n    if (isAustralianCenter(state)) return true\n    return false\n}\n\nexport const getShowSilestoneXMModal = state => {\n    const { showSilestoneXMModal, isLogging } = state.ui\n    const { isLogged } = state.login\n\n    if (isAustraliaSalesOrg(state)) {\n        return false\n    }\n\n    return showSilestoneXMModal && !isLogging && isLogged\n}\n\nexport const getIsXeronBrandVisible = state => {\n    return state.ui.isXeronBrandVisible\n}\n\nexport const getIsSilestoneBrandVisible = state => {\n    return state.ui.isSilestoneBrandVisible\n}\n\nexport const getIsConfigurableBathEditScreen = state => {\n    return state.ui.isConfigurableBathEditScreen\n}\n\nexport const getIsConfigurablePlanAcceptanceScreen = state => {\n    return state.ui.isConfigurablePlanAcceptanceScreen\n}\n\nexport const getLinkTechnicalDektonGrip = (state) => {\n    const lang = getLanguage(state)\n    let link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/5874AEE2-9EAA-4107-AE305C7741528B3D/Dekton-Grip-Dossier-USA-CA.pdf'\n    \n    switch (lang) {\n        case 'es':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/AB67584E-848F-445F-958A5AE8553F7F05/Dekton-Grip-Dossier-ES.pdf'\n            break\n        case 'en':\n            break\n        case 'de':\n            break\n        case 'da':\n            break\n        case 'fi':\n            break\n        case 'he':\n            break\n        case 'en-CA':\n            break\n        case 'fr-CA':\n            break\n        case 'fr':\n            break\n        case 'it':\n            break\n        case 'ja':\n            break\n        case 'nl':\n            break\n        case 'no':\n            break\n        case 'pt':\n            break\n        case 'pl':\n            break\n        case 'sv':\n            break\n        case 'tr':\n            break\n        default:\n            break\n    }\n    return link\n}\n\nexport const getLinkMaintenanceDektonGrip = (state) => {\n    const lang = getLanguage(state)\n    let link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/2A2B02AD-1B28-4F5B-A53531CE58AD97FF/Dekton-Grip-EN.pdf'\n\n    switch (lang) {\n        case 'es':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/1C9DE84C-A64B-47B3-AEAB2DAFD4198DB3/Dekton-Grip-ES.pdf'\n            break\n        case 'en':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/2A2B02AD-1B28-4F5B-A53531CE58AD97FF/Dekton-Grip-EN.pdf'\n            break\n        case 'de':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/7373372C-CB64-4A7E-B6D4EF5CC47BC0CF/Dekton-Grip-DE.pdf'\n            break\n        case 'da':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/2A2B02AD-1B28-4F5B-A53531CE58AD97FF/Dekton-Grip-EN.pdf'\n            break\n        case 'fi':\n            break\n        case 'he':\n            break\n        case 'en-CA':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/F5B12FFF-6BC3-4069-9AAC42C4E98A8674/Dekton-Grip-FR.pdf'\n            break\n        case 'fr-CA':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/F5B12FFF-6BC3-4069-9AAC42C4E98A8674/Dekton-Grip-FR.pdf'\n            break\n        case 'fr':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/F5B12FFF-6BC3-4069-9AAC42C4E98A8674/Dekton-Grip-FR.pdf'\n            break\n        case 'it':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/370BE055-F16F-44A0-A27873DD32FA16DD/Dekton-Grip-IT.pdf'\n            break\n        case 'ja':\n            break\n        case 'nl':\n            break\n        case 'no':\n            break\n        case 'pt':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/9C886ED8-A9E0-4AB2-A21D15A5F9FCF9A1/Dekton-Grip-PT.pdf'\n            break\n        case 'pl':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/5CC6EF1A-7561-4C2E-91EDBF0F718D6A5C/Dekton-Grip-PL.pdf'\n            break\n        case 'sv':\n            link = 'https://assetstools.cosentino.com/api/v1/bynder/doc/8AB21F9C-2305-480F-85B91ABC68AF8A91/Dekton-Grip-SV.pdf'\n            break\n        case 'tr':\n            break\n        default:\n            break\n    }\n    return link\n}\n\nexport default ui","import { push } from 'react-router-redux'\nimport { logout } from './login/actions'\nimport axios from 'axios'\nimport { setError } from './error/actions'\nimport timezone from 'dayjs/plugin/timezone'\nimport dayjs from 'dayjs'\nimport * as hardcode from './hardCode'\nimport { dispatchPushURL } from './ui/actions'\nimport FileDownload from \"js-file-download\";\n\ndayjs.extend(timezone)\nconst ApiLocation = process.env.REACT_APP_API_HOST\naxios.defaults.headers.common['Content-Type'] = 'application/json'\n\nexport const login = (username, password, locale) => {\n    let loginData = {\n        login: username,\n        password: password,\n        lang: locale\n    }\n\n    return axios.post(ApiLocation + '/login', loginData)\n}\n\nexport const mallCheckLogin = (username, token) => {\n    return axios.get(ApiLocation + `/api/mall/user/check/${username}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const loginSSO = (username, email, locale) => {\n    let loginData = {\n        login: username,\n        lang: locale,\n        email\n    }\n\n    return axios.post(ApiLocation + '/loginSSO', loginData)\n}\n\nexport const loginJT = (username, email, locale) => {\n    let loginData = {\n        login: username,\n        lang: locale,\n        email\n    }\n\n    return axios.post(ApiLocation + '/loginJT', loginData)\n}\n\nexport const loginAD = (email, locale, azureToken) => {\n    let loginData = {\n        lang: locale,\n        email,\n        azureToken\n    }\n\n    return axios.post(ApiLocation + '/loginAD', loginData)\n}\n\nexport const loginShops = (username, password, locale) => {\n    let loginData = {\n        login: username,\n        password: password,\n        lang: locale\n    }\n\n    return axios.post(ApiLocation + '/loginShops', loginData)\n}\n\nexport const fetchInfoUserLowes = token => {\n    return axios.get(ApiLocation + '/users/lowes-store-data', {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const recoverPassword = (username, email) => {\n    let loginData = {\n        login: username,\n        email: email\n    }\n\n    return axios.post(ApiLocation + '/users/remember-password', loginData)\n}\nexport const createAccount = (username, email) => {\n    let loginData = {\n        login: username,\n        email: email\n    }\n\n    return axios.post(ApiLocation + '/users', loginData)\n}\nexport const addEmailCenter = (user, email, token) => {\n    let data = {\n        userAdmin: user,\n        email: email\n    }\n\n    return axios.post(ApiLocation + '/users-center', data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const sendFeedback = (score, comments, banner, lang, token) => {\n    let data = {\n        score: score,\n        comments: comments,\n        banner: banner,\n        lang: lang\n    }\n\n    return axios.post(ApiLocation + '/user-feedback', data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const hasFeedback = (banner, token) => {\n    let data = {\n        banner: banner,\n    }\n\n    return axios.post(ApiLocation + '/user-has-feedback', data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const impersonate = (login, token, locale) => {\n    let impersonateData = { login: login, lang: locale }\n    return axios.post(ApiLocation + `/impersonate`, impersonateData, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const getCart = (centerId, storeId = null, employeeId = null, locale, token) => {\n    return axios.get(ApiLocation + `/cart/${centerId}?lang=${locale}&${cartKey(storeId, employeeId)}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const genericAddCartLine = (\n    centerId,\n    productId,\n    qty = null,\n    lotId = null,\n    bundleId = null,\n    token,\n    segmentation,\n    locale,\n    extra,\n    cutToSize,\n    storeId = null,\n    employeeId = null,\n    supplierCenterId,\n    shippingMethod,\n    position\n) => {\n    const formData = new FormData()\n\n    if (segmentation.segmentationEvidences) {\n        segmentation.segmentationEvidences.uploadedFiles.forEach(file => {\n            formData.append('segmentationEvidenceFiles[]', file)\n        })\n        formData.append('segmentationEvidencesPos', JSON.stringify(segmentation.segmentationEvidences.purchaseOrders))\n    }\n\n    delete segmentation.segmentationEvidences\n\n    formData.append('segmentation', JSON.stringify(segmentation))\n    formData.append('productId',productId)\n    formData.append('qty',qty)\n    formData.append('bundleId',bundleId)\n    formData.append('lotId',lotId)\n    formData.append('extra', JSON.stringify(extra))\n    formData.append('supplierCenterId',supplierCenterId)\n    formData.append('shippingMethod',shippingMethod)\n    formData.append('position',position)\n    if (cutToSize && cutToSize.files) {\n        const fileValues = Object.entries(cutToSize.files)\n        cutToSize.files = []\n        fileValues.forEach(([type,file]) => {\n            const key = 'cutToSizefile_' + type\n            formData.append(key, file)\n            cutToSize.files.push(key)\n        })\n    }\n    formData.append('cutToSize', JSON.stringify(cutToSize))\n\n    // let lineData = {\n    //     segmentation,\n    //     productId,\n    //     qty,\n    //     bundleId,\n    //     lotId,\n    //     cutToSize,\n    //     extra: extra,\n    //     supplierCenterId,\n    //     shippingMethod\n    // }\n    return axios.post(ApiLocation + `/cart/${centerId}/lines?lang=${locale}&${cartKey(storeId, employeeId)}`, formData, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const addCartBulkLots = (\n    centerId,\n    selectedLots,\n    token,\n    segmentation,\n    locale,\n    employeeId,\n    shippingMethod\n) => {\n    const formData = new FormData()\n    formData.append('segmentation', JSON.stringify(segmentation))\n    formData.append('shippingMethod',shippingMethod)\n\n    selectedLots.forEach(l => {\n        formData.append('extra[]', JSON.stringify(l.extra))\n        formData.append('productId[]', l.productId)\n        formData.append('qty[]', l.quantity)\n        formData.append('lotId[]', !l.bundleId ? l.lotId : null)\n        formData.append('bundleId[]', l.bundleId)\n        formData.append('supplierCenterId[]', l.supplierCenterId)\n    })\n\n    return axios.post(ApiLocation + `/cart/${centerId}/bulk-lots-lines?lang=${locale}&${cartKey(null, employeeId)}`, formData, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\n\nexport const changeCartLineSegmentation = (lineId, newSegmentation, centerId, token, storeId, employeeId) => {\n    let segmentation = { segmentation: newSegmentation }\n    return axios.patch(ApiLocation + `/cart/${centerId}/lines/${lineId}/segmentation?${cartKey(storeId, employeeId)}`, segmentation, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const changeCartLineQty = (lineId, newQty, centerId, token, storeId = null, employeeId = null) => {\n    let body = { qty: newQty }\n\n    return axios.patch(ApiLocation + `/cart/${centerId}/lines/${lineId}?${cartKey(storeId, employeeId)}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const checkLinesPrice = (centerId, token, storeId = null, employeeId = null, shippingMethod, voucher = undefined) => {\n    let body = { shippingType: shippingMethod, voucher }\n    return axios.post(ApiLocation + `/cart/${centerId}/lines/prices?${cartKey(storeId, employeeId)}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const checkPricePhase2ByProduct = (productId, centerId, token, outletType) => {\n    let body = { outletType }\n    return axios.post(ApiLocation + `/catalog/${centerId}/product-price/${productId}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const changeCartLineComment = (lineId, comment, centerId, token, storeId = null, employeeId = null) => {\n    let body = { comment: comment }\n\n    return axios.patch(ApiLocation + `/cart/${centerId}/lines/${lineId}/comment?${cartKey(storeId, employeeId)}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const removeCartLine = (lineId, centerId, token, storeId = null, employeeId = null) => {\n    return axios.delete(ApiLocation + `/cart/${centerId}/lines/${lineId}?${cartKey(storeId, employeeId)}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const emptyCart = (centerId, token, storeId = null, employeeId = null) => {\n    return axios.delete(ApiLocation + `/cart/${centerId}?${cartKey(storeId, employeeId)}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const submitCheckout = (centerId, token, checkoutData, storeId = null, employeeId = null) => {\n    return axios.post(ApiLocation + `/cart/${centerId}/checkout?${cartKey(storeId, employeeId)}`, checkoutData, {\n        headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchSegmentation = (centerId, token, locale) => {\n    return axios.get(ApiLocation + `/cart/${centerId}/segmentation?lang=${locale}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchProductById = (centerId, productId, locale) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/products/${productId}?lang=${locale}`)\n}\nexport const fetchSimilarProduct = (centerId, colorId) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/products/${colorId}/similar`)\n}\nexport const fetchCrossSelling = (centerId, productId) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/products/${productId}/cross-selling`)\n}\nexport const fetchCrossSellingCheckOut = (token, centerId, productIds) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/discover-products?products=${productIds}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchCartSimilarProducts = (token, centerId, productIds, quantities) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/cart-similar-products?products=${productIds}&quantities=${quantities}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchCartComplementaryProducts = (token, centerId, productIds, quantities) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/cart-complementary-products?products=${productIds}&quantities=${quantities}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchCartCrossSelling = (token, centerId, productId) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/products/${productId}/cart-cross-selling`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchAlternatives = (centerId, productId) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/products/${productId}/alternatives`)\n}\nexport const fetchProducts = (centerId, productIds = []) => {\n    // console.log('FETCHING PRODUCTS')\n    return axios.get(ApiLocation + `/catalog/${centerId}/products`, {\n        params: {\n            productIds\n        }\n    })\n}\nexport const fetchMallProducts = (landingId, centerIds = [], productIds = [], portfolioMode = 0) => {\n    return axios.get(ApiLocation + `/catalog/mall-products`, {\n        params: {\n            landingId,\n            centerIds,\n            productIds,\n            portfolioMode\n        }\n    })\n}\nexport const fetchLastProductsBought = (token, centerId) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/last-products-bought`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchProductsForYou = (token, centerId) => {\n    try {\n        return axios.get(ApiLocation + `/catalog/${centerId}/products-for-you`, {\n            headers: { Authorization: `Bearer ${token}` }\n        })\n    } catch (error) {\n        console.log(error)\n    }\n   \n}\nexport const fetchProductsSimilarColors = (token, centerId, productId) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/products-similar-colors/${productId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const possibleScaleaToSensa = (productId, centerId, token) => {\n    return axios.get(ApiLocation + `/cart/check-convert-scalea-to-sensa/${productId}/${centerId}`, { headers: { Authorization: `Bearer ${token}` } })\n}\nexport const transformScaleaToSensa = (centerId, lineIds, token) => {\n    return axios.patch(ApiLocation + `/cart/${centerId}/lines/convert-scalea-to-sensa`, { lineIds }, { headers: { Authorization: `Bearer ${token}` } })\n}\nexport const transformSkuToLots = (centerId, token) => {\n    return axios.patch(ApiLocation + `/cart/${centerId}/lines/convert-sku-to-lots`, {}, { headers: { Authorization: `Bearer ${token}` } })\n}\nexport const fetchLot = (centerId, lotId, productId, token) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/lot/${lotId}/${productId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchLots = (productId, centerId, quarryBlock, shade, quality, location, outlet, token) => {\n    let filters = []\n    if (quarryBlock) filters.push(`quarryBlock=${quarryBlock}`)\n    if (shade) filters.push(`shade=${shade}`)\n    if (quality) filters.push(`quality=${quality}`)\n    if (location) filters.push(`location=${location}`)\n    if (outlet) filters.push(`outlet=true`)\n\n    const filtersQuery = filters.join('&')\n    return axios.get(ApiLocation + `/catalog/${centerId}/lots/${productId}?${filtersQuery}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchLotsImages = lotIds => {\n    return axios.post(ApiLocation + `/catalog/lots-images`, { lots: lotIds })\n}\n\nexport const fetchUsersToImpersonate = token => {\n    return axios.get(ApiLocation + '/customers', {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchUsersToImpersonateByCenter = (centerId, token) => {\n    return axios.get(ApiLocation + '/customersByCenter/' + centerId, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchKpis = (token, filters) => {\n    return axios.post(ApiLocation + '/kpis', filters, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchKpisOpenOrders = (token, page, filters) => {\n    return axios.post(ApiLocation + `/kpis/open-orders?page=${page}`, filters, { headers: { Authorization: `Bearer ${token}` } })\n}\nexport const fetchKpisBackOrders = (token, page, filters) => {\n    return axios.post(ApiLocation + `/kpis/back-orders?page=${page}`, filters, { headers: { Authorization: `Bearer ${token}` } })\n}\n\nexport const fetchShippingAddresses = (token, centerId, locale) => {\n    return axios.get(ApiLocation + `/cart/${centerId}/shipping-addresses?locale=${locale}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchDeliveryDetails = (deliveryId, token) => {\n    return axios.get(ApiLocation + `/kpis/deliveries/${deliveryId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchReservations = (token, unassigned) => {\n    const location = unassigned ? `/kitchen/reservations/unassigned` : `/kitchen/reservations`\n\n    return axios.get(ApiLocation + location, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchCustomers = token => {\n    return axios.get(ApiLocation + `/kitchen/customers`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const rejectReservation = (token, reservationId) => {\n    return axios.post(ApiLocation + `/kitchen/reservations/${reservationId}/reject`, null, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const assignCustomer = (token, shippingAddressId, reservationId, preferredDeliveryDate, po, comments) => {\n    let shippingAddressData = {\n        shippingAddressId,\n        preferredDeliveryDate,\n        po,\n        comments\n    }\n\n    return axios.post(ApiLocation + `/kitchen/reservations/${reservationId}/assign`, shippingAddressData, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchSpecialNames = (token, center) => {\n    return axios.get(ApiLocation + `/catalog/${center}/custom-product-descriptions`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchUserPriceList = token => {\n    return axios.get(ApiLocation + `/catalog/user-price-list`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchRefreshUserPriceList = (token, centerId, productIds) => {\n    const body = { productIds }\n    return axios.post(ApiLocation + `/catalog/${centerId}/refresh-products-prices`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchUserPriceListByUser = (token, userId) => {\n    return axios.post(\n        ApiLocation + `/catalog/user-price-list-by-user`,\n        { userId },\n        {\n            headers: { Authorization: `Bearer ${token}` }\n        }\n    )\n}\nexport const fetchTransferOrders = (token, center) => {\n    const location = `/users/transfer-orders`\n    const body = { centerId: center }\n    return axios.post(ApiLocation + location, body, { headers: { Authorization: `Bearer ${token}` } })\n}\nexport const fetchOrders = (token, open, locale, centerId, startDate, endDate, filterTypeDate, status, shippingType, supplierCenter, search) => {\n    const location = open ? `/users/orders/open` : `/users/orders`\n    const body = { centerId, startDate, endDate, filterTypeDate, status, shippingType, supplierCenter, search }\n    return axios.post(ApiLocation + location + `?lang=${locale}`, body, { headers: { Authorization: `Bearer ${token}` } })\n}\nexport const fetchOrdersPaginate = (token, open, locale, centerId, startDate, endDate, filterTypeDate, status, shippingType, supplierCenter, search, page) => {\n    const location = open ? `/users/orders/open` : `/users/orders`\n    const body = { centerId, filterTypeDate, startDate, endDate, status, shippingType, supplierCenter, search, page }\n    return axios.post(ApiLocation + location + `?lang=${locale}`, body, { headers: { Authorization: `Bearer ${token}` } })\n}\n\nexport const fetchOrderDeliveriesPaginate = (token, status, startDate, endDate, search, locale, type, page) => {\n    const location = `/users/deliveries`\n    const body = { status, startDate, endDate, search, locale, type, page }\n    return axios.post(ApiLocation + location + `?page=${page}`, body, { headers: { Authorization: `Bearer ${token}` } })\n}\n\nexport const fetchOrderDeliveriesById = (token, deliveryId) => {\n    const location = `/users/delivery/${deliveryId}`\n    return axios.get(ApiLocation + location, { headers: { Authorization: `Bearer ${token}` } })\n}\n\nexport const fetchOffers = (token, open, locale, centerId, startDate, endDate) => {\n    const location = open ? `/users/offers/open` : `/users/offers`\n    const body = { centerId, startDate, endDate }\n    return axios.post(ApiLocation + location + `?lang=${locale}`, body, { headers: { Authorization: `Bearer ${token}` } })\n}\nexport const fetchOrderToEdit = (token, reservationId, locale) => {\n    let body = { lang: locale }\n    return axios.post(ApiLocation + `/users/order/${reservationId}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const saveOrderToEdit = (token, order, orderId, reservationId, locale) => {\n    let body = { modifications: order, orderId, reservationId }\n    return axios.put(ApiLocation + `/users/order/${orderId}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchOrderDetails = (token, reservationId, locale) => {\n    return axios.get(ApiLocation + `/users/order/${reservationId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchPackingList = (token, reservationId, locale) => {\n    return axios.get(ApiLocation + `/users/order/${reservationId}/packing-list`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchOfferOverview = (token, reservationId, locale) => {\n    return axios.get(ApiLocation + `/users/offer/${reservationId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const rejectOrder = (token, reservationId, orderId, locale) => {\n    let body = {\n        lang: locale,\n        reservationId\n    }\n    return axios.delete(ApiLocation + `/users/order/${orderId}`, {\n        headers: { Authorization: `Bearer ${token}` },\n        data: body\n    })\n}\nexport const getFileByUrl = (url, token) => {\n    return axios.get(url,\n        {\n        headers: {Authorization: `Bearer ${token}`},\n        responseType: 'blob'\n    })\n}\nexport const fetchRecurringOrders = (token, centerId, dateFrom = null, dateTo = null, search = null, page = null) => {\n    const location = `/users/previous-carts/${centerId}`\n    const params = new URLSearchParams([['dateFrom', dateFrom],['dateTo', dateTo],['search', search],['page', page]]);\n    return axios.get(ApiLocation + location, {\n        headers: {\n            Authorization: `Bearer ${token}`\n        },\n        params\n    })\n}\nexport const fetchRecurringOrdersDetails = (token, centerId, previousCartId) => {\n    return axios.get(ApiLocation + `/users/previous-carts/${centerId}/detail/${previousCartId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const add2cartRecurringOrders = (token, centerId, id, storeId, employeeId, locale) => {\n    const location = `/users/previous-carts/${centerId}/add-2-cart/${id}?lang=${locale}&${cartKey(storeId, employeeId)}`\n    return axios.get(ApiLocation + location, {\n        headers: {\n            Authorization: `Bearer ${token}`\n        }\n    })\n}\nexport const add2cartRecurringOrdersQty = (token, centerId, values, storeId, employeeId, locale) => {\n    let data = []\n    for(let value of values.lines){\n        data.push({\n            id: value.productId,\n            qty: value.qty\n        })\n    }\n    const params = new URLSearchParams({data: JSON.stringify(data)});\n    const location = `/users/previous-carts/${centerId}/add-2-cart/${values.id}?lang=${locale}&${cartKey(storeId, employeeId)}`\n    return axios.get(ApiLocation + location, {\n        headers: {\n            Authorization: `Bearer ${token}`\n        },\n        params\n    })\n}\nexport const fetchDirectSlabAccess = (reservationId = null, invoiceId = null, token, locale) => {\n    let body = {\n        reservationId,\n        invoiceId\n    }\n    return axios.post(ApiLocation + `/users/direct-slab-access?lang=${locale}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const saveProfileConfiguration = (token, profileConfigData, selectedCenterId) => {\n    const body = Object.assign({}, profileConfigData, { selectedCenterId })\n    return axios.put(ApiLocation + `/users/preferences`, body, {\n        headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }\n    })\n}\nexport const setUserEmailAAD = (token, email) => {\n    const body = { email }\n    return axios.put(ApiLocation + `/users/email-active-directory`, body, {\n        headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }\n    })\n}\nexport const changePassword = (token, password) => {\n    let body = {\n        password\n    }\n    return axios.post(ApiLocation + `/users/change-password`, body, {\n        headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }\n    })\n}\nexport const savePromotionConfiguration = (token, profileConfigData) => {\n    const body = Object.assign({}, profileConfigData)\n    return axios.put(ApiLocation + `/users/preferences/promotion`, body, {\n        headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }\n    })\n}\nexport const submitWhatsappOptin = (token, profileConfigData) => {\n    const body = Object.assign({}, profileConfigData)\n    return axios.put(ApiLocation + `/users/preferences/whatsapp`, body, {\n        headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }\n    })\n}\nexport const unsubscribeNewsletter = tokenOnlyLogin => {\n    const body = Object.assign({})\n    return axios.put(ApiLocation + `/users/preferences/unsubscribe-newsletter/${tokenOnlyLogin}`, body, {\n        headers: { 'Content-Type': 'application/json' }\n    })\n}\nexport const resubscribeNewsletter = tokenOnlyLogin => {\n    const body = Object.assign({})\n    return axios.put(ApiLocation + `/users/preferences/resubscribe-newsletter/${tokenOnlyLogin}`, body, {\n        headers: { 'Content-Type': 'application/json' }\n    })\n}\nexport const fetchPromotionConfiguration = token => {\n    return axios.get(ApiLocation + `/users/preferences/promotion`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchWhatsappConfiguration = token => {\n    return axios.get(ApiLocation + `/users/preferences/whatsapp`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const mandatoryChangePassword = (login, currentPassword, newPassword) => {\n    let body = {\n        login,\n        currentPassword,\n        newPassword\n    }\n    return axios.post(ApiLocation + `/users/mandatory-change-password`, body, {\n        headers: { 'Content-Type': 'application/json' }\n    })\n}\nexport const fetchProfileConfiguration = (token, selectedCenterId) => {\n    let body = {\n        selectedCenterId\n    }\n    return axios.post(ApiLocation + `/users/preferences`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchCenterPreferences = (token, centerId) => {\n    return axios.get(ApiLocation + `/center/${centerId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const deleteSegmentationPreferred = (currentFavourite, token, center) => {\n    let segmentationData = {\n        segmentation: {\n            name: currentFavourite\n        }\n    }\n    return axios.delete(ApiLocation + `/cart/${center}/segmentation`, {\n        headers: { Authorization: `Bearer ${token}` },\n        data: segmentationData\n    })\n}\nexport const saveSegmentationPreferred = (token, centerId, segmentationData) => axios.post(ApiLocation + `/cart/${centerId}/segmentation`, segmentationData, { headers: { Authorization: `Bearer ${token}` } })\n\nexport const fetchColorsCutToSize = (brand, lang, token) => {\n    return axios.post(ApiLocation + `/cut-to-size/search`, {\n        brand: brand,\n        lang: lang\n    }, {headers: { Authorization: `Bearer ${token}` }})\n}\nexport const fetchSamplesCutToSize = (brand, lang, token) => {\n    //HARDCODE: [api] cuttosize samples\n    return Promise.resolve({ data: hardcode.samplesCutToSize })\n}\nexport const fetchFurnituresCutToSize = (brand, lang, token) => {\n    //HARDCODE: [api] cuttosizse furnitures\n    return Promise.resolve({ data: hardcode.furnituresCutToSize })\n}\nexport const fetchColorsMktoolsAttr = token => {\n    return axios.get(ApiLocation + `/catalog/fetch-mktools-colors`)\n}\nexport const saveColorsMktoolsAttr = (token, colors) => {\n    let data = { colors: colors }\n    return axios.post(ApiLocation + `/catalog/save-mktools-colors`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchProductsFavourite = (token, centerId) => {\n    return axios.get(ApiLocation + `/users/favourite-products/${centerId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchProductsDiscounts = (token, centerId) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/products/discounts`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const addProductsFavourite = (token, centerId, productId) => {\n    let data = { products: [productId] }\n    return axios.post(ApiLocation + `/users/favourite-products/${centerId}`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const removeProductsFavourite = (token, centerId, productId) => {\n    let data = { products: [productId] }\n    return axios.delete(ApiLocation + `/users/favourite-products/${centerId}`, {\n        headers: { Authorization: `Bearer ${token}` },\n        data: data\n    })\n}\nexport const sendSuggestion = (token, data) => {\n    return axios.post(ApiLocation + `/users/suggestions-mailbox`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchBrochuresLowes = () => {\n    //HARDCODE: [api] Lowes brochures\n    return Promise.resolve({ data: { brochures: hardcode.brochuresLowes } })\n}\n\nexport const fetchMarkets = token => {\n    return axios.get(ApiLocation + '/api/mall/sales-organization/markets', {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const fetchCountries = (token, salesOrg) => {\n    return axios.post(\n        ApiLocation + '/api/mall/sales-organization/countries',\n        {\n            salesOrg: salesOrg\n        },\n        {\n            headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n        }\n    )\n}\n\nexport const fetchCenters = (token, salesOrg) => {\n    return axios.post(\n        ApiLocation + '/api/mall/sales-organization/centers',\n        {\n            salesOrg: salesOrg\n        },\n        {\n            headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n        }\n    )\n}\n\nexport const fetchLangs = token => {\n    return axios.get(ApiLocation + '/api/mall/langs', {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const fetchTemplates = token => {\n    return axios.get(ApiLocation + '/api/mall/templates', {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const fetchLandings = token => {\n    return axios.get(ApiLocation + '/api/mall/landings', {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const fetchUserLandings = (token, language, selectedCenter) => {\n    return axios.get(ApiLocation + '/api/mall/landings/user/' + selectedCenter + '/' + language, {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\nexport const fetchLandingsQuery = (token, query) => {\n    return axios.post(\n        ApiLocation + '/api/mall/landings',\n        null,\n        {\n            params: {\n                search_string: query,\n                skip: 0,\n                limit: 99\n            }\n        },\n        { headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() } }\n    )\n}\n\nexport const fetchLanding = token => {\n    return axios.get(ApiLocation + '/api/mall/landing', {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\nexport const createLanding = (token, landing) => {\n    // for (var pair of landing.entries()) {\n        // console.log(pair[0]+ ', ' + pair[1]);\n    // }\n    return axios({\n        method: 'post',\n        url: ApiLocation + '/api/mall/landing',\n        data: landing,\n        headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'multipart/form-data', 'X-Timezone': dayjs.tz.guess() }\n    })\n}\nexport const createLandingTranslated = (token, landing) => {\n    // for (var pair of landing.entries()) {\n        // console.log(pair[0]+ ', ' + pair[1]);\n    // }\n    return axios({\n        method: 'post',\n        url: ApiLocation + '/api/mall/landing/translated',\n        data: landing,\n        headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'multipart/form-data', 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const updateLanding = (token, landing) => {\n    return axios({\n        method: 'post',\n        url: ApiLocation + '/api/mall/landing/update',\n        data: landing,\n        headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'multipart/form-data', 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const updateLandingTranslated = (token, landing) => {\n    return axios({\n        method: 'post',\n        url: ApiLocation + '/api/mall/landing/update/translated',\n        data: landing,\n        headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'multipart/form-data', 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const fetchLandingbyId = (token, id, iso) => {\n    return axios.get(ApiLocation + `/api/mall/landing/${iso}/${id}`, {\n        headers: {\n            Authorization: `Bearer ${token}`,\n            'X-Timezone': dayjs.tz.guess()\n        }\n    })\n}\n\nexport const getLandingSlug = (token, data) => {\n    return axios.post(ApiLocation + `/api/mall/landing/slug`, data, {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const getLandingBySlug = (token, slug, language, selectedCenter) => {\n    return axios.get(ApiLocation + `/api/mall/landing/user/${selectedCenter}/${language}/${slug}`, {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const getPreviewLandingBySlug = (token, slug, language) => {\n    return axios.get(ApiLocation + `/api/mall/landing/preview/${language}/${slug}`, {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const    getMallLots = (token, centers, productId, landingCommonId, landingProductId, lang) => {\n    return axios.post(\n        ApiLocation + '/api/mall/mall-lots',\n        {centers, productId, landingCommonId, landingProductId, lang},\n        {\n            headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n        }\n    )\n}\n\nexport const deleteLanding = (token, id, iso) => {\n    return axios.delete(ApiLocation + `/api/mall/landing/${iso}/${id}`, {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const deleteLandingImage = (token, id, type) => {\n    return axios.delete(ApiLocation + `/api/mall/landing/image/${type}/${id}`, {\n        headers: { Authorization: `Bearer ${token}`, 'X-Timezone': dayjs.tz.guess() }\n    })\n}\n\nexport const fetchProductsLowes = token => {\n    return axios.get(ApiLocation + '/lowes/colors', {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchProductsLowes2 = () => {\n    //HARDCODE: productLowes\n    return Promise.resolve({ data: { products: hardcode.productsLowes2 } })\n}\nexport const sendCheckoutLowes = cart => {\n    //MOCK: Lowes checkout\n    return Promise.resolve({ data: { idConfirmation: 'A confirmation email will be sent' } })\n}\nexport const saveTemplateLowes = (token, template) => {\n    const body = {\n        name: template.name,\n        plan: JSON.stringify(template.samples),\n        stores: template.stores,\n        screenshot: template.screenshot\n    }\n    return axios.post(ApiLocation + `/lowes/plans`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const updateTemplateLowes = (token, template) => {\n    const body = {\n        name: template.name,\n        screenshot: template.screenshot,\n        plan: JSON.stringify(template.samples),\n        stores: template.stores\n    }\n\n    return axios.put(ApiLocation + `/lowes/plans/${template.id}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const deleteTemplateLowes = (token, templateId) => {\n    return axios.delete(ApiLocation + `/lowes/plans/${templateId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const enableTemplateLowes = (token, templateId) => {\n    return axios.get(ApiLocation + `/lowes/plans/${templateId}/enable`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const disableTemplateLowes = (token, templateId) => {\n    return axios.get(ApiLocation + `/lowes/plans/${templateId}/disable`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const editTemplateName = (token, templateId, name) => {\n    return axios.post(\n        ApiLocation + `/lowes/plans/${templateId}/rename`,\n        { name: name },\n        {\n            headers: { Authorization: `Bearer ${token}` }\n        }\n    )\n}\nexport const updateStore = (token, storeId, templatesId) => {\n    let body = { plans: templatesId }\n    return axios.put(ApiLocation + `/lowes/stores/${storeId}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchUsersShopperLowes = token => {\n    return axios.get(ApiLocation + `/lowes/stores`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchTemplatesLowes = token => {\n    return axios.get(ApiLocation + `/lowes/plans`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const askLocation = token => {\n    return axios.get(ApiLocation + `/helper/visitor-land`)\n}\nexport const fetchMaintenance = token => {\n    return axios.get(ApiLocation + `/helper/maintenance`)\n}\n//MOCK: sendFormRegister\nexport const sendFormRegister = (email, user, pass) => {\n    return new Promise((resolve, reject) => {\n        setTimeout(() => {\n            if (user !== 'error') {\n                resolve({ data: { msg: 'your account has been created', status: 200 } })\n            } else {\n                reject({ data: { msg: 'error', status: 500 } })\n            }\n        }, 2000)\n    })\n}\n//MOCK: sendFormNewRegister\nexport const sendFormNewRegister = (email, name, lastName, storeNumber, pass) => {\n    return new Promise((resolve, reject) => {\n        setTimeout(() => {\n            if (name !== 'error') {\n                resolve({ data: { msg: 'your account has been created', status: 200 } })\n            } else {\n                reject({ data: { msg: 'error', status: 500 } })\n            }\n        }, 2000)\n    })\n}\nexport const saveProductsMktToMax = (token, products) => {\n    let data = { products: products }\n    return axios.post(ApiLocation + `/catalog/mktools-edit`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchProductsMktToMax = token => {\n    return axios.get(ApiLocation + `/catalog/mktools-edit`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchProductsDeviatedAdmin = token => {\n    return axios.get(ApiLocation + `/catalog/products-deviated-admin`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const saveProductsDeviatedAdmin = (token, descriptions) => {\n    let data = { descriptions: descriptions }\n    return axios.post(ApiLocation + `/catalog/save-products-deviated-admin`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchDeviatedDescriptions = (token, centerId) => {\n    return axios.get(ApiLocation + `/catalog/products-deviated-descriptions?centerId=${centerId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchAllLowesOrders = token => {\n    return axios.get(ApiLocation + `/lowes/orders`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchAllLowesLinesOrders = (token, page, pageSize, query, startDate, endDate) => {\n    const body = { startDate, endDate }\n    return axios.post(ApiLocation + `/lowes/lines-orders?page=${page}&pageSize=${pageSize}&query=${query}&startDate=${startDate}&endDate=${endDate}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchLowesOrderDetails = (reservationId, token) => {\n    return axios.get(ApiLocation + `/lowes/orders/${reservationId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const sendTranslation = (termId, translation, language) => {\n    let transJson = [{ term: termId, translation: { content: translation } }]\n    transJson = encodeURIComponent(JSON.stringify(transJson))\n    const body = 'api_token=' + process.env.REACT_APP_POEDITOR_API_KEY + '&id=' + process.env.REACT_APP_PROJECT_ID + '&data=' + transJson + '&language=' + language\n    return axios.post(process.env.REACT_APP_POEDITOR_API + '/languages/update', body)\n}\nexport const getTranslation = language => {\n    const data2 = 'api_token=' + process.env.REACT_APP_POEDITOR_API_KEY + '&id=' + process.env.REACT_APP_PROJECT_ID + '&language=' + language\n    return axios.post(process.env.REACT_APP_POEDITOR_API + '/terms/list', data2)\n}\nexport const fetchInfoEnv = () => {\n    return axios.get(ApiLocation + `/infoenv`)\n}\nexport const fetchChangelogByProject = (token, onlyNews) => {\n    return axios.get(ApiLocation + `/changelog-items-by-project-and-functionality${onlyNews ? '?news=WHATS_NEW' : ''}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const toJson = response => {\n    return response.json()\n}\n\nexport const checkVoucher = (token, centerId, voucher, lang) => {\n    return axios.post(\n        ApiLocation + `/cart/${centerId}/validate-voucher`,\n        {\n            voucher,\n            lang\n        },\n        {\n            headers: { Authorization: `Bearer ${token}` }\n        }\n    )\n}\nexport const removeVoucher = (token, centerId, voucher, lang) => {\n    return axios.post(\n        ApiLocation + `/cart/${centerId}/remove-voucher`,\n        {\n            voucher,\n            lang\n        },\n        {\n            headers: { Authorization: `Bearer ${token}` }\n        }\n    )\n}\nexport const noShowMoreSubscribeModal = token => {\n    return axios.post(\n        ApiLocation + `/promotions/subscribe/no-show-more`,\n        {},\n        {\n            headers: { Authorization: `Bearer ${token}` }\n        }\n    )\n}\nexport const noShowMoreWhatsappModal = token => {\n    return axios.post(\n        ApiLocation + `/users/preferences/whatsapp/no-show-more`,\n        {},\n        {\n            headers: { Authorization: `Bearer ${token}` }\n        }\n    )\n}\nexport const getPromotionByCenterId = (token, centerId) => {\n    return axios.get(ApiLocation + `/promotions/${centerId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const sendTemplatesSelected = (token, data) => {\n    return axios.post(ApiLocation + `/promotions/templates`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const getPromotionsList = (token, lang, page = null, perPage = null, filters = null) => {\n    const data = { lang, page, perPage, filters }\n    return axios.post(ApiLocation + `/promotions/promotions-list`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const getPromotionToEdit = (token, promotionId) => {\n    return axios.get(ApiLocation + `/promotions/to-edit/${promotionId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchCustomersOfArea = (token, market, countries, centers) => {\n    const data = { market, countries, centers }\n    return axios.post(ApiLocation + `/promotions/customers-of-area`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const sendCustomersSelected = (token, promotionId, customers) => {\n    const data = { promotionId, customers }\n    return axios.post(ApiLocation + `/promotions/set-promotion-customers`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const sendMaterialsSelected = (token, promotionId, materials, materialsWithOutletSelected) => {\n    const data = { promotionId, materials, materialsWithOutletSelected }\n    return axios.post(ApiLocation + `/promotions/set-materials`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const sendMaterialsToRequestDiscount = (token, centerId, promotionId, materials, lang) => {\n    const data = { centerId, promotionId, materials, lang }\n    return axios.post(ApiLocation + `/promotions/set-discount-materials`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const getBanners = (token, pageSelected, search, type) => {\n    const data = { page: pageSelected, search, type}\n    return axios.post(ApiLocation + `/promotions/banners`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const getPromotionData = (token, promotionId, centerId, lang) => {\n    return axios.get(ApiLocation + `/promotions/data/${promotionId}?centerId=${centerId}&lang=${lang}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const sendPreviewPromotionEmail = (token, promotionId, email, userSelected, centerId, lang) => {\n    const data = { promotionId, email, userSelected, centerId, lang }\n    return axios.post(ApiLocation + `/promotions/send-email-promotion-preview`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const enablePromotion = (token, promotionId) => {\n    return axios.post(\n        ApiLocation + `/promotions/enable-promotion`,\n        { promotionId },\n        {\n            headers: { Authorization: `Bearer ${token}` }\n        }\n    )\n}\nexport const disablePromotion = (token, promotionId) => {\n    return axios.post(\n        ApiLocation + `/promotions/disable-promotion`,\n        { promotionId },\n        {\n            headers: { Authorization: `Bearer ${token}` }\n        }\n    )\n}\n\nexport const getAllProductOfTheLastQueryMultiCenterByUser = token => {\n    return axios.post(\n        ApiLocation + `/promotions/get-products-last-query`,\n        {},\n        {\n            headers: { Authorization: `Bearer ${token}` }\n        }\n    )\n}\n\nexport const getIsCampaignAdmin = token => {\n    return axios.get(ApiLocation + `/users/is-campaign-admin`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const errorHandler = (dispatch, error) => {\n    if (!error) {\n        dispatch(setError('NETWORK_ERROR'))\n        dispatch(dispatchPushURL('/error'))\n    } else {\n        if (error.status === 500) {\n            dispatch(dispatchPushURL('/error'))\n            localStorage.clear()\n            dispatch(logout(true))\n        } else if (error.status === 400) {\n        } else if (error.status === 401) {\n            dispatch(logout(true))\n            localStorage.clear()\n            dispatch({ type: 'LOGIN_REQUIRED', payload: { statusText: error.data.err || error.response } })\n        } else if (error.status === 404) {\n        } else if (error.status === 503 && error.data.err === 'MAINTENANCE_MODE_ON') {\n            dispatch({ type: 'RESET_UI' })\n            dispatch({ type: 'MAINTENANCE_MODE_ON' })\n        } else {\n            dispatch(push('/error'))\n        }\n        //400 Gentile\n        //404 url not found\n    }\n}\n\nexport const cartKey = (storeId, employeeId) => {\n    let cartKey = []\n    if (storeId) cartKey.push(`storeId=${storeId}`)\n    if (employeeId) cartKey.push(`employeeId=${employeeId}`)\n\n    const cartKeyQuery = cartKey.join('&')\n    return cartKeyQuery\n}\nexport const checkStatus = response => {\n    if (!response.ok) {\n        var error = new Error(response.statusText)\n        error.response = response\n        throw error\n    }\n\n    return response.json()\n}\n\nexport const sendPromotionHeader = (token, data) => {\n    return axios.post(ApiLocation + `/promotions/header`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const uploadPromotionFile = (token, formData) => {\n    return axios.post(ApiLocation + `/promotions/upload-banner`, formData, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const sendBanners = (token, data) => {\n    return axios.post(ApiLocation + `/promotions/set-banners`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const promotionFetchMarkets = token => {\n    return axios.get(ApiLocation + `/promotions/markets`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const promotionFetchCountries = (token, data) => {\n    return axios.post(ApiLocation + '/promotions/countries', data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const promotionFetchCenters = (token, data) => {\n    return axios.post(ApiLocation + '/promotions/centers', data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const sendPromotionArea = (token, data) => {\n    return axios.post(ApiLocation + `/promotions/area`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const rejectQuote = (token, reservationId) => {\n    // const response = {response : {}}\n    // response.response.data = {'err' : 'ddddd'}\n    // return Promise.reject(response)\n\n    return axios.post(ApiLocation + `/users/reject-quote/${reservationId}`, {}, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const acceptQuote = (token, reservationId) => {\n    // const response = {response : {}}\n    // response.response.data = {'err' : 'ddddd'}\n    // return Promise.reject(response)\n\n    return axios.post(ApiLocation + `/users/accept-quote/${reservationId}`, {},{\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchAdvertisements = (selectedCenter) => {\n    return axios.get(ApiLocation + `/advertisements/get/${selectedCenter}`, {})\n}\n\nexport const getDataToResolveDiscount = (token, promotionId, centers) => {\n    return axios.post(ApiLocation + `/promotions/to-resolve-discount/${promotionId}`, {centers}, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchDiscountMaterialsData = (token, promotionId) => {\n    return axios.get(ApiLocation + `/promotions/get-discount-materials-data/${promotionId}/csv`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\nexport const fetchDiscountCustomersData = (token, promotionId) => {\n    return axios.get(ApiLocation + `/promotions/get-discount-customers-data/${promotionId}/csv`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const checkPromotionDiscount = (token, promotionId, vistexId) => {\n    return axios.get(ApiLocation + `/promotions/check-discount/${promotionId}/${vistexId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const sendApproveCampaignDiscount = (token, promotionId, vistex_ids, comments, lang) => {\n    const data = {vistex_ids, comments, lang}\n    return axios.post(ApiLocation + `/promotions/approve-campaign-discounts/${promotionId}`, data,{\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const sendDenyCampaignDiscount = (token, promotionId, reason, lang) => {\n    const data = {reason, lang}\n    return axios.post(ApiLocation + `/promotions/deny-campaign-discounts/${promotionId}`, data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const sendCampaignDiscountStatus = (token, promotionId, status) => {\n    return axios.get(ApiLocation + `/promotions/set-campaign-discounts/${promotionId}/${status}`,  {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const sendClonePromotion = (token, promotionId) => {\n    return axios.post(ApiLocation + `/promotions/clone-promotion/${promotionId}`, {}, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const downloadImage = (token, url, name) => {\n    const data = {url, name}\n    return axios.post(ApiLocation + '/users/download-image', data,\n        {\n            headers: {Authorization: `Bearer ${token}`},\n            responseType: 'blob'\n        }).then((response) => {\n            FileDownload(response.data, name);\n        })\n}\n\nexport const fetchPackagingImages = (token, orderId) => {\n    return axios.get(ApiLocation + `/users/order/${orderId}/packaging-images`,\n    { headers: {Authorization: `Bearer ${token}`}\n    })\n}\n\nexport const fetchLastVisitedProducts = (token, centerId) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/last-visited-products`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchBoughtTogetherProducts = (token, centerId, productId) => {\n    return axios.get(ApiLocation + `/catalog/${centerId}/products-bought-together/${productId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const postVisitedProduct = (token, centerId, productId, outlet) => {\n    return axios.put(ApiLocation + `/catalog/${centerId}/visited-product/${productId}`, {outlet}, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\n/**\n * Send / post the walkthrough data after finishing the walkthrough\n * @param {string} email \n * @param {string} lang \n * @param {string} type \n * @param {boolean} noShowMore \n * @param {object} token \n */\nexport const sendWalkthrough = (email, lang, type, noShowMore, token) => {\n    const data = {\n        email: email,\n        lang: lang,\n        type: type,\n        no_show_more: noShowMore\n    }\n\n    return axios.post(ApiLocation + '/user-walkthrough', data, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\n/**\n * Fetch / get the user walkthrough data\n * @param {object} token \n */\nexport const fetchHasWalkthrough = token => {\n    return axios.get(ApiLocation + `/user-has-walkthrough`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\n/**\n * Post corresponding data to set the sla dates.\n * @param {(string|int)} centerId\n * @param {string} shippingMethod\n * @param {object} token\n */\nexport const setLinesSlaDate = (centerId, shippingMethod, selectedShippingAddrId, selectedShippingCenterId, token, employeeId) => {\n    let body = {\n        shippingMethod: shippingMethod,\n        shippingAddressId: selectedShippingAddrId,\n        shippingCenterId: selectedShippingCenterId,\n        employeeId: employeeId\n    }\n\n    return axios.post(ApiLocation + `/cart/${centerId}/lines/sla-dates`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const changeCartLineCutToSize = (lineId, cutToSize, centerId, token, storeId = null, employeeId = null) => {\n    let body = { cutToSize: cutToSize }\n\n    return axios.patch(ApiLocation + `/cart/${centerId}/lines/${lineId}/cut-to-size?${cartKey(storeId, employeeId)}`, body, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchVirtualVisitSalesforceId = (userId, token) => {\n    return axios.get(ApiLocation + `/cart/vv-salesforce-ids/${userId}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\n","export const setError = error => (dispatch, getState) => {\n    dispatch({ type: 'SET_ERROR', error })\n}\n","import React from 'react'\n\nimport { Link  } from 'react-router-dom'\nimport { injectIntl, defineMessages } from 'react-intl'\nimport { connect } from 'react-redux'\n\nimport { getCurrentUrl } from '../../store/ui/reducers'\nimport { withRouter } from 'react-router-dom'\n\n\nconst mapStateToProps = (state ,{match}) => {\n    return { \n        currentUrl: getCurrentUrl(state),\n    }\n}\n\nconst LocalizedLink = ({ currentUrl, intl, routeId, params = {}, children, className, queryString = '', target, onClick, style, gtmLabel, dataQas}) => {\n\n    // Construye la URL base con el prefijo de idioma si no es 'en-US'\n    const prefix = intl.locale !== 'en-US' ? `/${intl.locale}` : ''\n\n    const route = prefix + Object.keys(params).reduce((previous, value) => {\n        const optional = previous.replace(`:${value}?`, params[value])\n        return optional.replace(`:${value}`, params[value])\n    }, intl.formatMessage({ id: routeId }))\n\n    // Limpia la URL base y añade el queryString (si existe)\n    // let url = `${route}${queryString}`.replace('//', '/').replace(/\\/+$/, '')\n    let url = `${route}${queryString}`.replace(/\\/\\/+/g, '/').replace(/\\/$/, '');\n\n    // Calcula `active` basándose en la coincidencia exacta de pathname y queryString\n    const active = url === `${currentUrl.pathname}${currentUrl.search}`\n\n    return (\n        <React.Fragment>\n            {\n                <Link to={url} isActive={false} className={`${className} ${active ? ' active' : ''}`} target={target} onClick={onClick} style={style} data-qas={dataQas} gtm-label={gtmLabel}>\n                    {children}\n                </Link>\n            }\n        </React.Fragment>\n    )\n}\ndefineMessages({\n    ABU: {\n        id: 'ABU',\n        description: 'ABU',\n        defaultMessage: 'BUSH'\n    },\n    AN1: {\n        id: 'AN1',\n        description: 'AN1',\n        defaultMessage: 'ANTICO'\n    },\n    AN2: {\n        id: 'AN2',\n        description: 'AN2',\n        defaultMessage: 'ANTIQUE'\n    },\n    ANC: {\n        id: 'ANC',\n        description: 'ANC',\n        defaultMessage: 'ANCIENT'\n    },\n    AND: {\n        id: 'AND',\n        description: 'AND',\n        defaultMessage: 'GRIP +'\n    },\n    ANT: {\n        id: 'ANT',\n        description: 'ANT',\n        defaultMessage: 'ANTICATO'\n    },\n    APO: {\n        id: 'APO',\n        description: 'APO',\n        defaultMessage: 'HONED'\n    },\n    AW: {\n        id: 'AW',\n        description: 'AW',\n        defaultMessage: 'AW'\n    },\n    BOM: {\n        id: 'BOM',\n        description: 'BOM',\n        defaultMessage: 'ENV A BOMBO'\n    },\n    BRU: {\n        id: 'BRU',\n        description: 'BRU',\n        defaultMessage: 'ROUGH'\n    },\n    BU: {\n        id: 'BU',\n        description: 'BU',\n        defaultMessage: 'Builder'\n    },\n    CAR: {\n        id: 'CAR',\n        description: 'CAR',\n        defaultMessage: 'CARESSE'\n    },\n    CAS: {\n        id: 'CAS',\n        description: 'CAS',\n        defaultMessage: 'SENSA CARESSE'\n    },\n    CEM: {\n        id: 'CEM',\n        description: 'CEM',\n        defaultMessage: 'CONCRETE'\n    },\n    CEP: {\n        id: 'CEP',\n        description: 'CEP',\n        defaultMessage: 'BRUSHED'\n    },\n    CMB: {\n        id: 'CMB',\n        description: 'CMB',\n        defaultMessage: 'POLISHED - SUEDE'\n    },\n    CO: {\n        id: 'CO',\n        description: 'CO',\n        defaultMessage: 'Commercial'\n    },\n    CODIGO: {\n        id: 'CODIGO',\n        description: 'CODIGO',\n        defaultMessage: 'ES'\n    },\n    CONTAINER: {\n        id: 'CONTAINER',\n        description: 'CONTAINER',\n        defaultMessage: 'Container'\n    },\n    ENDI_CONTAINER: {\n        id: 'ENDI_CONTAINER',\n        description: 'ENDI_CONTAINER',\n        defaultMessage: 'Container'\n    },\n    CPV: {\n        id: 'CPV',\n        description: 'CPV',\n        defaultMessage: 'POLISHED - VOLCANO'\n    },\n    DIRECT_TRUCK: {\n        id: 'DIRECT_TRUCK',\n        description: 'DIRECT_TRUCK',\n        defaultMessage: 'Direct truck'\n    },\n    SEND_PROMOTION_HEADER_SUCCESS: {\n        id: 'SEND_PROMOTION_HEADER_SUCCESS',\n        description: 'SEND_PROMOTION_HEADER_SUCCESS',\n        defaultMessage: 'General info saved successfully'\n    },\n    SEND_PROMOTION_CENTERS_SUCCESS: {\n        id: 'SEND_PROMOTION_CENTERS_SUCCESS',\n        description: 'SEND_PROMOTION_CENTERS_SUCCESS',\n        defaultMessage: 'Market target saved successfully'\n    },\n    SEND_CUSTOMERS_SELECTED_SUCCESS: {\n        id: 'SEND_CUSTOMERS_SELECTED_SUCCESS',\n        description: 'SEND_CUSTOMERS_SELECTED_SUCCESS',\n        defaultMessage: 'Customers saved successfully'\n    },\n    SEND_MATERIALS_SELECTED_SUCCESS: {\n        id: 'SEND_MATERIALS_SELECTED_SUCCESS',\n        description: 'SEND_MATERIALS_SELECTED_SUCCESS',\n        defaultMessage: 'Materials saved successfully'\n    },\n    SEND_TEMPLATES_SELECTED_SUCCESS: {\n        id: 'SEND_TEMPLATES_SELECTED_SUCCESS',\n        description: 'SEND_TEMPLATES_SELECTED_SUCCESS',\n        defaultMessage: 'Templates saved successfully'\n    },\n    SEND_BANNERS_SUCCESS: {\n        id: 'SEND_BANNERS_SUCCESS',\n        description: 'SEND_BANNERS_SUCCESS',\n        defaultMessage: 'Banners saved successfully'\n    },\n    REQUESTED_CAMPAIGN_DISCOUNT: {\n        id: 'REQUESTED_CAMPAIGN_DISCOUNT',\n        description: 'REQUESTED_CAMPAIGN_DISCOUNT',\n        defaultMessage:\n            'The selected discounts have been requested to Pricing. \\n' +\n            'When the discounts have been approved you will be able to see them in the campaign. \\n' +\n            'You can continue creating the campaign'\n    },\n    NOT_REQUESTED_CAMPAIGN_DISCOUNT: {\n        id: 'NOT_REQUESTED_CAMPAIGN_DISCOUNT',\n        description: 'NOT_REQUESTED_CAMPAIGN_DISCOUNT',\n        defaultMessage: 'There are no modifications. The discount has not been requested.'\n    },\n    ENDI_TRUCK: {\n        id: 'ENDI_TRUCK',\n        description: 'ENDI_TRUCK',\n        defaultMessage: 'Truck'\n    },\n    DOA: {\n        id: 'DOA',\n        description: 'DOA',\n        defaultMessage: 'TWO FACES HONNED'\n    },\n    DOL: {\n        id: 'DOL',\n        description: 'DOL',\n        defaultMessage: 'TWO FACES LEATHER'\n    },\n    DOS: {\n        id: 'DOS',\n        description: 'DOS',\n        defaultMessage: 'TWO FACES POLISHED'\n    },\n    DOV: {\n        id: 'DOV',\n        description: 'DOV',\n        defaultMessage: 'TWO FACES VOLCANO'\n    },\n    DSL: {\n        id: 'DSL',\n        description: 'DSL',\n        defaultMessage: 'SUEDE TWO FACES'\n    },\n    ENA: {\n        id: 'ENA',\n        description: 'ENA',\n        defaultMessage: 'CENTURY - GLASE'\n    },\n    ENV: {\n        id: 'ENV',\n        description: 'ENV',\n        defaultMessage: 'CENTURY'\n    },\n    ESC: {\n        id: 'ESC',\n        description: 'ESC',\n        defaultMessage: 'SCARIFIED'\n    },\n    FH: {\n        id: 'FH',\n        description: 'FH',\n        defaultMessage: 'Franchises'\n    },\n    FLA: {\n        id: 'FLA',\n        description: 'FLA',\n        defaultMessage: 'FLAMED'\n    },\n    FLC: {\n        id: 'FLC',\n        description: 'FLC',\n        defaultMessage: 'FLAMEADO - CENTURY'\n    },\n    DOE: {\n        id: 'DOE',\n        description: 'DOE',\n        defaultMessage: 'DOE'\n    },\n    ROU: {\n        id: 'ROU',\n        description: 'RAW',\n        defaultMessage: 'RAW'\n    },\n    FULL_TRUCK: {\n        id: 'FULL_TRUCK',\n        description: 'FULL_TRUCK',\n        defaultMessage: 'Full truck'\n    },\n    GC2: {\n        id: 'GC2',\n        description: 'GC2',\n        defaultMessage: 'GRIP'\n    },\n    HD: {\n        id: 'HD',\n        description: 'HD',\n        defaultMessage: 'Home Depot'\n    },\n    HI: {\n        id: 'HI',\n        description: 'HI',\n        defaultMessage: 'Home Depot Interiors'\n    },\n    HP: {\n        id: 'HP',\n        description: 'HP',\n        defaultMessage: 'HP'\n    },\n    IN: {\n        id: 'IN',\n        description: 'IN',\n        defaultMessage: 'Inventory'\n    },\n    KB: {\n        id: 'KB',\n        description: 'KB',\n        defaultMessage: 'Kitchen & Bath'\n    },\n    LEA: {\n        id: 'LEA',\n        description: 'LEA',\n        defaultMessage: 'Leather'\n    },\n    LES: {\n        id: 'LES',\n        description: 'LES',\n        defaultMessage: 'Sensa Leather'\n    },\n    LW: {\n        id: 'LW',\n        description: 'LW',\n        defaultMessage: 'Lowes'\n    },\n    M1: {\n        id: 'M1',\n        description: 'M1',\n        defaultMessage: 'Extra'\n    },\n    M2: {\n        id: 'M2',\n        description: 'M2',\n        defaultMessage: 'Select'\n    },\n    M3: {\n        id: 'M3',\n        description: 'M3',\n        defaultMessage: 'Standard'\n    },\n    MAL: {\n        id: 'MAL',\n        description: 'MAL',\n        defaultMessage: 'Meshed'\n    },\n    MAT: {\n        id: 'MAT',\n        description: 'MAT',\n        defaultMessage: 'Matte'\n    },\n    MIR: {\n        id: 'MIR',\n        description: 'MIR',\n        defaultMessage: 'Sensa Mirage'\n    },\n    NA: {\n        id: 'NA',\n        description: 'NA',\n        defaultMessage: 'NA'\n    },\n    NAC: {\n        id: 'NAC',\n        description: 'NAC',\n        defaultMessage: 'NATURAL CALIBRATED'\n    },\n    NAT: {\n        id: 'NAT',\n        description: 'NATURAL',\n        defaultMessage: 'NATURAL'\n    },\n    NOT: {\n        id: 'NOT',\n        description: 'NOT',\n        defaultMessage: 'No apply'\n    },\n    OCE: {\n        id: 'OCE',\n        description: 'OCE',\n        defaultMessage: 'OCEAN'\n    },\n    PI: {\n        id: 'PI',\n        description: 'PI',\n        defaultMessage: 'MAXIM'\n    },\n    LIN: {\n        id: 'LIN',\n        description: 'LINEARITY',\n        defaultMessage: 'LINEARITY'\n    },\n    QUA: {\n        id: 'QUA',\n        description: 'QUARRY',\n        defaultMessage: 'QUARRY'\n    },\n    PR: {\n        id: 'PR',\n        description: 'PR',\n        defaultMessage: 'PR'\n    },\n    PS: {\n        id: 'PS',\n        description: 'PS',\n        defaultMessage: 'Ps'\n    },\n    PUA: {\n        id: 'PUA',\n        description: 'PUA',\n        defaultMessage: 'Mirage - Glase'\n    },\n    PUC: {\n        id: 'PUC',\n        description: 'PUC',\n        defaultMessage: 'Mirage - Century'\n    },\n    PUL: {\n        id: 'PUL',\n        description: 'PUL',\n        defaultMessage: 'Polished'\n    },\n    PULMAL: {\n        id: 'PULMAL',\n        description: 'PULMAL',\n        defaultMessage: 'Polished-Meshed'\n    },\n    PUN: {\n        id: 'PUN',\n        description: 'PUN',\n        defaultMessage: 'Polished N-Boost'\n    },\n    RD: {\n        id: 'RD',\n        description: 'RD',\n        defaultMessage: 'RD'\n    },\n    DA: {\n        id: 'DA',\n        description: 'DA',\n        defaultMessage: 'Direct Accounts'\n    },\n    HE: {\n        id: 'HE',\n        description: 'HE',\n        defaultMessage: 'High end'\n    },\n    RE: {\n        id: 'RE',\n        description: 'RE',\n        defaultMessage: 'Residential'\n    },\n    RUG: {\n        id: 'RUG',\n        description: 'RUG',\n        defaultMessage: 'ROUGH'\n    },\n    SAT: {\n        id: 'SAT',\n        description: 'SAT',\n        defaultMessage: 'SATIN'\n    },\n    SIN: {\n        id: 'SIN',\n        description: 'SIN',\n        defaultMessage: 'NO FINISH'\n    },\n    SINGLE_SLAB: {\n        id: 'SINGLE_SLAB',\n        description: 'SINGLE_SLAB',\n        defaultMessage: 'Single slab'\n    },\n    SLE: {\n        id: 'SLE',\n        description: 'SLE',\n        defaultMessage: 'SUEDE LEATHER'\n    },\n    SNB: {\n        id: 'SNB',\n        description: 'SNB',\n        defaultMessage: 'SUEDE N - BOOST'\n    },\n    SR: {\n        id: 'SR',\n        description: 'SR',\n        defaultMessage: 'Sears'\n    },\n    SUE: {\n        id: 'SUE',\n        description: 'SUE',\n        defaultMessage: 'SUEDE'\n    },\n    TEX: {\n        id: 'TEX',\n        description: 'TEX',\n        defaultMessage: 'TEXTURIZED'\n    },\n    TOC: {\n        id: 'TOC',\n        description: 'TOC',\n        defaultMessage: 'BILLET'\n    },\n    VEL: {\n        id: 'VEL',\n        description: 'VEL',\n        defaultMessage: 'VELVET'\n    },\n    VOL: {\n        id: 'VOL',\n        description: 'VOL',\n        defaultMessage: 'VOLCANO'\n    },\n    ZM: {\n        id: 'ZM',\n        description: 'ZM',\n        defaultMessage: 'ZM'\n    },\n    EMP: {\n        id: 'EMP',\n        description: 'EMPASTADO',\n        defaultMessage: 'EMPASTADO'\n    },\n    SOF: {\n        id: 'SOF',\n        description: 'SOFTGRAIN',\n        defaultMessage: 'SOFTGRAIN'\n    },\n    GRV: {\n        id: 'GRV',\n        descreiption: 'GRV',\n        defaultMessage: 'High roughness'\n    },\n    MTT: {\n        id: 'MTT',\n        descreiption: 'MTT',\n        defaultMessage: 'Texturized mate'\n    },\n    CUSTOMER_REQUIRED: {\n        id: 'category',\n        description: 'category',\n        defaultMessage: 'Category'\n    },\n    SELECT: {\n        id: 'select',\n        description: 'Select',\n        defaultMessage: 'Select'\n    },\n    ABRASIVO: {\n        id: 'ABRASIVE',\n        description: 'ABRASIVO',\n        defaultMessage: 'ABRASIVO'\n    },\n    COLORDEK: {\n        id: 'COLORDEK',\n        description: 'COLORDEK',\n        defaultMessage: 'COLORDEK'\n    },\n    DIAMANTADO: {\n        id: 'DIAMANTADO',\n        description: 'DIAMANTADO',\n        defaultMessage: 'DIAMANTADO'\n    },\n    HERRAMIENTA: {\n        id: 'HERRAMIENTA',\n        description: 'HERRAMIENTA',\n        defaultMessage: 'HERRAMIENTA'\n    },\n    JUNTAX: {\n        id: 'JUNTAX',\n        description: 'JUNTAX',\n        defaultMessage: 'JUNTAX'\n    },\n\n    MANTENIMIENTO: {\n        id: 'MANTENIMIENTO',\n        description: 'MANTENIMIENTO',\n        defaultMessage: 'MANTENIMIENTO'\n    },\n    MASTIDEK: {\n        id: 'MASTIDEK',\n        description: 'MASTIDEK',\n        defaultMessage: 'MASTIDEK'\n    },\n    SOLUMASTIK: {\n        id: 'SOLUMASTIK',\n        description: 'SOLUMASTIK',\n        defaultMessage: 'SOLUMASTIK'\n    },\n    'SPARE PARTS': {\n        id: 'SPARE PARTS',\n        description: 'SPARE PARTS',\n        defaultMessage: 'SPARE PARTS'\n    },\n\n    a_center_near_to_you: {\n        id: 'a_center_near_to_you',\n        description: 'a_center_near_to_you',\n        defaultMessage: 'Your nearest center'\n    },\n    add_favourite: {\n        id: 'add_favourite',\n        description: 'add_favourite',\n        defaultMessage: 'Add favourite'\n    },\n    and_get_discount: {\n        id: 'and_get_discount',\n        description: 'and_get_discount',\n        defaultMessage: 'and get the discount for full truck shipping'\n    },\n    apps: {\n        id: 'apps',\n        description: 'apps',\n        defaultMessage: 'Apps'\n    },\n\n    bills_issued: {\n        id: 'bills_issued',\n        description: 'bills_issued',\n        defaultMessage: 'Bills issued'\n    },\n    brands: {\n        id: 'brands',\n        description: 'brands',\n        defaultMessage: 'Brands'\n    },\n    builders: {\n        id: 'builders',\n        description: 'builders',\n        defaultMessage: 'Builders'\n    },\n    buybundle: {\n        id: 'buybundle',\n        description: 'buybundle',\n        defaultMessage: 'Buy bundle'\n    },\n    buylot: {\n        id: 'buylot',\n        description: 'buylot',\n        defaultMessage: 'Buy lot'\n    },\n\n    center_preferred: {\n        id: 'center_preferred',\n        description: 'center_preferred',\n        defaultMessage: 'Center Preferred'\n    },\n    change_password_disabled: {\n        id: 'change_password_disabled',\n        description: 'change_password_disabled',\n        defaultMessage: 'Change password is temporally disabled, to ask for a new password, please contact us at ecommerce@cosentino.com'\n    },\n    clear: {\n        id: 'clear',\n        description: 'clear',\n        defaultMessage: 'Clear'\n    },\n    click_here: {\n        id: 'click_here',\n        description: 'click_here',\n        defaultMessage: 'click here'\n    },\n    color: {\n        id: 'color',\n        description: 'color',\n        defaultMessage: 'Color'\n    },\n    colorName: {\n        id: 'colorName',\n        description: 'colorName',\n        defaultMessage: 'Color'\n    },\n    finish: {\n        id: 'finish',\n        description: 'finish',\n        defaultMessage: 'Finish'\n    },\n    image: {\n        id: 'image',\n        description: 'image',\n        defaultMessage: 'Image'\n    },\n    stock: {\n        id: 'stock',\n        description: 'stock',\n        defaultMessage: 'Stock'\n    },\n    stock_outlet: {\n        id: 'stock_outlet',\n        description: 'stock_outlet',\n        defaultMessage: 'Stock outlet'\n    },\n    stock_ft2: {\n        id: 'stock_ft2',\n        description: 'stock_ft2',\n        defaultMessage: 'ft2'\n    },\n    stock_m2: {\n        id: 'stock_m2',\n        description: 'stock_m2',\n        defaultMessage: 'm2'\n    },\n    stock_outlet_ft2: {\n        id: 'stock_outlet_ft2',\n        description: 'stock_outlet_ft2',\n        defaultMessage: 'Stock ft2 outlet'\n    },\n    stock_outlet_m2: {\n        id: 'stock_outlet_m2',\n        description: 'stock_outlet_m2',\n        defaultMessage: 'Stock m2 outlet'\n    },\n    subtypeName: {\n        id: 'subtypeName',\n        description: 'subtypeName',\n        defaultMessage: 'Subtype'\n    },\n    outletQuality: {\n        id: 'outletQuality',\n        description: 'outletQuality',\n        defaultMessage: 'Outlet quality'\n    },\n    finishFamily: {\n        id: 'finishFamily',\n        description: 'finishFamily',\n        defaultMessage: 'Finish Family'\n    },\n    commercial_project: {\n        id: 'commercial_project',\n        description: 'commercial_project',\n        defaultMessage: 'Commercial / Project'\n    },\n    conduct_code: {\n        id: 'conduct_code',\n        description: 'conduct_code',\n        defaultMessage: 'Conduct code'\n    },\n    contact: {\n        id: 'contact',\n        description: 'contact',\n        defaultMessage: 'Contact us'\n    },\n    cookies_policy: {\n        id: 'cookies_policy',\n        description: 'cookies_policy',\n        defaultMessage: 'Cookies policy'\n    },\n    cosentino_center: {\n        id: 'cosentino_center',\n        description: 'cosentino_center',\n        defaultMessage: 'Cosentino center'\n    },\n    customer: {\n        id: 'customer',\n        description: 'customer',\n        defaultMessage: 'Customer'\n    },\n    customer_hub: {\n        id: 'customer_hub',\n        description: 'customer_hub',\n        defaultMessage: 'Customer Hub'\n    },\n    cosentino_hub: {\n        id: 'cosentino_hub',\n        description: 'cosentino_hub',\n        defaultMessage: 'Cosentino HUB'\n    },\n    direct_sale: {\n        id: 'direct_sale',\n        description: 'direct_sale',\n        defaultMessage: 'Direct sale'\n    },\n    dekton: {\n        id: 'dekton',\n        description: 'dekton',\n        defaultMessage: 'Dekton'\n    },\n    dekton_message: {\n        id: 'dekton_message',\n        description: 'dekton_message',\n        defaultMessage: 'Take training courses about treatments for Dekton.'\n    },\n    delete: {\n        id: 'delete',\n        description: 'delete',\n        defaultMessage: 'Remove'\n    },\n    deliveries_in_progress: {\n        id: 'deliveries_in_progress',\n        description: 'deliveries_in_progress',\n        defaultMessage: 'Deliveries in progress'\n    },\n    deviated: {\n        id: 'deviated',\n        description: 'deviated',\n        defaultMessage: 'Deviated'\n    },\n    download_texture: {\n        id: 'download_texture',\n        description: 'download_texture',\n        defaultMessage: 'Download Texture'\n    },\n    erróneo: {\n        id: 'erróneo',\n        description: 'erróneo',\n        defaultMessage: 'Wrong'\n    },\n    facebook: {\n        id: 'facebook',\n        description: 'facebook',\n        defaultMessage: 'Facebook'\n    },\n\n    faqs: {\n        id: 'faqs',\n        description: 'faqs',\n        defaultMessage: 'FAQs'\n    },\n    filter_discounts: {\n        id: 'filter_discounts',\n        description: 'filter_discounts',\n        defaultMessage: 'Discounts'\n    },\n    favourites: {\n        id: 'favourites',\n        description: 'favourites',\n        defaultMessage: 'Favourites'\n    },\n    for_full_truck: {\n        id: 'for_full_truck',\n        description: 'for_full_truck',\n        defaultMessage: 'for full truck shipping'\n    },\n    google: {\n        id: 'google',\n        description: 'google',\n        defaultMessage: 'Google'\n    },\n    home: {\n        id: 'home',\n        description: 'home',\n        defaultMessage: 'Home'\n    },\n\n    hybriq_loft_series: {\n        id: 'hybriq_loft_series',\n        description: 'hybriq_loft_series',\n        defaultMessage: 'The Silestone® LOFT series designs have been registered by Cosentino S.A.U.\"'\n    },\n    hybriq_incorporate_patented: {\n        id: 'hybriq_incorporate_patented',\n        description: 'hybriq_incorporate_patented',\n        defaultMessage: 'HybriQ and HybriQ+® incorporate patented or patent-pending technologies.'\n    },\n    hybriq_registered_trademarks: {\n        id: 'hybriq_registered_trademarks',\n        description: 'hybriq_registered_trademarks',\n        defaultMessage: 'HybriQ+® and HybriQ Technology® are registered trademarks owned by Cosentino S.A.U.'\n    },\n    professional_products: {\n        id: 'home.slider.professional_products',\n        description: 'home.slider.professional_products',\n        defaultMessage: 'Professional products'\n    },\n    home_design: {\n        id: 'home_design',\n        description: 'home_design',\n        defaultMessage: 'Home design'\n    },\n    im_looking: {\n        id: 'im_looking',\n        description: 'im_looking',\n        defaultMessage: 'Im looking for...'\n    },\n    im_looking_for: {\n        id: 'im_looking_for',\n        description: 'im_looking_for',\n        defaultMessage: 'I´m looking for...'\n    },\n    invoice_id: {\n        id: 'invoice_id',\n        description: 'invoice_id',\n        defaultMessage: 'Invoice ID'\n    },\n    key_accounts: {\n        id: 'key_accounts',\n        description: 'key_accounts',\n        defaultMessage: 'Key Accounts'\n    },\n    landCode: {\n        id: 'landCode',\n        description: 'landCode',\n        defaultMessage: 'us'\n    },\n    last_colors: {\n        id: 'last_colors',\n        description: 'last_colors',\n        defaultMessage: 'Latest colors'\n    },\n    legal_notice: {\n        id: 'legal_notice',\n        description: 'legal_notice',\n        defaultMessage: 'Legal notice'\n    },\n    linkedin: {\n        id: 'linkedin',\n        description: 'linkedin',\n        defaultMessage: 'Linkedin'\n    },\n    login_with: {\n        id: 'login_with',\n        description: 'login_with',\n        defaultMessage: 'Login with'\n    },\n    login_with_Salesforce: {\n        id: 'login_with_Salesforce',\n        description: 'login_with_Salesforce',\n        defaultMessage: 'Login with Salesforce'\n    },\n    login_with_your_email: {\n        id: 'login_with_your_email',\n        description: 'login_with_your_email',\n        defaultMessage: 'Log in with your email'\n    },\n    login_with_another_account: {\n        id: 'login_with_another_account',\n        description: 'login_with_another_account',\n        defaultMessage: 'Log in with another account'\n    },\n\n    login_with_your_id: {\n        id: 'login_with_your_id',\n        description: 'login_with_your_id',\n        defaultMessage: 'Log in with your ID'\n    },\n    loyalty_message: {\n        id: 'loyalty_message',\n        description: 'loyalty_message',\n        defaultMessage: 'Cosentino Loyalty is a programme aimed at stone masons, rewarding their loyalty to Cosentino by offering them exclusive benefits.'\n    },\n    min_to_checkout: {\n        id: 'min_to_checkout',\n        description: 'min_to_checkout',\n        defaultMessage: 'to be able to check out'\n    },\n    mktools: {\n        id: 'mktools',\n        description: 'mktools',\n        defaultMessage: 'Mktools'\n    },\n    my_personal_area: {\n        id: 'my_personal_area',\n        description: 'my_personal_area',\n        defaultMessage: 'My personal area'\n    },\n    national_accounts: {\n        id: 'national_accounts',\n        description: 'national_accounts',\n        defaultMessage: 'National Accounts'\n    },\n    online_visualizer: {\n        id: 'online_visualizer',\n        description: 'online_visualizer',\n        defaultMessage: 'Online visualizer'\n    },\n    only_show_favourites: {\n        id: 'only_show_favourites',\n        description: 'only_show_favourites',\n        defaultMessage: 'Only my favourite products'\n    },\n    only_show_discounts: {\n        id: 'only_show_discounts',\n        description: 'only_show_discounts',\n        defaultMessage: 'Only promotions'\n    },\n    orders: {\n        id: 'orders',\n        description: 'orders',\n        defaultMessage: 'Orders'\n    },\n    outbound_deliveries: {\n        id: 'outbound_deliveries',\n        description: 'outbound_deliveries',\n        defaultMessage: 'Outbound Deliveries'\n    },\n    operation_type_worktop: {\n        id: 'operation_type_worktop',\n        description: 'operation_type_worktop',\n        defaultMessage: 'Operation for worktop'\n    },\n    operation_type_edge: {\n        id: 'operation_type_edge',\n        description: 'operation_type_edge',\n        defaultMessage: 'Operation for edge'\n    },\n    operation_type_hole: {\n        id: 'operation_type_hole',\n        description: 'operation_type_hole',\n        defaultMessage: 'Operation hole'\n    },\n\n    outlet_o: {\n        id: 'outlet_o',\n        description: 'outlet_o',\n        defaultMessage: 'Outlet Basic'\n    },\n\n    outlet_x: {\n        id: 'outlet_x',\n        description: 'outlet_x',\n        defaultMessage: 'Outlet Xtreme'\n    },\n    outlet_v: {\n        id: 'outlet_v',\n        description: 'outlet_v',\n        defaultMessage: 'Outlet Premium'\n    },\n    outlet_stock_available: {\n        id: 'outlet_stock_available',\n        description: 'outlet_stock_available',\n        defaultMessage: 'Outlet stock available'\n    },\n\n    other_deliveries_pending: {\n        id: 'other_deliveries_pending',\n        description: 'other_deliveries_pending',\n        defaultMessage: 'Other deliveries pending'\n    },\n    partial_import: {\n        id: 'partial_import',\n        description: 'partial_import',\n        defaultMessage: 'Partial import'\n    },\n\n    pool: {\n        id: 'pool',\n        description: 'pool',\n        defaultMessage: 'Pool'\n    },\n    pounds: {\n        id: 'pounds',\n        description: 'pounds',\n        defaultMessage: 'Pounds'\n    },\n\n    reach_to: {\n        id: 'reach_to',\n        description: 'reach_to',\n        defaultMessage: 'Reach to'\n    },\n    repeat_password: {\n        id: 'repeat_password',\n        description: 'repeat_password',\n        defaultMessage: 'Repeat password'\n    },\n    read_more: {\n        id: 'read_more',\n        description: 'read_more',\n        defaultMessage: 'Read More'\n    },\n    recover_password: {\n        id: 'recover_password',\n        description: 'recover_password',\n        defaultMessage: 'Recover password'\n    },\n    remember_me: {\n        id: 'remember_me',\n        description: 'remember_me',\n        defaultMessage: 'Remember me'\n    },\n    remove_favourite: {\n        id: 'remove_favourite',\n        description: 'remove_favourite',\n        defaultMessage: 'Remove favourite'\n    },\n\n    residential_kb: {\n        id: 'residential_kb',\n        description: 'residential_kb',\n        defaultMessage: 'Residential / K&B'\n    },\n\n    save_cart: {\n        id: 'save_cart',\n        description: 'save_cart',\n        defaultMessage: 'Save cart'\n    },\n    save_changes: {\n        id: 'save_changes',\n        description: 'save_changes',\n        defaultMessage: 'Save changes'\n    },\n    save_segmentation: {\n        id: 'save_segmentation',\n        description: 'save_segmentation',\n        defaultMessage: 'Save segmentation'\n    },\n    save_this_selection_as_favourite: {\n        id: 'save_this_selection_as_favourite',\n        description: 'save_this_selection_as_favourite',\n        defaultMessage: 'Save this selection as favourite'\n    },\n    search: {\n        id: 'search',\n        description: 'search',\n        defaultMessage: 'Search'\n    },\n    search_order_history: {\n        id: 'search_order_history',\n        description: 'search_order_history',\n        defaultMessage: 'Order#, reservation#, PO, product...'\n    },\n\n    select_transport_area: {\n        id: 'select_transport_area',\n        description: 'select_transport_area',\n        defaultMessage: 'Select transport area'\n    },\n    shipping_costs: {\n        id: 'shipping_costs',\n        description: 'shipping_costs',\n        defaultMessage: 'Shipping costs'\n    },\n    shipment: {\n        id: 'shipment',\n        description: 'shipment',\n        defaultMessage: 'Shipment'\n    },\n    silestone: {\n        id: 'silestone',\n        description: 'silestone',\n        defaultMessage: 'Silestone'\n    },\n    silestone_25: {\n        id: 'silestone_25',\n        description: 'silestone_25',\n        defaultMessage: 'Silestone 25'\n    },\n    subtype: {\n        id: 'subtype',\n        description: 'subtype',\n        defaultMessage: 'Subtype'\n    },\n    subtype1: {\n        id: 'subtype1',\n        description: 'subtype1',\n        defaultMessage: 'Subtype 1'\n    },\n    subtype2: {\n        id: 'subtype2',\n        description: 'subtype2',\n        defaultMessage: 'Subtype 2'\n    },\n    subtype3: {\n        id: 'subtype3',\n        description: 'subtype3',\n        defaultMessage: 'Subtype 3'\n    },\n    mktoolShippingCenter: {\n        id: 'mktoolShippingCenter',\n        description: 'mktoolShippingCenter',\n        defaultMessage: 'Destination center'\n    },\n    optional: {\n        id: 'optional',\n        description: 'optional',\n        defaultMessage: 'Optional'\n    },\n    total_items: {\n        id: 'total_items',\n        description: 'total_items',\n        defaultMessage: 'Total items'\n    },\n    type: {\n        id: 'type',\n        description: 'type',\n        defaultMessage: 'Type'\n    },\n\n    you_have: {\n        id: 'you_have',\n        description: 'you_have',\n        defaultMessage: 'You have'\n    },\n    DF_SHORT: {\n        id: 'DF_SHORT',\n        description: 'DF_SHORT',\n        defaultMessage: 'Reformulation'\n    },\n    DF_LONG: {\n        id: 'DF_LONG',\n        description: 'DF_LONG',\n        defaultMessage: 'Material available while there is stock. Consult new formulation with your nearest center'\n    },\n    DE_SHORT: {\n        id: 'DE_SHORT',\n        description: 'DE_SHORT',\n        defaultMessage: 'Thickness'\n    },\n    DE_LONG: {\n        id: 'DE_LONG',\n        description: 'DE_LONG',\n        defaultMessage: 'Material available while there is stock. Consult new thickness with your nearest center'\n    },\n    DA_SHORT: {\n        id: 'DA_SHORT',\n        description: 'DA_SHORT',\n        defaultMessage: 'Finish'\n    },\n    DA_LONG: {\n        id: 'DA_LONG',\n        description: 'DA_LONG',\n        defaultMessage: 'Material available while there is stock. Consult new finish with your nearest center'\n    },\n    DD_SHORT: {\n        id: 'DD_SHORT',\n        description: 'DD_SHORT',\n        defaultMessage: 'Format'\n    },\n    DD_LONG: {\n        id: 'DD_LONG',\n        description: 'DD_LONG',\n        defaultMessage: 'Format available while there is stock. Available in jumbo format'\n    },\n    LD_SHORT: {\n        id: 'LD_SHORT',\n        description: 'LD_SHORT',\n        defaultMessage: 'Total'\n    },\n    LD_LONG: {\n        id: 'LD_LONG',\n        description: 'LD_LONG',\n        defaultMessage: 'Available color while there is stock'\n    },\n    stock_high_to_low: {\n        id: 'stock_high_to_low',\n        description: 'stock_high_to_low',\n        defaultMessage: 'Stock: high to low'\n    },\n    stock_low_to_high: {\n        id: 'stock_low_to_high',\n        description: 'stock_low_to_high',\n        defaultMessage: 'Stock: low to high'\n    },\n    newest_arrivals: {\n        id: 'newest_arrivals',\n        description: 'newest_arrivals',\n        defaultMessage: 'Newest arrivals'\n    },\n    oldest_materials: {\n        id: 'oldest_materials',\n        description: 'oldest_materials',\n        defaultMessage: 'Oldest materials'\n    },\n    material_id: {\n        id: 'material_id',\n        description: 'Material ID',\n        defaultMessage: 'Material ID'\n    },\n    JUST_CUT: {\n        id: 'JUST_CUT',\n        description: 'just cut',\n        defaultMessage: 'Just cut'\n    },\n    WEBHEADING: {\n        id: 'webHeading',\n        description: 'category',\n        defaultMessage: 'Category'\n    },\n    TYPE: {\n        id: 'type',\n        description: 'type',\n        defaultMessage: 'Type'\n    },\n    SUBTYPE1NAME: {\n        id: 'subtype1Name',\n        description: 'subtype1Name',\n        defaultMessage: 'Subtype 1'\n    },\n    SUBTYPE2NAME: {\n        id: 'subtype2Name',\n        description: 'subtype2Name',\n        defaultMessage: 'Subtype 2'\n    },\n    FINISHFAMILY: {\n        id: 'finishFamily',\n        description: 'finishFamily',\n        defaultMessage: 'Finish Family'\n    },\n    TIENDA_REST_BANCO: {\n        id: 'TIENDA/REST./BANCO',\n        description: 'TIENDA/REST./BANCO',\n        defaultMessage: 'SHOP / REST. / BANK'\n    },\n    ASCENSORES_MOBILIARI: {\n        id: 'ASCENSORES/MOBILIARI',\n        description: 'ASCENSORES/MOBILIARI',\n        defaultMessage: 'ELEVATORS / FURNITURE'\n    },\n    TAPA_MESA_MOBILIARIO: {\n        id: 'Tapa Mesa/Mobiliario',\n        description: 'Tapa Mesa/Mobiliario',\n        defaultMessage: 'Table Top / Furniture'\n    },\n    BANCADA_MOSTRADOR: {\n        id: 'Bancada/Mostrador',\n        description: 'Bancada/Mostrador',\n        defaultMessage: 'Bench / Counter'\n    },\n    PLATOS_DUCHA: {\n        id: 'Platos Ducha',\n        description: 'Platos Ducha',\n        defaultMessage: 'Shower trays'\n    },\n    NO_USAR: {\n        id: 'NO USAR',\n        description: 'NO USAR',\n        defaultMessage: 'DO NOT USE'\n    },\n    FACHADA_VENTILADA: {\n        id: 'Fachada Ventilada',\n        description: 'Fachada Ventilada',\n        defaultMessage: 'Ventilated Facade'\n    },\n    FACHADA_VENTILADA_CE: {\n        id: 'Fachada Ventilada CE',\n        description: 'Fachada Ventilada CE',\n        defaultMessage: 'CE Ventilated Facade'\n    },\n    REVEST_INTERIOR: {\n        id: 'Revest. Interior',\n        description: 'Revest. Interior',\n        defaultMessage: 'Interior Coating'\n    },\n    ENCIMERA_COCINA: {\n        id: 'Encimera Cocina',\n        description: 'Encimera Cocina',\n        defaultMessage: 'Kitchen counter'\n    },\n    FACHADA_PEGAMENTO: {\n        id: 'Fachada Pegamento',\n        description: 'Fachada Pegamento',\n        defaultMessage: 'Glue facade'\n    },\n    SUELO: {\n        id: 'Suelo',\n        description: 'Suelo',\n        defaultMessage: 'Ground'\n    },\n    ENCIMERA_BAÑO: {\n        id: 'Encimera Baño',\n        description: 'Encimera Baño',\n        defaultMessage: 'Countertop Bathroom'\n    },\n    SUSTITUCIÓN: {\n        id: 'Sustitución',\n        description: 'Sustitución',\n        defaultMessage: 'Substitution'\n    },\n    MODELO: {\n        id: 'Modelo',\n        description: 'Modelo',\n        defaultMessage: 'Model'\n    },\n    SERIE: {\n        id: 'Serie',\n        description: 'Serie',\n        defaultMessage: 'Serie'\n    },\n    VERSÁTIL: {\n        id: 'Versátil',\n        description: 'Versátil',\n        defaultMessage: 'Versatile'\n    },\n    //filters subtype\n    SUBTYPE_01: { id: 'subtype_01', description: 'CAJA MONOCOLOR', defaultMessage: 'MONOCOLOR BOX' },\n    SUBTYPE_02: { id: 'subtype_02', description: 'PROMO', defaultMessage: 'PROMO' },\n    SUBTYPE_03: { id: 'subtype_03', description: 'ADHESIVOS', defaultMessage: 'ADHESIVES' },\n    SUBTYPE_04: { id: 'subtype_04', description: 'CATALOGOS, FOLLETOS Y MANUALES', defaultMessage: 'CATALOGUES, BROCHURES AND MANUALS' },\n    SUBTYPE_05: { id: 'subtype_05', description: 'TRIPTICOS', defaultMessage: 'POCKETS' },\n    SUBTYPE_06: { id: 'subtype_06', description: 'OTROS', defaultMessage: 'OTHERS' },\n    SUBTYPE_07: { id: 'subtype_07', description: 'TEE', defaultMessage: 'TEE' },\n    SUBTYPE_08: { id: 'subtype_08', description: 'ANCLAJES', defaultMessage: 'ANCHORING' },\n    SUBTYPE_09: { id: 'subtype_09', description: 'CAJA SURTIDA', defaultMessage: 'ASSORTED BOX' },\n    SUBTYPE_10: { id: 'subtype_10', description: 'CAJA VACIA', defaultMessage: 'EMPTY BOXES' },\n    SUBTYPE_11: { id: 'subtype_11', description: 'SOBREMESA', defaultMessage: 'TABLE TOPPER' },\n    SUBTYPE_12: { id: 'subtype_12', description: 'SUELO', defaultMessage: 'STANDALONE' },\n    SUBTYPE_13: { id: 'subtype_13', description: 'ETIQUETAS', defaultMessage: 'LABELS' },\n    SUBTYPE_14: { id: 'subtype_14', description: 'PLACA METALICA', defaultMessage: 'METALIC SIGN' },\n    SUBTYPE_15: { id: 'subtype_15', description: 'LIBROS A&D', defaultMessage: 'A&D BOOKS' },\n    SUBTYPE_16: { id: 'subtype_16', description: 'OTROS LIBROS', defaultMessage: 'OTHER BOOKS' },\n    SUBTYPE_17: { id: 'subtype_17', description: 'CARPETAS', defaultMessage: 'FOLDERS' },\n    SUBTYPE_18: { id: 'subtype_18', description: 'CARAMELOS', defaultMessage: 'SWEETS' },\n    SUBTYPE_19: { id: 'subtype_19', description: 'BOLIGRAFOS', defaultMessage: 'PENS' },\n    SUBTYPE_20: { id: 'subtype_20', description: 'LIBRETAS', defaultMessage: 'NOTEBOOKS' },\n    SUBTYPE_21: { id: 'subtype_21', description: 'DELANTALES', defaultMessage: 'APRONS' },\n    SUBTYPE_22: { id: 'subtype_22', description: 'PORTA CD`S', defaultMessage: 'CD HOLDERS' },\n    SUBTYPE_23: { id: 'subtype_23', description: 'METROS', defaultMessage: 'MEASURING TAPE' },\n    SUBTYPE_24: { id: 'subtype_24', description: 'BOLSAS', defaultMessage: 'BAGS' },\n    SUBTYPE_25: { id: 'subtype_25', description: 'CALENDARIOS', defaultMessage: 'CALENDARS' },\n    SUBTYPE_26: { id: 'subtype_26', description: 'BATERIAS', defaultMessage: 'BATTERIES' },\n    SUBTYPE_27: { id: 'subtype_27', description: 'ABANICOS', defaultMessage: 'FANS' },\n    SUBTYPE_28: { id: 'subtype_28', description: 'MEMORIAS USB', defaultMessage: 'FLASH DRIVE' },\n    SUBTYPE_29: { id: 'subtype_29', description: 'POSAVASOS', defaultMessage: 'COASTERS' },\n    SUBTYPE_30: { id: 'subtype_30', description: 'PACK SURTIDO', defaultMessage: 'ASSORTED PACK' },\n    SUBTYPE_31: { id: 'subtype_31', description: 'CLIPS', defaultMessage: 'CLIPS' },\n    SUBTYPE_32: { id: 'subtype_32', description: 'REVISTAS Y LIBROS', defaultMessage: 'MAGAZINES AND BOOKS' },\n    SUBTYPE_33: { id: 'subtype_33', description: 'CARTELES', defaultMessage: 'SIGNAGE' },\n    SUBTYPE_34: { id: 'subtype_34', description: 'POLO TECNICO', defaultMessage: 'TECHNICAL POLO SHIRT' },\n    SUBTYPE_35: { id: 'subtype_35', description: 'PANTALON', defaultMessage: 'PANTS' },\n    SUBTYPE_36: { id: 'subtype_36', description: 'FORRO POLAR', defaultMessage: 'FLEECE' },\n    SUBTYPE_37: { id: 'subtype_37', description: 'CHALECO REFLECTANTE', defaultMessage: 'HIGH VISIBILITY VEST' },\n    SUBTYPE_38: { id: 'subtype_38', description: 'PARKA', defaultMessage: 'OILSKIN' },\n    SUBTYPE_39: { id: 'subtype_39', description: 'ZAPATO TRABAJO', defaultMessage: 'PROTECTION SHOES' },\n    SUBTYPE_40: { id: 'subtype_40', description: 'ESCALERA', defaultMessage: 'STAIRS' },\n    SUBTYPE_41: { id: 'subtype_41', description: 'EMBALAJE METÁLICO', defaultMessage: 'METAL PACKING' },\n    SUBTYPE_42: { id: 'subtype_42', description: 'ESLINGAS', defaultMessage: 'SLINGS' },\n    SUBTYPE_43: { id: 'subtype_43', description: 'HERRAMIENTAS CARGA', defaultMessage: 'LOAD TOOLS' },\n    SUBTYPE_44: { id: 'subtype_44', description: 'CASCO PROTECTOR', defaultMessage: 'CRASH HELMET' },\n    SUBTYPE_45: { id: 'subtype_45', description: 'TAPON PROTECCIÓN', defaultMessage: 'PROTECTION PLUG' },\n    SUBTYPE_46: { id: 'subtype_46', description: 'MASCARILLAS PROTECCIÓN', defaultMessage: 'PROTECTION MASKS' },\n    SUBTYPE_47: { id: 'subtype_47', description: 'EMBALAJE PLÁSTICO', defaultMessage: 'PLASTIC PACKING' },\n    SUBTYPE_48: { id: 'subtype_48', description: 'ACCESORIOS BAÑOS', defaultMessage: 'BATHROOM ACCESSORIES' },\n    SUBTYPE_49: { id: 'subtype_49', description: 'ACCESORIOS INTEGRITY', defaultMessage: 'INTEGRITY ACCESSORIES' },\n    SUBTYPE_50: { id: 'subtype_50', description: 'VALVULAS', defaultMessage: 'VALVES' },\n    SUBTYPE_51: { id: 'subtype_51', description: 'SEPARADOR TABLAS', defaultMessage: 'SEPARATOR TABLES' },\n    SUBTYPE_52: { id: 'subtype_52', description: 'GUANTES PROTECCIÓN', defaultMessage: 'GLOVES PROTECTION' },\n    SUBTYPE_53: { id: 'subtype_53', description: 'TORNILLERÍA', defaultMessage: 'SCREWS' },\n    SUBTYPE_54: { id: 'subtype_54', description: 'CINTA ADHESIVA', defaultMessage: 'SCOTCH TAPE' },\n    SUBTYPE_55: { id: 'subtype_55', description: 'MOCHILAS', defaultMessage: 'BACKPACKS' },\n    SUBTYPE_56: { id: 'subtype_56', description: 'PARAGUAS', defaultMessage: 'UMBRELLA' },\n    SUBTYPE_57: { id: 'subtype_57', description: 'POLOS', defaultMessage: 'POLO' },\n    SUBTYPE_58: { id: 'subtype_58', description: 'CORREAS', defaultMessage: 'STRAPS' },\n    SUBTYPE_59: { id: 'subtype_59', description: 'VASOS', defaultMessage: 'GLASSES' },\n    SUBTYPE_60: { id: 'subtype_60', description: 'CAMISETAS', defaultMessage: 'TSHIRTS' },\n    SUBTYPE_61: { id: 'subtype_61', description: 'GORRAS', defaultMessage: 'HATS' },\n    SUBTYPE_62: { id: 'subtype_62', description: 'PISAPAPELES', defaultMessage: 'PAPERS' },\n    SUBTYPE_63: { id: 'subtype_63', description: 'OTHERS', defaultMessage: 'OTHERS' },\n    SUBTYPE_64: { id: 'subtype_64', description: 'CHALECOS', defaultMessage: 'VESTS' },\n    SUBTYPE_65: { id: 'subtype_65', description: 'CAMISAS', defaultMessage: 'SHIRTS' },\n    SUBTYPE_66: { id: 'subtype_66', description: 'CHAQUETAS', defaultMessage: 'JACKETS' },\n    SUBTYPE_67: { id: 'subtype_67', description: 'BOTELLEROS', defaultMessage: 'BOTTLERS' },\n    SUBTYPE_68: { id: 'subtype_68', description: 'PANEL MUESTRAS', defaultMessage: 'SAMPLE PANEL' },\n    SUBTYPE_NEWS: { id: 'subtype_news', description: 'NOVEDADES', defaultMessage: 'NEWS' },\n    //subtype_1\n    SUBTYPE_1_001: { id: 'subtype_1_001', description: 'FOLLETOS', defaultMessage: 'BROCHURES' },\n    SUBTYPE_1_002: { id: 'subtype_1_002', description: 'MANUALES', defaultMessage: 'MANUALS' },\n    SUBTYPE_1_003: { id: 'subtype_1_003', description: 'CATALOGOS', defaultMessage: 'CATALOGS' },\n    SUBTYPE_1_004: { id: 'subtype_1_004', description: 'FICHAS PRODUCTO', defaultMessage: 'PRODUCT SHEETS' },\n    SUBTYPE_1_005: { id: 'subtype_1_005', description: 'PLACA METALICA', defaultMessage: 'METAL BOARD' },\n    SUBTYPE_1_006: { id: 'subtype_1_006', description: 'REVISTAS', defaultMessage: 'JOURNALS' },\n    //subtype_2\n    SUBTYPE_2_001: { id: 'subtype_2_001', description: 'GARANTIA', defaultMessage: 'WARRANTY' },\n    SUBTYPE_2_002: { id: 'subtype_2_002', description: 'MANUAL DE LIMPIEZA', defaultMessage: 'CLEANING MANUAL' },\n    SUBTYPE_2_003: { id: 'subtype_2_003', description: 'MANUAL DE INSTALACIÓN', defaultMessage: 'INSTALLATION MANUAL' },\n    SUBTYPE_2_004: { id: 'subtype_2_004', description: 'MANUAL DE SEGURIDAD', defaultMessage: 'SECURITY MANUAL' },\n    SUBTYPE_2_005: { id: 'subtype_2_005', description: 'TEE', defaultMessage: 'TEE' },\n    SUBTYPE_2_006: { id: 'subtype_2_006', description: 'MANUAL DE USO PROFESIONAL', defaultMessage: 'PROFESSIONAL USE MANUAL' },\n    SUBTYPE_2_007: { id: 'subtype_2_007', description: 'FOLLETOS K&B', defaultMessage: 'BROCHURES K&B' },\n    SUBTYPE_2_008: { id: 'subtype_2_008', description: 'CATALOGO DE CONTRATOS', defaultMessage: 'CONTRACT CATALOG' },\n    SUBTYPE_2_009: { id: 'subtype_2_009', description: 'CATALOGO DE BAÑO', defaultMessage: 'BATH CATALOG' },\n    SUBTYPE_2_010: { id: 'subtype_2_010', description: 'RSC - RESPONSABILIDAD SOCIAL CORPORATIVA', defaultMessage: 'CSR - CORPORATE SOCIAL RESPONSIBILITY' },\n    SUBTYPE_2_011: { id: 'subtype_2_011', description: 'MANUAL DE BUENAS PRÁCTICAS', defaultMessage: 'GOOD PRACTICE MANUAL' },\n    THERE_ARE_ONLY_A_FEW_REMAINING_ITEMS_IN_STOCK_IN_AT_LEAST_ONE_OF_THE_CHOSEN_MATERIALS_IN_THE_ORDER_WHICH_MAY_CONSTRAIN_THE_AVAILABILITY_UPON_ORDEN_CONFIRMATION: {\n        id: 'there_are_only_a_few_remaining_items_in_stock_in_at_least_one_of_the_chosen_materials_in_the_order_which_may_constrain_the_availability_upon_orden_confirmation',\n        description:\n            'There are only a few remaining items in stock in at least one of the chosen materials in the order, which may constrain the availability upon orden confirmation',\n        defaultMessage:\n            'There are only a few remaining items in stock in at least one of the chosen materials in the order, which may constrain the availability upon order confirmation'\n    },\n    PLEASE_CONFIRM_THE_ORDER: {\n        id: 'please_confirm_the_order',\n        description: 'Please confirm the order',\n        defaultMessage: 'Please confirm the order'\n    },\n    PRODUCT_PORTFOLIO: {\n        id: 'PRODUCT_PORTFOLIO',\n        description: 'PRODUCT_PORTFOLIO',\n        defaultMessage: 'PRODUCT PORTFOLIO'\n    },\n    SHOPPING_CART_CHECKOUT: {\n        id: 'SHOPPING_CART_CHECKOUT',\n        description: 'SHOPPING_CART_CHECKOUT',\n        defaultMessage: 'SHOPPING CART & CHECKOUT'\n    },\n    ORDERS: {\n        id: 'ORDERS',\n        description: 'ORDERS',\n        defaultMessage: 'ORDERS'\n    },\n    PERSONAL_AREA: {\n        id: 'PERSONAL_AREA',\n        description: 'PERSONAL_AREA',\n        defaultMessage: 'PERSONAL AREA'\n    },\n    ORDER_HISTORY: {\n        id: 'ORDER_HISTORY',\n        description: 'ORDER_HISTORY',\n        defaultMessage: 'ORDER HISTORY'\n    },\n    OTHERS: {\n        id: 'OTHERS',\n        description: 'OTHERS',\n        defaultMessage: 'OTHERS'\n    },\n    NEWS: {\n        id: 'NEWS',\n        description: 'NEWS',\n        defaultMessage: 'NEWS'\n    },\n    SAVE_COLORS_MKTOOLS_ATTR_SUCCESS: {\n        id: 'SAVE_COLORS_MKTOOLS_ATTR_SUCCESS',\n        description: 'SAVE_COLORS_MKTOOLS_ATTR_SUCCESS',\n        defaultMessage: 'The color list has been saved'\n    },\n    SAVE_CCOLORS_MKTOOLS_ATTR_FAILURE: {\n        id: 'SAVE_CCOLORS_MKTOOLS_ATTR_FAILURE',\n        description: 'SAVE_CCOLORS_MKTOOLS_ATTR_FAILURE',\n        defaultMessage: 'The color list could not be saved'\n    },\n    DUPLICATED_COLOR_MKTOOLS_ATTR: {\n        id: 'DUPLICATED_COLOR_MKTOOLS_ATTR',\n        description: 'DUPLICATED_COLOR_MKTOOLS_ATTR',\n        defaultMessage: 'The color is already in the list'\n    },\n    EMAIL_SENT: {\n        id: 'EMAIL_SENT',\n        description: 'EMAIL_SENT',\n        defaultMessage: 'Email sent'\n    },\n    PROMOTION_OR_EMAIL_NOT_FOUND: {\n        id: 'PROMOTION_OR_EMAIL_NOT_FOUND',\n        description: 'PROMOTION_OR_EMAIL_NOT_FOUND',\n        defaultMessage: 'Promotion or email not found'\n    },\n    theres_no_stock_available_now: {\n        id: 'theres_no_stock_available_now',\n        description: 'theres_no_stock_available_now',\n        defaultMessage: 'You can buy this product even if it is out of stock. We will delivery it to you from our supply chain. Delivery time may increase slightly'\n    }\n})\n\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            null\n        )(LocalizedLink)\n    )\n)\n","import { createSelector } from 'reselect'\nimport { LOCATION_CHANGE } from 'react-router-redux'\nimport {\n    getMktoolsBudgetWasted,\n    getPricesGroup,\n    getSelectedCenter,\n    getShippingMethod,\n    getSalesOrg,\n    getLatinaVitoriaCenterId,\n    getNaturalStoneSpainCenterId\n} from '../centers/reducers'\nimport {getNextWorkingDay} from \"../../helpers\";\nimport {v4 as uuidv4} from \"uuid\";\nimport moment from 'moment';\n\nexport const DEFAULT_MIN_DELIVERY_DATE = 1\n\nexport const initState = {\n    qty: null,\n    total: null,\n    isAdding: false,\n    isAddingCallApi: false,\n    showModal: false,\n    lines: [],\n    alert: null,\n    status: null,\n    monthItems: null,\n    waitTillDate: null,\n    reservationCode: null,\n    reservationCutToSizeCode: null,\n    reservationConfigurableCode: null,\n    reservationQuickShipConfigurableCode: null,\n    isSending: false,\n    comment: null,\n    linesPrice: [],\n    calculatingLinesPrice: false,\n    phase2PricesByProduct: [],\n    totalCoin: null,\n    vouchers: [],\n    voucherStatusText: '',\n    isValidVoucher: null,\n    isLoadingVoucher: false,\n    showNoStockModal: false,\n    matsNoStock: [],\n    showIncompatibleTypesExceptionModal: false,\n    phase2FetchedPrices: null,\n    successfullyAddedToCart: false,\n    linesDeliveryDates: {},\n    deliveryDateControlKey: '0',\n    finishStep: false,\n    isLoading:false,\n    fullUnits: {\n        units: null,\n        isValid : null,\n        qtyForNextUnit: null,\n        currentQtyWeight: null,\n        currentMinWeight: null,\n        currentMaxWeight: null\n    },\n    linesSlaDate: [],\n    preferredDeliveryDateByLines: {},\n    isLoadingLinesSlaDate: false,\n    isCheckoutPage: false,\n    isDefaultDeliveryDate: false,\n    hideSlaDatesForCts: false,\n    linesSlaDateVisibility: {},\n    isChangingCartQty: false\n}\n\nconst cart = (state = initState, action) => {\n    switch (action.type) {\n        case LOCATION_CHANGE:\n            return Object.assign({}, state, { showModal: false, showCheckoutModal: false, alert: null })\n        case 'SUBMIT_CHECKOUT_REQUEST':\n            return Object.assign({}, state, { isSending: true })\n        case 'SUBMIT_CHECKOUT_SUCCESS':\n            return Object.assign({}, state, {\n                reservationCutToSizeCode: action.cutToSizeCode,\n                reservationConfigurableCode: action.configurableCode,\n                reservationQuickShipConfigurableCode: action.quickShipConfigurableCode,\n                reservationCode: action.code,\n                isSending: false,\n                voucher: '',\n                voucherStatusText: '',\n                isLoadingVoucher: false\n            })\n        case 'TRANSFORM_SKU_TO_LOTS_REQUEST': {\n            return Object.assign({}, state, { transformingSkuToLots: true })\n        }\n        case 'TRANSFORM_SKU_TO_LOTS_SUCCESS': {\n            return Object.assign({}, state, { transformingSkuToLots: false })\n        }\n        case 'TRANSFORM_SKU_TO_LOTS_FAILURE':\n            return Object.assign({}, state, { transformingSkuToLots: false, alert: `${action.payload.statusText}` })\n\n        case 'SUBMIT_CHECKOUT_FAILURE':\n            return Object.assign({}, state, {\n                alert: `${action.payload.statusText}`,\n                status: `${action.payload.status}`,\n                monthItems: `${action.payload.monthItems}`,\n                waitTillDate: `${action.payload.waitTillDate}`,\n                isSending: false\n            })\n        case 'SHOW_CHECKOUT_MODAL':\n            return Object.assign({}, state, { showCheckoutModal: true })\n        case 'CLOSE_CHECKOUT_MODAL':\n            return Object.assign({}, state, { showCheckoutModal: false })\n        case 'SHOW_CART_MODAL':\n            return Object.assign({}, state, { showModal: true })\n        case 'CLOSE_CART_MODAL':\n            return Object.assign({}, state, { showModal: false })\n        case 'FETCH_CART_REQUEST':\n            return Object.assign({}, state, { isLoading:true })\n        case 'FETCH_CART_FAILURE':\n            return Object.assign({}, state, { isLoading:false })\n        case 'FETCH_CART_SUCCESS':\n            return Object.assign({}, state, { lines: action.cart.lines, vouchers: action.cart.vouchers,isLoading:false })\n        case 'EMPTY_CART':\n            return { ...state, lines: [], vouchers: [], isLoadingVoucher: false, isValidVoucher: null, voucherStatusText: '' }\n        case 'ADD_CART_LINE_REQUEST':\n        case 'ADD_CART_BULK_LOTS_REQUEST':\n            return { ...state, isAdding: true, successfullyAddedToCart: false }\n        case 'ADD_CART_LINE_CALL_API_REQUEST':\n        case 'ADD_CART_BULK_LOTS_CALL_API_REQUEST':\n            return { ...state, isAddingCallApi: true }\n\n        case 'ADD_CART_LINE_CALL_API_SUCCESS':\n        case 'ADD_CART_BULK_LOTS_CALL_API_SUCCESS':\n            return { ...state, isAddingCallApi: false }\n\n        case 'REMOVE_CART_LINE':\n            return { ...state, lines: state.lines.filter(lines => lines.lineId !== action.lineId) }\n        case 'TOGGLE_INCOMPATIBLE_TYPES_EXCEPTION_MODAL': {\n            return { ...state, showIncompatibleTypesExceptionModal: !state.showIncompatibleTypesExceptionModal }\n        }\n        case 'ADD_CART_LINE_FAILURE':\n            if (action.payload.statusText === 'CART_TYPE_INCOMPATIBLE_EXCEPTION') {\n                return {\n                    ...state,\n                    showIncompatibleTypesExceptionModal: true,\n                    alert: `Add To cart Error: ${action.payload.status} ${action.payload.statusText}`,\n                    isAdding: false,\n                    isAddingCallApi: false\n                }\n            }\n            return { ...state, alert: `Add To cart Error: ${action.payload.status} ${action.payload.statusText}`, isAdding: false, isAddingCallApi: false }\n        case 'CLOSE_SEGMENTATION_MODAL':\n        case 'CLOSE_DEKTON_GRIP_MODAL':\n        case 'ADD_CART_LINE_SUCCESS':\n        case 'ADD_CART_BULK_LOTS_SUCCESS':\n            return { ...state, isAdding: false, isAddingCallApi: false, successfullyAddedToCart: true }\n        case 'ADD_CART_LINE':\n            return { ...state, lines: [action.line].concat(state.lines) }\n        case 'CHANGE_CART_LINE_QTY':\n            return {\n                ...state,\n                lines: state.lines.map(line => {\n                    if (line.lineId === action.lineId) {\n                        return { ...line, qty: action.qty }\n                    }\n                    return line\n                })\n            }\n        case 'CHANGE_CART_LINE_COMMENT':\n            return {\n                ...state,\n                lines: state.lines.map(line => {\n                    if (line.lineId === action.lineId) {\n                        return { ...line, comment: action.commentsWithouthEmojis }\n                    }\n                    return line\n                })\n            }\n        case 'CHECK_LINES_PRICE_REQUEST':\n            return {\n                ...state,\n                calculatingLinesPrice: true\n            }\n        case 'CHECK_LINES_PRICE_SUCCESS':\n            let total = calculateVistexTotal(action.data)\n            return {\n                ...state,\n                calculatingLinesPrice: false,\n                linesPrice: action.data,\n                totalAmount: total.amountTotal,\n                totalCoin: total.coin\n            }\n        case 'CHECK_LINES_PRICE_FAILURE':\n            return {\n                ...state,\n                calculatingLinesPrice: false\n            }\n\n        case 'STORE_PRICE_PHASE2_PRODUCT_BY_CLIENT':\n            if (!state.phase2FetchedPrices) {\n                state.phase2FetchedPrices = new Map()\n            }\n            state.phase2FetchedPrices.set(action.productId, action.userName)\n            return state\n        case 'CLEAR_PHASE2_PRODUCT_BY_CLIENT':\n            if (state.phase2FetchedPrices) state.phase2FetchedPrices.clear()\n            return Object.assign({}, state, { phase2PricesByProduct: [] })\n        case 'CHECK_PRICE_PHASE2_BY_PRODUCT_REQUEST':\n            return { ...state, calculatingLinesPrice: true }\n        case 'CHECK_PRICE_PHASE2_BY_PRODUCT_SUCCESS':\n            return {\n                ...state,\n                calculatingLinesPrice: false,\n                phase2PricesByProduct: [\n                    {\n                        price: action.data,\n                        productId: action.productId\n                    }\n                ].concat(...state.phase2PricesByProduct)\n            }\n        case 'CHECK_PRICE_PHASE2_BY_PRODUCT_FAILURE':\n            return { ...state, calculatingLinesPrice: false }\n        case 'CART_CHECK_VALID_VOUCHER_REQUEST':\n        case 'CART_REMOVE_VOUCHER_REQUEST':\n            return { ...state, isLoadingVoucher: true }\n        case 'CART_CHECK_VALID_VOUCHER_SUCCESS':\n        case 'CART_REMOVE_VOUCHER_SUCCESS':\n            return { ...state, isLoadingVoucher: false, voucherStatusText: '', lines: action.cart.lines, vouchers: action.cart.vouchers }\n        case 'CART_CHECK_VALID_VOUCHER_FAILURE':\n        case 'CART_REMOVE_VOUCHER_FAILURE':\n            return { ...state, isLoadingVoucher: false, voucherStatusText: action.voucherStatusText, isValidVoucher: action.isValidVoucher }\n\n        case 'CART_CHECK_VALID_VOUCHER_RESET':\n            return { ...state, vouchers: [], isLoadingVoucher: false, isValidVoucher: null, voucherStatusText: '' }\n        case 'RESET_UI':\n            return Object.assign({}, state, { showModal: false })\n        case 'SET_SHOW_MODAL_NOSTOCK':\n            return Object.assign({}, state, { showNoStockModal: action.value })\n        case 'PRODUCT_WITHOUT_STOCK': {\n            return Object.assign({}, state, {\n                showNoStockModal: true,\n                matsNoStock: action.data,\n                isSending: false\n            })\n        }\n        case 'SIMPLE_LOGIN_SUCCESS':\n        case 'SIMPLE_IMPERSONATE_SUCCESS':\n            if (state.phase2FetchedPrices) state.phase2FetchedPrices.clear()\n            return Object.assign({}, state, { phase2PricesByProduct: [] })\n        case 'IS_CHECKOUT_PAGE_SCREEN':\n            return Object.assign({}, state, {isCheckoutPage: action.isCheckoutPage})\n        case 'CART_SET_LINE_SLA_DATE_REQUEST':\n            return Object.assign({}, state, {isLoadingLinesSlaDate: true})\n        case 'CART_SET_LINE_SLA_DATE_SUCCESS':\n            return Object.assign({}, state, {linesSlaDate: action.linesSlaDate, isLoadingLinesSlaDate: false})\n        case 'CART_SET_LINE_SLA_DATE_FAILURE':\n            return Object.assign({}, state, {isLoadingLinesSlaDate: false})\n        case 'CART_SET_LINE_DELIVERYDATE':\n            state.linesDeliveryDates[action.lineId] = action.deliveryDate\n            return Object.assign({}, state, { deliveryDateControlKey: uuidv4() })\n        case 'CART_UNSET_LINE_DELIVERYDATE':\n            delete state.linesDeliveryDates[action.lineId]\n            return Object.assign({}, state, { deliveryDateControlKey: uuidv4() })\n        case 'CART_SET_ALL_LINES_DELIVERYDATES':\n            const handleLinesSlaDateVisibility = {}\n            if (state.linesSlaDate && action.deliveryDate) {\n                Object.keys(state.linesSlaDate).forEach(key => {\n                    const slaData = state.linesSlaDate[key]\n                    const slaDate = slaData.naturalDays ? moment().add(slaData.naturalDays, 'days') : moment()\n                \n                    handleLinesSlaDateVisibility[key] = action.deliveryDate.isAfter(slaDate, 'days')\n                })\n            }\n\n            state.lines.forEach(l => (state.linesDeliveryDates[l.lineId] = action.deliveryDate))\n\n            return Object.assign({}, state, { deliveryDateControlKey: uuidv4(), isDefaultDeliveryDate: action.isDefaultDeliveryDate, linesSlaDateVisibility: handleLinesSlaDateVisibility })\n        case 'CART_UNSET_ALL_LINES_DELIVERYDATES':\n            const defaultDeliveryDate = getNextWorkingDay(DEFAULT_MIN_DELIVERY_DATE)\n            const linesSlaDate = state.linesSlaDate\n            state.lines.forEach(l => {\n                const selectedLine = linesSlaDate && linesSlaDate[l.lineId]\n                if (selectedLine && typeof selectedLine.naturalDays === 'number' && selectedLine.naturalDays && selectedLine.naturalDays > 0) {\n                    delete state.linesDeliveryDates[l.lineId]\n                } else {\n                    state.linesDeliveryDates[l.lineId] = defaultDeliveryDate\n                }\n            })\n            return Object.assign({}, state, { deliveryDateControlKey: uuidv4(), isDefaultDeliveryDate: false })\n        case 'ON_FINISH_STEP':\n            return Object.assign({}, state, { finishStep: true })\n        case 'SET_FULL_UNITS_FOR_CART':\n            return Object.assign({}, state, {fullUnits: action.unitsForQty})\n        case 'CART_SET_ALL_LINES_DELIVERYDATES_CTS':\n            const ctsLines = state.lines && state.lines.filter(line => line.cutToSize !== null)\n            ctsLines.forEach((l) => {\n                state.linesDeliveryDates[l.lineId] = action.deliveryDateCts\n            })\n\n            if (action.deliveryDateCts && action.slaDateState) {\n                if (action.deliveryDateCts.isAfter(action.slaDate, 'days')) {\n                    return Object.assign({}, state, { hideSlaDatesForCts: true })\n                }\n            }\n\n            return {...state}\n        case 'CHANGE_CART_LINE_QTY_REQUEST_START':\n            return { ...state, isChangingCartQty: true }\n        case 'CHANGE_CART_LINE_QTY_REQUEST_FINISH':\n            return { ...state, isChangingCartQty: false }\n        default:\n            return state\n    }\n}\nexport const showModalSelector = state => {\n    return state.cart.showModal\n}\nexport const showIncompatibleTypesExceptionModal = state => {\n    return state.cart.showIncompatibleTypesExceptionModal\n}\nexport const showCheckoutModalSelector = state => {\n    return state.cart.showCheckoutModal\n}\nexport const getIncentivesValue = state => {\n    return state.cart.incentivesValue\n}\nexport const getLines = state => {\n    return state.cart.lines\n}\nexport const getLinesPrice = state => {\n    return state.cart.linesPrice\n}\nexport const getIsLoading = state => {\n    return state.cart.isLoading\n}\nexport const getIsAdding = state => {\n    return state.cart.isAdding\n}\nexport const getIsAddingCallApi = state => {\n    return state.cart.isAddingCallApi\n}\nexport const getAlert = state => {\n    return state.cart.alert\n}\nexport const getStatus = state => {\n    return state.cart.status\n}\nexport const getMonthItems = state => {\n    return state.cart.monthItems\n}\n\nexport const getWaitTillDate = state => {\n    return state.cart.waitTillDate\n}\nexport const getReservationCode = state => {\n    return state.cart.reservationCode\n}\nexport const getReservationCutToSizeCode = state => {\n    return state.cart.reservationCutToSizeCode\n}\nexport const getReservationConfigurableCode = state => {\n    return state.cart.reservationConfigurableCode\n}\nexport const getReservationQuickShipConfigurableCode = state => {\n    return state.cart.reservationQuickShipConfigurableCode\n}\nexport const isSending = state => {\n    return state.cart.isSending\n}\nexport const byLineId = (state, lineId) => {\n    let found = state.cart.lines.find(line => {\n        return line.lineId === lineId\n    })\n\n    return found\n}\nconst linesSelector = state => {\n    return state.cart.lines\n}\nexport const weightSelector = createSelector(\n    linesSelector,\n    lines => lines.reduce((total, line) => total + ((line.product && !line.cutToSize) ? line.product.weight : 0) * line.qty, 0)\n)\nexport const getCalculatingLinesPrice = state => {\n    return state.cart.calculatingLinesPrice\n}\nexport const calculateVistexTotal = linesPrice => {\n    // let coin = Object.values(linesPrice) && Object.values(linesPrice)[0] && Object.values(linesPrice)[0]['CT_OUT_WEB'][0]['CURRENCY']\n    let coin = Object.values(linesPrice)[0].coin\n\n    const coins = {}\n\n    let amountTotal = Object.values(linesPrice).reduce((total, line) => {\n        let price = 0\n        // si el producto tiene precio de su grupo\n        // Si la llamada de precios fase II no tiene clase de coste ZT00, no se suma al total ya que aparece la línea como \"precio No disponible\"\n        if (line.hasZT00) {\n            price = line.price\n        }\n        coins[line.coin] = true;\n\n        // let qty = line.qty\n        // return total + price * qty\n\n        return total + price\n    }, 0)\n\n    if (Object.values(coins).length > 1) amountTotal = 0;\n\n    return { amountTotal, coin }\n}\nexport const totalSelector = state => {\n    return state.cart.totalAmount\n}\nexport const totalCoin = state => {\n    return state.cart.totalCoin\n}\nexport const totalSelectorMktools = state => {\n    let group = getPricesGroup(state)\n    return state.cart.lines.reduce((total, line) => {\n        if (!line.product) return 0\n        let price = 0\n        // si el producto tiene precio de su grupo\n\n        if (line.product.pricesMktools && line.product.pricesMktools[group]) price = line.product.pricesMktools[group].price\n        // si tiene default\n        else if (line.product.pricesMktools && line.product.pricesMktools.default && line.product.pricesMktools.default.price) {\n            price = line.product.pricesMktools.default.price\n        }\n        // si no tiene default el producto vale 0\n        return total + price * line.qty\n    }, 0)\n}\nexport const getBudgetPlusTotal = state => {\n    return getMktoolsBudgetWasted(state) + totalSelectorMktools(state)\n}\nexport const qtySelector = createSelector(\n    linesSelector,\n    lines => parseFloat(lines.reduce((total, line) => parseFloat(total) + parseFloat(line.qty), 0))\n)\nexport const getCartSlaDays = state => {\n    if (!state.cart.lines || state.cart.lines.length === 0) return DEFAULT_MIN_DELIVERY_DATE\n    const sla = state.cart.lines.map(v => v.product.days_sla).reduce((prev, current) => Math.max(prev, current))\n    if (!sla || sla === 0) return DEFAULT_MIN_DELIVERY_DATE\n    return sla\n}\nexport const getCartTypes = state => {\n    let types = []\n    state.cart.lines.forEach(line => {\n        if (line.bundleId !== null) {\n            if (!types.includes('BUNDLE')) types.push('BUNDLE')\n        } else if (line.lotId !== null) {\n            if (!types.includes('LOT')) types.push('LOT')\n        } else if (line.productId === 'CUT_TO_SIZE') {\n            if (!types.includes('CUT_TO_SIZE')) types.push('CUT_TO_SIZE')\n        } else if (line.extra && line.extra.mall) {\n            if (!types.includes('MALL')) types.push('MALL')\n        } else {\n            if (!types.includes('NORMAL')) types.push('NORMAL')\n        }\n    })\n    return types\n}\n\nexport const getCartBrands = state => {\n    let brands = []\n    state.cart.lines.forEach(line => {\n        if (!brands.includes(line.brand)) {\n            brands.push(line.brand)\n        }\n    })\n    return brands\n}\nexport const getHaveSomeProductsBelowThreshold = state => {\n    return state.cart.lines.some(line => line.product.threshold && line.product.threshold >= line.product.stock)\n}\nexport const getHaveSomeProductsWithoutSapStock = state => {\n    let productQtys = {}\n    var matWithoutStock = []\n    if (state.cart.matsNoStock == []) {\n        return []\n    }\n\n    matWithoutStock = state.cart.lines.map(line => {\n        var matStock = Object.assign({}, line)\n        var isOutlet = line.extra && line.extra.outlet ? true : false\n        var realStock = state.cart.matsNoStock.find(mat => {\n            return mat.id === line.lineId\n            // return mat.id === line.lineId && (line.product.discontinued || (line.extra && line.extra.outlet))\n        })\n        // console.log('valor de realstock')\n        // console.log(realStock)\n        // console.log(realStock ? Object.keys(realStock).length : 'VAcio')\n        if (realStock && Object.keys(realStock).length > 0) {\n            // console.log('no esta pasando por aqui')\n            //Separamos mat id según sean o no Outlet\n            if (isOutlet) {\n                // console.log('ES outlet')\n                productQtys[line.product.productId + 'outlet'] = productQtys[line.product.productId + 'outlet'] + line.qty || line.qty\n                matStock.stockOutletAvailable = realStock.realStock\n            } else {\n                // console.log('NO ES OUTLET')\n                productQtys[line.product.productId] = productQtys[line.product.productId] + line.qty || line.qty\n\n                matStock.stockAvailable = realStock.realStock\n            }\n        }\n        return matStock\n    })\n    // console.log(matWithoutStock)\n    matWithoutStock = matWithoutStock.filter(lineExt => {\n        // console.log('line ext filter')\n        // console.log(lineExt)\n        if (lineExt.stockAvailable != undefined || lineExt.stockOutletAvailable != undefined) return true\n        return false\n    })\n    // console.log(matWithoutStock)\n    // console.log('Valor matWithoustocko')\n    // console.log(matWithoutStock)\n\n    return matWithoutStock\n}\nexport const getIsCartCutToSize = state => {\n    //REVIEW: ¿se pueden mezclar los tipo de productos? NO\n    const lines = getLines(state)\n    return lines.filter(line => line.cutToSize).length > 0 && lines.filter(line => !line.cutToSize).length === 0\n\n    // if (getCartTypes(state).every(type => ['CUT_TO_SIZE'].includes(type))) {\n    //     return true\n    // }\n    // return false\n}\nexport const isMallCartOnly = state => {\n    if (!getCartTypes(state) || getCartTypes(state).length == 0) return false\n    // console.log('tipos')\n    // console.log(getCartTypes(state))\n    if (getCartTypes(state).every(type => ['MALL'].includes(type))) {\n        return true\n    }\n    return false\n}\nexport const isMallCartForContainer = state => {\n    if (isMallCartOnly(state) && getShippingMethod(state) === 'CONTAINER') {\n        return true\n    }\n    return false\n}\nexport const getThicknessInCart = state => {\n    let thickness = []\n\n    state.cart.lines.forEach(line => {\n        //dont count if step is 1\n        thickness.push(line.product.thickness)\n    })\n    return Array.from(new Set(thickness))\n}\nexport const getTotalThicknessInCart = state => {\n    let thickness = 0\n\n    state.cart.lines.forEach(line => {\n        let thicknessOfThisLine = line.product.thickness * line.qty\n        thickness = thickness + thicknessOfThisLine\n    })\n    return thickness\n}\nexport const getLenghtBundlesCart = state => {\n    let numOfRealBundles = state.cart.lines.filter(line => {\n        return line.bundleId !== null\n    }).length\n    let numOfCatalogBundles = 0\n    if (getShippingMethod(state) !== 'SINGLE_SLAB') {\n        state.cart.lines.forEach(line => {\n            if (line.bundleId === null && line.lotId === null && line.product.minQty[getShippingMethod(state)] !== 1)\n                //dont count if step is 1\n                numOfCatalogBundles = numOfCatalogBundles + line.qty / line.product.minQty[getShippingMethod(state)]\n        })\n    }\n\n    return numOfRealBundles + numOfCatalogBundles\n}\nexport const getCurrent = (state, unit) => {\n    return unit === 'KG' ? weightSelector(state) : Math.floor(weightSelector(state) * getKgPoundRatio())\n}\nexport const getGoalMin = (state, unit) => {\n    let goalMin = getShippingMethod(state) === 'CONTAINER' ? 19500 : 12000\n\n    switch (getSelectedCenter(state)) {\n        case getLatinaVitoriaCenterId():\n        case getNaturalStoneSpainCenterId():\n            if (getShippingMethod(state) === 'ENDI_TRUCK') {\n                goalMin = 0\n                break\n            } else if (getShippingMethod(state) === 'ENDI_CONTAINER') {\n                goalMin = 0\n                break\n            }\n            if (getCartTypes(state).every(type => ['BUNDLE'].includes(type))) {\n                if (getCartBrands(state).every(brand => ['SENSA', 'SCALEA'].includes(brand))) {\n                    goalMin = 15000\n                }\n            }\n            break\n        // case 1000: // HQ\n        //     goalMin = 12000\n        //     break\n        // case 7536: // HUB Sydney\n        //     goalMin = 19000\n        //     break\n        // case 7625: // HUBs de USA\n\n        // case 7626:\n        //     goalMin = 21500\n        //     break\n        // case 7507: // Centro 7507 de Brasil\n        //     goalMin = 17000\n        //     break\n        default:\n            if (getShippingMethod(state) === 'CONTAINER') {\n                goalMin = 19500\n            } else if (getShippingMethod(state) === 'ENDI_TRUCK') {\n                goalMin = 0\n            } else if (getShippingMethod(state) === 'ENDI_CONTAINER') {\n                goalMin = 0\n            } else {\n                goalMin = 12000\n            }\n    }\n    if ((getSalesOrg(state) === '2011' || getSalesOrg(state) === '2032') && (getShippingMethod(state) === 'FULL_TRUCK' || getShippingMethod(state) === 'SINGLE_SLAB')) {\n        goalMin = 19040\n    }\n    const goalMinAcordingUnit = unit === 'KG' ? goalMin : Math.floor(goalMin * getKgPoundRatio())\n    return goalMinAcordingUnit\n}\nexport const getGoalMax = (state, unit) => {\n    let goalMax = getShippingMethod(state) === 'CONTAINER' ? 20200 : 24000\n\n    switch (getSelectedCenter(state)) {\n        case getLatinaVitoriaCenterId():\n            goalMax = getShippingMethod(state) === 'CONTAINER' ? 27000 : 24000\n            break\n        // case 1000: // HQ\n        //     goalMax = 24000\n        //     break\n        // case 7536: // HUB Sydney\n        //     goalMax = 35000\n        //     break\n        // case 7625: // HUBs de USA\n        // case 7626:\n        //     goalMax = 23000\n        //     break\n        // case 7507: // Centro 7507 de Brasil\n        //     goalMax = 39000\n        //     break\n        default:\n            if (getShippingMethod(state) === 'CONTAINER') {\n                goalMax = 20200\n            } else if (getShippingMethod(state) === 'ENDI_TRUCK') {\n                goalMax = 24000\n            } else if (getShippingMethod(state) === 'ENDI_CONTAINER') {\n                goalMax = 21000\n            } else {\n                goalMax = 24000\n            }\n    }\n    if ((getSalesOrg(state) === '2011' || getSalesOrg(state) === '2032') && getShippingMethod(state) === 'FULL_TRUCK') {\n        goalMax = 19958\n    }\n    const goalMaxAcordingUnit = unit === 'KG' ? goalMax : Math.floor(goalMax * getKgPoundRatio())\n\n    return goalMaxAcordingUnit\n}\n\n/**\n * @param min\n * @param max\n * @param qty\n * @param hasMinimum\n * @returns {{isValid: boolean, units: number, qtyForNextUnit?: number}}\n */\nexport const getUnitsForQty = (min, max, qty, hasMinimum = true) => {\n    const output = {\n        units: 0,\n        isValid: false,\n        currentQtyWeight: qty,\n        currentMinWeight: min,\n        currentMaxWeight: max\n    };\n\n    const units = (qty / max) | 0;\n    output.units = units;\n    //If qty equals max then we're not calculating a new unit (truck/container) yet\n    output.currentMinWeight = qty !== max ? (max * units) + min : (max * (units - 1)) + min\n    output.currentMaxWeight = qty !== max ? (max * units) + max : (max * (units - 1)) + max\n\n    const lastUnitQty = qty % max;\n\n    if (lastUnitQty < min){\n        output.qtyForNextUnit = min - lastUnitQty;\n    } else {\n        output.qtyForNextUnit = max - lastUnitQty;\n    }\n\n    if(hasMinimum && lastUnitQty > 0 && lastUnitQty < min){\n        return output\n    } else {\n        output.isValid = true;\n        output.units = lastUnitQty === 0 || lastUnitQty < min ? units : units + 1\n\n        return output\n    }\n}\n\nexport const getKgPoundRatio = () => {\n    return 2.20462\n}\nexport const getQtyProductsCart = state => {\n    let result = []\n    state.cart.lines.forEach(line => {\n        if ((line.product && line.product.discontinued) || (line.extra && line.extra.outlet)) {\n            if (!result[line.productId]) result[line.productId] = 0\n            result[line.productId] = result[line.productId] + line.qty\n        }\n    })\n    return result\n}\nexport const getLastLine = state => {\n    return state.cart.lines[state.cart.lines.length - 1]\n}\nexport const getLinesByBundleIds = (state, bundleids) => {\n    return state.cart.lines.filter(line => bundleids.includes(line.bundleId))\n}\nexport const getLinesByMatId = (state, productId) => {\n    return state.cart.lines.filter(line => productId.includes(line.productId))\n}\nexport const getLinePricePhase2ByLineId = (state, lineId) => {\n    let price = null\n    let linesPrice = getLinesPrice(state)\n    if (linesPrice) {\n        let priceYYYY = linesPrice[lineId] && linesPrice[lineId].price\n        price = priceYYYY ? priceYYYY : 0\n    }\n\n    return price\n}\nexport const getVoucher = state => (state.cart.vouchers ? state.cart.vouchers[0] : null)\nexport const getVoucherStatusText = state => state.cart.voucherStatusText\nexport const getIsValidVoucher = state => (state.cart.vouchers && !!state.cart.vouchers[0] ? true : state.cart.isValidVoucher)\nexport const getIsLoadingVoucher = state => state.cart.isLoadingVoucher\nexport const getShowModalNoStock = state => {\n    return state.cart.showNoStockModal\n}\nexport const phase2priceByProductId = (state, productId) => {\n    let found = state.cart.phase2PricesByProduct.find(item => {\n        return item.productId === productId\n    })\n    return found ? found.price : found\n}\nexport const getTransformingSkuToLots = state => state.cart.transformingSkuToLots\n\nexport const getPhase2ClientByProduct = (state, productId) => {\n    return state.cart.phase2FetchedPrices && state.cart.phase2FetchedPrices.get(productId)\n}\nexport const isSuccessfullyAddedToCart = state => state.cart.successfullyAddedToCart\n\nexport const getLinesDeliveryDates = state => {\n    return state.cart.linesDeliveryDates\n}\nexport const getFormatedLinesDeliveryDates = (state) => {\n    const linesSlaDate = getLinesSlaDate(state)\n    const formatedLinesDates = {}\n\n    Object.entries(state.cart.lines).forEach(([lineId, line]) => {\n        const selectedLine = linesSlaDate && linesSlaDate[line.lineId]\n        formatedLinesDates[line.lineId] = {daysSla: selectedLine ? selectedLine.naturalDays : 0}\n    })\n\n    Object.entries(state.cart.linesDeliveryDates).forEach(([lineId, date]) => {\n        if(formatedLinesDates[lineId]){\n            formatedLinesDates[lineId].date = date.format('YYYY/MM/DD')\n        }\n    })\n\n    return formatedLinesDates\n}\nexport const getDeliveryDateControlKey = state => {\n    return state.cart.deliveryDateControlKey\n}\n\nexport const getFinishStep = state => {\n    return state.cart.finishStep\n}\n\nexport const getFullUnits = state => {\n    return state.cart.fullUnits\n}\n\nexport const getLinesSlaDate = state => {\n    return state.cart.linesSlaDate\n}\n\nexport const getPreferredDeliveryDateByLines = state => {\n    return state.cart.preferredDeliveryDateByLines\n}\n\nexport const getIsLoadingLinesSlaDate = state => {\n    return state.cart.isLoadingLinesSlaDate\n}\n\nexport const getIsCheckoutPage = state => {\n    return state.cart.isCheckoutPage\n}\n\nexport const isDefaultDeliveryDate = state => {\n    return state.cart.isDefaultDeliveryDate\n}\n\nexport const hideSlaDatesForCts = state => {\n    return state.cart.hideSlaDatesForCts\n}\n\nexport const linesSlaDateVisibility = state => {\n    return state.cart.linesSlaDateVisibility\n}\n\nexport default cart\n","import { push } from 'react-router-redux'\nimport { fetchSegmentation } from '../segmentation/actions'\nimport { getIsLogged, getToken, getEmailUsedToLogin } from '../login/reducers'\nimport { canBuy } from '../centers/reducers'\nimport { fetchLotsImages } from '../lots/actions'\nimport * as api from '../api'\nimport Cookies from 'js-cookie'\nimport { getCountry, getLanguage, getUICallback} from './reducers'\n\nexport const CLOSE_MENU = 'CLOSE_MENU'\n\nexport const setLanguage = locale => (dispatch, getState) => {\n    // console.log('DISPAT LENTGAE')\n    dispatch({ type: 'SET_LANGUAGE', locale })\n\n    if (canBuy(getState()) && getIsLogged(getState())) {\n        dispatch(fetchSegmentation())\n    }\n}\n\nexport const CLOSE_BUNDLE_CONTENT = 'CLOSE_BUNDLE_CONTENT'\nexport const closeBundleContent = () => {\n    return { type: CLOSE_BUNDLE_CONTENT }\n}\nexport const openBundleContent = bundle => (dispatch, getState) => {\n    dispatch(resetUI())\n    let lotIds = []\n    bundle.lots.forEach(lot => {\n        lotIds.push(lot.lotId)\n    })\n    dispatch({ type: 'OPEN_BUNDLE_CONTENT', bundle })\n    dispatch(fetchLotsImages(lotIds))\n}\nexport const closeMenu = () => {\n    return { type: CLOSE_MENU }\n}\nexport const CLOSE_SEGMENTATION_MODAL = 'CLOSE_SEGMENTATION_MODAL'\nexport const closeSegmentationModal = () => {\n    return { type: CLOSE_SEGMENTATION_MODAL }\n}\nexport const closeDektonGripModal = () => {\n    return { type: 'CLOSE_DEKTON_GRIP_MODAL' }\n}\nexport const closeEmailPromotionsModal = () => {\n    return { type: 'CLOSE_EMAIL_PROMOTIONS_MODAL' }\n}\nexport const closeWhatsappModal = () => {\n    return {type: 'CLOSE_WHATSAPP_MODAL'}\n}\n\nexport const closePedidosRecurrentesModal = () => {\n    return { type: 'CLOSE_PEDIDOS_RECURRENTES_MODAL' }\n}\n\nexport const sendFeedback = (score, comments, banner) => (dispatch, getState) => {\n    let lang = getLanguage(getState())\n    dispatch({ type: 'ADD_EMAIL_CENTER_REQUEST', score, comments, banner, lang })\n\n    return api\n        .sendFeedback(score, comments, banner, lang, getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'SEND_FEDDBACK_SUCCESS', alert: response.data, status: response.status })\n        })\n        .catch(error => {\n            dispatch({\n                type: 'SEND_FEDDBACK_FAILURE',\n                statusText: error.response.data.err,\n                status: error.response.status\n            })\n        })\n}\nexport const submitEmailPromotionsModal = (acceptPromotionNotifications, email, acceptPolicies) => (dispatch, getState) => {\n    dispatch({\n        type: 'SAVE_EMAIL_PROMOTIONS_MODAL'\n    })\n    return api\n        .savePromotionConfiguration(getToken(getState()), {\n            promotionEmail: email,\n            acceptPromotionNotifications: acceptPromotionNotifications,\n            acceptPolicies: acceptPolicies\n        })\n        .then(\n            response => {\n                dispatch({\n                    type: 'SAVE_EMAIL_PROMOTIONS_MODAL_SUCCESS'\n                })\n            },\n            error => {\n                dispatch({ type: 'SAVE_EMAIL_PROMOTIONS_MODAL_FAILURE', alert: error.response.data.err, status: error.response.status })\n            }\n        )\n}\nexport const submitWhatsappOptinModal = (phone, email, acceptPolicies, onClose) => (dispatch, getState) => {\n    dispatch({\n        type: 'SAVE_WHATSAPP_OPTIN_MODAL_REQUEST'\n    })\n    return api\n        .submitWhatsappOptin(getToken(getState()), {\n            email,\n            phone,\n            acceptPolicies\n        })\n        .then(\n            response => {\n                dispatch({\n                    type: 'SAVE_WHATSAPP_OPTIN_MODAL_SUCCESS'\n                })\n                onClose()\n            },\n            error => {\n                dispatch({ type: 'SAVE_WHATSAPP_OPTIN_MODAL_FAILURE', alert: error.response.data.err, status: error.response.status })\n            }\n        )\n}\nexport const submitDektonGripModal = () => (dispatch, getState) => {\n    dispatch({ type: 'ACCEPT_DEKTON_GRIP_MODAL' }) //REVIEW: DON'T USED\n    dispatch({ type: 'CLOSE_DEKTON_GRIP_MODAL' })\n    dispatch(getUICallback(getState()))\n}\nexport const showSegmentationModal = (mode, callback, productId) => (dispatch, getState) => {\n    //dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_SEGMENTATION_MODAL',\n        mode: mode,\n        callback: callback,\n        productId: productId\n    })\n}\nexport const showLanguageModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_LANGUAGE_MODAL'\n    })\n}\nexport const CLOSE_LANGUAGE_MODAL = 'CLOSE_LANGUAGE_MODAL'\nexport const closeLanguageModal = () => {\n    return { type: CLOSE_LANGUAGE_MODAL }\n}\nexport const showObsoleteModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_OBSOLETE_MODAL'\n    })\n}\nexport const CLOSE_OBSOLETE_MODAL = 'CLOSE_OBSOLETE_MODAL'\nexport const closeObsoleteModal = () => {\n    return { type: CLOSE_OBSOLETE_MODAL }\n}\nexport const toggleIsObsolete = () => {\n    return { type: 'TOGGLE_ISOBSOLETE' }\n}\nexport const showCheckoutModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_CHECKOUT_MODAL'\n    })\n}\nexport const CLOSE_CHECKOUT_MODAL = 'CLOSE_CHECKOUT_MODAL'\nexport const closeCheckoutModal = () => {\n    return { type: CLOSE_CHECKOUT_MODAL }\n}\nexport const showAdd2CartSuccessModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_ADD2CARTSUCCESS_MODAL'\n    })\n}\nexport const closeAdd2CartSuccessModal = () => {\n    return { type: 'CLOSE_ADD2CARTSUCCESS_MODAL' }\n}\nexport const CLOSE_PROFILE_MODAL = 'CLOSE_PROFILE_MODAL'\nexport const closeProfileModal = () => {\n    return { type: CLOSE_PROFILE_MODAL }\n}\nexport const showProfileModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_PROFILE_MODAL'\n    })\n}\nexport const CLOSE_LOGIN_MODAL = 'CLOSE_LOGIN_MODAL'\nexport const closeLoginModal = () => {\n    return { type: CLOSE_LOGIN_MODAL }\n}\nexport const showLoginModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_LOGIN_MODAL'\n    })\n}\nexport const CLOSE_REDIRECT_SSO_MODAL = 'CLOSE_REDIRECT_SSO_MODAL'\nexport const closeRedirectSSOModal = () => {\n    return { type: CLOSE_REDIRECT_SSO_MODAL }\n}\nexport const showRedirectSSOModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_REDIRECT_SSO_MODAL'\n    })\n}\nexport const CLOSE_REDIRECT_JT_MODAL = 'CLOSE_REDIRECT_JT_MODAL'\nexport const closeRedirectJTModal = () => {\n    return { type: CLOSE_REDIRECT_JT_MODAL }\n}\nexport const showRedirectJTModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_REDIRECT_JT_MODAL'\n    })\n}\nexport const CLOSE_CART_MODAL = 'CLOSE_CART_MODAL'\nexport const closeCartModal = () => {\n    return { type: CLOSE_CART_MODAL }\n}\nexport const showCartModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_CART_MODAL'\n    })\n}\nexport const CLOSE_IMPERSONATE_MODAL = 'CLOSE_IMPERSONATE_MODAL'\nexport const closeImpersonateModal = () => {\n    return { type: CLOSE_IMPERSONATE_MODAL }\n}\nexport const CLOSE_PRICES_DISCLAIMER = 'CLOSE_PRICES_DISCLAIMER'\nexport const closePricesDisclaimer = () => {\n    return { type: CLOSE_PRICES_DISCLAIMER }\n}\nexport const showImpersonateModal = () => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({\n        type: 'SHOW_IMPERSONATE_MODAL'\n    })\n}\nexport const toggleImpersonate = showImpersonate => (dispatch, getState) => {\n    if (!showImpersonate) {\n        dispatch(resetUI())\n        dispatch({ type: 'SHOW_IMPERSONATE_MODAL' })\n    } else {\n        dispatch({ type: 'CLOSE_IMPERSONATE_MODAL' })\n    }\n}\nexport const toggleProfile = showProfile => (dispatch, getState) => {\n    if (!showProfile) {\n        dispatch(resetUI())\n        dispatch({ type: 'SHOW_PROFILE_MODAL' })\n    } else {\n        dispatch({ type: 'CLOSE_PROFILE_MODAL' })\n    }\n}\nexport const SHOW_CART_MODAL = 'SHOW_CART_MODAL'\nexport const toggleCart = showCart => (dispatch, getState) => {\n    if (!showCart) {\n        dispatch(resetUI())\n        dispatch({ type: SHOW_CART_MODAL })\n    } else {\n        dispatch({ type: CLOSE_CART_MODAL })\n    }\n}\nexport const toggleMenu = showMenu => {\n    if (!showMenu) {\n        return { type: 'SHOW_MENU' }\n    } else {\n        return { type: 'CLOSE_MENU' }\n    }\n}\nexport const showPersonalData = showPersonalData => {\n    if (!showPersonalData) {\n        return { type: 'SHOW_PERSONAL_DATA' }\n    } else {\n        return { type: 'CLOSE_PERSONAL_DATA' }\n    }\n}\nexport const toggleTranslateMode = showFilters => (dispatch, getState) => {\n    dispatch({ type: 'TOGGLE_TRANSLATE_MODE' })\n}\nexport const toggleKpisFilters = showFilters => (dispatch, getState) => {\n    dispatch(resetUI())\n    dispatch({ type: 'TOGGLE_KPIS_FILTERS', showFilters })\n}\nexport const RESET_UI = 'RESET_UI'\nexport const resetUI = () => {\n    return { type: RESET_UI }\n}\nexport const fetchLocation = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LOCATION_COUNTRY_REQUEST' })\n    return api\n        .askLocation()\n        .then(response => {\n            dispatch({ type: 'FETCH_LOCATION_COUNTRY_SUCCESS', location: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LOCATION_COUNTRY_FAILURE_SAVE_DEFAULT' })\n        })\n}\nexport const fetchMaintenance = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_MAINTENANCE_SCHEDULED_REQUEST' })\n    return api\n        .fetchMaintenance()\n        .then(response => {\n            dispatch({ type: 'FETCH_MAINTENANCE_SCHEDULED_SUCCESS', maintenance: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_MAINTENANCE_SCHEDULED_FAILURE' })\n        })\n}\nexport const askLocation = (routeLang, pathname) => (dispatch, getState) => {\n    const locales = {\n        US: 'en-US',\n        CA: 'fr-CA',\n        ES: 'es',\n        FR: 'fr',\n        IT: 'it',\n        PT: 'pt',\n        NL: 'nl',\n        DE: 'de',\n        GB: 'en',\n        SE: 'sv',\n        BE: 'fr',\n        AT: 'de',\n        IE: 'en',\n        NO: 'no',\n        TR: 'tr',\n        DK: 'no',\n        FI: 'fi',\n        PL: 'en-US',\n        JP: 'en',\n        IL: 'en',\n        NZ: 'en-US',\n        AU: 'en-US',\n        AE: 'en',\n        SG: 'en',\n        ZA: 'en',\n        BR: 'pt',\n        MX: 'es'\n    }\n    const state = getState()\n    if (routeLang !== undefined) {\n        //Si tiene idioma en la url ej /es/catalogo (/es)\n        dispatch(setLanguage(routeLang))\n    } else if (routeLang === undefined && pathname !== '/') {\n        //si no tiene idioma definido (en-US) pero tiene dirección ej (/catalog)\n        dispatch(setLanguage('en-US'))\n    } else if (Cookies.get('defaultLanguage') !== undefined) {\n        // si existe cookie definida\n        dispatch(setLanguage(Cookies.get('defaultLanguage')))\n        if(pathname === '/'){\n            dispatch(dispatchPushURL())\n        }\n    } else {\n        // los demás casos (estando en home sin idioma definido en url y sin cookie)\n        dispatch(fetchLocation()).then(() => {\n            let locale = locales[getCountry(getState())] ? locales[getCountry(getState())] : 'en-US'\n            dispatch(setLanguage(locale))\n            Cookies.set('defaultLanguage', locale)\n            if(pathname === '/'){\n                dispatch(dispatchPushURL())\n            }\n        })\n    }\n}\nexport const sendTranslation = (termId, translation) => (dispatch, getState) => {\n    dispatch({ type: 'SEND_TRANSLATION_REQUEST', termId, translation })\n    return api\n        .sendTranslation(termId, translation, getLanguage(getState()))\n        .then(response => {\n            dispatch({ type: 'SEND_TRANSLATION_SUCCESS', translations: response })\n        })\n        .catch(error => {\n            dispatch({ type: 'SEND_TRANSLATION_FAILURE', error: error })\n        })\n}\nexport const getTranslation = () => (dispatch, getState) => {\n    dispatch({ type: 'GET_TRANSLATION_REQUEST' })\n    return api\n        .getTranslation(getLanguage(getState()))\n        .then(response => {\n            dispatch({ type: 'GET_TRANSLATION_SUCCESS', translations: response })\n        })\n        .catch(error => {\n            dispatch({ type: 'GET_TRANSLATION_FAILURE' })\n        })\n}\n\nexport const noShowMoreSubscribeModal = () => (dispatch, getState) => {\n    dispatch({\n        type: 'NO_SHOW_MORE_SUBSCRIBE_MODAL_REQUEST'\n    })\n    return api.noShowMoreSubscribeModal(getToken(getState())).then(\n        () => {\n            dispatch({\n                type: 'NO_SHOW_MORE_SUBSCRIBE_MODAL_SUCCESS'\n            })\n        },\n        error => {\n            dispatch({\n                type: 'NO_SHOW_MORE_SUBSCRIBE_MODAL_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n        }\n    )\n}\nexport const noShowMoreWhatsappModal = () => (dispatch, getState) => {\n    dispatch({\n        type: 'NO_SHOW_MORE_WHATSAPP_MODAL_REQUEST'\n    })\n    return api.noShowMoreWhatsappModal(getToken(getState())).then(\n        () => {\n            dispatch({\n                type: 'NO_SHOW_MORE_WHATSAPP_MODAL_SUCCESS'\n            })\n        },\n        error => {\n            dispatch({\n                type: 'NO_SHOW_MORE_WHATSAPP_MODAL_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n        }\n    )\n}\n\nexport const dispatchPushURL = (path = null, returnURL = null) => (dispatch, getState) => {\n    const state = getState()\n    let lang = getLanguage(state)\n    let goTo = '/'\n\n    if (lang != 'en-US') {\n        goTo = goTo + lang\n    }\n\n    if(path && path.includes('/' + lang)){\n        goTo = goTo.replace('/' + lang, '')\n    }\n\n    if(path && path.includes('/v2')){\n        goTo = goTo.replace('/v2', '')\n    }\n\n    path = !!path ? path : ''\n    let allPath = goTo + path\n    allPath = allPath.replace('//', '/')\n\n    if(returnURL){\n        return allPath\n    }else{\n        dispatch(push(allPath))\n    }\n}\n\nexport const downloadImage = (url, name) => (dispatch, getState) => {\n\n    const token = getToken(getState())\n\n    return api.downloadImage(token, url, name).then(\n        () => {\n            dispatch({\n                type: 'REQUEST_DOWNLOAD_IMAGE_SUCCESS'\n            })\n        },\n        error => {\n            dispatch({\n                type: 'REQUEST_DOWNLOAD_IMAGE_SUCCESS_FAILURE',\n                alert: error.response.data.err\n            })\n        }\n    )\n\n}\n\nexport const proccessInDetailScreen = (inDetailScreen) => (dispatch, getState) => {\n    dispatch({\n        type: 'PROCCESS_IN_DETAILS_SCREEN', inProductDetailScreen: inDetailScreen\n    })\n}\n\nexport const setIsOrderHistoryScreen = (isOrderHistoryScreen) => (dispatch, getState) => {\n    dispatch({\n        type: 'PROCCESS_IS_ORDER_HISTORY_SCREEN', isOrderHistoryScreen: isOrderHistoryScreen\n    })\n}\n\nexport const setIsShippingHistoryScreen = (isShippingHistoryScreen) => (dispatch, getState) => {\n    dispatch({\n        type: 'PROCCESS_IS_SHIPPING_HISTORY_SCREEN', isShippingHistoryScreen: isShippingHistoryScreen\n    })\n}\n\n/**\n * Action to send / post the walkthrough data after finishing the walkthrough\n * @param {string} type \n * @param {boolean} noShowMore \n */\nexport const submitWalkthrough = (type, noShowMore) => (dispatch, getState) => {\n    const email = getEmailUsedToLogin(getState())\n    const lang = getLanguage(getState())\n    const token = getToken(getState())\n\n    dispatch({ type: 'SEND_WALKTHROUGH_REQUEST' })\n\n    return api.sendWalkthrough(email, lang, type, noShowMore, token).then(response => {\n            dispatch({ \n                type: 'SEND_WALKTHROUGH_SUCCESS',\n                status: response.data.status\n            })\n        },\n        error => {\n            dispatch({\n                type: 'SEND_WALKTHROUGH_FAILURE',\n                status: error.response.status\n            })\n        }\n    )\n}\n\nexport const closeSilestoneXMModal = () => {\n    return { type: 'CLOSE_SILESTONEXM_MODAL' }\n}\n\nexport const setIsXeronBrandVisible = (isVisible) => (dispatch) => {\n    dispatch({\n        type: 'SET_XERON_BRAND_VISIBILITY', isXeronBrandVisible: isVisible\n    })\n}\n\nexport const setIsSilestoneBrandVisible = (isVisible) => (dispatch) => {\n    dispatch({\n        type: 'SET_SILESTONE_BRAND_VISIBILITY', isSilestoneBrandVisible: isVisible\n    })\n}\n\nexport const setIsConfigurableBathEditScreen = (isConfigurableBathEditScreen) => (dispatch) => {\n    dispatch({\n        type: 'PROCCESS_IS_CONFIGURABLE_BATH_EDIT_SCREEN', isConfigurableBathEditScreen: isConfigurableBathEditScreen\n    })\n}\n\nexport const setIsConfigurablePlanAcceptanceScreen = (isConfigurablePlanAcceptanceScreen) => (dispatch) => {\n    dispatch({\n        type: 'PROCCESS_IS_CONFIGURABLE_PLAN_ACCEPTANCE_SCREEN', isConfigurablePlanAcceptanceScreen: isConfigurablePlanAcceptanceScreen\n    })\n}","import { getIsLogged } from '../login/reducers'\nimport {cloneDeep} from \"lodash\";\n\nexport const initState = {\n    currentSegmentation: 'BUSINESS_SEGMENT',\n    segmentatingProductId: null,\n    segmentatingProductIsOutlet: null,\n    currentFavourite: null,\n    segmentationSubmitted: false,\n    businessSegment: null,\n    channel: null,\n    originalChannel: null,\n    channelName: null,\n    originalChannelName: null,\n    nexusOriginalChannel: null,\n    subchannel: null,\n    subchannelName: null,\n    salesForceId: null,\n    salesForceName: null,\n    projectId: null,\n    projectName: null,\n    subchannelProgram: null,\n    typology: null,\n    typologyName: null,\n    use: null,\n    useName: null,\n    segmentationOptions: [],\n    nexusOptions: [],\n    materials: [],\n    kb: null,\n    builder: null,\n    po: [],\n    useOptions: [],\n    typologiesV3: [],\n    kbOptions: [],\n    buildersOptions: [],\n    isSaving: false,\n    fetchingSegmentation: false,\n    segmentationV3: null,\n    segmentationCurrentStep: 1,\n    segmentationEvidence: null,\n    suggestedSegmentations: null,\n    segmentationProjects: new Set(),\n    segmentationHashesSet: {},\n}\n\nconst segmentation = (state = initState, action) => {\n    switch (action.type) {\n        case 'SAVE_CURRENT_FAVOURITE_REQUEST':\n            return Object.assign({}, state, { isSaving: true })\n        case 'SAVE_CURRENT_FAVOURITE_SUCCESS':\n        case 'SAVE_CURRENT_FAVOURITE_FAILURE':\n            return Object.assign({}, state, { isSaving: false })\n        case 'ADD_CART_LINE_SUCCESS':\n        case 'ADD_CART_BULK_LOTS_SUCCESS':\n            return Object.assign({}, state, { po: [] })\n        case 'SET_LANGUAGE':\n        case 'SIMPLE_IMPERSONATE_SUCCESS':\n        case 'LOGOUT':\n            return Object.assign({}, state, initState)\n        case 'CHANGE_CENTER':\n        case 'CLEAR_SEGMENTATION':\n            return Object.assign({}, state, {\n                currentFavourite: null,\n                businessSegment: null,\n                channel: null,\n                channelName: null,\n                subchannel: null,\n                subchannelName: null,\n                salesForceId: null,\n                salesForceName: null,\n                nexusOriginalChannel: null,\n                projectId: null,\n                projectName: null,\n                typology: null,\n                typologyName: null,\n                use: null,\n                useName: null,\n                kb: null,\n                builder: null,\n                po: [],\n                subchannelProgram: null,\n                originalChannel: null\n            })\n        case 'RESET_SEGMENTATION':\n            return Object.assign({}, state, { segmentationSubmitted: false, segmentationEvidence: null })\n        case 'SUBMIT_SEGMENTATION_REQUEST':\n            return Object.assign({}, state, {})\n        case 'SHOW_SEGMENTATION_MODAL':\n            return Object.assign({}, state, { segmentatingProductId: action.productId, segmentatingProductIsOutlet: action.outlet })\n\n        case 'SUBMIT_SEGMENTATION_SUCCESS':\n            return Object.assign({}, state, { segmentationSubmitted: true, showSegmentationModal: false })\n        case 'SUBMIT_SEGMENTATION_FAILURE':\n            return Object.assign({}, state, { segmentationSubmitted: false, showSegmentationModal: true })\n        case 'SELECT_SEGMENTATION_A':\n            return Object.assign({}, state, { selectedA: action.selected })\n        case 'TOGGLE_SEGMENTATION':\n            if (state.currentSegmentation === action.seg) {\n                return Object.assign({}, state, { currentSegmentation: null })\n            }\n            return Object.assign({}, state, { currentSegmentation: action.seg })\n        case 'LOAD_SEGMENTATION_PREFERED_REQUEST':\n            return Object.assign({}, state, {})\n        case 'LOAD_SEGMENTATION_PREFERED_FAILURE':\n            return Object.assign({}, state, {})\n        case 'LOAD_SEGMENTATION_PREFERED_SUCCESS':\n\n            let originalNexusChannel\n            let channelName = action.segmentation.channelName\n\n            if (action.segmentation.channel.startsWith('nexus')) {\n                const segmentation = state.nexusOptions[action.segmentation.channel] && state.nexusOptions[action.segmentation.channel].salesforceRelations[action.segmentation.salesforceId]\n                console.log('SEGMET', segmentation)\n\n                if (segmentation) {\n                    originalNexusChannel = segmentation.nexusChannelId\n                    channelName = segmentation.nexusChannelName\n                }\n            }\n\n            return Object.assign({}, state, {\n                businessSegment: action.segmentation.businessSegment,\n                currentSegmentation: null,\n                channel: action.segmentation.channel,\n                channelName: channelName,\n                subchannel: action.segmentation.subchannel,\n                subchannelProgram: action.segmentation.subchannelProgram,\n                subchannelName: action.segmentation.subchannelName,\n                salesForceId: action.segmentation.salesforceId,\n                salesForceName: action.segmentation.salesforceName,\n                projectId: action.segmentation.projectId,\n                projectName: action.segmentation.projectName,\n                typology: action.segmentation.typology,\n                typologyName: action.segmentation.typologyName,\n                builder: { id: action.segmentation.builderId, name: action.segmentation.builderName },\n                po: action.segmentation.purchaseOrders,\n                use: action.segmentation.use,\n                useName: action.segmentation.useName,\n                nexusOriginalChannel: originalNexusChannel,\n                kb: state.kbOptions.find(kb => {\n                    return kb.id === action.segmentation.kbId\n                }),\n                evidence: action.segmentation.evidence,\n                originalChannel: action.segmentation.originalChannel\n            })\n        case 'SET_SEGMENTATION_FROM_SUGGESTED':\n            const typology = state.typologiesV3.find(t => t.id === action.suggestedSegmentation.ambient)\n            const use = state.useOptions.find(t => t.id === action.suggestedSegmentation.use)\n            return Object.assign({}, state, {\n                businessSegment: action.suggestedSegmentation.businessSegment,\n                currentSegmentation: null,\n                channel: action.suggestedSegmentation.channelId,\n                channelName: action.suggestedSegmentation.channelName,\n                subchannel: action.suggestedSegmentation.subchannel,\n                subchannelProgram: action.suggestedSegmentation.subchannelProgram,\n                salesForceId: action.suggestedSegmentation.id,\n                salesForceName: action.suggestedSegmentation.name,\n                projectId: action.suggestedSegmentation.projectId,\n                projectName: action.suggestedSegmentation.projectName,\n                typology: action.suggestedSegmentation.ambient,\n                typologyName: typology && typology.name,\n                use: action.suggestedSegmentation.use,\n                useName: use && use.name,\n                nexusOriginalChannel: action.suggestedSegmentation.nexusOriginalChannel,\n                evidence: action.suggestedSegmentation.evidence\n            })\n        case 'SELECT_BUSINESS_SEGMENT':\n            return Object.assign({}, state, {\n                businessSegment: action.value,\n                currentSegmentation: 'CHANNEL',\n                channel: null,\n                channelName: null,\n                subchannel: null,\n                subchannelName: null,\n                typology: null,\n                typologyName: null,\n                builder: null,\n                kb: null\n            })\n        case 'SELECT_CHANNEL':\n            return Object.assign({}, state, {\n                businessSegment: state.segmentationV3 && action.value === 'A0' ? 'RE' : state.businessSegment,\n                channel: action.value,\n                channelName: action.name,\n                currentSegmentation: 'SUBCHANNEL',\n                subchannel: state.segmentationV3 && action.value === 'A0' ? '1A' : null,\n                subchannelName: null,\n                typology: null,\n                typologyName: null,\n                use: null,\n                useName: null,\n                salesForceId: null,\n                salesForceName: null,\n                projectId: null,\n                projectName: null,\n                originalChannel: null,\n                originalChannelName: null,\n                nexusOriginalChannel: null\n            })\n        case 'SELECT_SUBCHANNEL':\n            return Object.assign({}, state, {\n                subchannel: action.value,\n                subchannelName: action.name,\n                currentSegmentation: 'TYPOLOGY',\n                typology: null,\n                typologyName: null,\n                salesForceId: null,\n                salesForceName: null,\n                projectId: null,\n                projectName: null\n            })\n        case 'SELECT_SALESFORCEID':\n            return Object.assign({}, state, {\n                salesForceId: action.value,\n                salesForceName: action.name,\n                subchannelProgram: action.subchannelProgram ? action.subchannelProgram : null,\n                businessSegment: action.businessSegment ? action.businessSegment : null,\n                currentSegmentation: null,\n                subchannel: state.channel === 'A0' ? '1A' : action.subchannelId,\n                projectId: null,\n                projectName: null\n            })\n        case 'SELECT_PROJECTID':\n            return Object.assign({}, state, {\n                projectId: action.value,\n                projectName: action.name,\n                currentSegmentation: null,\n                subchannelProgram: action.subchannelProgram ? action.subchannelProgram : state.subchannelProgram,\n                businessSegment: action.businessSegment ? action.businessSegment : state.businessSegment,\n                subchannel: state.channel === 'A0' ? '1A' : (action.subchannelId ? action.subchannelId : state.subchannel),\n                salesForceId: state.salesForceId ? state.salesForceId : action.salesForceId,\n                salesForceName: state.salesForceName ? state.salesForceName : action.salesForceName,\n                originalChannel: action.originalChannel,\n                originalChannelName: action.originalChannelName,\n                nexusOriginalChannel: action.nexusOriginalChannel\n            })\n        case 'SELECT_TYPOLOGY':\n            return Object.assign({}, state, {\n                typology: action.value,\n                typologyName: action.name,\n                currentSegmentation: null\n            })\n        case 'SELECT_USE':\n            return Object.assign({}, state, { use: action.value, useName: action.name, currentSegmentation: null })\n        case 'SELECT_KB':\n            return Object.assign({}, state, { kb: action.value, currentSegmentation: null })\n        case 'SELECT_BUILDER':\n            return Object.assign({}, state, { builder: action.value, currentSegmentation: null })\n        case 'SET_PO':\n            return Object.assign({}, state, { po: action.value })\n        case 'FETCH_SEGMENTATION_REQUEST':\n            return Object.assign({}, state, { fetchingSegmentation: true })\n        case 'SET_CURRENT_FAVOURITE':\n            return Object.assign({}, state, { currentFavourite: action.currentFavourite })\n        case 'FETCH_SEGMENTATION_FAILURE':\n            return Object.assign({}, state, { fetchingSegmentation: false })\n        case 'FETCH_SEGMENTATION_SUCCESS':\n            const q = action.segmentation.segmentation\n            let b = action.segmentationV3 ? transformByIdV3(q) : transformById(q)\n            const nexusOptions = transformByIdV3(action.segmentation.nexusSegmentation, true)\n            const newState = Object.assign({}, state, {\n                segmentationOptions: b,\n                nexusOptions: nexusOptions,\n                materials: action.segmentation.materials || [],\n                fetchingSegmentation: false,\n                useOptions: action.segmentation.uses,\n                kbOptions: action.segmentation.kbs,\n                buildersOptions: action.segmentation.builders,\n                preferredSegmentation: fillFavouriteSegmentation(action.segmentation.favourites, action.segmentationV3, b, action.segmentation.hashes),\n                typologiesV3: action.segmentation.typologies,\n                segmentationV3: action.segmentationV3,\n                suggestedSegmentations: action.segmentation.suggested,\n                segmentationHashesSet: action.segmentation.hashes\n            })\n            if (action.segmentation.hashes)  newState.segmentationProjectsSet = new Set(action.segmentation.projects)\n            return newState\n        case 'SET_SEGMENTATION_CURRENT_STEP':\n            return Object.assign({}, state, { segmentationCurrentStep: action.segmentationCurrentStep })\n        case 'SET_SEGMENTATION_EVIDENCE':\n            return Object.assign({}, state, { segmentationEvidence: action.segmentationEvidence })\n        default:\n            return state\n    }\n}\n\nconst transformByIdV3 = (segmentation, isNexus) => {\n    let channels = {}\n\n    if (typeof segmentation === \"object\") {\n        segmentation = Object.entries(segmentation)\n\n        segmentation.forEach(([key, channel]) => {\n            if (channel.length === 0) return\n            let salesforceRelations = {}\n            const _salesforceRelations = isNexus ? channel : channel.salesforceRelations\n\n            _salesforceRelations.forEach(salesforceRelation => {\n                let projectOptions = {}\n\n                salesforceRelation.projectOptions.forEach((project) => {\n\n                    projectOptions[project.projectId] = {\n                        projectId: project.projectId,\n                        projectName: project.projectName,\n                        subchannelId: project.subchannel,\n                        subchannelProgram: project.subchannelProgram,\n                        isHomeOwner: project.isHomeOwner,\n                        evidences: project.evidences,\n                        originalChannel: project.originalChannel\n                    }\n                })\n\n                if ((salesforceRelation.id !== '' && channel.id !== 'A0') || (salesforceRelation.id === '' && channel.id === 'A0') || salesforceRelation.id !== '') {\n                    salesforceRelations[salesforceRelation.id] = {\n                        name: salesforceRelation.name,\n                        businessSegment: salesforceRelation.businessSegment,\n                        nexusChannelId: isNexus ? salesforceRelation.channelId : null,\n                        nexusChannelName: isNexus ? salesforceRelation.channelName : null,\n                        // subchannelProgram: salesforceRelation.subchannelProgram,\n                        // subchannelId: salesforceRelation.subchannelId,\n                        projectOptions: projectOptions\n                    }\n                }\n            })\n            if (Object.keys(salesforceRelations).length >= 1) {\n                const channelId = isNexus ? 'nexus_' + key : channel.id\n                channels[channelId] = {\n                    name: isNexus ? 'Cosentino Nexus' : channel.name,\n                    salesforceRelations\n                }\n            }\n        })\n    }\n\n    return channels\n}\n\nconst transformById = segmentation => {\n    let byId = {}\n    segmentation.forEach(businessSegment => {\n        let channels = {}\n        businessSegment.channels.forEach(channel => {\n            let subchannels = {}\n            channel.subchannels.forEach(subchannel => {\n                let typologies = {}\n                subchannel.typologies.forEach(typology => {\n                    typologies[typology.id] = { name: typology.name }\n                })\n                subchannels[subchannel.id] = { name: subchannel.name, typologies }\n            })\n            channels[channel.id] = { name: channel.name, subchannels }\n        })\n        byId[businessSegment.id] = { name: businessSegment.name, channels }\n    })\n    return byId\n}\n\nconst fillFavouriteSegmentation = (favourites, segmentationV3, channelOptions, hashes) => {\n    if (segmentationV3) {\n        return favourites.map(segmentation => {\n            return {\n                ...segmentation,\n                channelName: channelOptions[segmentation.channel] && channelOptions[segmentation.channel].name,\n                active: hashes[segmentation.hash] !== undefined,\n                evidence: hashes[segmentation.hash]\n            }\n        })\n    } else {\n        return favourites.map(segmentation => {\n            return {\n                ...segmentation,\n                channelName:\n                    channelOptions[segmentation.businessSegment] &&\n                    channelOptions[segmentation.businessSegment]['channels'] &&\n                    channelOptions[segmentation.businessSegment]['channels'][segmentation.channel] &&\n                    channelOptions[segmentation.businessSegment]['channels'][segmentation.channel].name,\n                subchannelName:\n                    channelOptions[segmentation.businessSegment] &&\n                    channelOptions[segmentation.businessSegment]['channels'] &&\n                    channelOptions[segmentation.businessSegment]['channels'][segmentation.channel] &&\n                    channelOptions[segmentation.businessSegment]['channels'][segmentation.channel]['subchannels'] &&\n                    channelOptions[segmentation.businessSegment]['channels'][segmentation.channel]['subchannels'][segmentation.subchannel] &&\n                    channelOptions[segmentation.businessSegment]['channels'][segmentation.channel]['subchannels'][segmentation.subchannel].name\n            }\n        })\n    }\n}\n\nexport const getChannelOptionsV3 = state => {\n    return state.segmentation.segmentationOptions\n}\n\nexport const getNexusOptions = state => {\n    const nexusOptions = cloneDeep(state.segmentation.nexusOptions)\n\n    Object.entries(nexusOptions).forEach(([key, v]) => {\n        const relations = filterNexusChannelProjects(state, v)\n        if (Object.keys(relations).length === 0) {\n            delete nexusOptions[key]\n        }\n    })\n\n    return nexusOptions\n}\n\nconst filterNexusChannelProjects = (state, channel) => {\n    const relations = {}\n    const projects = {}\n\n    Object.entries(channel.salesforceRelations).forEach(([relKey, relValue]) => {\n        Object.entries(relValue.projectOptions).forEach(([projKey, projValue]) => {\n            projects[projKey] = projValue\n            // if (!!state.segmentation.materials.find(el => el.projectId == projValue.projectId && el.material == state.segmentation.segmentatingProductId)) {\n            //     projects[projKey] = projValue\n            // }\n        })\n\n        if (Object.keys(projects).length > 0) {\n            relValue.projectOptions = projects\n            // relValue.projectOptions = Object.fromEntries(Object.entries(projects).slice(0,10)) // Para limitar en desarrollo el nº de opciones\n            relations[relKey] = relValue\n        }\n    })\n    return relations\n}\n\nexport const getSubchannelOptionsV3 = (state, channel) => {\n    if (!channel) {\n        return {}\n    }\n    return getChannelOptionsV3(state)[channel].subchannels\n}\n\nexport const getTypologyOptionsV3 = (state) => {\n    if (state.segmentation.channel === 'nexus_retail' || state.segmentation.channel === 'nexus_non_retail') {\n        const ambiances = new Set()\n        state.segmentation.materials.forEach(m => {\n            if (m.material == state.segmentation.segmentatingProductId && (!state.segmentation.projectId || m.projectId == state.segmentation.projectId)) {\n                ambiances.add(m.ambient)\n            }\n        })\n        return state.segmentation.typologiesV3.filter(t => ambiances.has(t.id))\n    }\n    return state.segmentation.typologiesV3\n}\n\nexport const getSalesforceRelationsV3 = (state, inProfile = false) => {\n    const channel = state.segmentation.originalChannel ? state.segmentation.originalChannel : state.segmentation.channel\n\n    if (channel === 'nexus_retail' || channel === 'nexus_non_retail') {\n        const nexusOptions = inProfile \n            ? (state.segmentation && state.segmentation.nexusOptions && state.segmentation.nexusOptions[channel])\n            : (getNexusOptions(state) && getNexusOptions(state)[channel])\n\n        return nexusOptions && nexusOptions.salesforceRelations ? nexusOptions.salesforceRelations : {}\n    }\n\n    const channelOptions = getChannelOptionsV3(state)\n    return channelOptions && channelOptions[channel] && channelOptions[channel].salesforceRelations\n        ? channelOptions[channel].salesforceRelations\n        : {}\n}\n\nexport const getEvidencesType = (state) => {\n    let evidenceType = null\n    if (state.segmentation.salesForceId) {\n        const sfOptions = getSalesforceRelationsV3(state)\n        const sfOption = sfOptions[state.segmentation.salesForceId]\n        if (sfOption) {\n            const projectId = state.segmentation.projectId ? state.segmentation.projectId : \"\"\n            const project = sfOption.projectOptions && sfOption.projectOptions[projectId]\n            if (project) evidenceType = project.evidences\n        }\n    }\n    return evidenceType\n}\n\nexport const getProjectIdV3 = (state, channel, salesForceId, inProfile=false) => {\n\n\n    if (channel === 'PO' || channel === 'AP' || channel === 'B0' || channel === 'HE' || channel === 'HO' || channel === 'nexus_retail' || channel === 'nexus_non_retail') {\n        function mapChannel(channelOptions, projectOptions, originalChannel) {\n            if (channelOptions) {\n                const salesForceRelations = Object.entries(channelOptions.salesforceRelations)\n                salesForceRelations.map(([salesForceId, relation]) => {\n                    Object.values(relation.projectOptions).map(eachProjectId => {\n                        projectOptions[eachProjectId.projectId] = {\n                            projectId: eachProjectId.projectId,\n                            projectName: eachProjectId.projectName,\n                            subchannelProgram: eachProjectId.subchannelProgram,\n                            isHomeOwner: eachProjectId.isHomeOwner,\n                            businessSegment: relation.businessSegment,\n                            subchannelId: eachProjectId.subchannelId,\n                            originalChannel: originalChannel,\n                            originalChannelName: relation.nexusChannelName ? relation.nexusChannelName : (channel ? channelOptions.name : null),\n                            nexusOriginalChannel: relation.nexusChannelId ? relation.nexusChannelId : null,\n                            salesForceId: salesForceId,\n                            salesForceName: relation.name\n                        }\n                    })\n                })\n            }\n        }\n\n        let projectOptions = []\n\n        if (channel === 'PO') {\n            const APchannelOptions = state.segmentation.segmentationOptions['AP']\n            const B0channelOptions = state.segmentation.segmentationOptions['B0']\n            const HEchannelOptions = state.segmentation.segmentationOptions['HE']\n            if (B0channelOptions) mapChannel(B0channelOptions, projectOptions, 'B0')\n            if (HEchannelOptions) mapChannel(HEchannelOptions, projectOptions, 'HE')\n            if (APchannelOptions) mapChannel(APchannelOptions, projectOptions, 'A0')\n        } else if (channel.startsWith('nexus')) {\n            mapChannel(inProfile ? state.segmentation.nexusOptions[channel] : getNexusOptions(state)[channel], projectOptions)\n        }\n        else {\n            mapChannel(state.segmentation.segmentationOptions['HO'], projectOptions)\n        }\n\n        projectOptions.sort()\n        return projectOptions\n    }\n\n    if (!salesForceId) {\n        return {}\n    }\n\n    if (!getChannelOptionsV3(state)[channel].salesforceRelations[salesForceId]) {\n        return {}\n    }\n\n    return getChannelOptionsV3(state)[channel].salesforceRelations[salesForceId].projectOptions\n}\n\nexport const getBusinesSegmentOptions = state => {\n    return state.segmentation.segmentationOptions\n}\nexport const getChannelOptions = (state, businessSegment) => {\n    if (!businessSegment) {\n        return {}\n    }\n    if (!state.segmentation.segmentationOptions[businessSegment]) {\n        return {}\n    }\n    return state.segmentation.segmentationOptions[businessSegment].channels\n}\n\nexport const getSubchannelOptions = (state, businessSegment, channel) => {\n    if (!channel) {\n        return {}\n    }\n    return getChannelOptions(state, businessSegment)[channel].subchannels\n}\n\nexport const getTypologyOptions = (state, businessSegment, channel, subchannel) => {\n    if (!subchannel) {\n        return {}\n    }\n    return getSubchannelOptions(state, businessSegment, channel)[subchannel].typologies\n}\n\nexport const getUseOptions = state => {\n    if (state.segmentation.channel === 'nexus_retail' || state.segmentation.channel === 'nexus_non_retail') {\n        const uses = new Set()\n        state.segmentation.materials.forEach(m => {\n            if (m.material == state.segmentation.segmentatingProductId && (!state.segmentation.projectId || m.projectId == state.segmentation.projectId)) {\n                uses.add(m.use)\n            }\n        })\n        return state.segmentation.useOptions.filter(t => uses.has(t.id))\n    }\n    return state.segmentation.useOptions\n}\nexport const getKBOptions = state => {\n    return state.segmentation.kbOptions\n}\nexport const getBuildersOptions = state => {\n    return state.segmentation.buildersOptions\n}\nexport const getSelectedBusinesSegment = state => {\n    return state.segmentation.businessSegment\n}\nexport const getSelectedChannel = state => {\n    return state.segmentation.channel\n}\nexport const getSelectedOriginalChannel = state => {\n    return state.segmentation.originalChannel\n}\nexport const getSelectedChannelName = state => {\n    return state.segmentation.channelName\n}\nexport const getSelectedOriginalChannelName = state => {\n    return state.segmentation.originalChannelName\n}\nexport const getSelectedSalesForceId = state => {\n    return state.segmentation.salesForceId\n}\nexport const getSelectedProjectId = state => {\n    return state.segmentation.projectId\n}\nexport const getSelectedProjectName = state => {\n    return state.segmentation.projectName\n}\nexport const getSelectedSalesForceName = state => {\n    return state.segmentation.salesForceName\n}\nexport const getSelectedSubchannelProgram = state => {\n    return state.segmentation.subchannelProgram\n}\nexport const getSelectedSubchannel = state => {\n    return state.segmentation.subchannel\n}\nexport const getSelectedSubchannelName = state => {\n    return state.segmentation.subchannelName\n}\nexport const getSelectedTypology = state => {\n    return state.segmentation.typology\n}\nexport const getSelectedTypologyName = state => {\n    return state.segmentation.typologyName\n}\nexport const getSelectedUse = state => {\n    return state.segmentation.use\n}\nexport const getSelectedUseName = state => {\n    return state.segmentation.useName\n}\nexport const getSelectedKB = state => {\n    return state.segmentation.kb\n}\nexport const getSelectedBuilder = state => {\n    return state.segmentation.builder\n}\nexport const getPO = state => {\n    return state.segmentation.po\n}\nexport const segmentationDone = state => {\n    return state.segmentation.segmentationSubmitted\n}\nexport const getCurrentSegmentation = state => {\n    return state.segmentation.currentSegmentation\n}\nexport const getCurrentFavourite = state => {\n    return state.segmentation.currentFavourite\n}\nexport const getPreferredSegmentation = state => {\n    return state.segmentation.preferredSegmentation\n    // const preferredSegmentation = []\n    //\n    // if (Array.isArray(state.segmentation.preferredSegmentation)) {\n    //     state.segmentation.preferredSegmentation.forEach((v) => {\n    //         if (v.channel && (!v.channel.startsWith('nexus') || getNexusOptions(state)[v.channel])) {\n    //             preferredSegmentation.push(v)\n    //         }\n    //     })\n    // }\n    // return preferredSegmentation\n}\nexport const getPreferredSegmentationByName = (state, name) => {\n    return getPreferredSegmentation(state).find(segmentation => {\n        return segmentation.name === name\n    })\n}\nexport const getIsSaving = state => {\n    return state.segmentation.isSaving\n}\nexport const getIsLoading = state => {\n    return state.segmentation.fetchingSegmentation\n}\nexport const getHasSegmentationV3 = state => {\n    if (!getIsLogged(state)) return false\n    return state.segmentation.segmentationV3\n}\n\nexport const getFullSelectedSegmentation = state => {\n\n    const selectedKB = getSelectedKB(state)\n    const selectedBuilder = getSelectedBuilder(state)\n\n    const originalChannel = getSelectedOriginalChannel(state)\n    const originalChannelName = getSelectedOriginalChannelName(state)\n\n    return {\n        businessSegment: getSelectedBusinesSegment(state) === 'NOT' ? null : getSelectedBusinesSegment(state),\n        channel: originalChannel ? originalChannel : getSelectedChannel(state),\n        channelName: originalChannelName ? originalChannelName : getSelectedChannelName(state),\n        nexusOriginalChannel: state.segmentation.nexusOriginalChannel,\n        subchannel: getSelectedSubchannel(state),\n        subchannelName: getSelectedSubchannelName(state),\n\n        salesforceId: getSelectedSalesForceId(state),\n        salesforceName: getSelectedSalesForceName(state),\n\n        projectId: getSelectedProjectId(state),\n        projectName: getSelectedProjectName(state),\n\n        subchannelProgram: getSelectedSubchannelProgram(state) ? getSelectedSubchannelProgram(state) : null,\n\n        typology: getSelectedTypology(state),\n        typologyName: getSelectedTypologyName(state),\n\n        use: getSelectedUse(state),\n        useName: getSelectedUseName(state),\n\n        kbId: selectedKB ? selectedKB.id : null,\n        kbName: selectedKB ? selectedKB.name : null,\n        builderId: selectedBuilder ? selectedBuilder.id : null,\n        builderName: selectedBuilder ? selectedBuilder.name : null,\n        purchaseOrders: getPO(state),\n        segmentationEvidences: getSegmentationEvidence(state)\n    }\n}\nexport const getChannelNameById = (state, channel) => {\n    return getChannelOptionsV3(state)[channel]\n}\nexport const getSubchannelNameById = (state, channel, subchannel) => {\n    return getSubchannelOptionsV3(state, channel)[subchannel]\n}\nexport const getSegmentatingProductId = state => {\n    return state.segmentation.segmentatingProductId\n}\nexport const getSegmentatingProductIsOutlet = state => {\n    return state.segmentation.segmentatingProductIsOutlet\n}\nexport const validHomeDepotSegmentation = state => {\n    if (getSelectedSubchannelProgram(state) === 'D000000001' && getSelectedChannel(state) === 'D0') return true\n    if (getSelectedSubchannel(state) === '4A' && getSelectedChannel(state) === 'D0') return true\n    return false\n}\n\nexport const getSegmentationCurrentStep = state => {\n    return state.segmentation.segmentationCurrentStep\n}\n\nexport default segmentation\n\nexport const getNexusEnvironment = state => {\n    if (!state.login.impersonatedBy && (state.segmentation.channel === 'nexus_retail' || state.segmentation.channel === 'nexus_non_retail')) {\n        const environments = getTypologyOptionsV3(state)\n        if (environments.length === 1) return environments[0]\n        else return {\n            id:\"KI\",\n            name:\"KITCHEN\"\n        }\n    }\n    return null\n}\n\nexport const getNexusUse = state => {\n    if (!state.login.impersonatedBy && (state.segmentation.channel === 'nexus_retail' || state.segmentation.channel === 'nexus_non_retail')) {\n        const uses = getUseOptions(state)\n        if (uses.length === 1) return uses[0]\n        else return {\n            id:\"10\",\n            name:\"Kitchen Countertops\"\n        }\n    }\n    return null\n}\n\nexport const getSegmentationEvidence = state => {\n    return state.segmentation.segmentationEvidence\n}\n\nexport const getSuggestedSegmentations = state => {\n    // return Object.values(state.segmentation.suggestedSegmentations).map(v => v[0]).slice(0,5)\n    return (state.segmentation.suggestedSegmentations && state.segmentation.suggestedSegmentations[state.segmentation.segmentatingProductId]) ?\n        state.segmentation.suggestedSegmentations[state.segmentation.segmentatingProductId].slice(0, 5) : []\n}\n\nexport const getMaterialProjects = (state) => {\n    const projects = state.segmentation.materials.filter(m => m.material == state.segmentation.segmentatingProductId).map(m => m.projectId)\n    return new Set(projects)\n}\n\nexport const getSegmentationHashes = state => state.segmentation.segmentationHashesSet\nexport const getSegmentationProjects = state => state.segmentation.segmentationProjectsSet","import * as hardcode from '../hardCode'\nimport {\n    getIsIkeaCenter,\n    getIsLowesCenter,\n    getIsMkToolsCenter,\n    getSalesOrg,\n    getSelectedCenter,\n    isLatinaVitoria,\n    isUserAustralianCenter\n} from '../centers/reducers'\nimport { getCurrentUrl, getLanguageToFetchZ2, isComingFromMall } from '../ui/reducers'\nimport { getImpersonatedBy, getIsLogged, getUserType, isEmserUser, getSalesOrg as getUserSalesOrg, getNaturalStoneViewingPermissions } from '../login/reducers'\nimport moment from 'moment'\n\nexport const initState = {\n    fetchedProducts: [],\n    lastVisitedProducts: null,\n    lastBoughtProducts: null,\n    productsForYou: null,\n    // lastBoughtProductsId: null,\n    // lastBoughtProductsState: 'NOT_FETCHED',\n    // productsForYouId: null,\n    // productsForYouState: 'NOT_FETCHED',\n    productsSimilarColors: null,\n    error: null,\n    colorsCutToSize: {\n        productsId: [],\n        isLoading: false,\n        products: null\n    },\n    samplesCutToSize: {\n        samples: null,\n        isLoading: false\n    },\n    furnituresCutToSize: {\n        furnitures: null,\n        isLoading: false\n    },\n    productsFavourite: {\n        productsId: [],\n        isAdding: false,\n        isLoading: false,\n        products: []\n    },\n    productsMktToMax: [],\n    // productId: 'fixedgallery',\n    gallery: [\n        {\n            url:\n                'https://assetstools.cosentino.com/api/v1/bynder/image/2E40493B-D183-4D59-81ABA96F1AF2105F/dekton-outdoor-kitchen-eu-nilium-orix-zenith.jpg?auto=compress,format&w=1200&h=500&fit=crop',\n            urlPreview:\n                'https://assetstools.cosentino.com/api/v1/bynder/image/2E40493B-D183-4D59-81ABA96F1AF2105F/dekton-outdoor-kitchen-eu-nilium-orix-zenith.jpg?auto=compress,format&w=30&h=25&fit=crop'\n        },\n        {\n            url:\n                'https://assetstools.cosentino.com/api/v1/bynder/image/61C96A3C-E07C-407E-A77C5A3C393159A9/dekton-living-room-nilium.jpg?auto=compress,format&w=1200&h=500&fit=crop',\n            urlPreview:\n                'https://assetstools.cosentino.com/api/v1/bynder/image/61C96A3C-E07C-407E-A77C5A3C393159A9/dekton-living-room-nilium.jpg?auto=compress,format&w=30&h=25&fit=crop'\n        },\n        {\n            url: 'https://assetstools.cosentino.com/api/v1/bynder/image/D363FE91-8596-4C72-862F550DA0C567A3/dekton-nilium-2.jpg?auto=compress,format&w=1200&h=500&fit=crop',\n            urlPreview: 'https://assetstools.cosentino.com/api/v1/bynder/image/D363FE91-8596-4C72-862F550DA0C567A3/dekton-nilium-2.jpg?auto=compress,format&w=30&h=25&fit=crop'\n        },\n        {\n            url:\n                'https://assetstools.cosentino.com/api/v1/bynder/image/873474B0-C613-4D6B-8EA682BFFC43F175/dekton-fachada-concepto-radium-nilium.jpg?auto=compress,format&w=1200&h=500&fit=crop',\n            urlPreview:\n                'https://assetstools.cosentino.com/api/v1/bynder/image/873474B0-C613-4D6B-8EA682BFFC43F175/dekton-fachada-concepto-radium-nilium.jpg?auto=compress,format&w=30&h=25&fit=crop'\n        },\n        {\n            url: 'https://assetstools.cosentino.com/api/v1/bynder/image/69A0985C-715E-4D20-84E121D8BE1975ED/dekton-kitchen-nilium.jpg?auto=compress,format&w=1200&h=500&fit=crop',\n            urlPreview:\n                'https://assetstools.cosentino.com/api/v1/bynder/image/69A0985C-715E-4D20-84E121D8BE1975ED/dekton-kitchen-nilium.jpg?auto=compress,format&w=30&h=25&fit=crop'\n        }\n    ],\n    colorsMktoolsAttr: {},\n    colorsMktoolsAttrToAdd: {},\n    colorsMktoolsAttrToDel: {},\n    deviatedAdmin: {\n        isLoading: false,\n        products: []\n    },\n    deviatedDescriptionsIsLoading: false,\n    deviatedDescriptions: []\n}\n\nconst products = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_PRODUCT_REQUEST':\n            return { ...state, error: null }\n        case 'FETCH_PRODUCT_SUCCESS':\n        case 'ADD_SELECTED_PRODUCT_TO_FETCHED':\n            return { ...state, fetchedProducts: [{ product: action.product, centerId: action.centerId, locale: action.locale }].concat(...state.fetchedProducts) }\n        case 'FETCH_PRODUCT_FAILURE':\n            return { ...state, error: action.response }\n        case 'FETCH_PRODUCTS_MKT_TO_MAX_REQUEST':\n            return { ...state, isLoading: true }\n        case 'FETCH_PRODUCTS_MKT_TO_MAX_SUCCESS':\n            return { ...state, productsMktToMax: action.productsMktToMax, isLoading: false }\n        case 'FETCH_PRODUCTS_MKT_TO_MAX_FAILURE':\n            return { ...state, isLoading: false }\n        case 'SAVE_PRODUCTS_MKT_TO_MAX_REQUEST':\n            return { ...state, isLoading: true }\n        case 'SAVE_PRODUCTS_MKT_TO_MAX_SUCCESS':\n            let newProducts = state.productsMktToMax.map(item => {\n                if (action.productsMktToMax.filter(newItem => item.productId === newItem.productId && item.center === newItem.center).length > 0)\n                    return action.productsMktToMax.filter(newItem => item.productId === newItem.productId && item.center === newItem.center)[0]\n                else return item\n            })\n            return { ...state, productsMktToMax: newProducts, isLoading: false }\n        case 'SAVE_PRODUCTS_MKT_TO_MAX_FAILURE':\n            return { ...state, isLoading: false }\n        case 'FETCH_SIMILAR_PRODUCT_SUCCESS':\n            return {\n                ...state,\n                fetchedProducts: state.fetchedProducts.map(item => {\n                    if (item.product.productId === action.productId && item.centerId === action.centerId && item.locale === action.locale) {\n                        item = { ...item, product: { ...item.product, similarProducts: action.products } }\n                    }\n                    return item\n                })\n            }\n        case 'LAST_PRODUCTS_BOUGHT_INIT':\n            return Object.assign({}, state, { lastBoughtProductsState: 'FETCHING', lastBoughtProductsId: null })\n        case 'LAST_PRODUCTS_BOUGHT_FINISH':\n            return Object.assign({}, state, { lastBoughtProductsState: 'DONE' })\n        case 'LAST_PRODUCTS_BOUGHT_SUCCESS':\n            // return Object.assign({}, state, { lastBoughtProductsId: action.products })\n            return Object.assign({}, state, { lastBoughtProducts: action.products })\n        case 'PRODUCTS_FOR_YOU_INIT':\n            return Object.assign({}, state, { productsForYouState: 'FETCHING', productsForYouId: null })\n        case 'PRODUCTS_FOR_YOU_FINISH':\n            return Object.assign({}, state, { productsForYouState: 'DONE' })\n        case 'PRODUCTS_FOR_YOU_SUCCESS':\n            return Object.assign({}, state, { productsForYou: action.products })\n        // return Object.assign({}, state, { productsForYouId: action.products })\n        case 'PRODUCTS_SIMILAR_COLORS_INIT':\n            return Object.assign({}, state, { productsSimilarColorsState: 'FETCHING', productsSimilarColorsId: null })\n        case 'PRODUCTS_SIMILAR_COLORS_FINISH':\n            return Object.assign({}, state, { productsSimilarColorsState: 'DONE' })\n        case 'PRODUCTS_SIMILAR_COLORS_SUCCESS':\n            return Object.assign({}, state, { productsSimilarColors: action.products })\n        case 'FETCH_COLORS_CUT_TO_SIZE_REQUEST':\n            return Object.assign({}, state, { colorsCutToSize: Object.assign({}, state.colorsCutToSize, { isLoading: true }) })\n        case 'FETCH_COLORS_CUT_TO_SIZE_SUCCESS':\n            return Object.assign({}, state, {\n                colorsCutToSize: Object.assign({}, state.colorsCutToSize, { productsId: action.productsId, isLoading: false, products: action.products })\n            })\n        case 'FETCH_COLORS_CUT_TO_SIZE_FAILURE':\n            return Object.assign({}, state, { colorsCutToSize: Object.assign({}, state.colorsCutToSize, { isLoading: false }) })\n        case 'FETCH_SAMPLES_CUT_TO_SIZE_REQUEST':\n            return Object.assign({}, state, { samplesCutToSize: Object.assign({}, state.samplesCutToSize, { isLoading: true }) })\n        case 'FETCH_SAMPLES_CUT_TO_SIZE_SUCCESS':\n            return Object.assign({}, state, {\n                samplesCutToSize: Object.assign({}, state.samplesCutToSize, { samples: action.samples, isLoading: false })\n            })\n        case 'FETCH_SAMPLES_CUT_TO_SIZE_FAILURE':\n            return Object.assign({}, state, { samplesCutToSize: Object.assign({}, state.samplesCutToSize, { isLoading: false }) })\n        case 'FETCH_FURNITURES_CUT_TO_SIZE_REQUEST':\n            return Object.assign({}, state, { furnituresCutToSize: Object.assign({}, state.furnituresCutToSize, { isLoading: true }) })\n        case 'FETCH_FURNITURES_CUT_TO_SIZE_SUCCESS':\n            return Object.assign({}, state, {\n                furnituresCutToSize: Object.assign({}, state.furnituresCutToSize, { furnitures: action.furnitures, isLoading: false })\n            })\n        case 'FETCH_FURNITURES_CUT_TO_SIZE_FAILURE':\n            return Object.assign({}, state, { furnituresCutToSize: Object.assign({}, state.furnituresCutToSize, { isLoading: false }) })\n        case 'EMPTY_PRODUCTS_FAVOURITE':\n            return Object.assign({}, state, { productsFavourite: Object.assign({}, state.productsFavourite, { productsId: [] }) })\n        case 'FETCH_PRODUCTS_FAVOURITE_REQUEST':\n            return Object.assign({}, state, { productsFavourite: Object.assign({}, state.productsFavourite, { isLoading: true }) })\n        case 'FETCH_PRODUCTS_FAVOURITE_SUCCESS':\n            return Object.assign({}, state, {\n                productsFavourite: Object.assign({}, state.productsFavourite, { productsId: action.productsId, isLoading: false, products: action.products })\n            })\n        case 'FETCH_PRODUCTS_FAVOURITE_FAILURE':\n            return Object.assign({}, state, { productsFavourite: Object.assign({}, state.productsFavourite, { isLoading: false }) })\n        case 'ADD_PRODUCT_FAVOURITE_REQUEST':\n            return Object.assign({}, state, { productsFavourite: Object.assign({}, state.productsFavourite, { isLoading: true }) })\n        case 'ADD_PRODUCT_FAVOURITE_SUCCESS':\n            return Object.assign({}, state, {\n                productsFavourite: Object.assign({}, state.productsFavourite, {\n                    productsId: [action.productId].concat(...state.productsFavourite.productsId),\n                    products: [action.product].concat(...state.productsFavourite.products),\n                    isLoading: false\n                })\n            })\n        case 'ADD_PRODUCT_FAVOURITE_FAILURE':\n            return Object.assign({}, state, { productsFavourite: Object.assign({}, state.productsFavourite, { isLoading: false }) })\n        case 'REMOVE_PRODUCT_FAVOURITE_REQUEST':\n            return Object.assign({}, state, { productsFavourite: Object.assign({}, state.productsFavourite, { isLoading: true }) })\n        case 'REMOVE_PRODUCT_FAVOURITE_SUCCESS':\n            return Object.assign({}, state, {\n                productsFavourite: Object.assign({}, state.productsFavourite, {\n                    productsId: state.productsFavourite.productsId.filter(id => {\n                        return id !== action.productId\n                    }),\n                    products:\n                        state.productsFavourite.products &&\n                        state.productsFavourite.products.filter(product => {\n                            return product.productId !== action.productId\n                        }),\n                    isLoading: false\n                })\n            })\n        case 'REMOVE_PRODUCT_FAVOURITE_FAILURE':\n            return Object.assign({}, state, { productsFavourite: Object.assign({}, state.productsFavourite, { isLoading: false }) })\n        case 'FETCH_COLORS_MKTOOLS_ATTR_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_COLORS_MKTOOLS_ATTR_SUCCESS':\n        case 'SAVE_COLORS_MKTOOLS_ATTR_SUCCESS':\n            return Object.assign({}, state, { colorsMktoolsAttr: action.colors, colorsMktoolsAttrToDel: {}, colorsMktoolsAttrToAdd: {}, isLoading: false })\n        case 'ADD_COLOR_MKTOOLS_ATTR_SUCCESS':\n            let newColorsToSave = state.colorsMktoolsAttr[action.brand]\n            let colorsToDelByBrand = state.colorsMktoolsAttrToDel[action.brand]\n            let colorsToAddByBrand = state.colorsMktoolsAttrToAdd[action.brand]\n\n            if (!colorsToDelByBrand) colorsToDelByBrand = []\n            let indexToDel = colorsToDelByBrand.findIndex(name => name === action.color)\n\n            if (indexToDel !== -1) {\n                colorsToDelByBrand.splice(indexToDel, 1)\n                colorsToDelByBrand.sort()\n            } else {\n                if (!colorsToAddByBrand) colorsToAddByBrand = []\n                colorsToAddByBrand.push(action.color)\n                colorsToAddByBrand.sort()\n            }\n            if (!newColorsToSave) newColorsToSave = []\n            newColorsToSave.push(action.color)\n            newColorsToSave.sort()\n\n            return Object.assign({}, state, {\n                colorsMktoolsAttr: { ...state.colorsMktoolsAttr, [action.brand]: newColorsToSave },\n                colorsMktoolsAttrToAdd: { ...state.colorsMktoolsAttrToAdd, [action.brand]: colorsToAddByBrand },\n                colorsMktoolsAttrToDel: { ...state.colorsMktoolsAttrToDel, [action.brand]: colorsToDelByBrand },\n                isLoading: false\n            })\n        case 'REMOVE_COLOR_MKTOOLS_ATTR_SUCCESS':\n            let colorsToAddForRemoveAction = state.colorsMktoolsAttr[action.brand]\n            let colorsToDelByBrandForRemoveAction = state.colorsMktoolsAttrToDel[action.brand]\n            let colorsToAddByBrandForRemoveAction = state.colorsMktoolsAttrToAdd[action.brand]\n\n            if (!colorsToAddByBrandForRemoveAction) colorsToAddByBrandForRemoveAction = []\n            let indexToDelForRemoveAction = colorsToAddByBrandForRemoveAction.findIndex(name => name === colorsToAddForRemoveAction[action.index])\n\n            if (indexToDelForRemoveAction !== -1) {\n                colorsToAddByBrandForRemoveAction.splice(indexToDelForRemoveAction, 1)\n                colorsToAddByBrandForRemoveAction.sort()\n            } else {\n                if (!colorsToDelByBrandForRemoveAction) colorsToDelByBrandForRemoveAction = []\n                colorsToDelByBrandForRemoveAction.push(colorsToAddForRemoveAction[action.index])\n                colorsToDelByBrandForRemoveAction.sort()\n            }\n\n            colorsToAddForRemoveAction.splice(action.index, 1)\n\n            return Object.assign({}, state, {\n                colorsMktoolsAttr: { ...state.colorsMktoolsAttr, [action.brand]: colorsToAddForRemoveAction },\n                colorsMktoolsAttrToAdd: { ...state.colorsMktoolsAttrToAdd, [action.brand]: colorsToAddByBrandForRemoveAction },\n                colorsMktoolsAttrToDel: { ...state.colorsMktoolsAttrToDel, [action.brand]: colorsToDelByBrandForRemoveAction },\n                isLoading: false\n            })\n        case 'FETCH_CCOLORS_MKTOOLS_ATTR_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n\n        case 'FETCH_PRODUCTS_DEVIATED_ADMIN_REQUEST':\n            return { ...state, deviatedAdmin: { ...state.deviatedAdmin, isLoading: true } }\n        case 'FETCH_PRODUCTS_DEVIATED_ADMIN_SUCCESS':\n            return { ...state, deviatedAdmin: { ...state.deviatedAdmin, isLoading: false, products: action.productsDeviatedAdmin } }\n        case 'FETCH_PRODUCTS_DEVIATED_ADMIN_FAILURE':\n            return { ...state, deviatedAdmin: { ...state.deviatedAdmin, isLoading: false } }\n\n        case 'SAVE_PRODUCTS_DEVIATED_ADMIN_REQUEST':\n            return { ...state, deviatedAdmin: { ...state.deviatedAdmin, isLoading: true } }\n        case 'SAVE_PRODUCTS_DEVIATED_ADMIN_SUCCESS':\n            let newProductsDeviated = state.deviatedAdmin.products.map(item => {\n                if (action.products.filter(newItem => item.productId === newItem.productId && item.centerId === newItem.centerId).length > 0)\n                    return action.products.filter(newItem => item.productId === newItem.productId && item.centerId === newItem.centerId)[0]\n                else return item\n            })\n            return { ...state, deviatedAdmin: { ...state.deviatedAdmin, isLoading: false, products: newProductsDeviated } }\n        case 'SAVE_PRODUCTS_DEVIATED_ADMIN_FAILURE':\n            return { ...state, deviatedAdmin: { ...state.deviatedAdmin, isLoading: false } }\n\n        case 'FETCH_DEVIATED_DESCRIPTIONS_REQUEST':\n            return { ...state, deviatedDescriptionsIsLoading: true }\n        case 'FETCH_DEVIATED_DESCRIPTIONS_SUCCESS':\n            return { ...state, deviatedDescriptionsIsLoading: false, deviatedDescriptions: action.descriptions }\n        case 'FETCH_DEVIATED_DESCRIPTIONS_FAILURE':\n            return { ...state, deviatedDescriptionsIsLoading: false }\n        case 'FETCH_LAST_VISITED_PRODUCTS_REQUEST_SUCCESS':\n            return { ...state, lastVisitedProducts: action.products }\n        default:\n            return state\n    }\n}\nexport const getProductsForYouId = state => {\n    return state.products.productsForYouId\n}\nexport const getProductsForYouState = state => {\n    return state.products.productsForYouState\n}\nexport const getProductsForYou = state => {\n    return state.products.productsForYou\n    // if (getProductsForYouId(state) === null) return []\n    // const productsForYou = []\n    // getProductsForYouId(state).forEach(product => productsForYou.push(byProductId(state, product)))\n    // return productsForYou\n}\nexport const getProductsSimilarColorsId = state => {\n    return state.products.productsSimilarColorsId\n}\nexport const getProductsSimilarColorsState = state => {\n    return state.products.productsSimilarColorsState\n}\nexport const getProductsSimilarColors = state => {\n    return state.products.productsSimilarColors\n}\nexport const getLastProductBoughtsId = state => {\n    return state.products.lastBoughtProductsId\n}\nexport const getError = state => {\n    return state.products.error\n}\nexport const getLastBoughtProductsState = state => {\n    return state.products.lastBoughtProductsState\n}\nexport const getLastProductBoughts = state => {\n    return state.products.lastBoughtProducts\n    // if (getLastProductBoughtsId(state) === null) return []\n    // const lastBoughtProducts = []\n    // getLastProductBoughtsId(state).forEach(product => lastBoughtProducts.push(byProductId(state, product)))\n    // return lastBoughtProducts\n}\nexport const byProductId = (state, productId) => {\n    let centerId = getSelectedCenter(state) ? getSelectedCenter(state) : 'near'\n    let locale = getLanguageToFetchZ2(state)\n\n    let found =\n        state.products &&\n        state.products.fetchedProducts.find(item => {\n            if (item.control) return false\n            const currentUrl = getCurrentUrl(state)\n            if (isComingFromMall(state) || (currentUrl && (currentUrl.pathname.includes('landing-template') || currentUrl.pathname.includes('mall')))) {\n                return item.product.productId === productId\n            } else {\n                return item.product.productId === productId && item.centerId === centerId && item.locale === locale\n            }\n        })\n    return found ? found.product : found\n}\n\nexport const discountsByProductId = (state, productId, outlet) => {\n    if (!productId || !state.login.allProductsDiscounts) return null\n    let centerId = getSelectedCenter(state)\n    let found = state.login.allProductsDiscounts.filter(item => {\n        return item.productId == productId && item.center == centerId && item.outlet == (outlet ? true : false)\n    })\n    return found ? found : []\n}\nexport const getProductsIdFavourite = state => {\n    return state.products.productsFavourite.productsId\n}\nexport const isFavouriteById = (state, productId) => {\n    return !!(state.products.productsFavourite.productsId && state.products.productsFavourite.productsId.find(id => id == productId))\n}\nexport const getShowModal = state => {\n    return state.products.productsFavourite.showModal\n}\nexport const getIsAdding = state => {\n    return state.products.productsFavourite.isAdding\n}\nexport const getIsLoading = state => {\n    return state.products.productsFavourite.isLoading\n}\nexport const getGallery = state => {\n    return state.products.gallery\n}\nexport const getFetchedProducts = state => {\n    return state.products.fetchedProducts\n}\nexport const getLastVisitedProduct = state => {\n    return state.products.lastVisitedProducts\n}\nexport const getColorsCutToSizeIsLoading = state => {\n    return state.products.colorsCutToSize.isLoading\n}\nexport const getColorsCutToSizeProducts = state => {\n    return state.products.colorsCutToSize.products\n}\nexport const getSamplesCutToSize = state => {\n    return state.products.samplesCutToSize.samples\n}\nexport const getFurnituresCutToSize = state => {\n    return state.products.furnituresCutToSize.furnitures\n}\nexport const getProductsFavouritesByIds = state => {\n    return state.products.productsFavourite.products\n}\nexport const similarProductByProductId = (state, productId) => {\n    let centerId = getSelectedCenter(state)\n    let locale = getLanguageToFetchZ2(state)\n    let found = state.products.fetchedProducts.find(item => {\n        return item.centerId === centerId && item.product.productId === productId && item.product.similarProducts.length > 0 && item.locale === locale\n    })\n    return found ? found.product : found\n}\nexport const getProductsMktToMax = state => {\n    return state.products.productsMktToMax\n}\nexport const getBrandsMktoolsAttr = state => {\n    //HARDCODE: list of brands\n    return isUserAustralianCenter(state) ? hardcode.listBrandsMktoolsAttrWithXeron : hardcode.listBrandsMktoolsAttr\n}\nexport const getBrandsMktoolsAttrWithXeron = state => {\n    //HARDCODE: list of brands\n    return hardcode.listBrandsMktoolsAttrWithXeron\n}\nexport const getColorsMktoolsAttr = state => {\n    return state.products.colorsMktoolsAttr\n}\nexport const getColorsMktoolsAttrToDel = state => {\n    return state.products.colorsMktoolsAttrToDel\n}\nexport const getColorsMktoolsAttrToAdd = state => {\n    return state.products.colorsMktoolsAttrToAdd\n}\nexport const getLocaleWithft2 = () => {\n    return ['en-US', 'fr-CA', 'en-CA']\n}\nexport const canViewPrices = state => {\n    if (!getIsLogged(state)) return false\n    if (isEmserUser(state)) return false\n    return !(getUserType(state) === 'SHOP' || getIsIkeaCenter(state) || getIsLowesCenter(state))\n\n    // let userNames = [\n    //     '0000301893',\n    //     '0000305017',\n    //     '0000303184',\n    //     '0000110610',\n    //     '0000110472',\n    //     '0000103619',\n    //     '0000103617',\n    //     '0000103598',\n    //     '0000425597',\n    //     '0000411822',\n    //     '0000412465',\n    //     '0000102163',\n    //     '0000102173',\n    //     '0000110652',\n    //     '0000102013',\n    //     '0000408750',\n    //     '0000411529'\n    // ]\n    // let centerNames = ['PRICING', 'TOULOUSE', 'HOLLAND', 'MADRID', 'CATARINA', 'PRICINGUSA', 'ORLANDO', 'ANAHEIM']\n    // if (!getIsLogged(state)) return false\n\n    // if (centerNames.includes(getImpersonatedBy(state))) return true\n    // if (userNames.includes(getUserName(state))) return true\n    // if (centerNames.includes(getUserName(state))) return true\n    // return false\n}\nexport const canViewPricesPhase2 = state => {\n    if (!getIsLogged(state)) return false\n    if (getIsMkToolsCenter(state)) return false\n    if (isEmserUser(state)) return false\n    return !(getUserType(state) === 'SHOP' || getIsIkeaCenter(state) || getIsLowesCenter(state))\n\n    // let userNames = [\n    //     '0000301893',\n    //     '0000305017',\n    //     '0000303184',\n    //     '0000110610',\n    //     '0000110472',\n    //     '0000103619',\n    //     '0000103617',\n    //     '0000103598',\n    //     '0000102163',\n    //     '0000102173',\n    //     '0000110652',\n    //     '0000102013',\n    //     '0000408750',\n    //     '0000411529',\n    //     '0000425597',\n    //     '0000411822',\n    //     '0000412465'\n    // ]\n\n    // let centerNames = ['PRICING', 'TOULOUSE', 'HOLLAND', 'MADRID', 'CATARINA', 'PRICINGUSA', 'ORLANDO', 'ANAHEIM']\n    // if (!getIsLogged(state)) return false\n    // if (centerNames.includes(getImpersonatedBy(state))) return true\n    // if (userNames.includes(getUserName(state))) return true\n    // return false\n}\nexport const canViewPricesPhase3 = state => {\n    let centerNames = ['PRICING', 'MEXICO', 'SAOPAULO', 'BRISBANE', 'ORLANDO', 'ANAHEIM', 'HAIFA', 'SINGAPORE', 'MILANO']\n    if (!getIsLogged(state)) return false\n    if (isEmserUser(state)) return false\n    if (getUserType(state) === 'SHOP' || getIsIkeaCenter(state) || getIsLowesCenter(state)) return false\n\n    if (centerNames.includes(getImpersonatedBy(state))) return true\n    return true\n    // let userNames = [\n    //     '0000301893',\n    //     '0000305017',\n    //     '0000303184',\n    //     '0000110610',\n    //     '0000110472',\n    //     '0000103619',\n    //     '0000103617',\n    //     '0000103598',\n    //     '0000102163',\n    //     '0000102173',\n    //     '0000110652',\n    //     '0000102013',\n    //     '0000408750',\n    //     '0000411529',\n    //     '0000425597',\n    //     '0000411822',\n    //     '0000412465'\n    // ]\n\n    // let centerNames = ['PRICING', 'TOULOUSE', 'HOLLAND', 'MADRID', 'CATARINA', 'PRICINGUSA', 'ORLANDO', 'ANAHEIM']\n    // if (!getIsLogged(state)) return false\n    // if (centerNames.includes(getImpersonatedBy(state))) return true\n    // if (userNames.includes(getUserName(state))) return true\n    // return false\n}\nexport const canViewLotId = state => {\n    let salesOrg = ['2011', '2012', '2032', '2036']\n    if (getUserType(state) === 'ADMIN') return true\n    if (getImpersonatedBy(state)) return true\n    if (salesOrg.includes(getSalesOrg(state))) return true\n    return false\n}\nexport const getProductsDeviatedAdmin = state => state.products.deviatedAdmin.products\nexport const getProductsDeviatedAdminIsLoading = state => state.products.deviatedAdmin.isLoading\nexport const getDeviatedDescriptions = state => state.products.deviatedDescriptions\n\nexport const getPromotionsProductIds = (state, outlet) => {\n    //TODO: Fix get products IDS to Filter Catalog\n    if (state.login.allProductsDiscounts) {\n        return state.login.allProductsDiscounts.filter(discount => discount.outlet == (outlet ? true : false)).map(discount => discount['productId'])\n    }\n    return []\n}\n\n/**\n * Determines the product is Home Depot\n * @returns {boolean}\n */\nexport const isExclusiveHomeDepot = (state, colorId) => {\n    const homeDepotColorId = [\n        'NL2',\n        'HDA',\n        'LC1',\n        'LG1',\n        'G1S',\n        'LC2',\n        'LG3',\n        'LG2'\n    ]\n\n    const availableSalesOrg = ['2011', '2037']\n\n    if (!colorId) {\n        return false\n    }\n\n    const userSalesOrg = getUserSalesOrg(state);\n    if (!userSalesOrg || !availableSalesOrg.includes(userSalesOrg)) {\n        return false\n    }\n\n    if (homeDepotColorId.includes(colorId)) {\n        return true\n    }\n\n    return false\n}\n\n\nexport const getShowLotsInPortfolio = (state, product = {}, isOutlet = false, isCosentinoBrazil = false) => {\n    const isAllowedBrands = ['SENSA', 'SCALEA', 'PREXURY'].includes(product.brand)\n    const productWithStock = (product.stock > 0 && !isOutlet) || (product.stock_outlet > 0 && isOutlet)\n    const naturalStoneViewingPermissions = getNaturalStoneViewingPermissions(state)\n\n    const result = isAllowedBrands && productWithStock && (naturalStoneViewingPermissions.canViewBrazil || isLatinaVitoria(state)) && isCosentinoBrazil\n\n    return result\n}\n\nexport const isNewIndicator = (date) => {\n    const creationDate = moment(date)\n\n    if (!creationDate.isValid()) {\n        return false\n    }\n\n    const todayMinusOneYear = moment().subtract(365, 'days')\n    const today = moment()\n    return creationDate > todayMinusOneYear && creationDate < today\n}\n\nexport const isUpcomingIndicator = (date) => {\n    const creationDate = moment(date)\n\n    if (!creationDate.isValid()) {\n        return false\n    }\n\n    const today = moment()\n    const todayPlus15Days = moment().add(15, 'days')\n    return creationDate > today && creationDate < todayPlus15Days\n}\n\nexport const canDisplayDiscontinued = (webHeading, discontinued) => {\n    return !((['MK', 'SH', 'WH'].includes(webHeading) && discontinued === 'DD') || (discontinued === 'DD' || discontinued === 'DF'))\n}\n\nexport default products\n","import React from 'react'\n\nclass Spinner extends React.Component {\n    render() {\n        let className = 'sk-cube-grid '\n        if (this.props.relative) className += 'spinner-relative '\n        if (this.props.inner) className += 'spinner-inner '\n        if (this.props.small) className += 'spinner-small '\n        if (this.props.innerCenter) className += 'spinner-inner-center'\n\n        const spinner = (\n            <div className={className} data-cy=\"global__sk_cube_grid\">\n                {this.props.small ? (\n                    <React.Fragment>\n                        <div className=\"sk-cube sk-cube7\" />\n                        <div className=\"sk-cube sk-cube8\" />\n                        <div className=\"sk-cube sk-cube9\" />\n                    </React.Fragment>\n                ) : (\n                    <React.Fragment>\n                        <div className=\"sk-cube sk-cube1\" />\n                        <div className=\"sk-cube sk-cube2\" />\n                        <div className=\"sk-cube sk-cube3\" />\n                        <div className=\"sk-cube sk-cube4\" />\n                        <div className=\"sk-cube sk-cube5\" />\n                        <div className=\"sk-cube sk-cube6\" />\n                        <div className=\"sk-cube sk-cube7\" />\n                        <div className=\"sk-cube sk-cube8\" />\n                        <div className=\"sk-cube sk-cube9\" />\n                    </React.Fragment>\n                )}\n            </div>\n        )\n        if (!this.props.isLoading) {\n            return null\n        } else {\n            return (this.props.relative || this.props.inner || this.props.innerCenter) ? (\n                spinner\n            ) : (\n                <div className=\"full-overlay\" style={{ display: 'block' }}>\n                    {spinner}\n                </div>\n            )\n        }\n    }\n}\nexport default Spinner\n","import { canViewRocketPromotion } from '../login/reducers';\nimport * as api from '../api'\nimport { getIsLogged, getToken, getUserName } from '../login/reducers'\nimport * as segmentation from '../segmentation/reducers'\nimport { fetchLots } from '../lots/actions'\nimport { getLanguage, getLanguageToFetchZ2, getCurrentUrl } from '../ui/reducers'\nimport {byProductId, canViewPricesPhase2} from '../products/reducers'\n\nimport {\n    getShippingMethod,\n    canBuy,\n    getSelectedCenter,\n    getLatinaVitoriaCenterId,\n    getIsMkToolsCenter,\n    getIsLowesCenter,\n    getIsIkeaCenter\n} from '../centers/reducers'\nimport { fetchProduct } from '../products/actions'\nimport {\n    byLineId,\n    getLines,\n    getLinesByMatId,\n    qtySelector,\n    getPhase2ClientByProduct,\n    getIsCheckoutPage\n} from './reducers'\nimport confirm from '../../components/global/confirm'\nimport { getSelectedShippingAddressForIkea, getFirstShippingAddres } from '../shipping-addresses/reducers'\nimport { getEmployeeId } from '../big-account/reducers'\nimport { getIsValidVoucher, getVoucher } from './reducers'\nimport { getCheckoutData, getSelectedShippingAddressId, getSelectedShippingCenterId } from '../checkout/reducers'\nimport { fetchCartCrossSelling} from '../crossSelling/actions'\nimport { isProductIdInPromotion, getCurrentPromotionId } from '../promotions/reducers'\nimport {setStep} from \"../checkout/actions\";\n\nexport const genericAddCartLine = (\n    productId,\n    qty = null,\n    lotId = null,\n    bundleId = null,\n    extra = null,\n    callbackCenter = null,\n    segmentationRequested = true,\n    cutToSize = null,\n    dektonGripRequested = false,\n    productSupplierCenter = null\n) => async (dispatch, getState) => {\n\n    qty = qty > 0 ? qty : 1\n\n    const state = getState()\n    if (isProductIdInPromotion(state, productId)) extra = {...extra, promotionId: getCurrentPromotionId(state)}\n    if(bundleId && lotId && qty > 1){\n        lotId = null;\n    }\n\n    dispatch({\n        type: 'ADD_CART_LINE_REQUEST',\n        line: { productId, qty, lotId, bundleId },\n        segmentation: segmentation.getFullSelectedSegmentation(state),\n        extra,\n        productSupplierCenter\n    })\n    if (!getIsLogged(state)) {\n        dispatch({\n            type: 'LOGIN_REQUIRED',\n            callbackCenter: callbackCenter,\n            callback: genericAddCartLine(productId, qty, lotId, bundleId, extra, callbackCenter, segmentationRequested),\n            payload: { statusText: 'LOGIN_REQUIRED' }\n        })\n        dispatch({ type: 'ADD_CART_LINE_FAILURE', payload: { statusText: null } })\n        return\n    }\n    if (!canBuy(state)) {\n        dispatch({ type: 'ADD_CART_LINE_FAILURE', payload: { statusText: null } })\n        return\n    }\n    if (dektonGripRequested) {\n        dispatch({ type: 'SHOW_DEKTON_GRIP_MODAL', callback: genericAddCartLine(productId, qty, lotId, bundleId, extra, callbackCenter, segmentationRequested, cutToSize) })\n        return\n    }\n\n    if (productId !== null) await dispatch(fetchProduct(productId))\n\n    if (segmentationRequested) {\n        if (!segmentation.segmentationDone(state)) {\n            dispatch({\n                type: 'SHOW_SEGMENTATION_MODAL',\n                callback: genericAddCartLine(productId, qty, lotId, bundleId, extra, callbackCenter, segmentationRequested, cutToSize, dektonGripRequested, productSupplierCenter),\n                productId: productId,\n                outlet: extra && extra.outlet ? true : false,\n                productSupplierCenter: productSupplierCenter\n            })\n            return\n        }\n    }\n\n    // if (productId !== null) await dispatch(fetchProduct(productId))\n\n    if (qty === 'NOT_SET') {\n        try {\n            qty = await byProductId(state, productId).minQty[getShippingMethod(state)]\n        } catch (e) {}\n    }\n    dispatch({ type: 'ADD_CART_LINE_CALL_API_REQUEST' })\n    const position = state.cart.lines ? state.cart.lines.length + 1 : 1\n    return api\n        .genericAddCartLine(\n            state.centers.selectedCenter,\n            productId,\n            qty,\n            lotId,\n            bundleId,\n            getToken(state),\n            segmentation.getFullSelectedSegmentation(state),\n            getLanguageToFetchZ2(state),\n            extra,\n            cutToSize,\n            getSelectedShippingAddressForIkea(state),\n            getEmployeeId(state),\n            productSupplierCenter,\n            getShippingMethod(state),\n            position\n        )\n        .then(response => {\n            dispatch({ type: 'ADD_CART_LINE_SUCCESS', productId, qty, segmentation: segmentation.getFullSelectedSegmentation(state), cutToSize, extra })\n            dispatch({ type: 'SHOW_ADD2CARTSUCCESS_MODAL' })\n            dispatch({ type: 'RESET_SEGMENTATION' })\n            dispatch({ type: 'ADD_CART_LINE_CALL_API_SUCCESS' })\n            if (qty === null) {\n                dispatch(fetchLots(productId, null, null, null, null, getCurrentUrl(state).pathname.includes('outlet')))\n            }\n            dispatch(fetchCart(state.centers.selectedCenter)).then(() => {\n                if (bundleId !== null && bundleId.length >= 1) {\n                    let product = byProductId(state, productId)\n                    if (product.brand === 'SCALEA' && getSelectedCenter(state) === getLatinaVitoriaCenterId()) {\n                        dispatch(possibleScaleaToSensa(productId, bundleId))\n                    }\n                }\n            })\n            if (canViewPricesPhase2(state)) {\n                dispatch(checkLinesPrice())\n            }\n\n            if (getIsCheckoutPage(state) && !getIsMkToolsCenter(state) && !getIsLowesCenter(state) && !getIsIkeaCenter(state)) {\n                dispatch(setLinesSlaDate())\n            }\n\n            dispatch(fetchCartCrossSelling(productId)).then(() => dispatch({ type: 'SHOW_CROSSELLLING_MODAL' }) )\n\n        })\n        .catch(error => {\n            dispatch({ type: 'ADD_CART_LINE_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n            dispatch({ type: 'RESET_SEGMENTATION' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const bulkAddToCart = (productId, lots, bundles, outlet) => (dispatch, getState) => {\n    dispatch(genericAddCartLine(productId, null, lots, bundles, { outlet }))\n}\nexport const addTablesToCart = (productId, bundleId, lotId, centerId, quantity) => (dispatch, getState) => {\n    dispatch(genericAddCartLine(productId, quantity, lotId, bundleId, null, centerId))\n}\nexport const addCartLineLot = (productId, lotId, callbackCenter, extra=null, supplierCenterId) => (dispatch, getState) => {\n    dispatch(genericAddCartLine(productId, null, lotId, null, extra, callbackCenter, true, null, false, supplierCenterId))\n}\nexport const addCartLineBundle = (productId, bundleId, lotId, qty, callbackCenter, extra=null, supplierCenterId) => (dispatch, getState) => {\n    dispatch(genericAddCartLine(productId, qty, lotId, bundleId, extra, callbackCenter, true, null, false, supplierCenterId))\n}\nexport const addCartLine = (productId, qty, extra = null, callbackCenter, dektonGripRequested, productSupplierCenter=null) => (dispatch, getState) => {\n    dispatch(genericAddCartLine(productId, qty, null, null, extra, callbackCenter, true, null, dektonGripRequested, productSupplierCenter))\n}\nexport const addCartLineCutToSize = (qty, cutToSize, callbackCenter) => (dispatch, getState) => {\n    dispatch(genericAddCartLine('CUT_TO_SIZE', qty, null, null, null, callbackCenter, true, cutToSize))\n}\n//No es necesario\nexport const addMallCartLine = (productId, qty, extra = null, callbackCenter, dektonGripRequested, productSupplierCenter) => (dispatch, getState) => {\n    dispatch(genericAddCartLine(productId, qty, null, null, extra, callbackCenter, true, null, dektonGripRequested, productSupplierCenter))\n}\n\nexport const addCartBulkLots = (productId, selectedLots, isOutlet, segmentationRequested=true) => (dispatch, getState) => {\n    const state = getState()\n\n    dispatch({\n        type: 'ADD_CART_BULK_LOTS_REQUEST',\n        lines: { selectedLots },\n        segmentation: segmentation.getFullSelectedSegmentation(state)\n    })\n\n    if (segmentationRequested) {\n        if (!segmentation.segmentationDone(state)) {\n            dispatch({\n                type: 'SHOW_SEGMENTATION_MODAL',\n                callback: addCartBulkLots(productId, selectedLots, isOutlet, segmentationRequested),\n                productId: productId,\n                outlet: isOutlet\n            })\n            return\n        }\n    }\n\n    dispatch({ type: 'ADD_CART_BULK_LOTS_CALL_API_REQUEST' })\n    return api\n        .addCartBulkLots(\n            state.centers.selectedCenter,\n            selectedLots,\n            getToken(state),\n            segmentation.getFullSelectedSegmentation(state),\n            getLanguageToFetchZ2(state),\n            getEmployeeId(state),\n            getShippingMethod(state)\n        )\n        .then(response => {\n            dispatch({ type: 'ADD_CART_BULK_LOTS_SUCCESS', productId, lines: selectedLots, segmentation: segmentation.getFullSelectedSegmentation(state)})\n            dispatch({ type: 'SHOW_ADD2CARTSUCCESS_MODAL' })\n            dispatch({ type: 'RESET_SEGMENTATION' })\n            dispatch({ type: 'ADD_CART_BULK_LOTS_CALL_API_SUCCESS' })\n            // dispatch(fetchLots(productId, null, null, null, null, getCurrentUrl(state).pathname.includes('outlet')))\n            dispatch(fetchCart(state.centers.selectedCenter))/*.then(() => {\n                if (bundleId !== null && bundleId.length >= 1) {\n                    let product = byProductId(state, productId)\n                    if (product.brand === 'SCALEA' && getSelectedCenter(state) === getLatinaVitoriaCenterId()) {\n                        dispatch(possibleScaleaToSensa(productId, bundleId))\n                    }\n                }\n            })*/\n            if (canViewPricesPhase2(state)) {\n                dispatch(checkLinesPrice())\n            }\n            dispatch(fetchCartCrossSelling(productId)).then(() => dispatch({ type: 'SHOW_CROSSELLLING_MODAL' }) )\n\n        })\n        .catch(error => {\n            dispatch({ type: 'ADD_CART_LINE_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n            dispatch({ type: 'RESET_SEGMENTATION' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\n\n\nexport const addCartLineNotSegmentation = (productId, qty, extra = null, callbackCenter, dektonGripRequested) => (dispatch, getState) => {\n    window.dataLayer.push({\n        'products': [{\n            'id': productId,\n            'dimension3': true\n        }]\n    })\n    dispatch(genericAddCartLine(productId, qty, null, null, extra, callbackCenter, false, null, dektonGripRequested))\n}\n\nexport const checkVoucher = voucher => (dispatch, getState) => {\n    dispatch({ type: 'CART_CHECK_VALID_VOUCHER_REQUEST', voucher })\n\n    //Hotfix tonto para evitar que le valide el cupon al usuario y el cupon baje a SAP cuando no es un cliente de la promo ROCKET.\n    if(voucher == 100000331 && !canViewRocketPromotion(getState())){\n        dispatch({\n            type: 'CART_CHECK_VALID_VOUCHER_FAILURE',\n            error: 'INVALID_VOUCHER',\n            voucherStatusText: 'INVALID_VOUCHER',\n            isValidVoucher: false\n        })\n        dispatch(checkLinesPrice())\n        return Promise.reject()\n    }\n\n    return api.checkVoucher(getToken(getState()), getSelectedCenter(getState()), voucher, getLanguage(getState())).then(\n        response => {\n            dispatch({ type: 'CART_CHECK_VALID_VOUCHER_SUCCESS', cart: response.data })\n            dispatch(checkLinesPrice())\n        },\n        error => {\n            dispatch({\n                type: 'CART_CHECK_VALID_VOUCHER_FAILURE',\n                error: error,\n                voucherStatusText: error.response && error.response.data && error.response.data.err,\n                isValidVoucher: false\n            })\n            dispatch(checkLinesPrice())\n            return Promise.reject()\n        }\n    )\n}\n\nexport const removeVoucher = voucher => (dispatch, getState) => {\n    dispatch({ type: 'CART_REMOVE_VOUCHER_REQUEST', voucher })\n\n    return api.removeVoucher(getToken(getState()), getSelectedCenter(getState()), voucher, getLanguage(getState())).then(\n        response => {\n            dispatch({ type: 'CART_REMOVE_VOUCHER_SUCCESS', cart: response.data })\n            dispatch(checkLinesPrice())\n        },\n        error => {\n            dispatch({\n                type: 'CART_REMOVE_VOUCHER_FAILURE',\n                error: error,\n                voucherStatusText: error.response && error.response.data && error.response.data.err\n            })\n            dispatch(checkLinesPrice())\n            return Promise.reject()\n        }\n    )\n}\n\nexport const addCartLineWithouthSeg = (productId, qty, extra, callbackCenter, dektonGripRequested) => (dispatch, getState) => {\n    if (getSelectedCenter(getState()) === 7777) {\n        let found = getLines(getState()).find(line => line.productId === productId && line.extra && line.extra.type === extra.type)\n        if (found) {\n            if (!(found.extra && found.extra.type === 'wall_sample')) return dispatch({ type: 'CANT_ADD_CART_LINE_AGAIN' } /*changeCartLineQty(found.lineId, found.qty + qty)*/)\n        } else {\n            return dispatch(genericAddCartLine(productId, qty, null, null, extra, callbackCenter, false))\n        }\n    } else {\n        return dispatch(genericAddCartLine(productId, qty, null, null, extra, callbackCenter, false))\n    }\n}\nexport const removeCartLine = lineId => (dispatch, getState) => {\n    return api\n        .removeCartLine(lineId, getState().centers.selectedCenter, getToken(getState()), getSelectedShippingAddressForIkea(getState()), getEmployeeId(getState()))\n        .then(response => {\n            dispatch({ type: 'REMOVE_CART_LINE', lineId })\n            dispatch(fetchCart(getState().centers.selectedCenter))\n            if (canViewPricesPhase2(getState())) {\n                dispatch(checkLinesPrice())\n            }\n\n            if(getIsCheckoutPage(getState()) && !getIsMkToolsCenter(getState()) && !getIsLowesCenter(getState()) && !getIsIkeaCenter(getState())) {\n                dispatch(setLinesSlaDate())\n            }\n        })\n        .catch(error => {\n            dispatch({\n                type: 'REMOVE_CART_LINE_FAILED',\n                lineId\n            })\n        })\n}\n\nexport const emptyCart = () => (dispatch, getState) => {\n    return api\n        .emptyCart(getState().centers.selectedCenter, getToken(getState()), getSelectedShippingAddressForIkea(getState()), getEmployeeId(getState()))\n        .then(response => {\n            dispatch({ type: 'EMPTY_CART' })\n        })\n        .catch(error => {\n            dispatch({ type: 'EMPTY_CART_FAILED' })\n        })\n}\n\nexport const changeCartLineSegmentation = line => (dispatch, getState) => {\n    const newSeg = segmentation.getFullSelectedSegmentation(getState())\n    dispatch({ type: 'UPDATE_SEGMENTATION_CART_LINE_REQUEST', segmentation: newSeg, line })\n\n    return api\n        .changeCartLineSegmentation(\n            line.lineId,\n            newSeg,\n            getSelectedCenter(getState()),\n            getToken(getState()),\n            getSelectedShippingAddressForIkea(getState()),\n            getEmployeeId(getState())\n        )\n        .then(() => {\n            dispatch({ type: 'UPDATE_SEGMENTATION_CART_LINE_SUCCESS' })\n            dispatch({ type: 'RESET_SEGMENTATION' })\n            dispatch(fetchCart(getState().centers.selectedCenter))\n        })\n        .catch(error => {\n            dispatch({ type: 'UPDATE_SEGMENTATION_CART_LINE_FAILURE' })\n            dispatch({ type: 'RESET_SEGMENTATION' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const changeCartLineQty = (lineId, qty) => (dispatch, getState) => {\n    dispatch({ type: 'CHANGE_CART_LINE_QTY_REQUEST_START'})\n    return api\n        .changeCartLineQty(lineId, qty, getState().centers.selectedCenter, getToken(getState()), getSelectedShippingAddressForIkea(getState()), getEmployeeId(getState()))\n        .then(response => {\n            dispatch(fetchCart(getState().centers.selectedCenter, lineId))\n            if (canViewPricesPhase2(getState())) {\n                dispatch(checkLinesPrice())\n            }\n\n            if(getIsCheckoutPage(getState()) && !getIsMkToolsCenter(getState()) && !getIsLowesCenter(getState()) && !getIsIkeaCenter(getState())) {\n                dispatch(setLinesSlaDate())\n            }\n        })\n        .catch(error => {\n            dispatch({ type: 'CHANGE_CART_LINE_QTY_FAILED', lineId, qty, payload: { statusText: error.response.data.err, values: error.response.data.info } })\n        })\n        .finally(() => dispatch({ type: 'CHANGE_CART_LINE_QTY_REQUEST_FINISH'}))\n}\nexport const checkLinesPrice = () => (dispatch, getState) => {\n    if (qtySelector(getState()) === 0) {\n        return null\n    }\n    dispatch({ type: 'CHECK_LINES_PRICE_REQUEST' })\n\n    return api\n        .checkLinesPrice(\n            getState().centers.selectedCenter,\n            getToken(getState()),\n            getSelectedShippingAddressForIkea(getState()),\n            getEmployeeId(getState()),\n            getShippingMethod(getState()),\n            getIsValidVoucher(getState()) ? getVoucher(getState()) : undefined\n        )\n        .then(response => {\n            dispatch({ type: 'CHECK_LINES_PRICE_SUCCESS', data: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'CHECK_LINES_PRICE_FAILURE', payload: { statusText: error.response ? error.response.data.err : \"Error\", values: error.response ? error.response.data.info : \"Error\" } })\n        })\n}\nexport const checkPricePhase2ByProduct = (productId, center = null, outletType) => (dispatch, getState) => {\n\n    const state = getState()\n    const storedPhase2 = getPhase2ClientByProduct(state, productId)\n    const userName = getUserName(state)\n\n    if (!center) center = getSelectedCenter(state)\n    \n    if ( storedPhase2 && storedPhase2 === userName) return Promise.resolve()\n\n    dispatch({ type: 'STORE_PRICE_PHASE2_PRODUCT_BY_CLIENT', productId, userName})\n    dispatch({ type: 'CHECK_PRICE_PHASE2_BY_PRODUCT_REQUEST', outletType })\n\n    return api\n        .checkPricePhase2ByProduct(productId, center, getToken(state), outletType)\n        .then(response => {\n            dispatch({ type: 'CHECK_PRICE_PHASE2_BY_PRODUCT_SUCCESS', data: response.data, productId })\n        })\n        .catch(error => {\n            dispatch({ type: 'CHECK_PRICE_PHASE2_BY_PRODUCT_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n        })\n}\nexport const changeCartLineComment = (lineId, comment) => (dispatch, getState) => {\n    let commentsWithouthEmojis = comment.replace(/([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g, '')\n\n    dispatch({ type: 'CHANGE_CART_LINE_COMMENT', lineId, commentsWithouthEmojis })\n}\nexport const saveCartLineComment = (lineId, comment) => (dispatch, getState) => {\n    return api\n        .changeCartLineComment(lineId, comment, getState().centers.selectedCenter, getToken(getState()), getSelectedShippingAddressForIkea(getState()), getEmployeeId(getState()))\n        .then(response => {\n            dispatch({ type: 'SAVE_CART_LINE_COMMENT', lineId, comment })\n        })\n        .catch(error => {\n            dispatch({ type: 'SAVE_CART_LINE_COMMENT_FAILED', lineId, comment, payload: { statusText: error.response.data.err, values: error.response.data.info } })\n        })\n}\n\nexport const fetchCart = (centerId, lineId = null) => (dispatch, getState) => {\n    const isLogged = getIsLogged(getState())\n    // dispatch(emptyCart())\n    if (!isLogged) return\n    dispatch({\n        type: 'FETCH_CART_REQUEST'\n    })\n    return api\n        .getCart(getSelectedCenter(getState()), getSelectedShippingAddressForIkea(getState()), getEmployeeId(getState()), getLanguageToFetchZ2(getState()), getToken(getState()))\n        .then(\n            cart => {\n                if (lineId) {\n                    const line = byLineId(getState(), lineId)\n                    const nextLine = cart.data.lines.find(line => line.lineId === lineId)\n                    const diffQty = nextLine.qty - line.qty\n\n                    if (diffQty > 0) dispatch({ type: 'CHANGE_CART_LINE_ADD_QTY', line, diffQty, newQty: nextLine.qty })\n                    else if (diffQty < 0) dispatch({ type: 'CHANGE_CART_LINE_REMOVE_QTY', line, diffQty: Math.abs(diffQty), newQty: nextLine.qty })\n                }\n                dispatch({ type: 'FETCH_CART_SUCCESS', cart: cart.data })\n                if (canViewPricesPhase2(getState())) {\n                    dispatch(checkLinesPrice())\n                }\n            },\n            error => {\n                dispatch({ type: 'FETCH_CART_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const checkout = (isCustomer) => (dispatch, getState) => {\n    const state = getState()\n    const checkoutData = getCheckoutData(isCustomer, state)\n    dispatch({\n        type: 'SUBMIT_CHECKOUT_REQUEST',\n        checkoutData\n    })\n\n    return api\n        .submitCheckout(state.centers.selectedCenter, getToken(state), checkoutData, getSelectedShippingAddressForIkea(state), getEmployeeId(state))\n        .then(response => {\n            const regReservationId = response.data.regularOrder &&\n                (response.data.regularOrder.reservationId ?\n                    response.data.regularOrder.reservationId\n                    : response.data.regularOrder.tempReservationId)\n            const ctsReservationId = response.data.ctsOrder &&\n                (response.data.ctsOrder.reservationId ?\n                    response.data.ctsOrder.reservationId\n                    : response.data.ctsOrder.tempReservationId)\n            const configurableReservationId = response.data.ctsConfigurableOrder && response.data.ctsConfigurableOrder.tempReservationId\n            const configurableQuickShipReservationId = response.data.ctsQuickShipConfigurableOrder && response.data.ctsQuickShipConfigurableOrder.tempReservationId\n\n            dispatch({ type: 'SUBMIT_CHECKOUT_SUCCESS',\n                        code: regReservationId,\n                        cutToSizeCode: ctsReservationId,\n                        configurableCode: configurableReservationId,\n                        quickShipConfigurableCode: configurableQuickShipReservationId\n            })\n\n            dispatch(setStep(2))\n            \n            dispatch(emptyCart())\n        })\n        .catch(error => {\n            dispatch(fetchCart())\n            if (error.response && error.response.data.err == 'PRODUCT_WITHOUT_STOCK') {\n                dispatch({ type: 'PRODUCT_WITHOUT_STOCK', data: error.response.data.products })\n            } else {\n                dispatch({\n                    type: 'SUBMIT_CHECKOUT_FAILURE',\n                    payload: {\n                        status: error.response.status,\n                        statusText: error.response.data.err,\n                        monthItems: error.response.data.monthItems,\n                        waitTillDate: error.response.data.waitTillDate\n                    }\n                })\n            }\n        })\n}\nexport const possibleScaleaToSensa = (matId, bundleId) => (dispatch, getState) => {\n    dispatch({ type: 'SCALEA_TO_SENSA_POSSIBLE_REQUEST', matId })\n\n    return api.possibleScaleaToSensa(matId, getSelectedCenter(getState()), getToken(getState())).then(\n        response => {\n            dispatch({ type: 'SCALEA_TO_SENSA_POSSIBLE', response: response.data })\n            if (response.data.result === true) {\n                confirm('Would you like to apply Sensa treatment?').then(\n                    confirm => {\n                        dispatch(transformScaleaToSensa(getLinesByMatId(getState(), matId).map(line => line.lineId)))\n                    },\n                    cancel => {}\n                )\n            }\n        },\n        error => {\n            dispatch({ type: 'SCALEA_TO_SENSA_NOT_POSSIBLE', error })\n        }\n    )\n}\nexport const transformScaleaToSensa = lineIds => (dispatch, getState) => {\n    dispatch({ type: 'TRANSFORM_SCALEA_TO_SENSA_REQUEST', lineIds, token: getToken(getState()), center: getSelectedCenter(getState()) })\n\n    return api.transformScaleaToSensa(getSelectedCenter(getState()), lineIds, getToken(getState())).then(\n        response => {\n            dispatch({ type: 'TRANSFORM_SCALEA_TO_SENSA_SUCCESS', response: response.data })\n            dispatch(fetchCart(getState().centers.selectedCenter))\n        },\n        error => {\n            dispatch({ type: 'TRANSFORM_SCALEA_TO_SENSA_FAILURE', error })\n        }\n    )\n}\n\nexport const transformSkuToLots = () => (dispatch, getState) => {\n    dispatch({ type: 'TRANSFORM_SKU_TO_LOTS_REQUEST', token: getToken(getState()), center: getSelectedCenter(getState()) })\n\n    return api.transformSkuToLots(getSelectedCenter(getState()), getToken(getState())).then(\n        response => {\n            // dispatch(fetchCart(getState().centers.selectedCenter))\n            dispatch({ type: 'TRANSFORM_SKU_TO_LOTS_SUCCESS', response: response.data })\n        },\n        error => {\n            dispatch({\n                type: 'TRANSFORM_SKU_TO_LOTS_FAILURE',\n                error,\n                payload: {\n                    status: error.response.status,\n                    statusText: error.response.data.err\n                }\n            })\n            return Promise.reject()\n        }\n    )\n}\n\nexport const setShowModalNoStock = value => dispatch => {\n    dispatch({\n        type: 'SET_SHOW_MODAL_NOSTOCK',\n        value: value\n    })\n}\n\nexport const setLineDeliveryDate = (lineId, deliveryDate) => (dispatch) => {\n    return dispatch({ type: 'CART_SET_LINE_DELIVERYDATE', lineId, deliveryDate })\n}\n\nexport const unsetLineDeliveryDate = (lineId) => (dispatch) => {\n    return dispatch({ type: 'CART_UNSET_LINE_DELIVERYDATE', lineId })\n}\n\nexport const setAllLinesDeliveryDates = (deliveryDate, isDefaultDeliveryDate) => dispatch => {\n    return dispatch({ type: 'CART_SET_ALL_LINES_DELIVERYDATES', deliveryDate, isDefaultDeliveryDate })\n}\n\nexport const unsetAllLinesDeliveryDates = () => dispatch => {\n    return dispatch({ type: 'CART_UNSET_ALL_LINES_DELIVERYDATES' })\n}\n\nexport const setLinesSlaDate = () => (dispatch, getState) => {\n    const centerId = getState().centers.selectedCenter\n    const shippingMethod = getShippingMethod(getState())\n    const token = getToken(getState())\n    const firstShippingAddress = getFirstShippingAddres(getState())\n\n    const firstShippingAddrId = firstShippingAddress && firstShippingAddress.shippingAddressId\n    const firstShippingCenterId = firstShippingAddress && firstShippingAddress.centerId\n\n    const checkoutShippingAddrId = getSelectedShippingAddressId(getState())\n    const checkoutShippingCenterId = getSelectedShippingCenterId(getState())\n\n    const finalShippingAddrId = checkoutShippingAddrId !== null ? checkoutShippingAddrId : firstShippingAddrId\n    const finalShippingCenterId = checkoutShippingCenterId !== null ? checkoutShippingCenterId : firstShippingCenterId\n\n    const employeeId = getEmployeeId(getState())\n\n    dispatch({ type: 'CART_SET_LINE_SLA_DATE_REQUEST' })\n\n    return api.setLinesSlaDate(centerId, shippingMethod, finalShippingAddrId, finalShippingCenterId, token, employeeId).then(response => {\n        dispatch({ type: 'CART_SET_LINE_SLA_DATE_SUCCESS', linesSlaDate: response.data })\n    })\n    .catch(error => {\n        dispatch({ type: 'CART_SET_LINE_SLA_DATE_FAILURE', error })\n    })\n}\n\nexport const isCheckoutPageScreen = (isCheckoutPage) => (dispatch, getState) => {\n    dispatch({type: 'IS_CHECKOUT_PAGE_SCREEN', isCheckoutPage: isCheckoutPage})\n\n    if (isCheckoutPage && !getIsMkToolsCenter(getState()) && !getIsLowesCenter(getState()) && !getIsIkeaCenter(getState()))  {\n        return dispatch(setLinesSlaDate())\n    }\n}\n\nexport const setAllLinesDeliveryDatesCts = (deliveryDateCts, slaDateState) => (dispatch) => {\n    return dispatch({ type: 'CART_SET_ALL_LINES_DELIVERYDATES_CTS', deliveryDateCts, slaDateState })\n}\n\nexport const changeCartLineCutToSize = (lineId, cutToSize) => (dispatch, getState) => {\n\n    dispatch({ type: 'UPDATE_CUT_TO_SIZE_CART_LINE_REQUEST' })\n\n    return api\n        .changeCartLineCutToSize(\n            lineId,\n            cutToSize,\n            getSelectedCenter(getState()),\n            getToken(getState()),\n            getSelectedShippingAddressForIkea(getState()),\n            getEmployeeId(getState())\n        )\n        .then(() => {\n            dispatch({ type: 'UPDATE_CUT_TO_SIZE_CART_LINE_SUCCESS' })\n            dispatch(fetchCart(getState().centers.selectedCenter))\n        })\n        .catch(error => {\n            dispatch({ type: 'UPDATE_CUT_TO_SIZE_CART_LINE_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}","import landingPreviewV2 from '../../assets/img/promotions/previews-template/landing_preview_v2.jpg'\nimport mailPreviewV2 from '../../assets/img/promotions/previews-template/mail_preview_v2.jpg'\nimport {getSelectedCenter} from '../centers/reducers'\nimport {getLanguage} from \"../ui/reducers\";\n\nexport const initState = {\n    isSending: false,\n    status: null,\n    alert: null,\n    step: 1,\n\n    currentPromotionId: null,\n\n    //start step 1\n    promotionName: null,\n    languages: [],\n    startDate: null,\n    endDate: null,\n    //end step 1\n\n    // start step 2\n    market: null,\n    countries: [],\n    centers: [],\n    fetchedMarkets: [],\n    fetchedCountries: {},\n    fetchedCenters: [],\n    // end step 2\n\n    //start step3\n    landingTemplateId: null,\n    mailTemplateId: null,\n    //end step3\n\n    //start step4\n    headLandingBannerData: {},\n    homeBannerData: {},\n    headEmailBannerData: {},\n    lateralBanner: {},\n    //end step4\n\n    translations: {\n        commercial_name: null,\n        description: null,\n        banner_title: null,\n        banner_description: null\n    },\n    data: {},\n    promotions: [],\n    isLoading: false,\n    bannersPaginatedResult: { data: [] },\n    customersOfArea: [],\n    customersSelected: [],\n    //Excluded IKEA,MKTOOL, LOWES\n    excludedPromotionsCenters: ['1010', '1060', '1080', '1090', '4000', '5000', '5200', '5400', '7777'],\n    promotionsByCenter: {},\n    discountMaterials: {},\n    dataToResolveDiscount: [],\n    acceptedDiscounts: [],\n    isAmortized: false,\n    discountStatus: null,\n    //Step 1\n    hasUnsavedChangesStepOne: {\n        promotionNameDirty: false,\n        promotionLanguageDirty: false,\n        promotionStartDateDirty: false,\n        promotionEndDateDirty: false,\n        promotionCommercialNameDirty: false,\n        promotionDescriptionNameDirty: false\n    },\n    //Step 2\n    hasUnsavedChangesStepTwo: {\n        promotionMarketDirty: false,\n        promotionCountriesDirty: false,\n        promotionCentersDirty: false\n    },\n    //Step 3\n    hasUnsavedChangesStepThree: {\n        promotionCustomersDirty: false\n    },\n    //Step 4\n    hasUnsavedChangesStepFour: {\n        promotionMaterialsDirty: false\n    },\n    //Step 5\n    hasUnsavedChangesStepFive: {\n        promotionDiscountsDirty: false\n    },\n    //Step 6\n    hasUnsavedChangesStepSix: {\n        promotionLandingTemplateDirty: false,\n        promotionNewsletterTemplateDirty: false\n    },\n    //Step 7\n    hasUnsavedChangesStepSeven: {\n        promotionBannerTitleDirty: false,\n        promotionBannerDescriptionDirty: false\n    }\n}\n\nconst promotions = (state = initState, action) => {\n    switch (action.type) {\n        case 'SEND_PROMOTION_HEADER_REQUEST':\n        case 'SEND_TEMPLATES_SELECTED_REQUEST':\n        case 'SEND_PROMOTION_CENTERS_REQUEST':\n            return Object.assign({}, state, { isSending: true })\n        case 'SEND_PROMOTION_HEADER_SUCCESS':\n            return Object.assign({}, state, {\n                isSending: false,\n                currentPromotionId: action.promotionId ? action.promotionId : state.currentPromotionId,\n                alert: action.alert,\n                status: action.status,\n                promotionName: action.data.name,\n                startDate: action.data.start_date,\n                endDate: action.data.end_date,\n                translations: {\n                    commercial_name: action.data.commercial_name,\n                    description: action.data.description,\n                    banner_title: state.translations.banner_title,\n                    banner_description: state.translations.banner_description\n                },\n                landingTemplateId: '1',\n                mailTemplateId: '1'\n            })\n        case 'SEND_TEMPLATES_SELECTED_SUCCESS':\n            return Object.assign({}, state, {\n                isSending: false,\n                currentPromotionId: action.promotionId ? action.promotionId : state.currentPromotionId,\n                alert: action.alert,\n                status: action.status,\n                landingTemplateId: action.data.landingTemplateId,\n                mailTemplateId: action.data.mailTemplateId\n            })\n        case 'SEND_PROMOTION_CENTERS_SUCCESS':\n            return Object.assign({}, state, {\n                isSending: false,\n                currentPromotionId: action.promotionId ? action.promotionId : state.currentPromotionId,\n                alert: action.alert,\n                status: action.status,\n                market: action.data.market,\n                countries: action.data.countries ? action.data.countries : [],\n                centers: action.data.centers ? action.data.centers : []\n            })\n        case 'SEND_PROMOTION_HEADER_FAILURE':\n        case 'SEND_TEMPLATES_SELECTED_FAILURE':\n        case 'SEND_PROMOTION_CENTERS_FAILURE':\n            return Object.assign({}, state, { isSending: false, alert: `${action.alert}`, status: action.status })\n        case 'UPDATE_OBJECT_TRANSLATIONS':\n            return Object.assign({}, state, {\n                translations: { ...state.translations, [action.object]: action.translations }\n            })\n        case 'GET_MARKETS':\n        case 'GET_COUNTRIES':\n        case 'GET_CENTERS':\n            return Object.assign({}, state, { status: action.status })\n        case 'GET_MARKETS_FAILURE':\n        case 'GET_COUNTRIES_FAILURE':\n        case 'GET_CENTERS_FAILURE':\n            return Object.assign({}, state, { alert: `${action.alert}`, status: action.status })\n        case 'GET_MARKETS_SUCCESS':\n            return Object.assign({}, state, { status: action.status, fetchedMarkets: action.fetchedMarkets })\n        case 'GET_COUNTRIES_SUCCESS':\n            return Object.assign({}, state, { status: action.status, fetchedCountries: action.fetchedCountries })\n        case 'GET_CENTERS_SUCCESS':\n            return Object.assign({}, state, { status: action.status, fetchedCenters: action.fetchedCenters })\n\n        case 'FETCH_PROMOTION_DATA_REQUEST':\n            return Object.assign({}, state, { status: action.status, error: null })\n        case 'FETCH_PROMOTION_DATA_SUCCESS':\n            return Object.assign({}, state, { status: action.status, data: action.data, currentPromotionId: action.data.promotionId })\n        case 'FETCH_PROMOTION_DATA_FAILURE':\n            return Object.assign({}, state, { status: action.status, data: {}, error: action.alert })\n        case 'FETCH_PROMOTIONS_LIST_REQUEST':\n            return Object.assign({}, initState, { isLoading: true })\n        case 'FETCH_PROMOTIONS_LIST_SUCCESS':\n            return Object.assign({}, state, { isLoading: false, status: action.status, promotions: action.promotions })\n        case 'FETCH_PROMOTIONS_LIST_FAILURE':\n            return Object.assign({}, state, { isLoading: false, status: action.status, promotions: [] })\n\n        case 'SEND_ENABLE_PROMOTION_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'SEND_ENABLE_PROMOTION_SUCCESS':\n            return Object.assign({}, state, {\n                isLoading: false,\n                promotions: state.promotions.map(promotion => {\n                    if (promotion.id === action.promotionId) return { ...promotion, status: 'ACTIVE' }\n                    else return promotion\n                })\n            })\n        case 'SEND_ENABLE_PROMOTION_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'SEND_DISABLE_PROMOTION_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'SEND_DISABLE_PROMOTION_SUCCESS':\n            return Object.assign({}, state, {\n                isLoading: false,\n                promotions: state.promotions.map(promotion => {\n                    if (promotion.id === action.promotionId) return { ...promotion, status: 'INACTIVE' }\n                    else return promotion\n                })\n            })\n        case 'SEND_DISABLE_PROMOTION_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n\n        case 'SEND_BANNERS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'SEND_BANNERS_SUCCESS':\n            return Object.assign({}, state, {\n                isLoading: false,\n                status: action.status,\n                // step: action.step,\n                headLandingBannerData: action.bannerLanding ? action.bannerLanding : {},\n                homeBannerData: action.bannerHome ? action.bannerHome : {},\n                headEmailBannerData: action.bannerNewsLetter ? action.bannerNewsLetter : {},\n                lateralBanner: action.sideBannerNewsLetter ? action.sideBannerNewsLetter : {},\n\n                translations: {\n                    commercial_name: state.translations.commercial_name,\n                    description: state.translations.description,\n                    banner_title: action.banner_title && JSON.parse(action.banner_title),\n                    banner_description: action.banner_description && JSON.parse(action.banner_description)\n                }\n            })\n        case 'SEND_BANNERS_FAILURE':\n            return Object.assign({}, state, { isLoading: false, status: action.status })\n        case 'FETCH_PROMOTIONS_BANNERS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_PROMOTIONS_BANNERS_SUCCESS':\n            return Object.assign({}, state, {\n                isLoading: false,\n                status: action.status,\n                bannersPaginatedResult: action.bannersPaginatedResult\n            })\n        case 'FETCH_PROMOTIONS_BANNERS_FAILURE':\n            return Object.assign({}, state, { isLoading: false, status: action.status, promotions: [] })\n        case 'PROMOTIONS_ADMIN_CHANGE_STEP':\n            return Object.assign({}, state, { step: action.step })\n        case 'PROMOTIONS_SET_AVAILABLE_LANGUAGES':\n            return Object.assign({}, state, { languages: action.languages })\n        case 'FETCH_CUSTOMERS_OF_AREA_REQUEST':\n            return Object.assign({}, state, { customersOfArea: [], isLoading: true })\n        case 'FETCH_CUSTOMERS_OF_AREA_SUCCESS':\n            return Object.assign({}, state, { customersOfArea: action.customers, isLoading: false })\n        case 'FETCH_CUSTOMERS_OF_AREA_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'SEND_CUSTOMERS_SELECTED_REQUEST':\n            return Object.assign({}, state, { isSending: true })\n        case 'SEND_CUSTOMERS_SELECTED_SUCCESS':\n            return Object.assign({}, state, { isSending: false, customersSelected: action.customers })\n        case 'SEND_CUSTOMERS_SELECTED_FAILURE':\n            return Object.assign({}, state, { isSending: false })\n        case 'SEND_MATERIALS_SELECTED_REQUEST':\n            return Object.assign({}, state, { isSending: true })\n        case 'SEND_MATERIALS_SELECTED_SUCCESS':\n            return Object.assign({}, state, {\n                isSending: false,\n                materialsSelected: action.materials,\n                materialsSelectedData: action.materialsSelectedData\n            })\n        case 'SEND_MATERIALS_SELECTED_FAILURE':\n            return Object.assign({}, state, { isSending: false })\n        case 'INIT_CREATE_NEW_PROMOTION':\n            return Object.assign({}, initState, {})\n        //Actualizar el estado del reducer con la nueva información de la promo a editar\n        case 'FETCH_PROMOTION_TO_EDIT_REQUEST':\n            return Object.assign({}, initState, { isLoading: true })\n        case 'FETCH_PROMOTION_TO_EDIT_SUCCESS':\n\n            const discountMaterials = {}\n            action.promotion.promotion_discounts && action.promotion.promotion_discounts.forEach(v => discountMaterials[v.material_id] ={\n                materialId: v.material_id,\n                requestedDiscount: v.requested_discount,\n                acceptedDiscount: v.accepted_discount\n            })\n\n            return Object.assign({}, state, {\n                currentPromotionId: action.promotion.id,\n                alert: null,\n                languages: action.languages,\n                promotionName: action.promotion.name,\n                startDate: action.promotion.start_date,\n                endDate: action.promotion.end_date,\n                step: 1,\n\n                market: action.promotion.market,\n                countries: action.countries ? action.countries : [],\n                centers: action.centers ? action.centers : [],\n\n                landingTemplateId: action.promotion.landing_template,\n                mailTemplateId: action.promotion.mail_template,\n\n                headLandingBannerData: action.promotion.head_landing_banner_data ? action.promotion.head_landing_banner_data : {},\n                homeBannerData: action.promotion.home_banner_data ? action.promotion.home_banner_data : {},\n                headEmailBannerData: action.promotion.head_email_banner_data ? action.promotion.head_email_banner_data : {},\n                lateralBanner: action.promotion.lateral_banner_data ? action.promotion.lateral_banner_data : {},\n\n                customersSelected: action.promotion.promotion_customers && action.promotion.promotion_customers.map(customer => customer.login),\n                materialsSelected: action.promotion.promotion_materials && action.promotion.promotion_materials.map(material => material.material_id),\n                materialsSelectedData: action.promotion.promotion_materials_data,\n\n                translations: {\n                    commercial_name: action.promotion.commercial_name_data && JSON.parse(action.promotion.commercial_name_data.text),\n                    description: action.promotion.description_data && JSON.parse(action.promotion.description_data.text),\n                    banner_title: action.promotion.banner_title_data && JSON.parse(action.promotion.banner_title_data.text),\n                    banner_description: action.promotion.banner_text_data && JSON.parse(action.promotion.banner_text_data.text)\n                },\n                fetchedCenters: [],\n                isLoading: false,\n                discountMaterials: discountMaterials,\n                isAmortized: action.promotion.is_amortized,\n                discountStatus: action.promotion.discount_request_status\n            })\n        case 'FETCH_PROMOTION_TO_EDIT_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n\n        case 'FETCH_PROMOTION_ACTIVE_BY_CENTER_AND_USER_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_PROMOTION_ACTIVE_BY_CENTER_AND_USER_SUCCESS':\n            return Object.assign({}, initState, {\n                isLoading: false,\n                promotionsByCenter: { ...state.promotionsByCenter, ...action.promotion }\n            })\n        case 'FETCH_PROMOTION_ACTIVE_BY_CENTER_AND_USER_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'FETCH_PRODUCTS_OF_THE_LAST_QUERY_MULTI_CENTER_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_PRODUCTS_OF_THE_LAST_QUERY_MULTI_CENTER_SUCCESS':\n            return Object.assign({}, state, { isLoading: false })\n        case 'FETCH_PRODUCTS_OF_THE_LAST_QUERY_MULTI_CENTER_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'REQUEST_MATERIALS_DISCOUNTS':\n            return Object.assign({}, state, { isSending: true })\n        case 'REQUEST_MATERIALS_DISCOUNTS_FAILURE':\n            return Object.assign({}, state, {\n                isSending: false,\n                discountMaterials: {}\n            })\n        case 'REQUEST_MATERIALS_DISCOUNTS_SUCCESS':\n            return Object.assign({}, state, {\n                isSending: false,\n                discountMaterials: action.discountMaterials\n            })\n\n        case 'FETCH_DATA_TO_RESOLVE_DISCOUNT_REQUEST':\n            return Object.assign({}, state, {\n                isLoading: true,\n                dataToResolveDiscount: []\n            })\n        case 'FETCH_DATA_TO_RESOLVE_DISCOUNT_FAILURE':\n            return Object.assign({}, state, {\n                isLoading: false,\n                dataToResolveDiscount: []\n            })\n        case 'FETCH_DATA_TO_RESOLVE_DISCOUNT_SUCCESS':\n            return Object.assign([], state, {\n                isLoading: false,\n                dataToResolveDiscount: action.resolveDiscountData\n            })\n        case 'CHECK_PROMOTION_DISCOUNTS_REQUEST':\n        case 'SEND_APPROVE_CAMPAIGN_DISCOUNTS_REQUEST':\n        case 'SEND_DENY_CAMPAIGN_DISCOUNTS_REQUEST':\n            return Object.assign([], state, {\n                isLoading: true\n            })\n        case 'CHECK_PROMOTION_DISCOUNTS_REQUEST_SUCCESS':\n        case 'SEND_APPROVE_CAMPAIGN_DISCOUNTS_SUCCESS':\n        case 'SEND_DENY_CAMPAIGN_DISCOUNTS_SUCCESS':\n        case 'CHECK_PROMOTION_DISCOUNTS_REQUEST_FAILURE':\n        case 'SEND_APPROVE_CAMPAIGN_DISCOUNTS_FAILURE':\n        case 'SEND_DENY_CAMPAIGN_DISCOUNTS_FAILURE':\n            return Object.assign([], state, {\n                isLoading: false\n            })\n        case 'SEND_CLONE_PROMOTION_REQUEST':\n            return Object.assign([], state, {\n                isLoading: true\n            })\n        case 'SEND_CLONE_PROMOTION_SUCCESS':\n        case 'SEND_CLONE_PROMOTION_FAILURE':\n            return Object.assign([], state, {\n                isLoading: false\n            })\n        case 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_ONE':\n            return Object.assign({}, state, {\n                hasUnsavedChangesStepOne: {\n                    promotionNameDirty: action.changes.promotionNameDirty,\n                    promotionLanguageDirty: action.changes.promotionLanguageDirty,\n                    promotionStartDateDirty: action.changes.promotionStartDateDirty,\n                    promotionEndDateDirty: action.changes.promotionEndDateDirty,\n                    promotionCommercialNameDirty: action.changes.promotionCommercialNameDirty,\n                    promotionDescriptionNameDirty: action.changes.promotionDescriptionNameDirty,\n            }\n        })\n        case 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_TWO':\n            return Object.assign({}, state, {\n                hasUnsavedChangesStepTwo: {\n                    promotionMarketDirty: action.changes.promotionMarketDirty,\n                    promotionCountriesDirty: action.changes.promotionCountriesDirty,\n                    promotionCentersDirty: action.changes.promotionCentersDirty\n            }\n        })\n        case 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_THREE':\n            return Object.assign({}, state, {\n                hasUnsavedChangesStepThree: {\n                    promotionCustomersDirty: action.changes.promotionCustomersDirty\n            }\n        })\n        case 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_FOUR':\n            return Object.assign({}, state, {\n                hasUnsavedChangesStepFour: {\n                    promotionMaterialsDirty: action.changes.promotionMaterialsDirty\n            }\n        })\n        case 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_FIVE':\n            return Object.assign({}, state, {\n                hasUnsavedChangesStepFive: {\n                    promotionDiscountsDirty: action.changes.promotionDiscountsDirty\n            }\n        })\n        case 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_SIX':\n            return Object.assign({}, state, {\n                hasUnsavedChangesStepSix: {\n                    promotionLandingTemplateDirty: action.changes.promotionLandingTemplateDirty,\n                    promotionNewsletterTemplateDirty: action.changes.promotionNewsletterTemplateDirty\n            }\n        })\n        case 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_SEVEN':\n            return Object.assign({}, state, {\n                hasUnsavedChangesStepSeven: {\n                    promotionBannerTitleDirty: action.changes.promotionBannerTitleDirty,\n                    promotionBannerDescriptionDirty: action.changes.promotionBannerDescriptionDirty\n            }\n        })\n        default:\n            return state\n    }\n}\nexport const getPromotionData = state => {\n    return state.promotions.promotionsByCenter[getSelectedCenter(state)]\n}\nexport const getError = state => {\n    return state.promotions.error\n}\nexport const getPromotionHomeBanner = state => {\n    return getPromotionData(state) && getPromotionData(state).home_banner_url\n}\nexport const getPromotionLateralBanner = state => {\n    return getPromotionData(state) && getPromotionData(state).lateral_banner_url\n}\nexport const getPromotionLandingBanner = state => {\n    return state.promotions.data.srcBanner\n    // return getPromotionData(state) && getPromotionData(state).head_landing_banner_url\n}\nexport const getPromotionLink = state => {\n    return getPromotionData(state) && getPromotionData(state).id\n}\nexport const getIsSending = state => {\n    return state.promotions.isSending\n}\nexport const getStatus = state => {\n    return state.promotions.status\n}\nexport const getAlert = state => {\n    return state.promotions.alert\n}\nexport const getTranslations = state => {\n    return state.promotions.translations\n}\nexport const getStep = state => {\n    return state.promotions.step\n}\nexport const getFetchedMarkets = state => {\n    return state.promotions.fetchedMarkets\n}\nexport const getFetchedCountries = state => {\n    return state.promotions.fetchedCountries\n}\nexport const getFetchedCenters = state => {\n    return state.promotions.fetchedCenters.filter(center => !state.promotions.excludedPromotionsCenters.includes(center.id))\n}\nexport const getLandingTemplates = () => {\n    return [\n        /* {\n            id: '1',\n            name: 'Template Version 1',\n            urlPreview: landingPreviewV1\n        }, */\n        {\n            id: '2',\n            name: 'Template Version 2',\n            urlPreview: landingPreviewV2\n        }\n    ]\n}\nexport const getNewsLetterTemplates = () => {\n    return [\n        /* {\n            id: '1',\n            name: 'Template Version 1',\n            urlPreview: mailPreviewV1\n        }, */\n        {\n            id: '2',\n            name: 'Template Version 2',\n            urlPreview: mailPreviewV2\n        }\n    ]\n}\nexport const getCurrentPromotionId = state => state.promotions.currentPromotionId\nexport const getAvailableSteps = state => {\n    let availableSteps = [1]\n    if (!!getCurrentPromotionId(state)) {\n        availableSteps.push(2)\n    }\n    if (!!getCurrentPromotionId(state) && !!getPromotionCenters(state).length) {\n        if (canViewDiscountStep(state)) availableSteps.push(3, 4, 5, 6, 7)\n        else availableSteps.push(3, 4, 5, 6)\n\n    }\n    return availableSteps\n}\nexport const getDataLandingTemplateId = state => state.promotions.data.landingTemplateId\nexport const getLandingTemplateId = state => state.promotions.landingTemplateId\nexport const getMailTemplateId = state => state.promotions.mailTemplateId\nexport const getPromotionTitle = state => state.promotions.data.promotionTitle\nexport const getPromotionDescription = state => state.promotions.data.promotionDescription\nexport const getBannerTitle = state => {\n    const promotionData = getPromotionData(state)\n    if (promotionData && promotionData.banner_title) {\n        const lang = getLanguage(state)\n        return promotionData.banner_title[lang] ? promotionData.banner_title[lang] : promotionData.banner_title[promotionData.banner_title.default]\n    }\n    if (state.promotions.data && state.promotions.data.bannerTitle) {\n        return state.promotions.data.bannerTitle\n    }\n    if (state.promotions.translations && state.promotions.translations['banner_title'] && state.promotions.translations['banner_title']['default_text'])\n        return state.promotions.translations['banner_title']['default_text']\n    return null\n}\nexport const getBannerDescription = state => {\n    const promotionData = getPromotionData(state)\n    if (promotionData && promotionData.banner_text) {\n        const lang = getLanguage(state)\n        return promotionData.banner_text[lang] ? promotionData.banner_text[lang] : promotionData.banner_text[promotionData.banner_text.default]\n    }\n    if (state.promotions.data && state.promotions.data.bannerDescription) {\n        return state.promotions.data.bannerDescription\n    }\n    if (state.promotions.translations && state.promotions.translations['banner_description'] && state.promotions.translations['banner_description']['default_text'])\n        return state.promotions.translations['banner_description']['default_text']\n    return null\n}\n\nexport const isProductIdInPromotion = (state, productId) => {\n    const product = state.promotions &&\n                    state.promotions.data && \n                    state.promotions.data.products && \n                    state.promotions.data.products.find(p => p.product.productId == productId)\n    return !!product\n}\n\nexport const canViewDiscountStep = state => {\n    // return true\n    return (\n        !state.promotions.isAmortized &&\n        (!state.promotions.discountStatus || state.promotions.discountStatus === 'NONE' || state.promotions.discountStatus === 'DENIED')\n        // && ['VALENCIA', 'SINGAPORE', 'PRICING'].includes(getUserName(state))\n    )\n    // return (!state.promotions.discountMaterials || Object.keys(state.promotions.discountMaterials).length === 0) && true\n}\n\nexport const getPromotions = state => state.promotions.promotions\nexport const getIsLoading = state => state.promotions.isLoading\nexport const getBannersPaginatedResult = state => state.promotions.bannersPaginatedResult\nexport const getAvailableLanguages = state => state.promotions.languages\nexport const getCustomersOfArea = state => state.promotions.customersOfArea\nexport const getCustomersSelected = state => state.promotions.customersSelected\nexport const getMaterialsSelected = state => state.promotions.materialsSelected\nexport const getMaterialsSelectedData = state => state.promotions.materialsSelectedData\nexport const getPromotionName = state => state.promotions.promotionName\nexport const getPromotionStartDate = state => state.promotions.startDate\nexport const getPromotionEndDate = state => state.promotions.endDate\nexport const getCommercialName = state => state.promotions.translations['commercial_name']\nexport const getDescription = state => state.promotions.translations['description']\nexport const getPromotionMarket = state => state.promotions.market\nexport const getPromotionCountries = state => state.promotions.countries\nexport const getPromotionCenters = state => state.promotions.centers\nexport const getHeadLandingBannerData = state => state.promotions.headLandingBannerData\nexport const getHomeBannerData = state => state.promotions.homeBannerData\nexport const getHeadEmailBannerData = state => state.promotions.headEmailBannerData\nexport const getLateralBanner = state => state.promotions.lateralBanner\nexport const getPromotionDataProduct = state => state.promotions.data.products\nexport const getIsAmortized = state => state.promotions.isAmortized\nexport const getDiscountMaterials = state => state.promotions.discountMaterials\nexport const getDataToResolveDiscounts = state => state.promotions.dataToResolveDiscount\nexport const getAcceptedDiscounts = state => state.promotions.acceptedDiscounts\nexport const getDiscountStatus = state => state.promotions.discountStatus\n\n//Unsaved changes\nexport const getUnsavedChangesStepOne = (state) => {\n    return Object.values(state.promotions.hasUnsavedChangesStepOne).some(item => item === true)\n}\n\nexport const getUnsavedChangesStepTwo = (state) => {\n    return Object.values(state.promotions.hasUnsavedChangesStepTwo).some(item => item === true)\n}\n\nexport const getUnsavedChangesStepThree = (state) => {\n    return Object.values(state.promotions.hasUnsavedChangesStepThree).some(item => item === true)\n}\n\nexport const getUnsavedChangesStepFour = (state) => {\n    return Object.values(state.promotions.hasUnsavedChangesStepFour).some(item => item === true)\n}\n\nexport const getUnsavedChangesStepFive = (state) => {\n    return Object.values(state.promotions.hasUnsavedChangesStepFive).some(item => item === true)\n}\n\nexport const getUnsavedChangesStepSix = (state) => {\n    return Object.values(state.promotions.hasUnsavedChangesStepSix).some(item => item === true)\n}\n\nexport const getUnsavedChangesStepSeven = (state) => {\n    return Object.values(state.promotions.hasUnsavedChangesStepSeven).some(item => item === true)\n}\n\nexport default promotions\n","import { getLocaleWithft2 } from './store/products/reducers'\n\nimport moment from \"moment\";\nimport {isProductOutlet} from \"./components/landing-templates/utils\";\n\nexport function getReplaceDotWithComma(element, locale, state){\n    if(element && state) {\n        let replacement = element.toString().replace('.', ',')\n        // We need . for EEUU, rest of countries is ,\n        if (locale !== 'en-US') {\n            return replacement\n        }\n        return element\n    }\n}\n\nfunction copy(text) {\n    if (navigator.clipboard) {\n        navigator.clipboard.writeText(text)\n    } else {\n        var textArea = document.createElement('textarea')\n        textArea.value = text\n        document.body.appendChild(textArea)\n        textArea.focus()\n        textArea.select()\n\n        try {\n            document.execCommand('copy')\n        } catch (err) {}\n\n        document.body.removeChild(textArea)\n    }\n}\n\nexport { copy }\n\nconst CM_IN_INCHES = 0.393701\nconst INCH_IN_CM = 2.5400013716\n\nexport function convertCentimetersToInches(cm, decimals = 2) {\n    return parseFloat((cm * CM_IN_INCHES).toFixed(decimals))\n}\n\nexport function convertInchesToCentimeters(inches, decimals = 2) {\n    return parseFloat((inches * INCH_IN_CM).toFixed(decimals))\n}\n\nexport function hasImperialUnits(state) {\n    if (state) {\n        if (state.profileConfiguration.profileConfiguration && state.profileConfiguration.profileConfiguration.lengthUnit) {\n            return state.profileConfiguration.profileConfiguration.lengthUnit === 'FT2'\n        }\n        const localeWithFt = getLocaleWithft2()\n        return localeWithFt.includes(state.ui.language)\n    }\n}\n\nexport function getAdaptedFormat(format, params, state) {\n    if (format && state) {\n        const isImperialUnits = hasImperialUnits(state) \n        let measures = format.split(/[xX]/)\n        if (measures.length === 2) {\n            let separator = 'x'\n            let decimals = isImperialUnits ? 2 : 0\n            let units = (params && params.showUnits) ? ` ${getCmOrInches(state)}` : ''\n            if (params && params.upper) separator = 'X'\n            if (params && params.spaced) separator = ` ${separator} `\n            if (params && params.decimals) decimals = params.decimals\n\n            if (isImperialUnits) {\n                measures = measures.map(item => {\n                    let newMeasures = item.replace(/,/g, '.')\n                    return convertCentimetersToInches(parseFloat(newMeasures), decimals)\n                })\n            }\n            return `${measures[0]}${separator}${measures[1]}${units}`\n        } else {\n            return format\n        }\n    }\n}\n\nexport function getMeasureFromMetric(measure, decimals, state) {\n    return hasImperialUnits(state) ? convertCentimetersToInches(measure, decimals) : measure\n}\n\nexport function getMetricMeasureFromInput(measure, decimals, state) {\n    return hasImperialUnits(state) ? convertInchesToCentimeters(measure, decimals) : measure\n}\n\nexport function getCmOrInches(state) {\n    return hasImperialUnits(state) ? 'in' : 'cm'\n}\n\nexport function getNextWorkingDay(days) {\n    let plannedDay = moment().startOf('day').add(days, 'days')\n    let plannedWeekDay = plannedDay.day()\n    if (plannedWeekDay === 0) {\n        plannedDay = plannedDay.add(1, 'days')\n    }\n\n    return plannedDay\n}\n\nexport function getCtsMeasures(cts, state) {\n    const units = getCmOrInches(state)\n    const isImperial = units === 'in';\n    if (cts.shape === 'ROUNDED') {\n        const diameter = isImperial ? convertCentimetersToInches(cts.width, 1) : cts.width\n        return {\n            diameter: `${diameter} ${units}`\n        }\n    } else {\n        const measures = {}\n        const height = isImperial ? convertCentimetersToInches(cts.height, 1) : cts.height\n        const width = isImperial ? convertCentimetersToInches(cts.width, 1) : cts.width\n        measures.format = `${width}x${height} ${units}`\n        if (cts.shape === 'RECTANGULAR_CURVE_RADIUS') {\n            const radius = isImperial ? convertCentimetersToInches(cts.width, 1) : cts.radius\n            measures.radius = `${radius} ${units}`\n        }\n        return measures\n    }\n}\n\n/**\n * @param {string} str \n * @returns Returns the first uppercase letter of the string.\n */\nexport function capitalizeFirstLetter(str) {\n    if (typeof str === 'string') return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n    return str\n}\n\n// export const getLineProductStock = line => {\n//     if (line && line.product) {\n//         if (line.product.mall === 'X') {\n//             if (line.lots) {\n//                 return (line.product.productsLots && line.product.productsLots[line.productId]) ? line.product.productsLots[product.id].stock : 0\n//             }\n//             else return line.product.productLanding.stock_mall\n//         }\n//         return !!isProductOutlet(product) ? product.productLanding.stock_outlet : product.productLanding.stock\n//     }\n//\n//     return ''\n//     // product && product.productLanding && product.data ? (product.data.outlet ? (product.data.isStockOutlet ? product.productLanding.stock_outlet : product.productLanding.stock) : product.productLanding.stock) : '';\n//\n// }\n\n\n\nexport const langFromLocale = {\n    'bg' : 'bg-BG',\n    'cs' : 'cs-CZ',\n    'da' : 'da-DK',\n    'de' : 'de-DE',\n    'en-CA' : 'en-CA',\n    'en' : 'en-GB',\n    'en-US' : 'en-US',\n    'es' : 'es-ES',\n    'et' : 'et-EE',\n    'fi' : 'fi-FI',\n    'fr-CA' : 'fr-CA',\n    'fr' : 'fr-FR',\n    'he' : 'he-IL',\n    'hr' : 'hr-HR',\n    'hu' : 'hu-HU',\n    'it' : 'it-IT',\n    'ja' : 'ja-JP',\n    'lt' : 'lt-LT',\n    'lv' : 'lv-LV',\n    'nl' : 'nl-NL',\n    'no' : 'no-NO',\n    'pl' : 'pl-PL',\n    'pt' : 'pt-PT',\n    'sk' : 'sk-SK',\n    'sl' : 'sl-SL',\n    'sv' : 'sv-SE',\n    'tr' : 'tr-TR'\n}\n\nexport function convertCentimetersToMillimeters(input) {\n\n    const cm = parseFloat(input)\n\n    if (isNaN(cm)) {\n        return 0\n    }\n\n    return cm * 10\n}\n\nexport function getUsaCaPrTermsAndConditionsByLang(lang) {\n    const spanishUrl = 'https://assetstools.cosentino.com/api/v1/bynder/doc/C61C1BFD-8D67-4DCD-A33F26E187FDDF65/2023-General-T&C_Cosentino-USA-Canada-PR_Spanish.pdf'\n    const englishUrl = 'https://assetstools.cosentino.com/api/v1/bynder/doc/9175801C-0F26-459C-85EA3D656A00C508/2023-General-T&C_Cosentino-USA-Canada-PR.pdf'\n    const frenchUrl = 'https://assetstools.cosentino.com/api/v1/bynder/doc/A8649BDC-D9F4-4809-87238C459F0990DF/2023-General-T&C_Cosentino-USA-Canada-PR_French.pdf'\n\n    switch (lang) {\n        case 'es':\n            return spanishUrl\n        case 'en-CA':\n            return englishUrl\n        case 'fr-CA':\n            return frenchUrl\n        default:\n            return englishUrl\n    }\n}\n\n/**\n * Validate the email using regex (optimized for efficiency).\n * @param {string} email \n * @returns {boolean}\n */\nexport function validateInputEmail(email) {\n    const emailRegex = /^(?:[a-zA-Z0-9._%+-]+)@(?:[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})$/\n    return emailRegex.test(email)\n}","import { LOCATION_CHANGE } from 'react-router-redux'\nimport { getLanguage } from '../ui/reducers'\n\nconst localeWithft2 = ['en-US', 'fr-CA', 'en-CA']\n\nexport const initState = {\n           isLoading: false,\n           isSending: false,\n           alert: null,\n           alertOfPassword: null,\n           status: null,\n           statusOfPassword: null,\n           profileConfiguration: {\n               centerId: null,\n               weightUnit: null,\n               lengthUnit: null,\n               email: [],\n               locale: null,\n               promotionEmail: []\n           },\n           errorOnSetEmail: false,\n           promotionConfiguration: {\n               email: [],\n               has_previous_configuration: false,\n               accept_notifications: false,\n               copy_emails: false,\n               accept_policies: false\n           },\n           whatsappConfiguration: {\n               email: null,\n               has_previous_configuration: false,\n               accept_notifications: false,\n           },\n           isSubscribed: true\n       }\nconst profileConfiguration = (state = initState, action) => {\n    switch (action.type) {\n        case LOCATION_CHANGE:\n            return Object.assign({}, state, { alert: null, status: null })\n\n        case 'SET_USER_EMAIL_AAD_FAILURE':\n            return Object.assign({}, state, { errorOnSetEmail: action.statusText })\n        case 'FETCH_PROFILE_CONFIGURATION_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_PROFILE_CONFIGURATION_SUCCESS':\n            return Object.assign({}, state, { profileConfiguration: action.profileConfiguration, isLoading: false })\n        case 'FETCH_PROFILE_CONFIGURATION_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'SAVE_PROFILE_CONFIGURATION_REQUEST':\n            return Object.assign({}, state, { isSending: true })\n        case 'SAVE_PROFILE_CONFIGURATION_SUCCESS':\n            return Object.assign({}, state, { isSending: false, alert: action.alert, status: 200 })\n        case 'SAVE_PROFILE_CONFIGURATION_FAILURE':\n            return Object.assign({}, state, { isSending: false, alert: action.alert, status: action.status })\n        case 'CHANGE_PASSWORD_REQUEST':\n            return Object.assign({}, state, { isSending: true })\n        case 'CHANGE_PASSWORD_SUCCESS':\n            return Object.assign({}, state, { isSending: false, alertOfPassword: action.alert, statusOfPassword: 200 })\n        case 'CHANGE_PASSWORD_FAILURE':\n            return Object.assign({}, state, { isSending: false, alertOfPassword: action.alert, statusOfPassword: action.status })\n        case 'PRELOAD_USER_PREFERENCES_SUCCESS':\n            return Object.assign({}, state, { profileConfiguration: action.profileConfiguration })\n        case 'IMPERSONATE_REQUEST':\n            return Object.assign({}, state, { profileConfiguration: { centerId: null, weightUnit: null, lengthUnit: null, email: null } })\n        case 'FETCH_PROFILE_CONFIGURATION_IKEA_ADDRESS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_PROFILE_CONFIGURATION_IKEA_ADDRESS_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'FETCH_PROFILE_CONFIGURATION_IKEA_ADDRESS_SUCCESS':\n            return Object.assign({}, state, { profileConfigurationIkeaAddress: action.profileConfiguration, isLoading: false })\n        case 'FETCH_PROMOTION_CONFIGURATION_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_PROMOTION_CONFIGURATION_SUCCESS':\n            return Object.assign({}, state, { promotionConfiguration: action.promotionConfiguration, isLoading: false })\n        case 'FETCH_PROMOTION_CONFIGURATION_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'FETCH_WHATSAPP_CONFIGURATION_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_WHATSAPP_CONFIGURATION_SUCCESS':\n            return Object.assign({}, state, { whatsappConfiguration: action.whatsappConfiguration, isLoading: false })\n        case 'FETCH_WHATSAPP_CONFIGURATION_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'UNSUBSCRIBE_NEWSLETTER_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'UNSUBSCRIBE_NEWSLETTER_SUCCESS':\n            return Object.assign({}, state, { isLoading: false, isSubscribed: false })\n        case 'UNSUBSCRIBE_NEWSLETTER_FAILURE':\n            return Object.assign({}, state, { isLoading: false, isSubscribed: true })\n        case 'RESUBSCRIBE_NEWSLETTER_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'RESUBSCRIBE_NEWSLETTER_SUCCESS':\n            return Object.assign({}, state, { isLoading: false, isSubscribed: true })\n        case 'RESUBSCRIBE_NEWSLETTER_FAILURE':\n            return Object.assign({}, state, { isLoading: false, isSubscribed: false })\n        case 'SAVE_PROMOTION_CONFIGURATION_REQUEST':\n            return Object.assign({}, state, { isSending: true })\n        case 'SAVE_PROMOTION_CONFIGURATION_SUCCESS':\n            return Object.assign({}, state, { isSending: false, alert: action.alert, status: 200 })\n        case 'SAVE_PROMOTION_CONFIGURATION_FAILURE':\n            return Object.assign({}, state, { isSending: false, alert: action.alert, status: action.status })\n        case 'LOGOUT':\n            return Object.assign({}, state, { profileConfiguration: initState.profileConfiguration, promotionConfiguration: initState.promotionConfiguration })\n        default:\n            return state\n    }\n}\nexport const getProfileConfiguration = state => {\n    return state.profileConfiguration.profileConfiguration\n}\nexport const getProfileConfigurationEmails = state => {\n    return state.profileConfiguration.profileConfiguration.email\n}\nexport const getProfileConfigurationLoading = state => {\n    return state.profileConfiguration.isLoading\n}\nexport const getProfileConfigurationSending = state => {\n    return state.profileConfiguration.isSending\n}\nexport const getProfileConfigurationAlert = state => {\n    return state.profileConfiguration.alert\n}\nexport const getProfileConfigurationAlertOfPassword = state => {\n    return state.profileConfiguration.alertOfPassword\n}\nexport const getProfileConfigurationStatus = state => {\n    return state.profileConfiguration.status\n}\nexport const getProfileConfigurationStatusOfPassword = state => {\n    return state.profileConfiguration.statusOfPassword\n}\nexport const getPreferredCenter = state => {\n    return state.profileConfiguration.profileConfiguration.centerId\n}\nexport const getErrorOnSetEmail = state => {\n    return state.profileConfiguration.errorOnSetEmail\n}\nexport const getWeightUnit = state => {\n    let defaultUnit = getLanguage(state) === 'en' || getLanguage(state) === 'en-US' || getLanguage(state) === 'fr-CA' ? 'LB' : 'KG'\n    return state.profileConfiguration.profileConfiguration.weightUnit ? state.profileConfiguration.profileConfiguration.weightUnit : defaultUnit\n}\nexport const getWhatsappOptinPreferences = state => {\n    return state.profileConfiguration.whatsappConfiguration\n}\nexport const getWhatsappOptinPreviousPreferences = state => {\n           return state.profileConfiguration.whatsappConfiguration.has_previous_configuration\n       }\nexport const getPromotionConfiguration = state => {\n    return state.profileConfiguration.promotionConfiguration\n}\nexport const getPromotionConfigurationEmails = state => {\n    return state.profileConfiguration.promotionConfiguration.email\n}\nexport const getPromotionConfigurationAcceptPromotionNotifications = state => {\n    return state.profileConfiguration.promotionConfiguration.accept_notifications\n}\n/*export const getPromotionConfigurationPromotionCopyEmailAddress = state => {\n    return state.profileConfiguration.promotionConfiguration.copy_emails\n}*/\nexport const getPromotionConfigurationAcceptPromotionPolicies = state => {\n    return state.profileConfiguration.promotionConfiguration.accept_policies\n}\nexport const getPromotionConfigurationPreviousPreferences = state => {\n    return state.profileConfiguration.promotionConfiguration.has_previous_configuration\n}\nexport const getIsSubscribed = state => state.profileConfiguration.isSubscribed\nexport const getIsLoading = state => state.profileConfiguration.isLoading\n\nexport const getUnit = state => {\n    const isMetric = state.profileConfiguration.profileConfiguration.lengthUnit !== 'FT2' && !localeWithft2.includes(state.ui.language)\n    return isMetric ? 'm' : 'ft'\n}\n\nexport const getDefaultFurniturePackaging = state => {\n    return state.profileConfiguration.profileConfiguration.defaultFurniturePackaging\n}\n\nexport const setDefaultFurniturePackaging = (state, defaultPackaging) => {\n    state.profileConfiguration.profileConfiguration.defaultFurniturePackaging = defaultPackaging\n}\n\nexport default profileConfiguration\n","import {\n    getHQCenterId,\n    getHUBHoustonCenterId,\n    getHUBNorfolkCenterId,\n    getHUBSydneyCenterId,\n    getIKEACenterId,\n    getLatinaDepot,\n    getLatinaVitoriaCenterId,\n    getNaturalStoneSpainCenterId, getSelectedCenter, getIsIkeaCenter } from '../centers/reducers'\nimport { getImpersonatedBy, getUserName } from '../login/reducers'\nimport { createSelector } from 'reselect'\nimport { getKgPoundRatio } from '../cart/reducers'\n\nexport const initState = {\n    ordersCurrentPage: 1,\n    ordersLastPage: 1,\n    orders: [],\n    openOrders: [],\n    transferOrders: [],\n    orderDetails: [],\n    orderDetailsHead: null,\n    order: null,\n    openDocDetails: [],\n    packingList: null,\n    recurringOrders: [],\n    recurringOrderDetails: [],\n    selectedRecurringOrder: null,\n    showRecurringOrderDetails: false,\n    isLoading: false,\n    isLoadingDetails: false,\n    isLoadingPackingList: false,\n    lowesOrders: [],\n    lowesLinesOrders: [],\n    lowesOrderDetails: null,\n    isOrderToEditLoading: false,\n    orderToEdit: [],\n    orderInEdition: [],\n    invoices: [],\n    showModal: false,\n    activeOrderLine: null,\n    error: null,\n    fetchingPackagingImages: false,\n    packagingImages: null\n}\nconst orders = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_OFFERS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_OFFERS_SUCCESS':\n            return Object.assign({}, state, {\n                offers: action.offers,\n                isLoading: false\n            })\n        case 'FETCH_OFFERS_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'FETCH_ORDERS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_ORDERS_SUCCESS':\n            return Object.assign({}, state, {\n                orders: action.orders,\n                ordersCurrentPage: action.ordersCurrentPage,\n                ordersLastPage: action.ordersLastPage,\n                isLoading: false\n            })\n        case 'FETCH_ORDERS_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'CLEAR_FETCHED_ORDERS':\n            return Object.assign({}, state, {\n                orders: [],\n                ordersCurrentPage: null,\n                ordersLastPage: null,\n                isLoading: false\n            })\n        case 'FETCH_ORDERS_PAGINATE_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_ORDERS_PAGINATE_SUCCESS':\n            return Object.assign({}, state, {\n                orders: state.orders.concat(action.orders),\n                ordersCurrentPage: action.ordersCurrentPage,\n                ordersLastPage: action.ordersLastPage,\n                isLoading: false\n            })\n        case 'FETCH_ORDERS_PAGINATE_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'FETCH_OPEN_ORDERS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_OPEN_ORDERS_SUCCESS':\n            return Object.assign({}, state, {\n                openOrders: action.openOrders,\n                isLoading: false\n            })\n        case 'FETCH_TRANSFER_ORDERS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_TRANSFER_ORDERS_SUCCESS':\n            return Object.assign({}, state, {\n                transferOrders: action.transferOrders,\n                isLoading: false\n            })\n        case 'FETCH_TRANSFER_ORDERS_FAILURE':\n        case 'FETCH_OPEN_ORDERS_FAILURE':\n        case 'FETCH_ORDER_DETAILS_REQUEST':\n            return Object.assign({}, state, {\n                isLoadingDetails: true\n            })\n        case 'FETCH_ORDER_DETAILS_FAILURE':\n            return Object.assign({}, state, { isLoadingDetails: false, error: action.response })\n        case 'FETCH_ORDER_DETAILS_SUCCESS':\n            return Object.assign({}, state, {\n                orderDetailsHead: action.orderDetailsHead,\n                openDocDetails: action.openDocDetails,\n                order: action.order,\n                invoices: action.invoices,\n                isLoadingDetails: false\n            })\n        case 'CLEAR_ORDER_DETAILS':\n            return Object.assign({}, state, {\n                packingList: null,\n                orderDetailsHead: null\n            })\n        case 'FETCH_OFFER_OVERVIEW_REQUEST':\n        case 'FETCH_PACKING_LIST_REQUEST':\n            return Object.assign({}, state, {\n                isLoadingPackingList: true,\n                packingList: null\n            })\n        case 'FETCH_OFFER_OVERVIEW_FAILURE':\n        case 'FETCH_PACKING_LIST_FAILURE':\n            return Object.assign({}, state, { isLoadingPackingList: false, error: action.response })\n        case 'FETCH_OFFER_OVERVIEW_SUCCESS':\n        case 'FETCH_PACKING_LIST_SUCCESS':\n            return Object.assign({}, state, {\n                isLoadingPackingList: false,\n                packingList: action.packingList\n            })\n        case 'FETCH_RECURRING_ORDERS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_RECURRING_ORDERS_SUCCESS':\n            return Object.assign({}, state, {\n                recurringOrders: action.recurringOrders,\n                isLoading: false\n            })\n        case 'FETCH_RECURRING_ORDERS_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'FETCH_RECURRING_ORDERS_DETAILS_REQUEST':\n            return Object.assign({}, state, { isLoadingDetails: true })\n        case 'FETCH_RECURRING_ORDERS_DETAILS_SUCCESS':\n            return Object.assign({}, state, {\n                recurringOrderDetails: action.recurringOrders,\n                isLoadingDetails: false\n            })\n        case 'FETCH_RECURRING_ORDERS_DETAILS_FAILURE':\n            return Object.assign({}, state, { isLoadingDetails: false })\n        case 'ADD2CART_RECURRING_ORDERS_DETAILS_REQUEST':\n            return Object.assign({}, state, { isLoadingAdd: true })\n        case 'ADD2CART_RECURRING_ORDERS_DETAILS_SUCCESS':\n            return Object.assign({}, state, { isLoadingAdd: false })\n        case 'ADD2CART_RECURRING_ORDERS_DETAILS_FAILURE':\n            return Object.assign({}, state, { isLoadingAdd: false })\n        case 'OPEN_RECURRING_ORDERS_DETAILS':\n            return Object.assign({}, state, {\n                showRecurringOrderDetails: true,\n                selectedRecurringOrder: action.selectedRecurringOrder\n            })\n        case 'CLOSE_RECURRING_ORDERS_DETAILS':\n            return Object.assign({}, state, { showRecurringOrderDetails: false })\n        case 'SAVE_ORDER_TO_EDIT_REQUEST':\n        case 'FETCH_ORDER_TO_EDIT_REQUEST':\n            return Object.assign({}, state, { isOrderToEditLoading: true })\n        case 'SAVE_ORDER_TO_EDIT_SUCCESS':\n        case 'FETCH_ORDER_TO_EDIT_SUCCESS':\n            return Object.assign({}, state, {\n                orderToEdit: action.orderToEdit,\n                orderInEdition: action.orderToEdit,\n                isOrderToEditLoading: false\n            })\n        case 'CHANGE_ORDER_IN_EDITION':\n            return Object.assign({}, state, {\n                orderInEdition: action.orderInEdition\n            })\n        case 'SAVE_ORDER_TO_EDIT_FAILURE':\n        case 'FETCH_ORDER_TO_EDIT_FAILURE':\n            return Object.assign({}, state, { isOrderToEditLoading: false })\n\n        case 'FETCH_ALL_LOWES_ORDERS_REQUEST':\n            return { ...state, isLoading: true }\n        case 'FETCH_ALL_LOWES_ORDERS_SUCCESS':\n            return { ...state, isLoading: false, lowesOrders: action.lowesOrders }\n        case 'FETCH_ALL_LOWES_ORDERS_FAILURE':\n            return { ...state, isLoading: false }\n        case 'FETCH_ALL_LOWES_LINES_ORDERS_REQUEST':\n            return { ...state, isLoading: true }\n        case 'FETCH_ALL_LOWES_LINES_ORDERS_SUCCESS':\n            return {\n                ...state,\n                isLoading: false,\n                lowesLinesOrders: action.lowesLinesOrders\n            }\n        case 'FETCH_ALL_LOWES_LINES_ORDERS_FAILURE':\n            return { ...state, isLoading: false }\n\n        case 'GET_LOWES_ORDER_DETAILS_REQUEST':\n            return { ...state, isloading: true }\n        case 'GET_LOWES_ORDER_DETAILS_SUCCESS':\n            return { ...state, isloading: false, lowesOrderDetails: action.details }\n        case 'GET_LOWES_ORDER_DETAILS_FAILURE':\n            return { ...state, isloading: false }\n        case 'CLEAR_LOWES_ORDER_DETAILS':\n            return { ...state, isloading: false, lowesOrderDetails: null }\n\n        case 'SIMPLE_IMPERSONATE_SUCCESS':\n        case 'LOGOUT':\n            return Object.assign({}, state, initState)\n        case 'SHOW_ORDER_LINE_DETAIL':\n            return Object.assign({}, state, { showModal: true, activeOrderLine: action.orderLine })\n        case 'CLOSE_ORDER_LINE_DETAIL':\n            return Object.assign({}, state, { showModal: false })\n\n        case 'SEND_ACCEPT_QUOTE_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'SEND_ACCEPT_QUOTE_SUCCESS':\n            action.offer.statusText = 'PENDING_ACCEPT_OFFER'\n        case 'SEND_ACCEPT_QUOTE_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'SEND_REJECT_QUOTE_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'SEND_REJECT_QUOTE_SUCCESS':\n            action.offer.statusText = 'PENDING_CANCEL_OFFER'\n        case 'SEND_REJECT_QUOTE_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'FETCH_PACKAGING_IMAGES_REQUEST':\n            return Object.assign({}, state, { fetchingPackagingImages: true, packagingImages: null })\n        case 'FETCH_PACKAGING_IMAGES_SUCCESS':\n            return Object.assign({}, state, { fetchingPackagingImages: false, packagingImages: action.packagingImages })\n        case 'FETCH_PACKAGING_IMAGES_FAILURE':\n            return Object.assign({}, state, { fetchingPackagingImages: false, packagingImages: null })\n\n        default:\n            return state\n    }\n}\nexport const byOrderId = (state, orderId) => {\n    let found = state.orders.orders.find(order => {\n        return order.orderId === orderId\n    })\n\n    return found\n}\nexport const getOrders = state => {\n    return state.orders.orders\n}\nexport const getOffers = state => {\n    return state.orders.offers\n}\nexport const getOpenOrders = state => {\n    return state.orders.openOrders\n}\nexport const getTransferOrders = state => {\n    return state.orders.transferOrders\n}\nexport const getPackingList = state => {\n    return state.orders.packingList\n}\n\nexport const getOpenDocDetails = state => {\n    return state.orders.openDocDetails\n}\nexport const getOrder = state => {\n    return state.orders.order\n}\nexport const getInvoices = state => state.orders.invoices\nexport const getOrderDetailsHead = state => {\n    return state.orders.orderDetailsHead\n}\nexport const getRecurringOrder = state => {\n    return state.orders.recurringOrders\n}\nexport const getRecurringOrderDetails = state => {\n    return state.orders.recurringOrderDetails\n}\nexport const getOrdersLoading = state => {\n    return state.orders.isLoading\n}\nexport const getOrderToEditLoading = state => {\n    return state.orders.isOrderToEditLoading\n}\nexport const getOrderDetailsLoading = state => {\n    return state.orders.isLoadingDetails\n}\nexport const getPackingListLoading = state => {\n    return state.orders.isLoadingPackingList\n}\nexport const getShowRecurringOrderDetails = state => {\n    return state.orders.showRecurringOrderDetails\n}\nexport const getselectedRecurringOrder = state => {\n    return state.orders.selectedRecurringOrder\n}\nexport const getOrderToEdit = state => {\n    return state.orders.orderToEdit\n}\nexport const getOrdersLoadingAdd = state => {\n    return state.orders.isLoadingAdd\n}\nexport const canEditOrders = state => {\n    let centers = ['YVETTEL', 'MPAKOS', 'VALERIYAK', 'DQUILES']\n    let users = ['410606', '0000410606']\n    if (centers.includes(getImpersonatedBy(state)) || users.includes(getUserName(state))) return true\n    return false\n}\nexport const canEditOrder = (state, order) => {\n    const orderStatusMap = getOrderStatusMap(state)\n\n    if (order != null) {\n        if (order.deliveries && order.deliveries.length === 0) {\n            if (order.statusText) {\n                return orderStatusMap[order.statusText] ? orderStatusMap[order.statusText].editable : false\n            }\n        }\n    }\n\n    return false\n}\nexport const canDeleteOrder = (state, order) => {\n    return canEditOrder(state, order)\n}\nexport const getStatusMap = state => {\n    return {\n        //RESERVATIONSTATUS\n        PENDING_CONFIRMATION: { status: 1, textToShow: 'pendiente_de_crear', editable: true },\n        CONFIRMED: { status: 3, textToShow: 'aprobado', editable: true },\n        PENDING_ORDER_CREATION: { status: 1, textToShow: 'pendiente_de_crear', editable: true },\n        ORDER_CREATED: { status: 2, textToShow: 'pedido_creado', editable: true },\n        EXTERNAL_CUSTOMER: { status: 1, textToShow: 'pendiente_de_crear', editable: true }, //PENDING\n        ERROR_CREATING_ORDER: { status: 8, textToShow: 'error_creating_order', editable: false },\n        PENDING_CANCELLATION: { status: 2, textToShow: 'PENDING_CANCELLATION', editable: false }, //PENDING\n        CANCELLED: { status: 20, textToShow: 'reserva_cancelada', editable: false },\n        QUOTE_REJECTED: { status: 20, textToShow: 'quote_rejected', editable: false },\n        QUOTE_EXPIRED: { status: 20, textToShow: 'QUOTE_EXPIRED', editable: false },\n        ORDER_CANCELLED: { status: 3, textToShow: 'reserva_cancelada', editable: false },\n        ORDER_MODIFIED: { status: 1, textToShow: 'pendiente_de_crear', editable: true }, //PENDING\n        WILSAM_RESERVATION: { status: 1, textToShow: 'pendiente_de_crear', editable: true },\n        USA_SHOPS: { status: 1, textToShow: 'pendiente_de_crear', editable: true }, //PENDING\n        PENDING_CHANGES: { status: 9, textToShow: 'cambios pendientes', editable: false },\n        RESERVATION: { status: 1, textToShow: 'pendiente_de_crear', editable: true }, //PENDING\n        OFFER_CREATED: { status: 9, textToShow: 'oferta_creada' },\n        PENDING_ACCEPT_OFFER: { status: 9, textToShow: 'PENDING_ACCEPT_OFFER', editable: false },//PENDING\n        PENDING_CANCEL_OFFER: { status: 9, textToShow: 'PENDING_CANCEL_OFFER', editable: false },//PENDING\n        ERROR_PROCESSING_OFFER: { status: 8, textToShow: 'error_procesando_oferta' },\n        OFFER_PENDING_CREATE: { status: 1, textToShow: 'pendiente_de_crear', editable: true },\n        //ORDERSTATUS\n        CREATED: { status: 1, textToShow: 'order_status_created', editable: true },\n        APPROVED: { status: 3, textToShow: 'order_status_approved', editable: true },\n        ORDER_PREPARATION: { status: 3, textToShow: 'order_in_preparation', editable: true },\n        //PARTIALLY_DELIVERED: { status: 4, textToShow: 'salida_de_mercancías_realizada', editable: false },\n        TOTALLY_DELIVERED: { status: 4, textToShow: 'salida_de_mercancías_realizada', editable: false },\n        PARTIALLY_INVOICED: { status: 1, textToShow: 'pendiente_de_crear', editable: true }, //PENDING\n        TOTALLY_INVOICED: { status: 6, textToShow: 'facturado_finalizado', editable: false }\n    }\n}\nexport const getOrderStatusMap = state => {\n    const timelineStatus = {\n        RESERVATION_CREATED: { textToShow: 'reservation_status_created', editable: false }, //Can't update without order_id\n        RESERVATION_CANCELLED: { textToShow: 'reserva_cancelada', editable: false },\n        CREATED: { textToShow: 'order_status_created', editable: true },\n        APPROVED: { textToShow: 'order_status_approved', editable: true },\n        PREPARATION: { textToShow: 'order_status_preparation', editable: true },\n        SHIPPED: { textToShow: 'order_status_shipped', editable: true },\n        PICKUP: { textToShow: 'order_status_pickup', editable: true },\n        DELIVERED: { textToShow: 'order_status_delivered', editable: true },\n        INVOICED: { textToShow: 'order_status_invoiced', editable: true },\n        PENDING_CANCELLATION: { textToShow: 'order_pending_cancellation', editable: false },\n        PENDING_CHANGES: { textToShow: 'order_status_pending_changes', editable: false },\n        CANCELLED: { textToShow: 'reserva_cancelada', editable: false },\n        ORDER_CANCELLED: { textToShow: 'order_status_cancelled', editable: false },\n        ERROR: { textToShow: 'order_status_error', editable: false },\n        IN_PROCESS: { textToShow: 'order_status_preparation', editable: true },\n        PARTIALLY_DELIVERED: { textToShow: 'order_status_partially_delivered', editable: true },\n        PENDING: { textToShow: 'order_status_approved', editable: false },\n    }\n\n    // Esto lo mantenemos para que no falte ningún texto\n    return Object.assign(getStatusMap(state), timelineStatus)\n}\n\nexport const getDeliveryStatusMap = state => {\n    return {\n        DELIVERY_CREATED: { textToShow: 'planned_transportation', editable: false },\n        IN_TRANSIT: { textToShow: 'order_status_shipped', editable: false },\n        DELIVERED: { textToShow: 'entregado', editable: false },\n    }\n}\nexport const canDeleteOrders = state => {\n    if (getIsIkeaCenter(state)) return true\n    return false\n}\nexport const getLowesOrders = state => {\n    return state.orders.lowesOrders\n}\nexport const getLowesLinesOrders = state => {\n    return state.orders.lowesLinesOrders\n}\nexport const getLowesOrderDetails = state => {\n    return state.orders.lowesOrderDetails\n}\nexport const getOrdersCurrentPage = state => {\n    return state.orders.ordersCurrentPage\n}\nexport const getOrdersLastPage = state => {\n    return state.orders.ordersLastPage\n}\nexport const showModalLineDetail = state => {\n    return state.orders.showModal\n}\nexport const getActiveOrderLine = state => {\n    return state.orders.activeOrderLine\n}\nexport const getOrderInEdition = state => {\n    return state.orders.orderInEdition\n}\nconst linesSelector = state => {\n    return state.orders.orderInEdition.filter(line => !line.rejected)\n}\nexport const orderWeightSelector = createSelector(\n    linesSelector,\n    lines => lines.reduce((total, line) => total + (line.product ? line.product.weight : 0) * line.quantity, 0)\n)\nexport const getOrderShippingMethod = state => {\n    return state.orders.order.shippingType\n}\nexport const getOrderCenter = state => {\n    return parseInt(state.orders.order.centerId)\n}\nexport const getOrderCenterData = state => {\n    let found = state.centers.centers.find(center => {\n        return center.centerId === getOrderCenter(state)\n    })\n\n    return found\n}\nexport const getOrderCenterHasMinWeight = state => {\n    if (!getOrderCenterData(state)) return null\n    return getOrderCenterData(state).hasMinWeight\n}\nexport const getOrderShippingAddressId = state => {\n    return getOrder(state).shippingAddressId\n}\nexport const getOrderShippingAddress = state => {\n    return state.shippingAddresses.shippingAddresses.shippingAddresses.find(shippingAddress => shippingAddress.shippingAddressId === getOrderShippingAddressId(state))\n}\nexport const getOrderCountryOfSend = state => {\n    return getOrderShippingAddress(state).country\n}\nexport const getOrderHasDestination = state => {\n    return getOrderShippingMethod(state) === 'CONTAINER'\n}\nexport const getOrderCurrentWeight = (state, unit) => {\n    return unit === 'KG' ? orderWeightSelector(state) : Math.floor(orderWeightSelector(state) * getKgPoundRatio())\n}\nexport const getOrderGoalMin = (state, unit) => {\n    let goalMin = getOrderShippingMethod(state) === 'CONTAINER' ? 19500 : 12000\n    const orderCenter = getOrderCenter(state)\n    switch (orderCenter) {\n        case getLatinaVitoriaCenterId():\n        case getNaturalStoneSpainCenterId():\n            if (getCartTypes(state).every(type => ['BUNDLE'].includes(type))) {\n                if (getCartBrands(state).every(brand => ['SENSA', 'SCALEA'].includes(brand))) {\n                    goalMin = 15000\n                }\n            }\n            break\n        case getHQCenterId(): // HQ\n            goalMin = 12000\n            break\n        case getHUBSydneyCenterId(): // HUB Sydney\n            goalMin = 19000\n            break\n        case getHUBHoustonCenterId(): // HUBs de USA\n        case getHUBNorfolkCenterId():\n            goalMin = 21500\n            break\n        case getLatinaDepot(): // Centro 7507 de Brasil\n            goalMin = 17000\n            break\n        default:\n            goalMin = getOrderShippingMethod(state) === 'CONTAINER' ? 19500 : 12000\n    }\n    const goalMinAcordingUnit = unit === 'KG' ? goalMin : Math.floor(goalMin * getKgPoundRatio())\n    return goalMinAcordingUnit\n}\nexport const getOrderGoalMax = (state, unit) => {\n    let goalMax = getOrderShippingMethod(state) === 'CONTAINER' ? 20200 : 24000\n\n    switch (getOrderCenter(state)) {\n        case getLatinaVitoriaCenterId():\n            goalMax = getOrderShippingMethod(state) === 'CONTAINER' ? 27000 : 24000\n            break\n        case getHQCenterId(): // HQ\n            goalMax = 24000\n            break\n        case getHUBSydneyCenterId(): // HUB Sydney\n            goalMax = 35000\n            break\n        case getHUBHoustonCenterId(): // HUBs de USA\n        case getHUBNorfolkCenterId():\n            goalMax = 23000\n            break\n        case getLatinaDepot(): // Centro 7507 de Brasil\n            goalMax = 39000\n            break\n        default:\n            goalMax = getOrderShippingMethod(state) === 'CONTAINER' ? 20200 : 24000\n    }\n    const goalMaxAcordingUnit = unit === 'KG' ? goalMax : Math.floor(goalMax * getKgPoundRatio())\n\n    return goalMaxAcordingUnit\n}\nexport const getCartTypes = state => {\n    let types = []\n    linesSelector(state).forEach(line => {\n        if (line.bundleId !== null) {\n            if (!types.includes('BUNDLE')) types.push('BUNDLE')\n        } else if (line.lotId !== null) {\n            if (!types.includes('LOT')) types.push('LOT')\n        } else if (line.productId === 'CUT_TO_SIZE') {\n            if (!types.includes('CUT_TO_SIZE')) types.push('CUT_TO_SIZE')\n        } else {\n            if (!types.includes('NORMAL')) types.push('NORMAL')\n        }\n    })\n    return types\n}\nexport const getCartBrands = state => {\n    let brands = []\n    linesSelector(state).forEach(line => {\n        if (!brands.includes(line.brand)) {\n            brands.push(line.brand)\n        }\n    })\n    return brands\n}\nexport const getOrderLenghtBundlesCart = state => {\n    let numOfRealBundles = linesSelector(state).filter(line => {\n        return line.bundleId !== null\n    }).length\n    let numOfCatalogBundles = 0\n    if (getOrderShippingMethod(state) !== 'SINGLE_SLAB') {\n        linesSelector(state).forEach(line => {\n            if (line.bundleId === null && line.lotId === null && line.product.minQty[getOrderShippingMethod(state)] !== 1)\n                //dont count if step is 1\n                numOfCatalogBundles = numOfCatalogBundles + line.qty / line.product.minQty[getOrderShippingMethod(state)]\n        })\n    }\n\n    return numOfRealBundles + numOfCatalogBundles\n}\nexport const getError = state => {\n    return state.orders.error\n}\n\nexport const getPackagingImages = state => state.orders.packagingImages\nexport const isFetchingPackagingImages = state => state.orders.fetchingPackagingImages\n\nexport default orders\n","import { defineMessages } from 'react-intl'\nimport flooring from '../../assets/img/cut-to-size/flooring.svg'\nimport skirting from '../../assets/img/cut-to-size/skirting.svg'\nimport justCut from '../../assets/img/cut-to-size/just-cut.svg'\nimport furnitures from '../../assets/img/cut-to-size/furnitures.svg'\nimport flooring_bmp from '../../assets/img/cut-to-size/Soleria-v2.png'\nimport skirting_bmp from '../../assets/img/cut-to-size/Rodapies-v2.png'\nimport justCut_bmp from '../../assets/img/cut-to-size/solo-corte-v2.png'\nimport furnitures_bmp from '../../assets/img/cut-to-size/Mobiliario-v2.png'\nimport budget_bmp from '../../assets/img/cut-to-size/presupuesto_det.png'\nimport washbasinBath from '../../assets/img/cut-to-size/washbasin-bath.png'\n\n\n// defineMessages(\n//     SOLERIA: ElaborationOptionsMap.SOLERIA,\n//     RODAPIES: ElaborationOptionsMap.RODAPIES,\n//     SOLO_CORTE: ElaborationOptionsMap.SOLO_CORTE,\n//     MOBILIARIO: ElaborationOptionsMap.MOBILIARIO\n// })\n\n// if (typeof require.context === 'undefined') {\n//     const fs = require('fs');\n//     const path = require('path');\n  \n//     require.context = (base = '.', scanSubDirectories = false, regularExpression = /\\.js$/) => {\n//         const files = {};\n\n//         function readDirectory(directory) {\n//             fs.readdirSync(directory).forEach((file) => {\n//                 const fullPath = path.resolve(directory, file);\n//                 if (fs.statSync(fullPath).isDirectory()) {\n//                     if (scanSubDirectories) readDirectory(fullPath);\n//                     return;\n//                 }\n\n//                 if (!regularExpression.test(fullPath)) return;\n//                 files[fullPath] = true;\n//             });\n//         }\n\n//         readDirectory(path.resolve(__dirname, base));\n//         function Module(file) {\n//             return require(file);\n//         }\n\n//         Module.keys = () => Object.keys(files);\n//         return Module;\n//     };\n// }\n\n// const imgOutlineContext = require.context('../../assets/img/cut-to-size/models/outline', false, /\\.(png|jpe?g|svg)$/)\n// const imgDetailsContext = require.context('../../assets/img/cut-to-size/models/detail', false, /\\.(png|jpe?g|svg)$/)\n// const imgExtensionsContext = require.context('../../assets/img/cut-to-size/models/ext', false, /\\.(png|jpe?g|svg)$/)\n// export const ModelsOutlines = imgOutlineContext && imgOutlineContext.keys().map(key =>({[key] : imgOutlineContext(key)}))\n// export const ModelsDetails = imgDetailsContext && imgDetailsContext.keys().map(key =>({[key] : imgDetailsContext(key)}))\n// export const ModelsExtensions = imgExtensionsContext && imgExtensionsContext.keys().map(key =>({[key] : imgExtensionsContext(key)}))\n\nexport const ElaborationOptionsMap = {\n    SOLERIA : {\n        name: {\n            id: 'soleria',\n            defaultMessage: 'Flooring',\n            description: 'cut to size soleria',\n        },\n        icon : flooring,\n        image: flooring_bmp,\n        text: {\n            id: 'flooring_description',\n            defaultMessage: 'Choose flooring in the format, color, finish, and thickness you prefer.',\n            description: 'Choose flooring in the format, color, finish, and thickness you prefer.'\n        },\n        gtmLabel: 'ec_cam_soleria'\n    },\n    RODAPIES : {\n        name: {\n            id: 'rodapies',\n            defaultMessage: 'Skirting',\n            description: 'cut to size rodapies',\n        },\n        icon : skirting,\n        image: skirting_bmp,\n        text: {\n            id: 'skirting_description',\n            defaultMessage: 'Choose the baseboard with the length and width measurements you prefer.',\n            description: 'Choose the baseboard with the length and width measurements you prefer.'\n        },\n        gtmLabel: 'ec_cam_rodapies'\n    },\n    SOLO_CORTE : {\n        name: {\n            id: 'solo_corte',\n            defaultMessage: 'Cut to size',\n            description: 'cut to size solo corte',\n        },\n        icon : justCut,\n        image: justCut_bmp,\n        text: {\n            id: 'just_cut_description',\n            defaultMessage: 'Choose a board from our wide range and we will cut it to your preferred measurements.',\n            description: 'Choose a board from our wide range and we will cut it to your preferred measurements.'\n        },\n        gtmLabel: 'ec_cam_solo_corte'\n    },\n    CUSTOM_MOBILIARIO: {\n        name: {\n            id: 'mobiliario',\n            defaultMessage: 'Mobiliario',\n            description: 'cut to size mobiliario'\n        },\n        icon : furnitures,\n        image: furnitures_bmp,\n        text: {\n            id: 'furnitures_description',\n            defaultMessage: 'Configure your furniture piece. You can add extensions and choose the type of packaging.',\n            description: 'Configure your furniture piece. You can add extensions and choose the type of packaging.'\n        },\n        gtmLabel: 'ec_cam_mobiliario'\n    },\n    MOBILIARIO : {\n        name: {\n            id: 'mobiliario',\n            defaultMessage: 'Mobiliario',\n            description: 'cut to size mobiliario'\n        },\n        icon : furnitures,\n        image: furnitures_bmp,\n        text: {\n            id: 'furnitures_description',\n            defaultMessage: 'Configure your furniture piece. You can add extensions and choose the type of packaging.',\n            description: 'Configure your furniture piece. You can add extensions and choose the type of packaging.'\n        },\n        gtmLabel: 'ec_cam_mobiliario'\n    },\n    BUDGET : {\n        name: {\n            id: 'budget',\n            defaultMessage: 'Presupuesto de elaborado',\n            description: 'cut to size Presupuesto de elaborado'\n        },\n        icon : null,\n        image: budget_bmp,\n        text: {\n            id: 'budget',\n            defaultMessage: 'Quotation cut to size',\n            description: 'Quotation cut to size'\n        },\n        gtmLabel: ''\n    },\n    CONFIGURABLE_BATH : {\n        name: {\n            id: 'washbasing_and_shower_trays',\n            defaultMessage: 'Washbasins and shower trays',\n            description: 'Washbasins and shower trays'\n        },\n        icon : null,\n        image: washbasinBath,\n        text: {\n            id: 'configurable_bath_description',\n            defaultMessage: 'Customize your sink or shower tray using the 3D configurator.',\n            description: 'Customize your sink or shower tray using the 3D configurator.'\n        },\n        gtmLabel: ''\n    }\n}\n\nexport const BrandOptionsMap = {\n    SILESTONE: { name: 'Silestone', icon: 'SILESTONE' , position: 1 },\n    DEKTON: { name: 'Dekton', icon: 'DEKTON', position: 2 },\n    SENSA: { name: 'Sensa', icon: 'SENSA', position: 3 },\n    SCALEA: { name: 'Scalea', icon: 'SCALEA', position: 4 },\n    PREXURY: { name: 'Prexury', icon: 'PREXURY', position: 5 },\n}\n\nexport const Messages = defineMessages({\n    SET_DEADLINE : {\n        id: 'set_deadline_date',\n        defaultMessage: 'Set preferred delivery date',\n        description: 'cut to size Set deadline date',\n    },\n    CHOOSE_MODEL : {\n        id: 'choose_model',\n        defaultMessage: 'Choose model',\n        description: 'cut to size Choose model',\n    },\n    CHOOSE_SHAPE : {\n        id: 'choose_shape',\n        defaultMessage: 'Choose shape',\n        description: 'cut to size Choose shape',\n    },\n    CHOOSE_PROJECT_TYPE : {\n        id: 'choose_project_type',\n        defaultMessage: 'Choose a project type',\n        description: 'cut to size Choose project type',\n    },\n    CHOOSE_FILE_TYPE : {\n        id: 'choose_file_type',\n        defaultMessage: 'Choose a file type',\n        description: 'cut to size Choose file type',\n    },\n    CHOOSE_BRAND : {\n        id: 'choose_brand',\n        defaultMessage: 'Choose brand',\n        description: 'cut to size Choose brand',\n    },\n    CHOOSE_PACKAGING : {\n        id: 'choose_packaging',\n        defaultMessage: 'Choose packaging',\n        description: 'cut to size Choose packaging',\n    },\n    CHOOSE_COLOR : {\n        id: 'choose_color',\n        defaultMessage: 'Choose color',\n        description: 'cut to size Choose color',\n    },\n    CHOOSE_FINISH : {\n        id: 'choose_finish',\n        defaultMessage: 'Choose finish',\n        description: 'cut to size Choose finish',\n    },\n    CHOOSE_ADDON : {\n        id: 'choose_addon',\n        defaultMessage: 'Choose addon',\n        description: 'cut to size Choose addon',\n    },\n    CHOOSE_THICKNESS : {\n        id: 'choose_thickness',\n        defaultMessage: 'Choose thickness',\n        description: 'cut to size Choose thickness',\n    },\n    CHOOSE_FORMAT : {\n        id: 'choose_format',\n        defaultMessage: 'Choose format',\n        description: 'cut to size Choose format',\n    },\n    CHOOSE_EDGE : {\n        id: 'choose_edge',\n        defaultMessage: 'Choose edge',\n        description: 'cut to size Choose edge',\n    },\n    CHOOSE_BEVEL : {\n        id: 'choose_bevel',\n        defaultMessage: 'Choose bevel',\n        description: 'cut to size Choose bevel',\n    },\n    CHOOSE_HEIGHT : {\n        id: 'choose_height',\n        defaultMessage: 'Choose height',\n        description: 'cut to size Choose height',\n    },\n    CHOOSE_WIDTH : {\n        id: 'choose_width',\n        defaultMessage: 'Choose width',\n        description: 'cut to size Choose width',\n    },\n    CHOOSE_OPTION : {\n        id: 'choose_option',\n        defaultMessage: 'Choose option',\n        description: 'cut to size Choose option',\n    },\n    BACK_SELECT_ELABORATED_TYPE : {\n        id: 'back_select_elaborated_type',\n        defaultMessage: 'Back to elaborated type selection',\n        description: 'cut to size Back to elaborated type selection',\n    },\n    MIN_LENGTH : {\n        id: 'min_length',        \n        defaultMessage: 'Minimum length',\n        description: 'cut to size Minimum length',\n    },\n    MAX_LENGTH : {\n        id: 'max_length',        \n        defaultMessage: 'Maximum length',\n        description: 'cut to size Maximum length',\n    },\n    MIN_DIMENSIONS : {\n        id: 'min_dimensions',        \n        defaultMessage: 'Minimum dimensions',\n        description: 'cut to size Minimum dimensions',\n    },\n    MAX_DIMENSIONS : {\n        id: 'max_dimensions',        \n        defaultMessage: 'Maximum dimensions',\n        description: 'cut to size Maximum dimensions',\n    },\n    MEASURE_A : {\n        id: 'measure_a',        \n        defaultMessage: 'Measure A',\n        description: 'cut to size Measure A',\n    },\n    MEASURE_B : {\n        id: 'measure_b',        \n        defaultMessage: 'Measure B',\n        description: 'cut to size Measure B',\n    },\n    MEASURE_C : {\n        id: 'measure_c',        \n        defaultMessage: 'Measure C',\n        description: 'cut to size Measure C',\n    },\n    MEASURE_D : {\n        id: 'measure_d',        \n        defaultMessage: 'Measure D',\n        description: 'cut to size Measure D',\n    },\n    SUCCESS_REQUEST_QUOTE: {\n        id: 'success_request_quote',\n        defaultMessage: 'The budget request has been sent. You\\'ll recieve a response soon. Thanks.',\n        description: 'message showed when an user request a Cut To Size quote'\n    },\n    SOLERIA: {\n        id: 'soleria',\n        defaultMessage: 'Flooring',\n        description: 'cut to size soleria',\n    },\n    RODAPIES: {\n        id: 'rodapies',\n        defaultMessage: 'Skirting',\n        description: 'cut to size rodapies',\n    },\n    SOLO_CORTE: {\n        id: 'solo_corte',\n        defaultMessage: 'Cut to size',\n        description: 'cut to size solo corte',\n    },\n    CUSTOM_MOBILIARIO: {\n        id: 'mobiliario',\n        defaultMessage: 'Mobiliario',\n        description: 'cut to size mobiliario'\n    },\n    MOBILIARIO: {\n        id: 'mobiliario',\n        defaultMessage: 'Mobiliario',\n        description: 'cut to size mobiliario'\n    },\n    BUDGET: {\n        id: 'budget',\n        defaultMessage: 'Presupuesto de elaborado',\n        description: 'cut to size Presupuesto de elaborado'\n    },\n    PACKAGING_10_5 : {\n        id: 'packaging_10_5',\n        defaultMessage: 'Packaging (10,5)',\n        description: 'cut to size Packaging (10,5) label'\n    },\n    SIDE: {\n        id: 'side',\n        defaultMessage: 'Side',\n        description: 'side',\n    },\n    DIAMETER: {\n        id: 'diameter',\n        defaultMessage: 'Diameter',\n        description: 'diameter',\n    },\n    SQUARED: {\n        id: 'squared',\n        defaultMessage: 'Squared',\n        description: 'Squared',\n    },\n    RECTANGULAR: {\n        id: 'rectangular',\n        defaultMessage: 'Rectangular',\n        description: 'Rectangular',\n    },\n    RECTANGULAR_CURVE_RADIUS: {\n        id: 'rectangular_curve_radius',\n        defaultMessage: 'Rectangular curve radius',\n        description: 'Rectangular curve radius',\n    },\n    ELLIPSE: {\n        id: 'ellipse',\n        defaultMessage: 'Ellipse',\n        description: 'Ellipse',\n    },\n    ROUNDED: {\n        id: 'rounded',\n        defaultMessage: 'Rounded',\n        description: 'Rounded',\n    },\n    SIMPLE_PACKAGING : {\n        id: 'simple_packaging',\n        defaultMessage: 'Simple packaging',\n        description: 'Simple packaging'\n    },\n    PACKAGING_A : {\n        id: 'packaging_a',\n        defaultMessage: 'Packaging A',\n        description: 'Packaging A'\n    },\n    PACKAGING_B : {\n        id: 'packaging_b',\n        defaultMessage: 'Packaging B',\n        description: 'Packaging B'\n    },\n    PACKAGING_C : {\n        id: 'packaging_c',\n        defaultMessage: 'Packaging C',\n        description: 'Packaging C'\n    },\n    MITER : {\n        id: 'miter',\n        defaultMessage: 'Miter',\n        description: 'Miter'\n    },\n    POLISHED_MITER : {\n        id: 'polished_miter',\n        defaultMessage: 'Polished miter',\n        description: 'Polished miter'\n    },\n    BULLNOSE : {\n        id: 'bullnose',\n        defaultMessage: 'Bullnose',\n        description: 'Bullnose'\n    },\n    DEMI_BULLNOSE : {\n        id: 'demi_bullnose',\n        defaultMessage: 'Demi bullnose',\n        description: 'Demi bullnose'\n    },\n    PLATNER : {\n        id: 'platner',\n        defaultMessage: 'Platner',\n        description: 'Platner'\n    },\n    OGEE : {\n        id: 'ogee',\n        defaultMessage: 'Ogee',\n        description: 'Ogee'\n    },\n    POLISHED_STRAIGHT : {\n        id: 'polished_straight',\n        defaultMessage: 'Polished straight',\n        description: 'Polished straight'\n    },\n    ROUNDED_BEVEL : {\n        id: 'rounded_bevel',\n        defaultMessage: 'Rounded bevel',\n        description: 'Rounded bevel'\n    },\n    JUST_BEVEL : {\n        id: 'just_bevel',\n        defaultMessage: 'Just bevel',\n        description: 'Just bevel'\n    },\n    B2 : {\n        id: 'B2',\n        defaultMessage: \"[2-3] mm\",\n        description: \"CTS BEVEL [2-3] mm\"\n    },\n    B3 : {\n        id: 'B3',\n        defaultMessage: \"[4-5] mm\",\n        description: \"CTS BEVEL [4-5] mm\",\n    },\n    B4 : {\n        id: 'B4',\n        defaultMessage: \"[6-10] mm\",\n        description: \"CTS BEVEL [6-10] mm\"\n    },\n    FURNITURE_DESCRIPTION: {\n        id: 'furnitures_description',\n        defaultMessage: 'Configure your furniture piece. You can add extensions and choose the type of packaging.',\n        description: 'Configure your furniture piece. You can add extensions and choose the type of packaging.'\n    },\n    SKIRTING_DESCRIPTION: {\n        id: 'skirting_description',\n        defaultMessage: 'Choose the baseboard with the length and width measurements you prefer.',\n        description: 'Choose the baseboard with the length and width measurements you prefer.'\n    },\n    FLOORING_DESCRIPTION: {\n        id: 'flooring_description',\n        defaultMessage: 'Choose flooring in the format, color, finish, and thickness you prefer.',\n        description: 'Choose flooring in the format, color, finish, and thickness you prefer.'\n    },\n    JUST_CUT_DESCRIPTION: {\n        id: 'just_cut_description',\n        defaultMessage: 'Choose a board from our wide range and we will cut it to your preferred measurements.',\n        description: 'Choose a board from our wide range and we will cut it to your preferred measurements.'\n    },\n    CONFIGURABLE_BATH_DESCRIPTION: {\n        id: 'configurable_bath_description',\n        defaultMessage: 'Customize your sink or shower tray using the 3D configurator.',\n        description: 'Customize your sink or shower tray using the 3D configurator.'\n    },\n    with_mesh: {\n        id: 'with_mesh',\n        defaultMessage: 'With mesh',\n        description: 'With mesh'\n    },\n    without_mesh: {\n        id: 'without_mesh',\n        defaultMessage: 'Without mesh',\n        description: 'Without mesh'\n    }\n})\n\nexport const BudgetMessages = defineMessages({\n    FURNITURE: {\n        id: 'furniture',\n        defaultMessage: 'Furniture',\n        description: 'cut to size budget Furniture'\n    },\n    BATH:  {\n        id: 'bath',\n        defaultMessage: 'Bath',\n        description: 'cut to size budget Bath'\n    },\n    KITCHEN:  {\n        id: 'kitchen',\n        defaultMessage: 'Kitchen',\n        description: 'cut to size budget Kitchen'\n    },\n    FACADE:  {\n        id: 'facade',\n        defaultMessage: 'Facade',\n        description: 'cut to size budget Facade'\n    },\n    WALL_CLADING:  {\n        id: 'wall_clading',\n        defaultMessage: 'Wall clading',\n        description: 'cut to size budget Wall clading'\n    },\n    SKIRTING:  {\n        id: 'skirting',\n        defaultMessage: 'Skirting',\n        description: 'cut to size budget Skirting'\n    },\n    CUT_TO_SIZE:  {\n        id: 'cut_to_size',\n        defaultMessage: 'Cut to size',\n        description: 'cut to size budget Cut to size'\n    },\n    OTHER_ELABORATED:  {\n        id: 'other_elaborated',\n        defaultMessage: 'Other elaborated',\n        description: 'cut to size budget Other elaborated'\n    },\n    BLUEPRINT_FILE_TYPE: {\n        id: 'blueprint',\n        defaultMessage: 'Blueprint',\n        description: 'file type blueprint'\n    },\n    LABELS_FILE_TYPE: {\n        id: 'labels',\n        defaultMessage: 'Labels',\n        description: 'file type labels'\n    },\n    EMAIL_FILE_TYPE: {\n        id: 'email',\n        defaultMessage: 'Email',\n        description: 'file email labels'\n    }\n})\n\n\nexport const PreorderMessages = defineMessages({\n    BX10: {\n        id: 'labels', //croquis\n        defaultMessage: 'Labels',\n        description: 'file type labels'\n    },\n    BX03: {\n        id: 'email',\n        defaultMessage: 'Email',\n        description: 'file email labels'\n    },\n    BX01: {\n        id: 'blueprint', //email\n        defaultMessage: 'Blueprint',\n        description: 'file type blueprint'\n    },\n    BX04: {\n        id: 'blueprint', //email\n        defaultMessage: 'Blueprint',\n        description: 'file type blueprint'\n    },\n    BX07: {\n        id: 'blueprint', //email\n        defaultMessage: 'Blueprint',\n        description: 'file type blueprint'\n    },\n    //bx 10 => etiqueta\n    //bx 04 => plano para confirmar\n    //bx 07 => confirmacon pedido\n    GENERIC: {\n        id: 'generic',\n        defaultMessage: 'Generic',\n        description: 'generic file type'\n    }\n})\n\n\n\n\n//TODO AÑADIR NUEVOS IDS *SOLO SE USA PARA MOSTRAR IMAGEN GENÉRICA DEL ELABORADO\nexport const ElaborationOptionsMapById = {\n    80457: ElaborationOptionsMap.SOLERIA,\n    80594: ElaborationOptionsMap.SOLERIA,\n    80596: ElaborationOptionsMap.SOLERIA,\n    80461: ElaborationOptionsMap.RODAPIES,\n    80586: ElaborationOptionsMap.RODAPIES,\n    80588: ElaborationOptionsMap.RODAPIES,\n    80589: ElaborationOptionsMap.RODAPIES,\n    80451: ElaborationOptionsMap.SOLO_CORTE,\n    80561: ElaborationOptionsMap.SOLO_CORTE,\n    80562: ElaborationOptionsMap.SOLO_CORTE,\n    80563: ElaborationOptionsMap.SOLO_CORTE,\n    80565: ElaborationOptionsMap.SOLO_CORTE,\n    80567: ElaborationOptionsMap.SOLO_CORTE,\n    80458: ElaborationOptionsMap.MOBILIARIO\n}\n\n//SOLO SE USA PARA OBTENER EL SKY GENÉRICO DEL ELABORADO EN ANALÍTICAS - FALTA MARCA\nexport const CtsIdsByElaboration = (elaboration, brand) =>  {\n    const map = {\n        SOLERIA: {\n            SILESTONE: 80594,\n            SCALEA: 80596\n        },\n        RODAPIES: {\n            SILESTONE: 80586,\n            DEKTON: 80588,\n            SCALEA: 80589\n        },\n        SOLO_CORTE: {\n            SILESTONE: 80561,\n            DEKTON: 80562,\n            SCALEA: 80563,\n            SENSA: 80565,\n            PREXURY: 80567\n        },\n        MOBILIARIO: 80458,\n        CUSTOM_MOBILIARIO: 80458\n    }\n\n    if (elaboration === 'SOLO_CORTE') {\n        return map.SOLO_CORTE[brand] ? map.SOLO_CORTE[brand] : 80451\n    }\n    if (elaboration === 'SOLERIA') {\n        return map.SOLERIA[brand] ? map.SOLERIA[brand] : 80457\n    }\n    if (elaboration === 'RODAPIES') {\n        return map.RODAPIES[brand] ? map.RODAPIES[brand] : 80461\n    }\n\n    return map[elaboration]\n}\n\n// const TranslationMessages = {}\n// for (const [key, value] of Object.entries(ElaborationOptionsMap)) TranslationMessages[key] = value.name\n// for (const [key, value] of Object.entries(Messages)) TranslationMessages[key] = value\n// defineMessages(TranslationMessages)","import { getCenterData, getSelectedCenter } from '../centers/reducers'\n\nexport const initState = {\n    shippingAddresses: null,\n    isLoading: false,\n    fetchedOn: null,\n    ikeaSelectedShippingAddress: null,\n    endiSelectedShippingAddressEcosentinoKey: null,\n    endiSelectedShippingType: null,\n    remembered: false\n}\nconst shippingAddresses = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_SHIPPING_ADDRESSES_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_SHIPPING_ADDRESSES_SUCCESS':\n            return Object.assign({}, state, { shippingAddresses: action.data, isLoading: false, fetchedOn: action.fetchedOn })\n        case 'FETCH_SHIPPING_ADDRESSES_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'CHANGE_IKEA_SHIPPING_ADDRESS':\n            return Object.assign({}, state, { ikeaSelectedShippingAddress: action.shippingAddressId })\n        case 'CHANGE_ENDI_SHIPPING_ADDRESS':\n            return Object.assign({}, state, {\n                endiSelectedShippingAddressEcosentinoKey: action.shippingAddressEcosentinoKey,\n                endiSelectedShippingType: action.endiSelectedShippingType,\n                remembered: true\n            })\n        case 'REMEMBER_SELECT_SHIPPING_ADDRESS_ENDI':\n            return Object.assign({}, state, { endiSelectedShippingAddressEcosentinoKey: null, endiSelectedShippingType: null, remembered: false })\n        case 'SIMPLE_IMPERSONATE_SUCCESS':\n        case 'LOGOUT':\n            return initState\n        default:\n            return state\n    }\n}\n\nexport const getShippingAddresses = state => {\n    if (!state.shippingAddresses.shippingAddresses) return null\n    return state.shippingAddresses.shippingAddresses.shippingAddresses\n}\nexport const getIsShippingAddressRemembered = state => state.shippingAddresses.remembered\n\nexport const getEndiSelectedShippingAddressId = state => state.shippingAddresses.endiSelectedShippingAddressEcosentinoKey\n\nexport const getEndiSelectedShippingAddress = state => {\n    return getShippingAddresses(state).find(shippingAddress => {\n        return shippingAddress.ecosentinoKey === state.shippingAddresses.endiSelectedShippingAddressEcosentinoKey\n    })\n}\n\nexport const getEndiShippingTypeByShippingAddress = state => state.shippingAddresses.endiSelectedShippingType\n\nexport const getShippingAddressFilteredToSelectByCenter = state => {\n    if (state.shippingAddresses.shippingAddresses && getCenterData(state)) {\n        let shippingTypes = getCenterData(state).shippingTypes\n        const shippingAddressAllowed = state.shippingAddresses.shippingAddresses.shippingAddresses.filter(shippingAddress => {\n            let isAllowed = false\n            shippingTypes.forEach(shippingType => {\n                if (\n                    (shippingAddress.allowedShippingTypes.includes(shippingType) && shippingAddress.centerId == getSelectedCenter(state)) ||\n                    (shippingAddress.allowedShippingTypes.includes(shippingType) && shippingAddress.salesOrg == 1100)\n                )\n                    isAllowed = true\n            })\n            return isAllowed\n        })\n        return shippingAddressAllowed.map(shippingAddress => ({\n            value: shippingAddress.ecosentinoKey,\n            label:\n                shippingAddress.centerName +\n                ' ' +\n                shippingAddress.customerName +\n                ' ' +\n                shippingAddress.address +\n                ' ' +\n                shippingAddress.zipCode +\n                ' ' +\n                shippingAddress.city +\n                ' ' +\n                shippingAddress.country\n        }))\n    } else return []\n}\nexport const getShippingAddressesCenters = state => {\n    if (!state.shippingAddresses.shippingAddresses) return null\n    return state.shippingAddresses.shippingAddresses.shippingCenters\n}\nexport const getCostCenters = state => {\n    if (!state.shippingAddresses.shippingAddresses) return null\n    return state.shippingAddresses.shippingAddresses.costCenters\n}\nexport const isLoadingShippingAddress = state => {\n    return state.shippingAddresses.isLoading\n}\nexport const getFetchedOn = state => {\n    return state.shippingAddresses.fetchedOn\n}\nexport const getSelectedShippingAddressForIkea = state => {\n    return state.shippingAddresses.ikeaSelectedShippingAddress\n}\n\nexport const getFirstShippingAddres = state => {\n    if (!state.shippingAddresses.shippingAddresses) return null\n    return state.shippingAddresses.shippingAddresses.shippingAddresses[0]\n}\n\nexport default shippingAddresses\n","import { getShippingMethod, getSelectedCenter, getHQCenterId, getNaturalStoneSpainCenterId, getSpainCenters, isShippingTypeContainerWhenIreland } from '../centers/reducers'\nimport { getLanguage, getShowSaleConditions, getShowHealthConditions, getShowCheckboxAustraliaLegalProcess } from '../ui/reducers'\nimport moment from 'moment'\nimport {\n    getIsCartCutToSize,\n    getCartSlaDays,\n    getFormatedLinesDeliveryDates\n} from '../cart/reducers'\n\nexport const initState = {\n    deliveryDate: null,\n    countryOfSend: null,\n    alert: null,\n    destination: null,\n    hasSelectedCenter: null,\n    selectedShippingAddress: null,\n    selectedShippingAddressId: null,\n    selectedShippingCenterId: null,\n    selectedShippingSalesOrg: null,\n    selectedShippingEcosentinoKey: null,\n    selectedCostCenter: null,\n    ikeaTransportArea: null,\n    shippingAddressesEmails: {},\n    profileConfigurationEmail: [],\n    comments: '',\n    po: '',\n    cutToSizeFile: null,\n    storeId: null,\n    employeeId: null,\n    lowesData: { firstName: null, lastName: null, email: null, title: null },\n    installationData: {\n        name: null,\n        address: null,\n        town: null,\n        province: null,\n        zipCode: null,\n        phone: null\n    },\n    saleConditionsCheck: null,\n    haveOffer: false,\n    healthConditionsCheck: null,\n    australiaLegalProcessConditionsCheck: null,\n    checkoutStepOneButtonNextDisabled: null,\n    virtualVisitSalesforceIds: null,\n    loadingVvSalesforceIds: false,\n    virtualVisitData: null,\n    // isVirtualVisitMandatorySfId: false,\n\n}\n\nconst checkout = (state = initState, action) => {\n    switch (action.type) {\n\n        case 'CHECKOUT_SET_DELIVERYDATE':\n            return { ...state, deliveryDate: action.deliveryDate }\n        case 'CHECKOUT_SET_COUNTRYOFSEND':\n            return { ...state, countryOfSend: action.countryOfSend }\n        case 'CHECKOUT_SET_ALERT':\n            return { ...state, alert: action.alert }\n        case 'CHECKOUT_SET_DESTINATION':\n            return { ...state, destination: action.destination }\n        case 'CHECKOUT_SET_HASSELECTEDCENTER':\n            return { ...state, hasSelectedCenter: action.hasSelectedCenter }\n        case 'CHECKOUT_SET_SELECTEDSHIPPINGADDRESS':\n            return { ...state, selectedShippingAddress: action.selectedShippingAddress }\n        case 'CHECKOUT_SET_SELECTEDSHIPPINGADDRESSID':\n            return { ...state, selectedShippingAddressId: action.selectedShippingAddressId }\n        case 'CHECKOUT_SET_SELECTEDSHIPPINGSALESORG':\n            return { ...state, selectedShippingSalesOrg: action.selectedShippingSalesOrg }\n        case 'CHECKOUT_SET_SELECTEDSHIPPINGECOSENTINOKEY':\n            return { ...state, selectedShippingEcosentinoKey: action.ecosentinoKey }\n\n        case 'CHECKOUT_SET_SELECTEDSHIPPINGCENTERID':\n            return { ...state, selectedShippingCenterId: action.selectedShippingCenterId }\n        case 'CHECKOUT_SET_SELECTEDCOSTCENTER':\n            return { ...state, selectedCostCenter: action.selectedCostCenter }\n        case 'CHECKOUT_SET_IKEATRANSPORTAREA':\n            return { ...state, ikeaTransportArea: action.ikeaTransportArea }\n        case 'CHECKOUT_SET_SHIPPINGADDRESSESEMAILS':\n            return { ...state, shippingAddressesEmails: action.shippingAddressesEmails }\n        case 'CHECKOUT_SET_PROFILECONFIGURATIONEMAIL':\n            return { ...state, profileConfigurationEmail: action.profileConfigurationEmail }\n        case 'CHECKOUT_SET_COMMENTS':\n            return { ...state, comments: action.comments }\n        case 'CHECKOUT_SET_PO':\n            return { ...state, po: action.po }\n        case 'CHECKOUT_SET_CTS_FILE':\n            return { ...state, cutToSizeFile: action.file }\n        case 'CHECKOUT_SET_STOREID':\n            return { ...state, storeId: action.storeId }\n        case 'CHECKOUT_SET_EMPLOYEEID':\n            return { ...state, employeeId: action.employeeId }\n        case 'CHECKOUT_SET_LOWES_DATA_FIRST_NAME':\n            return { ...state, lowesData: { ...state.lowesData, firstName: action.firstName } }\n        case 'CHECKOUT_SET_LOWES_DATA_LAST_NAME':\n            return { ...state, lowesData: { ...state.lowesData, lastName: action.lastName } }\n        case 'CHECKOUT_SET_LOWES_DATA_EMAIL':\n            return { ...state, lowesData: { ...state.lowesData, email: action.email } }\n        case 'CHECKOUT_SET_LOWES_DATA_TITLE':\n            return { ...state, lowesData: { ...state.lowesData, title: action.title } }\n        case 'CHECKOUT_INSTALLATION_DATA_SET_NAME_IKEA':\n            return { ...state, installationData: { ...state.installationData, name: action.name } }\n        case 'CHECKOUT_INSTALLATION_DATA_SET_ADDRESS_INSTALLATION_IKEA':\n            return { ...state, installationData: { ...state.installationData, address: action.address } }\n        case 'CHECKOUT_INSTALLATION_DATA_SET_TOWN':\n            return { ...state, installationData: { ...state.installationData, town: action.town } }\n        case 'CHECKOUT_INSTALLATION_DATA_SET_PROVINCE':\n            return { ...state, installationData: { ...state.installationData, province: action.province } }\n        case 'CHECKOUT_INSTALLATION_DATA_SET_ZIPCODE':\n            return { ...state, installationData: { ...state.installationData, zipCode: action.zipCode } }\n        case 'CHECKOUT_INSTALLATION_DATA_SET_PHONE':\n            return { ...state, installationData: { ...state.installationData, phone: action.phone } }\n        case 'CHECKOUT_TOGGLE_SALE_CONDITION_CHECK':\n            return { ...state, saleConditionsCheck: action.checked }\n        case 'CHECKOUT_TOGGLE_HEALTH_CONDITION_CHECK':\n            return { ...state, healthConditionsCheck: action.checked }\n        case 'CHECKOUT_HAVE_OFFER':\n            return { ...state, haveOffer: true }\n        case 'CHECKOUT_HAVE_NOT_OFFER':\n            return { ...state, haveOffer: false }\n        case 'CHECKOUT_TOGGLE_AUSTRALIA_LEGAL_PROCESS_CONDITION_CHECK':\n            return { ...state, australiaLegalProcessConditionsCheck: action.checked }\n        case 'CHECKOUT_STEP_ONE_BUTTON_NEXT_DISABLED':\n            return { ...state, checkoutStepOneButtonNextDisabled: action.checkoutStepOneButtonNextDisabled}\n\n        case 'SET_VIRTUAL_VISIT_DATA':\n            return { ...state, virtualVisitData: action.vvData }\n        case 'FETCH_VV_SALESFORCE_IDS_REQUEST':\n            return { ...state, loadingVvSalesforceIds: true }\n        case 'FETCH_VV_SALESFORCE_IDS_SUCCESS':\n            return { ...state, virtualVisitSalesforceIds: action.response, loadingVvSalesforceIds: false }\n        case 'FETCH_VV_SALESFORCE_IDS_FAILURE':\n            return { ...state, loadingVvSalesforceIds: false }\n\n        //submit checkout ??\n        case 'CHECKOUT_RESET':\n            const virtualVisitSalesforceIds = state.virtualVisitSalesforceIds\n            return { ...initState, virtualVisitSalesforceIds}\n        default:\n            return state\n    }\n}\nexport const getHealthConditionsCheck = state => {\n    return state.checkout.healthConditionsCheck\n}\nexport const canSendCheckoutHealthConditions = state => {\n    return !getShowHealthConditions(state) || (getShowHealthConditions(state) && getHealthConditionsCheck(state))\n}\n\nexport const getAustraliaLegalProcessConditionsCheck = state => {\n    return state.checkout.australiaLegalProcessConditionsCheck\n}\n\nexport const canSendCheckoutAustraliaLegalProcessConditions = state => {\n    return !getShowCheckboxAustraliaLegalProcess(state) || (getShowCheckboxAustraliaLegalProcess(state) && getAustraliaLegalProcessConditionsCheck(state))\n}\n\nexport const getSaleConditionsCheck = state => {\n    return state.checkout.saleConditionsCheck\n}\nexport const canSendCheckoutSaleConditions = state => {\n    return !getShowSaleConditions(state) || (getShowSaleConditions(state) && getSaleConditionsCheck(state))\n}\nexport const getDeliveryDate = state => {\n    return state.checkout.deliveryDate\n}\nexport const getCountryOfSend = state => {\n    return state.checkout.countryOfSend\n}\nexport const getAlert = state => {\n    return state.checkout.alert\n}\nexport const getDestination = state => {\n    return state.checkout.destination\n}\nexport const getHasSelectedCenter = state => {\n    return state.checkout.hasSelectedCenter\n}\nexport const getSelectedShippingAddress = state => {\n    return state.checkout.selectedShippingAddress\n}\nexport const getSelectedShippingAddressId = state => {\n    return state.checkout.selectedShippingAddressId\n}\n\nexport const getSelectedShippingCenterId = state => {\n    return state.checkout.selectedShippingCenterId\n}\nexport const getSelectedShippingSalesOrg = state => {\n    return state.checkout.selectedShippingSalesOrg\n}\nexport const getSelectedShippingEcosentinoKey = state => {\n    return state.checkout.selectedShippingEcosentinoKey\n}\n\nexport const getSelectedCostCenter = state => {\n    return state.checkout.selectedCostCenter\n}\nexport const getIkeaTransportArea = state => {\n    return state.checkout.ikeaTransportArea\n}\nexport const getShippingAddressesEmails = state => {\n    return state.checkout.shippingAddressesEmails\n}\nexport const getProfileConfigurationEmail = state => {\n    return state.checkout.profileConfigurationEmail\n}\nexport const getHasDestination = state => {\n    return getShippingMethod(state) === 'CONTAINER'\n}\nexport const getComments = state => {\n    return state.checkout.comments\n}\nexport const getPo = state => {\n    return state.checkout.po\n}\n\nexport const getCutToSizeFile = state => {\n    return state.checkout.cutToSizeFile\n}\nexport const getStoreId = state => {\n    return state.checkout.storeId\n}\nexport const getEmployeeId = state => {\n    return state.checkout.employeeId\n}\nexport const getLowesDataFirstName = state => state.checkout.lowesData.firstName\nexport const getLowesDataLastName = state => state.checkout.lowesData.lastName\nexport const getLowesDataEmail = state => state.checkout.lowesData.email\nexport const getLowesDataTitle = state => state.checkout.lowesData.title\n\nexport const getInstallationDataName = state => {\n    return state.checkout.installationData.name\n}\nexport const getInstallationDataAddress = state => {\n    return state.checkout.installationData.address\n}\nexport const getInstallationDataTown = state => {\n    return state.checkout.installationData.town\n}\nexport const getInstallationDataProvince = state => {\n    return state.checkout.installationData.province\n}\nexport const getInstallationDataZipCode = state => {\n    return state.checkout.installationData.zipCode\n}\nexport const getInstallationDataPhone = state => {\n    return state.checkout.installationData.phone\n}\nexport const getHaveOffer = state => {\n    return state.checkout.haveOffer\n}\nexport const canSeeVirtualVisitOptions = state => {\n    return (state.login.impersonatedBy === 'VITORIA' || state.login.impersonatedBy === 'VITORIAFT') && state.login.userType === 'CUSTOMER'\n    //&& getSalesOrg(state) == '2012'\n    //&& getSelectedCenter(state) == getLatinaVitoriaCenterId()\n}\nexport const getVirtualVisitSalesforceIds = state => {\n    return state.checkout.virtualVisitSalesforceIds\n}\n\nexport const getIsVirtualVisitMandatorySfId = state => {\n    return state.checkout.virtualVisitData\n        && (state.checkout.virtualVisitData.type === 'virtual_visit' || state.checkout.virtualVisitData.isVirtualPromo)\n        && state.checkout.virtualVisitData.salesforceId === null\n}\n\nexport const getMinRequiredDate = state => {\n    if (!getSelectedShippingAddress(state)) return 1\n    let minDate = 1\n    const iberia = [\n        '7701',\n        '7702',\n        '7703',\n        '7704',\n        '7705',\n        '7706',\n        '7707',\n        '7708',\n        '7709',\n        '7710',\n        '7711',\n        '7712',\n        '7713',\n        '7714',\n        '7715',\n        '7716',\n        '7717',\n        '7718',\n        '7719'\n    ]\n    const usaWest = ['7601', '7605', '7608', '7619', '7621', '7620', '7628', '7622', '7610', '7632', '7618', '7623', '7625', '7635']\n    const usaEast = [\n        '7602',\n        '7603',\n        '7604',\n        '7605',\n        '7606',\n        '7607',\n        '7609',\n        '7612',\n        '7613',\n        '7624',\n        '7611',\n        '7614',\n        '7615',\n        '7616',\n        '7643',\n        '7634',\n        '7630',\n        '7626',\n        '7617',\n        '7627',\n        '7629',\n        '7631',\n        '7633',\n        '7637',\n        '7636',\n        '7638',\n        '7640',\n        '7642',\n        '7666'\n    ]\n    const ukOrScandinavia = ['2002', '2038', '2039', '2016', '2007', '2015']\n    const latam = ['2012', '2026', '2027']\n    const europe = ['2000', '2001', '2004', '2008', '2009', '2010', '2014', '2042','1100', '2049', '2047', '2050']\n    const canada = ['2032', '2036']\n    const israel = ['2021']\n    const turkeyAndMiddleEast = ['2018', '2035', '2048', '2045']\n    const asia = ['2017', '2043', '2034']\n    const southafrica = ['2041']\n    const australiaAndOceania = ['2031', '2040']\n    if ((getSelectedCenter(state) === getHQCenterId() || getSelectedCenter(state) === getNaturalStoneSpainCenterId()) && getShippingMethod !== 'SINGLE_SLAB') {\n        let minDateForOrderFromHQ = 7\n        if (getSelectedCenter(state) === getNaturalStoneSpainCenterId()) minDateForOrderFromHQ = 3\n\n        // Europa - 9 dias\n        if (europe.includes(getSelectedShippingAddress(state).salesOrg)) minDate = 9\n        // Iberia 8 dias\n        if(iberia.includes(getSelectedShippingAddress(state).centerId)) minDate = 1\n        // UK + Escandinavia - 2 semanas\n        if (ukOrScandinavia.includes(getSelectedShippingAddress(state).salesOrg)) minDate = 14\n        // Israel - 3 semanas\n        if (israel.includes(getSelectedShippingAddress(state).salesOrg)) minDate = 14\n        // Turquía + Oriente Próximo - 4 semanas\n        if (turkeyAndMiddleEast.includes(getSelectedShippingAddress(state).salesOrg)) minDate = 21\n        // USA costa este - 5 semanas\n        if (usaEast.includes(getSelectedShippingAddress(state).centerId)) minDate = 28\n        // USA costa oeste - 7 semanas\n        if (usaWest.includes(getSelectedShippingAddress(state).centerId)) minDate = 42\n        // Canada - 6 semanas\n        if (canada.includes(getSelectedShippingAddress(state).salesOrg)) minDate = 42\n        // Asia - 7 semanas\n        if (asia.includes(getSelectedShippingAddress(state).salesOrg)) minDate = 42\n        // Australia - 9 Semanas\n        if (australiaAndOceania.includes(getSelectedShippingAddress(state).salesOrg)) minDate = 56\n        // Sudáfrica - 5 semanas\n        if (southafrica.includes(getSelectedShippingAddress(state).salesOrg)) minDate = 28\n        // América latina - 7 semanas\n        if (latam.includes(getSelectedShippingAddress(state).salesOrg)) minDate = 42\n\n        minDate = minDate + minDateForOrderFromHQ\n    }else{\n        minDate = getCartSlaDays(state)\n    }\n\n    return minDate\n}\n\nexport const getCheckoutData = (isCustomer, state) => {\n    let checkoutData = {\n        storeId: getStoreId(state),\n        shippingAddressId: getSelectedShippingAddressId(state),\n        shippingCenterId: getSelectedShippingCenterId(state),\n        shippingSalesOrg: getSelectedShippingSalesOrg(state),\n        ecosentinoKey: getSelectedShippingEcosentinoKey(state),\n        costCenterId: getSelectedCostCenter(state),\n        preferredDeliveryDate: (!isCustomer && getDeliveryDate(state)) ? moment(getDeliveryDate(state)).format('YYYY/MM/DD') : null,\n        linesPreferredDeliveryDates: getFormatedLinesDeliveryDates(state),\n        destination: getDestination(state),\n        po: getPo(state),\n        comments: getComments(state),\n        lang: getLanguage(state),\n        shippingType: getShippingMethod(state, isShippingTypeContainerWhenIreland(state)),\n        ikeaTransportArea: getIkeaTransportArea(state),\n        employeeId: getEmployeeId(state),\n        haveCutToSize: getIsCartCutToSize(state),\n        saleConditionsCheck: getSaleConditionsCheck(state),\n        haveOffer: getHaveOffer(state),\n        cutToSizeFile: getCutToSizeFile(state),\n        healthConditionsCheck: getHealthConditionsCheck(state),\n        healthConditionsVersion: getHealthConditionsVersion(state),\n        australiaLegalProcessConditionsCheck: getAustraliaLegalProcessConditionsCheck(state),\n        virtualVisitData: state.checkout.virtualVisitData\n    }\n\n    return checkoutData\n}\n\nexport const getCheckoutStepOneButtonNextDisabled = state => {\n    return state.checkout.checkoutStepOneButtonNextDisabled\n}\n\nexport const getHealthConditionsVersion = (state) => {\n    if (getShowHealthConditions(state)) {\n        if (getUseOldHealthConditionsWorkflow(state)) {\n            return null\n        } else {\n            return 'V.02-01/2025'\n        }\n    }\n\n    return null\n}\n\n/**\n * Determines whether to use the old acceptance flow of health conditions.\n * @returns {boolean}\n */\nexport const getUseOldHealthConditionsWorkflow = state => {\n    const spainCenters = getSpainCenters()\n\n    if (spainCenters.includes(getSelectedCenter(state).toString())) {\n        return true\n    }\n\n    return false\n}\n\nexport default checkout\n","import {\n    getCurrent, getFullUnits,\n    getGoalMax,\n    getGoalMin,\n    getThicknessInCart,\n    getUnitsForQty,\n    isMallCartForContainer,\n    qtySelector\n} from '../cart/reducers'\nimport {\n    getDestination,\n    getHasDestination,\n    getLowesDataEmail,\n    getLowesDataFirstName,\n    getLowesDataLastName,\n    getSelectedShippingCenterId\n} from './reducers'\nimport {\n    getHasMinWeight,\n    getShippingMethod,\n    getShippingMethodWithoutWeights,\n    isLatinaVitoria,\n    isShippingTypeContainerWhenIreland\n} from '../centers/reducers'\nimport { getWeightUnit } from '../profile-configuration/reducers'\nimport { getShippingAddresses } from '../shipping-addresses/reducers'\nimport { setLinesSlaDate } from '../cart/actions'\nimport {getToken} from \"../login/reducers\";\nimport * as api from \"../api\";\nimport { FormattedDate } from 'react-intl'\n\n\nexport const setDeliveryDate = deliveryDate => (dispatch) => {\n    dispatch({ type: 'CHECKOUT_UNSET_ALL_LINES_DELIVERYDATES' })\n    return dispatch({ type: 'CHECKOUT_SET_DELIVERYDATE', deliveryDate })\n}\nexport const setStep = step => (dispatch, getState) => {\n           dispatch({ type: 'CHECKOUT_SET_STEP', step: step })\n       }\nexport const setCountryOfSend = countryOfSend => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_COUNTRYOFSEND', countryOfSend })\n}\nexport const setAlert = () => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_ALERT', alert: 'alert' })\n}\nexport const setDestination = destination => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_DESTINATION', destination })\n}\nexport const setHasSelectedCenter = hasSelectedCenter => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_HASSELECTEDCENTER', hasSelectedCenter })\n}\nexport const setSelectedShippingAddress = selectedShippingAddress => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_SELECTEDSHIPPINGADDRESS', selectedShippingAddress })\n}\nexport const setSelectedShippingAddressId = selectedShippingAddressId => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_SELECTEDSHIPPINGADDRESSID', selectedShippingAddressId })\n}\nexport const setSelectedShippingCenterId = selectedShippingCenterId => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_SELECTEDSHIPPINGCENTERID', selectedShippingCenterId })\n}\nexport const setSelectedShippingAddressEcosentinoKey = ecosentinoKey => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_SELECTEDSHIPPINGECOSENTINOKEY', ecosentinoKey })\n}\nexport const setSelectedShippingAddressSalesOrg = selectedShippingSalesOrg => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_SELECTEDSHIPPINGSALESORG', selectedShippingSalesOrg })\n}\nexport const setSelectedCostCenter = selectedCostCenter => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_SELECTEDCOSTCENTER', selectedCostCenter })\n}\nexport const setIkeaTransportArea = ikeaTransportArea => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_IKEATRANSPORTAREA', ikeaTransportArea })\n}\nexport const setShippingAddressesEmails = shippingAddressesEmails => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_SHIPPINGADDRESSESEMAILS', shippingAddressesEmails })\n}\nexport const setProfileConfigurationEmail = profileConfigurationEmail => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_PROFILECONFIGURATIONEMAIL', profileConfigurationEmail })\n}\nexport const toggleSaleConditionsCheck = checked => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_TOGGLE_SALE_CONDITION_CHECK', checked })\n}\nexport const toggleHealthConditionsCheck = checked => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_TOGGLE_HEALTH_CONDITION_CHECK', checked })\n}\nexport const toggleAustraliaLegalProcessConditionsCheck = checked => (dispatch) => {\n    dispatch({ type: 'CHECKOUT_TOGGLE_AUSTRALIA_LEGAL_PROCESS_CONDITION_CHECK', checked })\n}\nexport const toggleVirtualVisitMandatorySfId = isMandatory => (dispatch) => {\n    dispatch({ type: 'CHECKOUT_TOGGLE_VIRTUAL_VISIT_MANDATORY_SF_ID', isMandatory })\n}\nexport const setVirtualVisitData = vvData => (dispatch) => {\n    dispatch({ type: 'SET_VIRTUAL_VISIT_DATA', vvData })\n}\n\n//Datos de instalación de ikea (start)\nexport const setInstallationDataName = name => (dispatch, getState) => dispatch({ type: 'CHECKOUT_INSTALLATION_DATA_SET_NAME_IKEA', name })\nexport const setInstallationDataAddress = address => (dispatch, getState) => dispatch({ type: 'CHECKOUT_INSTALLATION_DATA_SET_ADDRESS_INSTALLATION_IKEA', address })\nexport const setInstallationDataTown = town => (dispatch, getState) => dispatch({ type: 'CHECKOUT_INSTALLATION_DATA_SET_TOWN', town })\nexport const setInstallationDataProvince = province => (dispatch, getState) => dispatch({ type: 'CHECKOUT_INSTALLATION_DATA_SET_PROVINCE', province })\nexport const setInstallationDataZipCode = zipCode => (dispatch, getState) => dispatch({ type: 'CHECKOUT_INSTALLATION_DATA_SET_ZIPCODE', zipCode })\nexport const setInstallationDataPhone = phone => (dispatch, getState) => dispatch({ type: 'CHECKOUT_INSTALLATION_DATA_SET_PHONE', phone })\n//Datos de instalacion de ikea (end)\n\nexport const setComments = comments => (dispatch, getState) => {\n    let commentsWithouthEmojis = comments.replace(/([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g, '')\n    dispatch({ type: 'CHECKOUT_SET_COMMENTS', comments: commentsWithouthEmojis })\n}\nexport const setPo = po => (dispatch, getState) => {\n    let poWithouthEmojis = po.replace(/([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g, '')\n    dispatch({ type: 'CHECKOUT_SET_PO', po: poWithouthEmojis })\n}\nexport const setStoreId = storeId => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_STOREID', storeId })\n}\nexport const setCutToSizeFile = file => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_CTS_FILE', file })\n}\nexport const setEmployeeId = employeeId => (dispatch, getState) => {\n    dispatch({ type: 'CHECKOUT_SET_EMPLOYEEID', employeeId })\n}\nexport const setLowesDataFirstName = firstName => (dispatch, getState) => dispatch({ type: 'CHECKOUT_SET_LOWES_DATA_FIRST_NAME', firstName })\nexport const setLowesDataLastName = lastName => (dispatch, getState) => dispatch({ type: 'CHECKOUT_SET_LOWES_DATA_LAST_NAME', lastName })\nexport const setLowesDataEmail = email => (dispatch, getState) => dispatch({ type: 'CHECKOUT_SET_LOWES_DATA_EMAIL', email })\nexport const setLowesDataTitle = title => (dispatch, getState) => dispatch({ type: 'CHECKOUT_SET_LOWES_DATA_TITLE', title })\n\nexport const canSendLowesData = () => (dispatch, getState) => !!(getLowesDataFirstName(getState()) && getLowesDataLastName(getState()) && getLowesDataEmail(getState()))\n\nexport const resetCheckout = () => (dispatch, getStaet) => {\n    return Promise.resolve(dispatch({ type: 'CHECKOUT_RESET' }))\n}\n\nexport const canSendMinMaxCheckout = () => (dispatch, getState) => {\n    const state = getState()\n\n    const currentWeight = getCurrent(state, getWeightUnit(state))\n    const goalMax = getGoalMax(state, getWeightUnit(state))\n    const goalMin = getGoalMin(state, getWeightUnit(state))\n    const shippingMethod = getShippingMethod(state)\n    const shippingMethodWithoutWeight = getShippingMethodWithoutWeights(state)\n\n\n\n    let unitsForQty;\n\n    if(shippingMethodWithoutWeight === 'SINGLE_SLAB' || shippingMethodWithoutWeight === 'ENDI_TRUCK' || shippingMethodWithoutWeight === 'ENDI_CONTAINER'){\n        unitsForQty = getUnitsForQty(goalMin, goalMax, currentWeight, false)\n    } else if(shippingMethodWithoutWeight === 'CONTAINER' || shippingMethodWithoutWeight === 'DIRECT_TRUCK' || shippingMethodWithoutWeight === 'FULL_TRUCK'){\n        unitsForQty = getUnitsForQty(goalMin, goalMax, currentWeight)\n    }\n\n    //if we are buying a container on natural stone brazil, only check the thickness rule\n    if (isMallCartForContainer(state)) {\n        unitsForQty = getUnitsForQty(goalMin, goalMax, currentWeight)\n        dispatch(setUnitsForCart(unitsForQty))\n\n        return unitsForQty.isValid\n    }\n    if (isLatinaVitoria(state)) {\n        return dispatch(canSendNaturalStoneContainer())\n    }\n    dispatch(setUnitsForCart(unitsForQty))\n\n    return (\n        (unitsForQty && unitsForQty.isValid) ||\n        (getHasMinWeight(state)) ||\n        (shippingMethod === 'SINGLE_SLAB') ||\n        shippingMethod === 'MKTOOLS' ||\n        shippingMethod === 'LOWES_CUSTOMER_SAMPLES'\n    )\n}\n\nexport const canSendNaturalStoneContainer = () => (dispatch, getState) => {\n    const conditionForNaturalStoneContainer = isLatinaVitoria(getState())\n\n    if (conditionForNaturalStoneContainer) {\n        const thickness = getThicknessInCart(getState())\n        const unitsForQty = getNaturalStoneContainers(thickness, getState());\n\n\n        dispatch(setUnitsForCart(unitsForQty))\n\n        return unitsForQty.isValid\n    }\n    return false\n}\nexport const getNaturalStoneContainers = (thickness, state) => {\n    const qty = qtySelector(state);\n    let minQty = 1; \n    let maxQty;\n\n\n    //DISABLED REQUEST BY NATURAL STONE TEAM\n    if (thickness.includes('3.0') && thickness.includes('2.0')) {\n        minQty = 1;\n        maxQty = 66;\n    } else if (thickness.includes('3.0')) {\n        minQty = 1;\n        maxQty = 42;\n    } else if (thickness.includes('2.0')) {\n        minQty = 1;\n        maxQty = 70;\n    } else {\n        return 0;\n    }\n\n    return getUnitsForQty(minQty, maxQty, qty)\n}\n\nexport const setUnitsForCart = (unitsForQty) => (dispatch, getState) => {\n    const stateFullUnits = getFullUnits(getState())\n\n    if(unitsForQty && (stateFullUnits.units !== unitsForQty.units ||\n      stateFullUnits.isValid !== unitsForQty.isValid ||\n      stateFullUnits.qtyForNextUnit !== unitsForQty.qtyForNextUnit)){\n        dispatch({type: 'SET_FULL_UNITS_FOR_CART', unitsForQty})\n    }\n\n}\n//OBSOLETE 06/07/2020 with cansendnaturalstonecontainer\n// export const canSendBundleLimit = () => (dispatch, getState) => {\n//     let conditionForMaxBundle = getSelectedShippingAddress(getState()) && getShippingMethod(getState()) === 'CONTAINER' && getSelectedCenter(getState()) === 7500\n\n//     if (conditionForMaxBundle) {\n//         let bundleLimit = getCountryOfSend(getState()) === 'IN' ? 6 : 7\n//         return getLenghtBundlesCart(getState()) === bundleLimit\n//     }\n//     return true\n// }\n\nexport const canSendNeedDestination = () => (dispatch, getState) => {\n    const state = getState()\n\n    if (isShippingTypeContainerWhenIreland(state)) {\n        return true\n    }\n\n    if (getHasDestination(state)) {\n        return !!getDestination(state)\n    }\n\n    return true\n}\n\nexport const changeShippingAddress = value => (dispatch, getState) => {\n    const shippingAddresses = getShippingAddresses(getState())\n    // const shippingAddress = shippingAddresses.filter(shippingAddres => {\n    //     return shippingAddres.shippingAddressId === value\n    // })[0]\n\n    const shippingAddress = shippingAddresses.filter(shippingAddres => {\n        return shippingAddres.ecosentinoKey === value\n    })[0]\n    dispatch(setCountryOfSend(shippingAddress.country))\n    dispatch(setSelectedShippingAddress(shippingAddress))\n    dispatch(setSelectedShippingAddressId(shippingAddress.shippingAddressId))\n    dispatch(setSelectedShippingAddressSalesOrg(shippingAddress.salesOrg))\n    dispatch(setSelectedShippingAddressEcosentinoKey(shippingAddress.ecosentinoKey))\n    dispatch(setSelectedShippingCenterId(shippingAddress.centerId))\n    dispatch(setHasSelectedCenter(getSelectedShippingCenterId(getState()) === value))\n    dispatch(setLinesSlaDate())\n}\n\nexport const setCheckoutStepOneButtonNextDisabled = (checkoutStepOneButtonNextDisabled) => (dispatch) => {\n    dispatch({ type: 'CHECKOUT_STEP_ONE_BUTTON_NEXT_DISABLED', checkoutStepOneButtonNextDisabled })\n}\n\nexport const fetchVirtualVisitSalesforceId = (intl) => (dispatch, getState) => {\n    const state = getState()\n    const userId = state.login.username\n    const token = getToken(state)\n\n    dispatch({ type: 'FETCH_VV_SALESFORCE_IDS_REQUEST', userId})\n\n    return api.fetchVirtualVisitSalesforceId(userId, token).then (\n        response => {\n            const vvData = response.data.map(r => {\n                const date = new Date(r.datetime)\n                return {\n                    value: r.salesforceId,\n                    // label: r.salesforceId + ' - ' + date.toLocaleDateString()\n                    // label: intl.formatMessage({id:\"virtual_visit\", defaultMessage:\"Virtual visit\"}) + ' - ' + intl.formatDate(date)\n                    label: intl.formatDate(date)\n                }\n            })\n            dispatch({ type: 'FETCH_VV_SALESFORCE_IDS_SUCCESS', response: vvData })\n        },\n        error => {\n            dispatch({type: 'FETCH_VV_SALESFORCE_IDS_FAILURE'})\n        }\n    )\n}","import moment from 'moment'\n\n//REVIEW:: PV_REPLACE_CENTERS\n// export const CENTERS = ['1000', '1070']\nexport const CODI_CENTER = 1100;\nexport const PORTFOLIO_MODE_SHOW_ONLY_CODI = 0;\nexport const PORTFOLIO_MODE_SHOW_ONLY_USER_CENTER = 1;\nexport const PORTFOLIO_MODE_SHOW_BOTH_CENTERS = 2;\nexport const CENTERS = ['1100','7120','7126']\nexport const DATE_FORMAT = 'YYYY/MM/DD HH:mm:ss';\nexport const LANG_TO_INDEX = {\n    da: 'EN',\n    de: 'DE',\n    'en-US': 'Z2',\n    en: 'EN',\n    es: 'ES',\n    fi: 'EN',\n    'fr-CA': 'Z2',\n    'en-CA': 'Z2',\n    fr: 'FR',\n    it: 'IT',\n    nl: 'NL',\n    no: 'EN',\n    pt: 'PT',\n    pl: 'EN',\n    sv: 'SV',\n    tr: 'TR'\n}\n\nexport const CREATION_MODE = {\n    NEW: 'NEW',\n    EDIT: 'EDIT',\n    NEW_LANGUAGE: 'NEW_LANGUAGE',\n    EDIT_LANGUAGE: 'EDIT_LANGUAGE'\n}\n\nexport const isImageValid = image => {\n    if (!image || !image.type || (image.type !== 'image/png' && image.type !== 'image/jpeg' && image.type !== 'image/jpg') || !image.size || image.size > 10000000) {\n        return false\n    }\n\n    return true\n}\n\nexport const advParseLang = (l, forIcon = false) => {\n    switch (l.iso_639_2) {\n        case 'en': {\n            switch (l.ietf) {\n                case 'en-GB': {\n                    return forIcon ? 'gb' : 'en'\n                }\n                case 'en-US': {\n                    return forIcon ? 'us' : 'en-US'\n                }\n                case 'en-CA': {\n                    return forIcon ? 'ca' : 'en-CA'\n                }\n                default: {\n                    return l.ietf\n                }\n            }\n        }\n        case 'fr': {\n            switch (l.ietf) {\n                case 'fr-FR': {\n                    return 'fr'\n                }\n                case 'fr-CA': {\n                    return forIcon ? 'ca' : 'fr-CA'\n                }\n                default: {\n                    return l.ietf\n                }\n            }\n        }\n        case 'ja': {\n            return forIcon ? 'jp' : 'ja'\n        }\n        case 'he': {\n            return forIcon ? 'il' : 'he'\n        }\n        case 'nn': {\n            return 'no'\n        }\n        case 'da': {\n            return forIcon ? 'dk' : 'da'\n        }\n        default: {\n            switch (l.ietf) {\n                case 'en-GB': {\n                    return forIcon ? 'gb' : 'en'\n                }\n                case 'en-US': {\n                    return forIcon ? 'us' : 'en-US'\n                }\n                case 'en-CA': {\n                    return forIcon ? 'ca' : 'en-CA'\n                }\n                case 'fr-FR': {\n                    return 'fr'\n                }\n                case 'fr-CA': {\n                    return forIcon ? 'ca' : 'fr-CA'\n                }\n                default: {\n                    return l.iso_639_2\n                }\n            }\n        }\n    }\n}\n\nexport const getFileData = data => {\n    if (data && typeof data !== 'string') {\n        return data\n    } else {\n        try {\n            const pData = JSON.parse(data)\n\n            if (pData) {\n                return pData\n            }\n        } catch (e) {}\n    }\n\n    return data\n}\n\nexport const getMarkets = markets => {\n    if (markets.length > 0) {\n        return markets\n            .map(market => {\n                return { value: market.code, label: market.name, salesOrg: market.salesOrg }\n            })\n            .sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0))\n    }\n    return []\n}\n\nexport const getCountries = (countries, intl) => {\n    if (countries.length > 0) {\n        return countries\n            .map(country => {\n                return { id: country.code, value: country, label: intl.formatMessage({ id: 'country_' + country.code }), salesOrg: country.salesOrg }\n            })\n            .sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0))\n    }\n    return []\n}\n\nexport const getStatuses = (statuses, intl) => {\n    if (statuses.length > 0) {\n        return statuses.map(status => {\n            return { value: status, label: intl.formatMessage({ id: 'status_' + status }) }\n        })\n    }\n    return []\n}\n\nexport const getCenters = centers => {\n    if (centers.length > 0) {\n        return centers\n            .map(center => {\n                return { value: center.id, label: center.id + ' ' + center.name, salesOrg: center.salesOrg }\n            })\n            .sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0))\n    }\n    return []\n}\n\nexport const getFilteredByMarket = (filtersParameters = {}, landings) => {\n    const marketParam = filtersParameters && filtersParameters.value !== 'Todos' ? filtersParameters.value : null\n    return marketParam ? landings.filter(landing => landing.market === marketParam) : landings\n}\n\nexport const getFilteredByCountry = (filtersParameters = {}, landings) => {\n    const countryParam = filtersParameters ? filtersParameters.id : null\n    return countryParam ? landings.filter(landing => landing.countries.indexOf(countryParam) > -1) : landings\n}\n\nexport const getFilteredByCenter = (filtersParameters = {}, landings) => {\n    const centerParam = filtersParameters ? filtersParameters.value : null\n    return centerParam ? landings.filter(landing => landing.centers.indexOf(centerParam) > -1) : landings\n}\n\nexport const getFilteredByCountries = (countries = [], landings = []) => {\n    return countries.reduce((filteredLandings, country) => getFilteredByCountry(country, filteredLandings), landings)\n}\n\nexport const getFilteredByCenters = (centers = [], landings = []) => {\n    return centers.reduce((filteredLandings, center) => getFilteredByCenter(center, filteredLandings), landings)\n}\n\nexport const getFilteredByStatus = (statusSelected = 'ALL', landings = []) => {\n    return statusSelected !== 'ALL' ? landings.filter(landing => landing.status === statusSelected) : landings\n}\n\nexport const getFilteredByTitle = (searchString = '', landings = []) => {\n    return searchString ? landings.filter(landing => landing.title.toUpperCase().indexOf(searchString.toUpperCase()) > -1) : landings\n}\n\nexport const getFilteredByDates = (dates, landings = []) => {\n    if (dates && (dates.start || dates.end)) {\n        return landings.filter(\n            landing =>\n                landing.start_at &&\n                landing.end_at &&\n                (moment(landing.start_at).isBetween(dates.start, dates.end) ||\n                    moment(landing.start_at).isSame(dates.start, 'day') ||\n                    ((dates.end && moment(landing.end_at).isBetween(dates.start, dates.end)) ||\n                        moment(landing.start_at).isSame(dates.end, 'day') ||\n                        moment(landing.end_at).isSame(dates.end, 'day') ||\n                        (!dates.end && moment(landing.start_at).isAfter(dates.start))))\n        )\n    }\n\n    return landings\n}\n\nexport const getFilteredLandings = (filtersParameters = {}, landings = [], intl) => {\n    const { selectedMarket = {}, selectedCountry = [], selectedCenter = [], statusSelected = 'ALL', searchString = '', dates = { start: null, end: null } } = filtersParameters\n\n    const landingsFilteredByMarket = getFilteredByMarket(selectedMarket, landings)\n    const landingsFilteredByCountries = getFilteredByCountries(selectedCountry || [], landingsFilteredByMarket)\n    const landingsFilteredByCenters = getFilteredByCenters(selectedCenter || [], landingsFilteredByCountries)\n    const landingsFilteredByStatus = getFilteredByStatus(statusSelected || '', landingsFilteredByCenters)\n    const landingsFilteredByTitle = getFilteredByTitle(searchString || '', landingsFilteredByStatus)\n    const landingsFilteredByDates = getFilteredByDates(dates || {}, landingsFilteredByTitle)\n\n    return landingsFilteredByDates.map(l => {\n        return { ...l, status: intl.formatMessage({ id: 'status_' + l.status }) }\n    })\n}\n\nexport const arrayToFormData = (array = [], fd, field) => {\n    ;(array || []).map((item, index) => {\n        if (field === 'countries') {\n            fd.append(`countries[${index}]`, item)\n        }\n        if (field === 'centers') {\n            fd.append(`centers[${index}]`, item)\n        }\n    })\n}\n\nexport const parseLandingStatus = landing => {\n    if (landing.status !== 'SCHEDULE') {\n        return landing.status;\n    } else {\n        const endDay = landing && landing.end_at  \n        const isNotExpired = !endDay || moment().isBefore(endDay)\n        return isNotExpired ?  'PUBLISHED' : 'EXPIRED'\n    }\n}","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { defineMessages } from 'react-intl'\n\n\nconst MESSAGES = defineMessages({\n    CLIENT_ALREADY_HAS_ACCOUNT: {\n        id: 'CLIENT_ALREADY_HAS_ACCOUNT',\n        description: 'CLIENT_ALREADY_HAS_ACCOUNT',\n        defaultMessage: 'Customer already has an account'\n    },\n    EXCLUSIVE_HOME_DEPOT: {\n        id: 'EXCLUSIVE_HOME_DEPOT',\n        description: 'EXCLUSIVE_HOME_DEPOT',\n        defaultMessage: 'Material only available for Home Depot projects'\n    },\n    THERE_IS_NO_THEORETICAL_WEIGHT: {\n        id: 'THERE_IS_NO_THEORETICAL_WEIGHT',\n        description: 'THERE_IS_NO_THEORETICAL_WEIGHT',\n        defaultMessage: 'There is no theoretical weight'\n    },\n    INFO_IKEA_CHECKOUT_CONFIRM: {\n        id: 'info_ikea_checkout_confirm',\n        description: 'Are you sure to place the order for the shipping address \"{storeName}\" with the employee id \"{employee}\" ?',\n        defaultMessage: 'Are you sure to place the order for the shipping address \"{storeName}\" with the employee id \"{employee}\" ?'\n    },\n    THE_FILE_IS_NOT_YET_AVAILABLE: {\n        id: 'the_file_is_not_yet_available',\n        description: 'Your invoice is not uploaded yet. Please try again later',\n        defaultMessage: 'Your invoice is not uploaded yet. Please try again later'\n    },\n    LOT_NO_LONGER_AVAILABLE: {\n        id: 'LOT_NO_LONGER_AVAILABLE',\n        description: 'LOT_NO_LONGER_AVAILABLE',\n        defaultMessage: 'Some lot is no longer available'\n    },\n    SHIPPING_ADDRESS_NOT_FOUND: {\n        id: 'SHIPPING_ADDRESS_NOT_FOUND',\n        description: 'SHIPPING_ADDRESS_NOT_FOUND',\n        defaultMessage: 'Shipping address not found'\n    },\n    CUSTOMER_REQUIRED: {\n        id: 'CUSTOMER_REQUIRED',\n        description: 'CUSTOMER_REQUIRED',\n        defaultMessage: 'Customer is required'\n    },\n    INVALID_EMAIL: {\n        id: 'INVALID_EMAIL',\n        description: 'INVALID_EMAIL',\n        defaultMessage: 'Invalid email'\n    },\n    INVALID_LENGTH_UNIT: {\n        id: 'INVALID_LENGTH_UNIT',\n        description: 'INVALID_LENGTH_UNIT',\n        defaultMessage: 'Invalid length unit'\n    },\n    INVALID_WEIGHT_UNIT: {\n        id: 'INVALID_WEIGHT_UNIT',\n        description: 'INVALID_WEIGHT_UNIT',\n        defaultMessage: 'Invalid weight unit'\n    },\n    LOGIN_REQUIRED: {\n        id: 'LOGIN_REQUIRED',\n        description: 'LOGIN_REQUIRED',\n        defaultMessage: 'Login required'\n    },\n    LOTS_ALREADY_BOOKED: {\n        id: 'LOTS_ALREADY_BOOKED',\n        description: 'LOTS_ALREADY_BOOKED',\n        defaultMessage: 'Some batches have been excluded from the list as they are already reserved. They might be available later'\n    },\n    TRANSFORMING_SKU_TO_LOTS: {\n        id: 'TRANSFORMING_SKU_TO_LOTS',\n        description: 'TRANSFORMING_SKU_TO_LOTS',\n        defaultMessage: 'We are looking for available batches'\n    },\n\n    LOTS_IMAGE_MAY_NOT_MATCH: {\n        id: 'LOTS_IMAGE_MAY_NOT_MATCH',\n        description: 'LOTS_IMAGE_MAY_NOT_MATCH',\n        defaultMessage: 'Batch images might not exactly match the final material'\n    },\n    NOT_ENOUGH_LOTS: {\n        id: 'NOT_ENOUGH_LOTS',\n        description: 'NOT_ENOUGH_LOTS',\n        defaultMessage: 'Not enough lots available for your order'\n    },\n    NOT_ENOUGH_LOTS_OFFER: {\n        id: 'NOT_ENOUGH_LOTS_OFFER',\n        description: 'NOT_ENOUGH_LOTS_OFFER',\n        defaultMessage: 'Not enough lots available for your offer'\n    },\n    MAX_WEIGHT_EXCEEDED: {\n        id: 'MAX_WEIGHT_EXCEEDED',\n        description: 'MAX_WEIGHT_EXCEEDED',\n        defaultMessage: 'Maximum weight has been exceeded, to order another {shippingMethod} you must create a new order'\n    },\n    MIN_WEIGHT_NOT_REACHED: {\n        id: 'MIN_WEIGHT_NOT_REACHED',\n        description: 'MIN_WEIGHT_NOT_REACHED',\n        defaultMessage: 'Minimum weight not reached'\n    },\n    MISSING_MANDATORY_FIELD: {\n        id: 'MISSING_MANDATORY_FIELD',\n        description: 'MISSING_MANDATORY_FIELD',\n        defaultMessage: 'Fields are required'\n    },\n    REMEMBER_PASSWORD_REQUEST_CONFIRMED: {\n        id: 'REMEMBER_PASSWORD_REQUEST_CONFIRMED',\n        description: 'REMEMBER_PASSWORD_REQUEST_CONFIRMED',\n        defaultMessage: 'If the user and email address match, an email will be sent'\n    },\n    TSC_ORDER_FAILED: {\n        id: 'TSC_ORDER_FAILED',\n        description: 'TSC_ORDER_FAILED',\n        defaultMessage: 'The order could not be sent'\n    },\n    TOKEN_HAS_EXPIRED: {\n        id: 'TOKEN_HAS_EXPIRED',\n        description: 'TOKEN_HAS_EXPIRED',\n        defaultMessage: 'Your session has expired'\n    },\n    WRONG_CREDENTIALS: {\n        id: 'WRONG_CREDENTIALS',\n        description: 'WRONG_CREDENTIALS',\n        defaultMessage: 'Invalid username or password'\n    },\n    WRONG_CREDENTIALS_AZURE: {\n        id: 'WRONG_CREDENTIALS_AZURE',\n        description: 'WRONG_CREDENTIALS_AZURE',\n        defaultMessage: '{lastLoginAccount} does not have access to eCosentino. Either try with another account or contact your nearest Cosentino center'\n    },\n    TOO_MANY_REQUESTS: {\n        id: 'TOO_MANY_REQUESTS',\n        description: 'TOO_MANY_REQUESTS',\n        defaultMessage: 'You have exceeded the maximum number of login attempts. Wait a minute to keep trying'\n    },\n    YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY: {\n        id: 'YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY',\n        description: 'YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY',\n        defaultMessage: 'Your preferences have been saved successfully'\n    },\n    MANDATORY_PASSWORD_CHANGE: {\n        id: 'MANDATORY_PASSWORD_CHANGE',\n        description: 'MANDATORY_PASSWORD_CHANGE',\n        defaultMessage: 'Your current password is not secure and needs to be changed. Please enter a new password.'\n    },\n    PASSWORD_DOESNT_MEET_REQUIREMENTS: {\n        id: 'PASSWORD_DOESNT_MEET_REQUIREMENTS',\n        description: 'PASSWORD_DOESNT_MEET_REQUIREMENTS',\n        defaultMessage: \"Password doesn't meet the requirements.\"\n    },\n    PASSWORDS_NOT_MATCH: {\n        id: 'PASSWORDS_NOT_MATCH',\n        description: 'PASSWORDS_NOT_MATCH',\n        defaultMessage: 'Passwords do not match.'\n    },\n    PASS_CHANGED_LOGIN_AGAIN: {\n        id: 'PASS_CHANGED_LOGIN_AGAIN',\n        description: 'PASS_CHANGED_LOGIN_AGAIN',\n        defaultMessage: 'The password was changed. Please, login again with your new password.'\n    },\n    your_suggestions_has_been_sent: {\n        id: 'your_suggestions_has_been_sent',\n        description: 'your_suggestions_has_been_sent',\n        defaultMessage: 'Your suggestions has been sent'\n    },\n    undefined: {\n        id: 'undefined',\n        description: 'undefined',\n        defaultMessage: 'Something went wrong'\n    },\n    maximum_weight_of_bundles_has_been_exceeded: {\n        id: 'maximum_weight_of_bundles_has_been_exceeded',\n        description: 'maximum_weight_of_bundles_has_been_exceeded',\n        defaultMessage: 'Maximum weight of bundles has been exceeded'\n    },\n    container_must_have_7_bundles: {\n        id: 'container_must_have_7_bundles',\n        description: 'container_must_have_7_bundles',\n        defaultMessage: 'Natural Stone containers must have 7 bundles'\n    },\n    EXCEEDE_ORDER_MAXIMUM_LOWES: {\n        id: 'EXCEEDE_ORDER_MAXIMUM_LOWES',\n        description: 'EXCEEDE_ORDER_MAXIMUM_LOWES',\n        defaultMessage: 'You have reached the limit for this month, {monthItems} / 30'\n    },\n    EXCEEDE_ORDER_MAXIMUM_MKTOOLS: {\n        id: 'EXCEEDE_ORDER_MAXIMUM_MKTOOLS',\n        description: 'EXCEEDE_ORDER_MAXIMUM_MKTOOLS',\n        defaultMessage: 'You have reached weekly limit of orders, wait till {waitTillDate}'\n    },\n    EXCEEDE_CHECKOUT_COMMENT_LENGTH: {\n        id: 'EXCEEDE_CHECKOUT_COMMENT_LENGTH',\n        description: 'EXCEEDE_CHECKOUT_COMMENT_LENGTH',\n        defaultMessage: 'You have exceeded the character limit allowed for comments'\n    },\n    encimera_ikea: {\n        id: 'encimera_ikea',\n        description: 'Encimera Ikea',\n        defaultMessage: 'Encimera Ikea'\n    },\n    ORDER_IMAGES_NOT_FOUND: {\n        id: 'ORDER_IMAGES_NOT_FOUND',\n        description: 'ORDER_IMAGES_NOT_FOUND',\n        defaultMessage: 'The images are not unavailable'\n    },\n    EMPTY_INVOICE: {\n        id: 'EMPTY_INVOICE',\n        description: 'The invoice is not availabel yet',\n        defaultMessage: 'The invoice is not available yet'\n    },\n    USER_WITHOUT_CENTERS: {\n        id: 'USER_WITHOUT_CENTERS',\n        description: 'USER_WITHOUT_CENTERS',\n        defaultMessage: 'The user haven`t centers'\n    },\n    INSUFFICIENT_PERMISSIONS: {\n        id: 'INSUFFICIENT_PERMISSIONS',\n        description: 'INSUFFICIENT_PERMISSIONS',\n        defaultMessage: 'Your WE by Cosentino account is not valid to access e.Cosentino. Please contact your Sales Representative'\n    },\n    MUST_BE_A_VALID_EMAIL: {\n        id: 'MUST_BE_A_VALID_EMAIL',\n        description: 'MUST_BE_A_VALID_EMAIL',\n        defaultMessage: 'Must be a valid email'\n    },\n    EMAIL_ALREADY_IN_USE: {\n        id: 'EMAIL_ALREADY_IN_USE',\n        description: 'EMAIL_ALREADY_IN_USE',\n        defaultMessage: 'This email is already in use in another account'\n    },\n    SessionNotValidated: {\n        id: 'SessionNotValidated',\n        description: 'SessionNotValidated',\n        defaultMessage: 'The session could not be started, please try again on JobTracker'\n    },\n    upcoming_product_alert: {\n        id: 'upcoming_product_alert',\n        description: 'upcoming_product_alert',\n        defaultMessage: 'The chosen material still does not have stock available. Contact your nearest Center for an estimated delivery date'\n    },\n    BANNER_HOME_AND_BANNER_NEWSLETTER_REQUIRED: {\n        id: 'BANNER_HOME_AND_BANNER_NEWSLETTER_REQUIRED',\n        description: 'BANNER_HOME_AND_BANNER_NEWSLETTER_REQUIRED',\n        defaultMessage: 'You must select a banner for the newsletter and the landing of the promotion'\n    },\n    DONT_ALLOWED_EMPTY_TEXT: {\n        id: 'DONT_ALLOWED_EMPTY_TEXT',\n        description: 'DONT_ALLOWED_EMPTY_TEXT',\n        defaultMessage: 'You must write some text before save'\n    },\n    AVG_BUNDLE_SIZE: {\n        id: 'AVG_BUNDLE_SIZE',\n        description: 'AVG_BUNDLE_SIZE',\n        defaultMessage: '* The size indicated in the Bundles is the average size of the Bundle.'\n    },\n    EXCEEDED_CHARS_LIMIT: {\n        id: 'EXCEEDED_CHARS_LIMIT',\n        description: 'EXCEEDED_CHARS_LIMIT',\n        defaultMessage: 'The character limit has been exceeded in the following languages:{langs}'\n    },\n    CTS_50_PERCENT_DEPOSIT_INITIAL_MSG: {\n        id: 'CTS_50_PERCENT_DEPOSIT_INITIAL_MSG',\n        description: 'CTS_50_PERCENT_DEPOSIT_INITIAL_MSG',\n        defaultMessage: 'For custom-made products, a 50% deposit (excluding taxes) is required to confirm the order. At the end of the process, you will see the instructions to complete the payment. The estimated delivery date depends on the 50% payment. Production will start once payment is received.'\n    },\n    CTS_50_PERCENT_DEPOSIT_FINAL_MSG: {\n        id: 'CTS_50_PERCENT_DEPOSIT_FINAL_MSG',\n        description: 'CTS_50_PERCENT_DEPOSIT_FINAL_MSG',\n        defaultMessage: 'To start manufacturing your custom-made product, you need to make a 50% payment (excluding taxes). You will receive an email with instructions to complete this payment within a few minutes'\n    },\n    health_safety_information_scroll_down: {\n        id: 'health_safety_information_scroll_down',\n        description: 'health_safety_information_scroll_down',\n        defaultMessage: 'In order to accept the terms and conditions you must read the entire document, scrolling to the end.'\n    },\n})\n\nconst Alerts = ({ alert, status, values, lastLoginAccount, cssIcon, iconSize, className, element }) => {\n    let cssClasses = 'alert mb-1 mt-1 '\n    if (status === 'warning') {\n        cssClasses += 'alert-warning'\n    } else if (status === 'info') {\n        cssClasses += 'alert-info'\n    } else if (status === 'primary') {\n        cssClasses += 'alert-primary'\n    } else if (status >= 200 && status < 300) {\n        cssClasses += 'alert-success'\n    } else if (status >= 300) {\n        cssClasses += 'alert-danger'\n    } else {\n        cssClasses += 'alert-dark'\n    }\n\n    cssClasses = className ? (cssClasses += ' ' + className) : cssClasses\n\n    const error =\n        alert != null ? (\n            <div className={cssClasses} role=\"alert\">\n                <div className=\"d-flex align-items-baseline\">\n                    {cssIcon && (\n                        <div className=\"mr-2\">\n                            <i style={{ fontSize: iconSize }} className={cssIcon} />\n                        </div>    \n                    )}\n                    <div>\n                        <Translation id={alert} /*defaultMessage={MESSAGES[alert].defaultMessage}*/ values={values ? values : {}} />\n                    </div>\n                </div>\n            </div>\n        ) : (element ? (\n            <div className={cssClasses} role=\"alert\">\n                <div className=\"d-flex align-items-center\">\n                    {cssIcon && (\n                        <div className=\"mr-3\">\n                            <i style={{ fontSize: iconSize }} className={cssIcon} />\n                        </div>\n                    )}\n                    <div>\n                        {element}\n                    </div>\n                </div>\n            </div>\n        ) : (''))\n\n\n    return <div>{error}</div>\n}\nexport default Alerts\n","import * as api from '../api'\nimport {getIsLogged, getToken} from '../login/reducers'\nimport { getIKEACenterId, getIKEACanariasCenterId, getIsLowesCenter, getSelectedCenter } from '../centers/reducers'\nimport { getLanguage, getLanguageToFetchZ2 } from '../ui/reducers'\nimport { byProductId, getProductsIdFavourite, similarProductByProductId, getColorsMktoolsAttr, getFetchedProducts } from './reducers'\n\nexport const fetchProduct = (productId, extra) => (dispatch, getState) => {\n    if (productId === 'CUT_TO_SIZE' || productId === '999999') {\n        return dispatch({ type: 'TRY_LOAD_A_CUT_TO_SIZE' })\n    }\n\n\n    const state = getState()\n\n    let centerId = state.centers.selectedCenter ? state.centers.selectedCenter : 'near'\n    // const controlProduct = state.products.fetchedProducts.find((el) => el.control && el.product.productId == productId && el.centerId == centerId)\n    // if (controlProduct) return Promise.resolve()\n    //\n    // if (isComingFromMall(state)) {\n    //\n    //     const product = getSelectedProduct(state)\n    //     if (product) centerId = product.center_id\n    // }\n\n    const locale = getLanguageToFetchZ2(state)\n\n    const selectedProduct = byProductId(state, productId, true)\n    if (selectedProduct) {\n        const fetchedProducts = getFetchedProducts(state)\n        fetchedProducts.sort((a, b) => a.product == selectedProduct ? - 1 : b.product == selectedProduct ? 1 : 0)\n\n        return Promise.resolve()\n    }\n\n    // //Mecanismo simploncete para que no haga el fetch simultaneamente más de una vez para el mismo material\n    // state.products.fetchedProducts.push(\n    //     {\n    //         product: {productId},\n    //         centerId,\n    //         locale,\n    //         control: true\n    //     }\n    // )\n    //\n    // const cleanControlProduct = (productId) => {\n    //     const indexToRemove = state.products.fetchedProducts.findIndex((el) => el.control && el.product.productId == productId && el.product.centerId == centerId)\n    //     state.products.fetchedProducts.splice(indexToRemove, 1)\n    // }\n\n    dispatch({\n        type: 'FETCH_PRODUCT_REQUEST',\n        productId,\n        centerId,\n        locale\n    })\n\n    return api\n        .fetchProductById(centerId, productId, locale)\n        .then(response => {\n            // cleanControlProduct(productId)\n            const product = response.data\n            if (extra) product.extra = extra\n            return dispatch({ type: 'FETCH_PRODUCT_SUCCESS', product: response.data, centerId, locale })\n        })\n        .catch(error => {\n            // cleanControlProduct(productId)\n            return dispatch({ type: 'FETCH_PRODUCT_FAILURE', response: error.response })\n        })\n}\nexport const fetchSimilarProduct = (productId, colorId) => (dispatch, getState) => {\n    if (similarProductByProductId(getState(), productId)) return Promise.resolve()\n    dispatch({ type: 'FETCH_SIMILAR_PRODUCT_REQUEST', colorId })\n    const centerId = getState().centers.selectedCenter ? getState().centers.selectedCenter : 'near'\n    return api\n        .fetchSimilarProduct(centerId, colorId)\n        .then(response => {\n            dispatch({ type: 'FETCH_SIMILAR_PRODUCT_SUCCESS', productId: productId, products: response.data, centerId, locale: getLanguage(getState()) })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_SIMILAR_PRODUCT_FAILURE' })\n        })\n}\n// const fetchLastProductsBoughtIds = () => (dispatch, getState) => {\n//     dispatch({ type: 'LAST_PRODUCTS_BOUGHT_REQUEST' })\n//\n//     return api\n//         .fetchLastProductsBought(getToken(getState()), getSelectedCenter(getState()))\n//         .then(response => {\n//             dispatch({ type: 'LAST_PRODUCTS_BOUGHT_SUCCESS', products: response.data })\n//         })\n//         .catch(error => {\n//             dispatch({ type: 'LAST_PRODUCTS_BOUGHT_FAILURE' })\n//             api.errorHandler(dispatch, error.response)\n//             return Promise.reject()\n//         })\n// }\n//\n// export const fetchLastProductsBought = () => (dispatch, getState) => {\n//     dispatch({ type: 'LAST_PRODUCTS_BOUGHT_INIT' })\n//\n//     return dispatch(fetchLastProductsBoughtIds()).then(\n//         () => Promise.all(getLastProductBoughtsId(getState()).map(productId => dispatch(fetchProduct(productId)))).then(() => dispatch({ type: 'LAST_PRODUCTS_BOUGHT_FINISH' })),\n//         () => {}\n//     )\n// }\n// const fetchProductsForYouIds = () => (dispatch, getState) => {\n//     dispatch({ type: 'PRODUCTS_FOR_YOU_REQUEST' })\n//\n//     return api\n//         .fetchProductsForYou(getToken(getState()), getSelectedCenter(getState()))\n//         .then(response => {\n//             dispatch({ type: 'PRODUCTS_FOR_YOU_SUCCESS', products: response.data })\n//         })\n//         .catch(error => {\n//             dispatch({ type: 'PRODUCTS_FOR_YOU_FAILURE' })\n//             api.errorHandler(dispatch, error.response)\n//             return Promise.reject()\n//         })\n// }\n//\n// export const fetchProductsForYou = () => (dispatch, getState) => {\n//     dispatch({ type: 'PRODUCTS_FOR_YOU_INIT' })\n//\n//     return dispatch(fetchProductsForYouIds()).then(\n//         () => Promise.all(getProductsForYouId(getState()).map(productId => dispatch(fetchProduct(productId)))).then(() => dispatch({ type: 'PRODUCTS_FOR_YOU_FINISH' })),\n//         () => {}\n//     )\n// }\nexport const fetchSpecialProductNames = () => (dispatch, getState) => {\n    let token = getToken(getState())\n    dispatch({ type: 'FETCH_SPECIAL_NAMES', token })\n\n    return api\n        .fetchSpecialNames(token, getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_SPECIAL_NAMES_SUCCESS', specialNames: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_SPECIAL_NAMES_FAILURE' })\n        })\n}\n\nexport const fetchUserPriceList = () => (dispatch, getState) => {\n    let token = getToken(getState())\n    dispatch({ type: 'FETCH_USER_PRICE_LIST', token })\n\n    return api\n        .fetchUserPriceList(token, getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_USER_PRICE_LIST_SUCCESS', priceList: response.data.userPriceList })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_USER_PRICE_LIST_FAILURE' })\n        })\n}\n\nexport const fetchRefreshUserPriceList = () => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)    \n    const centerId = getSelectedCenter(state)\n    const productIds = state.landing.productsLanding && state.landing.productsLanding.map(v => v.productId)\n\n    if (productIds && productIds.length) {\n        dispatch({ type: 'REFRESH_USER_PRODUCTS_CACHE', values : { token, productIds}})\n\n    return api\n        .fetchRefreshUserPriceList(token, centerId, productIds)\n        .then(response => {\n            dispatch({ type: 'REFRESH_USER_PRODUCTS_CACHE_SUCCESS' })\n            dispatch({ type: 'CLEAR_PHASE2_PRODUCT_BY_CLIENT' })\n        })\n        .catch(error => {\n            dispatch({ type: 'REFRESH_USER_PRODUCTS_CACHE_FAILURE' })\n        })\n    }    \n}\n\nexport const fetchUserPriceListByUser = userId => (dispatch, getState) => {\n    let token = getToken(getState())\n    dispatch({ type: 'FETCH_USER_PRICE_LIST', token })\n\n    return api\n        .fetchUserPriceListByUser(token, userId, getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_USER_PRICE_LIST_SUCCESS', priceList: response.data.userPriceList })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_USER_PRICE_LIST_FAILURE' })\n        })\n}\n\nexport const fetchColorsMktoolsAttr = brand => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_COLORS_MKTOOLS_ATTR_REQUEST' })\n    return api\n        .fetchColorsMktoolsAttr()\n        .then(response => {\n            dispatch({ type: 'FETCH_COLORS_MKTOOLS_ATTR_SUCCESS', colors: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_CCOLORS_MKTOOLS_ATTR_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const saveColorsMktoolsAttr = () => (dispatch, getState) => {\n    dispatch({ type: 'SAVE_COLORS_MKTOOLS_ATTR_REQUEST' })\n\n    return api\n        .saveColorsMktoolsAttr(getToken(getState()), getColorsMktoolsAttr(getState()))\n        .then(response => {\n            dispatch({ type: 'SAVE_COLORS_MKTOOLS_ATTR_SUCCESS', colors: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'SAVE_CCOLORS_MKTOOLS_ATTR_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const addNewColorMktoolsAttr = (nameColor, brand) => (dispatch, getState) => {\n    if (typeof nameColor !== 'string' || nameColor.trim() === '') return null\n    let nameColorToAdd = nameColor\n        .split(' ')\n        .map(word => {\n            return (\n                word\n                    .toLowerCase()\n                    .charAt(0)\n                    .toUpperCase() + word.toLowerCase().slice(1)\n            )\n        })\n        .join(' ')\n\n    if ((getColorsMktoolsAttr(getState()) && !getColorsMktoolsAttr(getState())[brand]) || getColorsMktoolsAttr(getState())[brand].findIndex(name => name === nameColorToAdd) === -1)\n        dispatch({ type: 'ADD_COLOR_MKTOOLS_ATTR_SUCCESS', color: nameColorToAdd, brand })\n    else dispatch({ type: 'DUPLICATED_COLOR_MKTOOLS_ATTR' })\n\n    return dispatch(getIndexOfColorsMktoolsAtter(nameColorToAdd, brand))\n}\nexport const getIndexOfColorsMktoolsAtter = (nameColor, brand) => (dispatch, getState) => {\n    return getColorsMktoolsAttr(getState())[brand] ? getColorsMktoolsAttr(getState())[brand].findIndex(name => name === nameColor) : -1\n}\nexport const removeColorMktoolsAttr = (i, brand) => (dispatch, getState) => {\n    dispatch({ type: 'REMOVE_COLOR_MKTOOLS_ATTR_SUCCESS', index: i, brand })\n}\nexport const fetchColorsCutToSize = brand => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_COLORS_CUT_TO_SIZE_REQUEST' })\n    return api\n        .fetchColorsCutToSize(brand.toUpperCase(), getLanguage(getState()), getToken(getState()))\n        .then(response => {\n            let productsId = response.data.map(product => {\n                return product.id\n            })\n            dispatch({ type: 'FETCH_COLORS_CUT_TO_SIZE_SUCCESS', productsId: productsId, products: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_COLORS_CUT_TO_SIZE_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const fetchSamplesCutToSize = brand => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_SAMPLES_CUT_TO_SIZE_REQUEST' })\n    return api\n        .fetchSamplesCutToSize(brand.toUpperCase(), getLanguage(getState()), getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_SAMPLES_CUT_TO_SIZE_SUCCESS', samples: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_SAMPLES_CUT_TO_SIZE_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const fetchFurnituresCutToSize = brand => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_FURNITURES_CUT_TO_SIZE_REQUEST' })\n    return api\n        .fetchFurnituresCutToSize(brand.toUpperCase(), getLanguage(getState()), getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_FURNITURES_CUT_TO_SIZE_SUCCESS', furnitures: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_FURNITURES_CUT_TO_SIZE_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const fetchProductsFavourite = () => (dispatch, getState) => {\n    if (getProductsIdFavourite(getState()).length !== 0) return\n\n    dispatch({ type: 'FETCH_PRODUCTS_FAVOURITE_REQUEST' })\n    return api\n        .fetchProductsFavourite(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            let productsId = response.data.products.map(product => {\n                return product.productId\n            })\n            dispatch({ type: 'FETCH_PRODUCTS_FAVOURITE_SUCCESS', productsId: productsId, products: response.data.products })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PRODUCTS_FAVOURITE_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const fetchProductsDiscounts = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PRODUCTS_DISCOUNTS_REQUEST' })\n    return api\n        .fetchProductsDiscounts(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_PRODUCTS_DISCOUNTS_SUCCESS', discounts: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PRODUCTS_DISCOUNTS_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\nexport const fetchProductsDiscountsByToken = token => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PRODUCTS_DISCOUNTS_REQUEST' })\n    return api\n        .fetchProductsDiscounts(token, getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_PRODUCTS_DISCOUNTS_SUCCESS', discounts: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PRODUCTS_DISCOUNTS_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\nexport const addProductFavourite = productId => (dispatch, getState) => {\n    dispatch({ type: 'ADD_PRODUCT_FAVOURITE_REQUEST', product: productId })\n\n    return api\n        .addProductsFavourite(getToken(getState()), getSelectedCenter(getState()), productId)\n        .then(async response => {\n            await dispatch(fetchProduct(productId))\n            await dispatch({\n                type: 'ADD_PRODUCT_FAVOURITE_SUCCESS',\n                productId: productId,\n                product: byProductId(getState(), productId)\n            })\n        })\n        .catch(error => {\n            dispatch({ type: 'ADD_PRODUCT_FAVOURITE_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const removeProductFavourite = productId => (dispatch, getState) => {\n    dispatch({ type: 'REMOVE_PRODUCT_FAVOURITE_REQUEST', productId: productId })\n\n    return api\n        .removeProductsFavourite(getToken(getState()), getSelectedCenter(getState()), productId)\n        .then(response => {\n            dispatch({ type: 'REMOVE_PRODUCT_FAVOURITE_SUCCESS', productId: productId })\n        })\n        .catch(error => {\n            dispatch({ type: 'REMOVE_PRODUCT_FAVOURITE_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const toogleFavourite = productId => (dispatch, getState) => {\n    dispatch({ type: 'TOGGLE_PRODUCT_FAVOURITE' })\n\n    if (getProductsIdFavourite(getState()).find(id => id === productId) !== undefined) {\n        dispatch(removeProductFavourite(productId))\n    } else {\n        dispatch(addProductFavourite(productId))\n    }\n}\nexport const isSample = product => {\n    return product.typeId === '01'\n}\nexport const isOtherMask = product => {\n\n    //lavabo integrity\n    //For production\n    if(product.subtypeId === 'LAVABO' && product.brand === 'INTEGRITY' && !product.displayName.includes('ZOE')) return true\n    //for pcm\n    if ((product.type === 'BASIN' || product.type === 'VANITY') && product.brand === 'INTEGRITY' && !product.displayName.includes('ZOE')) return true\n    //products with default render image\n    if(product.img && product.img.includes('-default')) return true\n    //sample box\n    return (\n        (product.typeId === 'NEWS' || product.typeId === '01') &&\n        ((product.format && product.format.includes('9,8X9,8')) ||\n            (product.format && product.format.includes('15X15')) ||\n            (product.format && product.format.includes('15X12')) ||\n            (product.format && product.format.includes('9,8X4,7X0,4')) ||\n            (product.format && product.format.includes('20X10X0,4')) ||\n            (product.format && product.format.includes('30X15X2')) ||\n            (product.format && product.format.includes('30X30X2')))\n    )\n}\n//HARDCODE: getImageBackground\nexport const getImageBackground = product => (dispatch, getState) => {\n    const APP_URL = process.env.REACT_APP_API_HOST\n\n    if (product.centerId == getIKEACenterId() || product.centerId == getIKEACanariasCenterId()) {\n        if (product.brand === 'SERVICES') {\n            if (product.type === 'ENCIMERA') {\n                return product.thumbMd\n            }\n            return APP_URL + '/ikea/' + product.productId + '.png'\n        }\n    }\n\n    if (getIsLowesCenter(getState())) {\n        if (['907218', '905252', '909258'].includes(product.productId)) {\n            return APP_URL + '/lowes/' + product.productId + '.jpg'\n        }\n    }\n\n    if(!!product.imgLarge && product.imgLarge !== 'null') return product.imgLarge\n    // if(!product.img) return noBundleImage\n    return product.img\n}\n\nexport const getImageThumb = product => (dispatch, getState) => {\n    const APP_URL = process.env.REACT_APP_API_HOST\n\n    if (product.centerId == getIKEACenterId() || product.centerId == getIKEACanariasCenterId()) {\n        if (product.brand === 'SERVICES') {\n            if (product.type === 'ENCIMERA') {\n                return product.thumbMd\n            }\n            return APP_URL + '/ikea/' + product.productId + '.png'\n        }\n    }\n\n    if (getIsLowesCenter(getState())) {\n        if (['907218', '905252', '909258'].includes(product.productId)) {\n            return APP_URL + '/lowes/' + product.productId + '.jpg'\n        }\n    }\n\n\n    // if(!!product.thumbMd) return product.thumbMd\n    return product.img\n}\n\nexport const fetchProductsMktToMax = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PRODUCTS_MKT_TO_MAX_REQUEST' })\n    return api\n        .fetchProductsMktToMax(getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_PRODUCTS_MKT_TO_MAX_SUCCESS', productsMktToMax: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PRODUCTS_MKT_TO_MAX_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n        })\n}\nexport const fetchProductsDeviatedAdmin = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PRODUCTS_DEVIATED_ADMIN_REQUEST' })\n    return api\n        .fetchProductsDeviatedAdmin(getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_PRODUCTS_DEVIATED_ADMIN_SUCCESS', productsDeviatedAdmin: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PRODUCTS_DEVIATED_ADMIN_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n        })\n}\nexport const saveProductsDeviatedAdmin = descriptions => (dispatch, getState) => {\n    dispatch({ type: 'SAVE_PRODUCTS_DEVIATED_ADMIN_REQUEST', descriptions })\n    return api\n        .saveProductsDeviatedAdmin(getToken(getState()), descriptions)\n        .then(response => {\n            dispatch({ type: 'SAVE_PRODUCTS_DEVIATED_ADMIN_SUCCESS', products: response.data })\n            dispatch({\n                type: 'FLOATING_ALERTS_ADD_SUCCESS_MESSAGE',\n                successMessage: 'THE_PRODUCTS_HAVE_BEEN_SAVED_SUCCESSFULLY',\n                values: { listOfProducts: response.data.map(item => item.productId).join(', ') }\n            })\n        })\n        .catch(error => {\n            dispatch({ type: 'SAVE_PRODUCTS_DEVIATED_ADMIN_FAILURE' })\n            dispatch({\n                type: 'FLOATING_ALERTS_ADD_FAILURE_MESSAGE',\n                failureMessage: 'SOMETHING_WENT_WRONG'\n            })\n            // api.errorHandler(dispatch, error.response)\n            return Promise.reject()\n        })\n}\n\nexport const fetchDeviatedDescriptions = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_DEVIATED_DESCRIPTIONS_REQUEST' })\n    return api\n        .fetchDeviatedDescriptions(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_DEVIATED_DESCRIPTIONS_SUCCESS', descriptions: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_DEVIATED_DESCRIPTIONS_FAILURE', error: error })\n        })\n}\nexport const saveProductsMktToMax = products => (dispatch, getState) => {\n    dispatch({ type: 'SAVE_PRODUCTS_MKT_TO_MAX_REQUEST', products })\n    return api\n        .saveProductsMktToMax(getToken(getState()), products)\n        .then(response => {\n            dispatch({ type: 'SAVE_PRODUCTS_MKT_TO_MAX_SUCCESS', productsMktToMax: response.data })\n            dispatch({\n                type: 'FLOATING_ALERTS_ADD_SUCCESS_MESSAGE',\n                successMessage: 'THE_PRODUCTS_HAVE_BEEN_SAVED_SUCCESSFULLY',\n                values: { listOfProducts: response.data.map(item => item.productId).join(', ') }\n            })\n        })\n        .catch(error => {\n            dispatch({ type: 'SAVE_PRODUCTS_MKT_TO_MAX_FAILURE' })\n            dispatch({\n                type: 'FLOATING_ALERTS_ADD_FAILURE_MESSAGE',\n                failureMessage: 'SOMETHING_WENT_WRONG'\n            })\n            // api.errorHandler(dispatch, error.response)\n            return Promise.reject()\n        })\n}\n\nexport const getProductById = productId => (dispatch, getState) => {\n    return byProductId(getState(), productId)\n}\n\nexport const fetchLastProductsBought = () => (dispatch, getState) => {\n    dispatch({ type: 'LAST_PRODUCTS_BOUGHT_REQUEST' })\n\n    return api\n        .fetchLastProductsBought(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'LAST_PRODUCTS_BOUGHT_SUCCESS', products: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'LAST_PRODUCTS_BOUGHT_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n            return Promise.reject()\n        })\n}\n\nexport const fetchProductsForYou = () => (dispatch, getState) => {\n    dispatch({ type: 'PRODUCTS_FOR_YOU_REQUEST' })\n\n    return api\n        .fetchProductsForYou(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'PRODUCTS_FOR_YOU_SUCCESS', products: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'PRODUCTS_FOR_YOU_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n            return Promise.reject()\n        })\n}\n\nexport const fetchProductsSimilarColors = (productId) => (dispatch, getState) => {\n    dispatch({ type: 'PRODUCTS_SIMILAR_COLORS_REQUEST' })\n\n    return api\n        .fetchProductsSimilarColors(getToken(getState()), getSelectedCenter(getState()), productId)\n        .then(response => {\n            dispatch({ type: 'PRODUCTS_SIMILAR_COLORS_SUCCESS', products: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'PRODUCTS_SIMILAR_COLORS_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n            return Promise.reject()\n        })\n}\n\nexport const fetchLastVisitedProducts = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LAST_VISITED_PRODUCTS_REQUEST' })\n\n    return api\n        .fetchLastVisitedProducts(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_LAST_VISITED_PRODUCTS_REQUEST_SUCCESS', products: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LAST_VISITED_PRODUCTS_REQUEST_ERROR', error: error })\n            api.errorHandler(dispatch, error.response)\n            return Promise.reject()\n        })\n}\n\nexport const fetchSlidersProducts = () => (dispatch, getState) => {\n    dispatch(fetchLastVisitedProducts())\n    dispatch(fetchProductsForYou())\n    dispatch(fetchLastProductsBought())\n}\n\nexport const postVisitedProduct = (productId, outlet) => (dispatch, getState) => {\n    dispatch({\n        type: 'POST_VISITED_PRODUCT',\n        productId\n    })\n    const state = getState()\n\n    return api\n        .postVisitedProduct(getToken(state), getSelectedCenter(state), productId, outlet)\n        .then(response => {\n            dispatch({ type: 'POST_VISITED_PRODUCT_SUCCESS' })\n            dispatch(fetchLastVisitedProducts())\n        })\n        .catch(error => {\n            dispatch({ type: 'POST_VISITED_PRODUCT_FAILURE' })\n        })\n}\n\nexport const addSelectedProductToFetched = (product) => (dispatch, getState) => {\n    const state = getState()\n    if (getIsLogged(state)) {\n        let centerId = state.centers.selectedCenter\n        const locale = getLanguageToFetchZ2(state)\n        dispatch({ type: 'ADD_SELECTED_PRODUCT_TO_FETCHED', product, centerId, locale})\n    }\n}\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport {getSalesOrg, getSpecialNames} from '../../store/login/reducers'\nimport { injectIntl } from 'react-intl'\nconst mapStateToProps = state => {\n    return {\n        specialNames: getSpecialNames(state, 'specialNames'),\n        salesOrg: getSalesOrg(state)\n    }\n}\nconst LANG_TO_INDEX = {\n    da: 'EN',\n    de: 'DE',\n    'en-US': 'Z2',\n    en: 'EN',\n    es: 'ES',\n    fi: 'EN',\n    'fr-CA': 'FR',\n    'en-CA': 'EN',\n    fr: 'FR',\n    it: 'IT',\n    nl: 'NL',\n    no: 'EN',\n    pt: 'PT',\n    pl: 'EN',\n    sv: 'SV',\n    tr: 'TR'\n}\n\nclass ProductDisplayName extends React.Component {\n    render() {\n        const { product, specialNames, style } = this.props\n\n        let locale = LANG_TO_INDEX[this.props.intl.locale]\n\n        let showName //= product.displayName.toLowerCase()\n\n        if (specialNames && specialNames[product.productId]) {\n            showName = specialNames[product.productId]\n        } else if (product.translations && product.translations[locale]) {\n            showName = product.translations[locale].displayName.toLowerCase()\n        } else {\n            showName = product.displayName ? product.displayName.toLowerCase() : ''\n        }\n        showName = showName.replace(/,/g , ', ')\n\n        //Temporal hasta que la descripción no llegue bien del maestro de materiales\n        if (locale === 'Z2') {\n            showName = showName.replace('woo' , 'w/o overflow')\n            showName = showName.replace('lavabo' , 'wba')\n            showName = showName.replace('aca ing' , 'mitered')\n            showName = showName.replace('faldón' , 'skirt')\n            showName = showName.replace('c/recto' , 'strt edge')\n        }\n\n        if ((product.colorId === 'TAK' || product.colorId === 'MTR') && this.props.salesOrg != '2012') showName = 'TAJ MAHAL';\n\n        return (\n            <span className=\"product-title\" data-cy=\"global__product_display_name\" style={style}>\n                {showName}\n            </span>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(ProductDisplayName)\n)\n","import * as api from '../api'\nimport { getLanguage } from '../ui/reducers'\nimport { getSelectedCenter } from '../centers/reducers'\nimport { fetchCart } from '../cart/actions'\nimport { getEmployeeId } from '../big-account/reducers'\nimport { getSelectedShippingAddressForIkea } from '../shipping-addresses/reducers'\nimport { getToken } from '../login/reducers'\nimport { getWeightUnit } from '../profile-configuration/reducers'\nimport {\n    getOrderCenter,\n    getOrderCenterHasMinWeight,\n    getOrderCountryOfSend,\n    getOrderCurrentWeight,\n    getOrderGoalMax,\n    getOrderGoalMin,\n    getOrderHasDestination,\n    getOrderLenghtBundlesCart,\n    getOrderShippingAddress,\n    getOrderShippingMethod\n} from './reducers'\nimport { add2cartRecurringOrdersQty } from '../api'\nimport FileDownload from \"js-file-download\";\n\nexport const fetchOrders = (open, startDate, endDate, filterTypeDate = null, status = null, shippingType = null, supplierCenter = null, search = null) => (dispatch, getState) => {\n    const token = getState().login.token\n    switch (open) {\n        case undefined:\n            dispatch({\n                type: 'FETCH_ORDERS_REQUEST',\n                token,\n                open\n            })\n\n            return api\n                .fetchOrders(token, open, getLanguage(getState()), getSelectedCenter(getState()), startDate, endDate, filterTypeDate, status, shippingType, supplierCenter, search)\n                .then(\n                    response => {\n                        dispatch({ type: 'FETCH_ORDERS_SUCCESS', orders: response.data.data, ordersCurrentPage: 1, ordersLastPage: response.data.last_page })\n                    },\n                    error => {\n                        dispatch({ type: 'FETCH_ORDERS_FAILURE' })\n                        // api.errorHandler(dispatch, error.response)\n                    }\n                )\n        //REVIEW: unused??\n        case 'ikea':\n            dispatch({\n                type: 'FETCH_ORDERS_REQUEST',\n                token,\n                open\n            })\n\n            return api.fetchOrders(token, null, getLanguage(getState()), getSelectedCenter(getState()), startDate, endDate, filterTypeDate, status, search, supplierCenter).then(\n                response => {\n                    dispatch({ type: 'FETCH_ORDERS_SUCCESS', orders: response.data, ordersCurrentPage: 1, ordersLastPage: response.data.last_page })\n                },\n                error => {\n                    dispatch({ type: 'FETCH_ORDERS_FAILURE' })\n                    // api.errorHandler(dispatch, error.response)\n                }\n            )\n        case 'open':\n            dispatch({\n                type: 'FETCH_OPEN_ORDERS_REQUEST',\n                token\n            })\n\n            return api.fetchOrders(token, open, getLanguage(getState()), getSelectedCenter(getState()), startDate, endDate, filterTypeDate).then(\n                response => {\n                    dispatch({\n                        type: 'FETCH_OPEN_ORDERS_SUCCESS',\n                        openOrders: response.data\n                    })\n                },\n                error => {\n                    dispatch({ type: 'FETCH_OPEN_ORDERS_FAILURE' })\n                    api.errorHandler(dispatch, error.response)\n                }\n            )\n        case 'transfer':\n            dispatch({\n                type: 'FETCH_TRANSFER_ORDERS_REQUEST',\n                token\n            })\n\n            return api.fetchTransferOrders(token, getSelectedCenter(getState())).then(\n                response => {\n                    dispatch({\n                        type: 'FETCH_TRANSFER_ORDERS_SUCCESS',\n                        transferOrders: response.data\n                    })\n                },\n                error => {\n                    dispatch({ type: 'FETCH_TRANSFER_ORDERS_FAILURE' })\n                    api.errorHandler(dispatch, error.response)\n                }\n            )\n        case 'offers':\n            dispatch({\n                type: 'FETCH_OFFERS_REQUEST',\n                token\n            })\n\n            return api.fetchOffers(token, open, getLanguage(getState()), getSelectedCenter(getState()), startDate, endDate).then(\n                response => {\n                    dispatch({\n                        type: 'FETCH_OFFERS_SUCCESS',\n                        offers: response.data\n                    })\n                },\n                error => {\n                    dispatch({ type: 'FETCH_OFFERS_FAILURE' })\n                    api.errorHandler(dispatch, error.response)\n                }\n            )\n        default:\n            break\n    }\n}\nexport const fetchOrdersPaginate = (open, filterTypeDate, startDate, endDate, status = null, shippingType = null, supplierCenter = null, search = null, page) => (\n    dispatch,\n    getState\n) => {\n    const token = getState().login.token\n\n    dispatch({\n        type: 'FETCH_ORDERS_PAGINATE_REQUEST',\n        page,\n        token\n    })\n\n    return api\n        .fetchOrdersPaginate(\n            token,\n            open,\n            getLanguage(getState()),\n            getSelectedCenter(getState()),\n            filterTypeDate,\n            startDate,\n            endDate,\n            status,\n            shippingType,\n            supplierCenter,\n            search,\n            page\n        )\n        .then(\n            response => {\n                dispatch({\n                    type: 'FETCH_ORDERS_PAGINATE_SUCCESS',\n                    orders: response.data.data,\n                    ordersCurrentPage: response.data.current_page,\n                    ordersLastPage: response.data.last_page\n                })\n            },\n            error => {\n                dispatch({ type: 'FETCH_ORDERS_PAGINATE_FAILURE' })\n                // api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const fetchOrderToEdit = reservationId => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_ORDER_TO_EDIT_REQUEST',\n        token\n    })\n\n    return api.fetchOrderToEdit(token, reservationId, getLanguage(getState())).then(\n        response => {\n            dispatch({\n                type: 'FETCH_ORDER_TO_EDIT_SUCCESS',\n                orderToEdit: response.data.lines,\n                reservationId\n            })\n        },\n        error => {\n            dispatch({ type: 'FETCH_ORDER_TO_EDIT_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const saveOrderToEdit = (order, orderId, reservationId) => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'SAVE_ORDER_TO_EDIT_REQUEST',\n        order,\n        orderId,\n        reservationId,\n        token\n    })\n\n    return api.saveOrderToEdit(token, order, orderId, reservationId, getLanguage(getState())).then(\n        response => {\n            dispatch({ type: 'SAVE_ORDER_TO_EDIT_SUCCESS', orderToEdit: order })\n        },\n        error => {\n            dispatch({\n                type: 'SAVE_ORDER_TO_EDIT_FAILURE',\n                error: error.response.data.err\n            })\n        }\n    )\n}\nexport const clearOrderDetails = () => (dispatch, getState) => {\n    dispatch({\n        type: 'CLEAR_ORDER_DETAILS'\n    })\n}\nexport const fetchOrderDetails = reservationId => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_ORDER_DETAILS_REQUEST',\n        token\n    })\n\n    return api.fetchOrderDetails(token, reservationId, getLanguage(getState())).then(\n        response => {\n            dispatch({\n                type: 'FETCH_ORDER_DETAILS_SUCCESS',\n                orderDetailsCart: response.data.cart,\n                order: response.data.order,\n                orderDetailsHead: response.data.reservation,\n                openDocDetails: response.data.openDocDetails,\n                invoices: response.data.invoices\n            })\n            return Promise.resolve()\n        },\n        error => {\n            dispatch({ type: 'FETCH_ORDER_DETAILS_FAILURE', response: error.response })\n            return Promise.reject(error.response)\n            // api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const fetchPackingList = reservationId => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_PACKING_LIST_REQUEST',\n        token\n    })\n\n    return api.fetchPackingList(token, reservationId, getLanguage(getState())).then(\n        response => {\n            dispatch({\n                type: 'FETCH_PACKING_LIST_SUCCESS',\n                packingList: response.data.packingList\n            })\n        },\n        error => {\n            dispatch({ type: 'FETCH_PACKING_LIST_FAILURE', response: error.response })\n            // api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const fetchOfferOverview = reservationId => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_OFFER_OVERVIEW_REQUEST',\n        token\n    })\n\n    return api.fetchOfferOverview(token, reservationId, getLanguage(getState())).then(\n        response => {\n            dispatch({\n                type: 'FETCH_OFFER_OVERVIEW_SUCCESS',\n                packingList: response.data\n            })\n        },\n        error => {\n            dispatch({ type: 'FETCH_OFFER_OVERVIEW_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const rejectOrder = (reservationId, orderId) => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'REJECT_ORDER_REQUEST',\n        token,\n        reservationId,\n        orderId\n    })\n\n    return api.rejectOrder(token, reservationId, orderId, getLanguage(getState())).then(\n        response => {\n            dispatch({ type: 'REJECT_ORDER_SUCCESS', orderDetails: response.data, reservationId })\n        },\n        error => {\n            dispatch({\n                type: 'REJECT_ORDER_FAILURE',\n                statusText: error.response.data.err\n            })\n        }\n    )\n}\nexport const fetchRecurringOrders = (dateFrom = null, dateTo = null, search = null, page = null) => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_RECURRING_ORDERS_REQUEST'\n    })\n\n    return api.fetchRecurringOrders(token, getSelectedCenter(getState()), dateFrom, dateTo, search, page).then(\n        response => {\n            dispatch({\n                type: 'FETCH_RECURRING_ORDERS_SUCCESS',\n                recurringOrders: response.data\n            })\n        },\n        error => {\n            dispatch({ type: 'FETCH_RECURRING_ORDERS_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const fetchRecurringOrderDetails = id => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_RECURRING_ORDERS_DETAILS_REQUEST'\n    })\n\n    return api.fetchRecurringOrdersDetails(token, getSelectedCenter(getState()), id).then(\n        response => {\n            dispatch({\n                type: 'FETCH_RECURRING_ORDERS_DETAILS_SUCCESS',\n                recurringOrders: response.data\n            })\n        },\n        error => {\n            dispatch({ type: 'FETCH_RECURRING_ORDERS_DETAILS_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const toggleModalRecurringOrderDetails = selectedRecurringOrder => (dispatch, getState) => {\n    selectedRecurringOrder\n        ? dispatch({\n              type: 'OPEN_RECURRING_ORDERS_DETAILS',\n              selectedRecurringOrder: selectedRecurringOrder\n          })\n        : dispatch({ type: 'CLOSE_RECURRING_ORDERS_DETAILS' })\n}\nexport const add2CartRecurringOrder = id => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'ADD2CART_RECURRING_ORDERS_DETAILS_REQUEST'\n    })\n\n    return api\n        .add2cartRecurringOrders(token, getSelectedCenter(getState()), id, getSelectedShippingAddressForIkea(getState()), getEmployeeId(getState()), getLanguage(getState()))\n        .then(\n            response => {\n                dispatch({ type: 'ADD2CART_RECURRING_ORDERS_DETAILS_SUCCESS' })\n                dispatch(fetchCart(getSelectedCenter(getState())))\n                dispatch({ type: 'CLOSE_RECURRING_ORDERS_DETAILS' })\n            },\n            error => {\n                dispatch({ type: 'ADD2CART_RECURRING_ORDERS_DETAILS_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const add2CartRecurringOrderQty = value => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'ADD2CART_RECURRING_ORDERS_DETAILS_REQUEST'\n    })\n\n    return api\n        .add2cartRecurringOrdersQty(token, getSelectedCenter(getState()), value, getSelectedShippingAddressForIkea(getState()), getEmployeeId(getState()), getLanguage(getState()))\n        .then(\n            response => {\n                dispatch({ type: 'ADD2CART_RECURRING_ORDERS_DETAILS_SUCCESS' })\n                dispatch(fetchCart(getSelectedCenter(getState())))\n                dispatch({ type: 'CLOSE_RECURRING_ORDERS_DETAILS' })\n            },\n            error => {\n                dispatch({ type: 'ADD2CART_RECURRING_ORDERS_DETAILS_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const getFileByUrl = (url, name, extension) => (dispatch, getState) => {\n    dispatch({\n        type: 'GET_FILE_BY_URL_REQUEST'\n    })\n\n    const FileDownload = require('js-file-download');\n    const token = getToken(getState())\n\n    return api\n        .getFileByUrl(url, token)\n        .then(response => {\n            if (response.data instanceof Blob) {\n                let filename\n\n                if (name) {\n                    filename = name + '.' + extension\n                }\n                else if (response.headers && response.headers['content-disposition'] && response.headers['content-disposition'].includes('attachment')) {\n                    const regex = /\"([^\"]*)\"/;\n                    const attachment = regex.exec(response.headers['content-disposition']);\n                    if (attachment[1]) filename = attachment[1]\n                }\n\n                FileDownload(response.data, filename);\n                dispatch({ type: 'GET_FILE_BY_URL_SUCCESS' })\n            } else {\n                dispatch({\n                    type: 'GET_FILE_BY_URL_FAILURE',\n                    error: 'No response data'\n                })\n            }\n        })\n        .catch(error => {\n            dispatch({\n                type: 'GET_FILE_BY_URL_FAILURE',\n                error: error.response.data.err\n            })\n        })\n}\n\nexport const fetchAllLowesOrders = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_ALL_LOWES_ORDERS_REQUEST' })\n\n    return api\n        .fetchAllLowesOrders(getToken(getState()))\n        .then(response => {\n            dispatch({\n                type: 'FETCH_ALL_LOWES_ORDERS_SUCCESS',\n                lowesOrders: response.data\n            })\n        })\n        .catch(error => {\n            dispatch({\n                type: 'FETCH_ALL_LOWES_ORDERS_FAILURE',\n                error: error.response.data.err\n            })\n        })\n}\nexport const fetchAllLowesLinesOrders = (page, pageSize, query, startDate, endDate) => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_ALL_LOWES_LINES_ORDERS_REQUEST',\n        page,\n        pageSize,\n        query,\n        startDate,\n        endDate\n    })\n\n    return api\n        .fetchAllLowesLinesOrders(getToken(getState()), page, pageSize, query, startDate, endDate)\n        .then(response => {\n            dispatch({\n                type: 'FETCH_ALL_LOWES_LINES_ORDERS_SUCCESS',\n                lowesLinesOrders: response.data\n            })\n        })\n        .catch(error => {\n            dispatch({\n                type: 'FETCH_ALL_LOWES_LINES_ORDERS_FAILURE',\n                error: error.response.data.err\n            })\n        })\n}\n\nexport const fetchLowesOrderDetails = reservationId => (dispatch, getState) => {\n    dispatch({\n        type: 'GET_LOWES_ORDER_DETAILS_REQUEST',\n        reservationId: reservationId\n    })\n\n    return api\n        .fetchLowesOrderDetails(reservationId, getToken(getState()))\n        .then(response => {\n            dispatch({\n                type: 'GET_LOWES_ORDER_DETAILS_SUCCESS',\n                details: response.data\n            })\n        })\n        .catch(error => {\n            dispatch({\n                type: 'GET_LOWES_ORDER_DETAILS_FAILURE',\n                error: error.response.data.err\n            })\n        })\n}\n\nexport const toggleModalOrderLineDetail = orderLine => (dispatch, getState) => {\n    orderLine\n        ? dispatch({\n              type: 'SHOW_ORDER_LINE_DETAIL',\n              orderLine: orderLine\n          })\n        : dispatch({ type: 'CLOSE_ORDER_LINE_DETAIL' })\n}\nexport const closeOrderLineModal = () => {\n    return { type: 'CLOSE_ORDER_LINE_DETAIL' }\n}\n\nexport const changeOrderInEdition = orderInEdition => {\n    return { type: 'CHANGE_ORDER_IN_EDITION', orderInEdition }\n}\n\nexport const canEditOrderBundleCatalog = () => (dispatch, getState) => {\n    if (getOrderShippingAddress(getState()) && getOrderCenter(getState()) === 7500)\n        return (\n            getOrderHasDestination(getState()) &&\n            getOrderCurrentWeight(getState(), getWeightUnit(getState())) >= getOrderGoalMin(getState(), getWeightUnit(getState())) &&\n            canEditOrderBundleLimit()\n        )\n    else return false\n}\n\nexport const canEditOrderBundleLimit = () => (dispatch, getState) => {\n    let conditionForMaxBundle = getOrderShippingAddress(getState()) && getOrderShippingMethod(getState()) === 'CONTAINER' && getOrderCenter(getState()) === 7500\n\n    if (conditionForMaxBundle) {\n        let bundleLimit = getOrderCountryOfSend(getState()) === 'IN' ? 6 : 7\n        return getOrderLenghtBundlesCart(getState()) === bundleLimit\n    }\n    return true\n}\n\nexport const canEditOrderMinMax = () => (dispatch, getState) => {\n    const weightUnit = getWeightUnit(getState())\n    const currentWeight = getOrderCurrentWeight(getState(), getWeightUnit(getState()))\n    const goalMin = getOrderGoalMin(getState(), weightUnit)\n    const goalMax = getOrderGoalMax(getState(), weightUnit)\n\n    return (\n        (currentWeight >= goalMin && currentWeight <= goalMax) ||\n        (getOrderShippingMethod(getState()) === 'SINGLE_SLAB' && currentWeight <= goalMax) ||\n        getOrderCenterHasMinWeight(getState()) ||\n        getOrderShippingMethod(getState()) === 'MKTOOLS' ||\n        getOrderShippingMethod(getState()) === 'LOWES_CUSTOMER_SAMPLES' ||\n        dispatch(canEditOrderBundleCatalog())\n    )\n}\n\nexport const acceptQuote = (offer) => (dispatch, getState) => {\n    const token = getToken(getState())\n    dispatch({type: 'SEND_ACCEPT_QUOTE_REQUEST'})\n\n    api.acceptQuote(token, offer.reservationId).then(\n        response => dispatch({type: 'SEND_ACCEPT_QUOTE_SUCCESS', offer}),\n        error => dispatch({\n            type: 'SEND_ACCEPT_QUOTE_FAILURE',\n            statusText: error.response.data.err\n        })\n    );\n}\n\nexport const rejectQuote = (offer) => (dispatch, getState) => {\n    const token = getToken(getState())\n    dispatch({type: 'SEND_REJECT_QUOTE_REQUEST'})\n\n    api.rejectQuote(token, offer.reservationId).then(\n        response => dispatch({type: 'SEND_REJECT_QUOTE_SUCCESS', offer}),\n        error => dispatch({\n            type: 'SEND_REJECT_QUOTE_FAILURE',\n            statusText: error.response.data.err\n        })\n    );\n}\n\nexport const fetchPackagingImages = (orderId) => (dispatch, getState) => {\n    const token = getToken(getState())\n    dispatch({type: 'FETCH_PACKAGING_IMAGES_REQUEST'})\n\n    api.fetchPackagingImages(token, orderId).then(\n        response => dispatch({type: 'FETCH_PACKAGING_IMAGES_SUCCESS', packagingImages: response.data}),\n        error => dispatch({\n            type: 'FETCH_PACKAGING_IMAGES_FAILURE',\n            statusText: error.response.data.err\n        })\n    )\n}\n\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\n\nclass DisplayOutletIndicator extends React.Component {\n    render() {\n        const { outletQuality, inSmallBox = false, isSimplified = false, displayInLine = false } = this.props\n\n        // Styles for small box\n        const smallBoxStyles = {\n            fontSize: '8px',\n            lineHeight: '9px',\n            padding: '2px 4px',\n            minHeight: '21px',\n            letterSpacing: '0.5px'\n        }\n\n        // General styles\n        const styles = {\n            backgroundColor: '#C76923',\n            color: '#FFFFFF',\n            fontWeight: '500',\n            fontSize: inSmallBox ? smallBoxStyles.fontSize : '10px',\n            lineHeight: inSmallBox ? smallBoxStyles.lineHeight : '11px',\n            padding: inSmallBox ? smallBoxStyles.padding : '4px 8px',\n            textTransform: 'uppercase',\n            zIndex: 1,\n            fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n            position: 'relative',\n            display: displayInLine ? 'inline' : 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            flexWrap: 'wrap',\n            minHeight: inSmallBox ? smallBoxStyles.minHeight : '21px',\n            textAlign: 'left'\n        }\n\n        if (outletQuality) {\n            return (\n                <div className=\"outlet-indicator\" style={styles}>\n                    {this.props.outletQuality &&\n                        this.props.intl.formatMessage({\n                            id: `outlet_${this.props.outletQuality.toLowerCase()}`,\n                        })}{' '}\n                    {this.props.outletDeviated &&\n                        this.props.intl.formatMessage({\n                            id: 'deviated',\n                        })}\n                </div>\n            )\n        }\n\n        if (isSimplified) {\n            return (\n                <div className=\"outlet-indicator\" style={styles}>\n                    outlet\n                </div>\n            )\n        }\n\n        return null\n    }\n}\n\nexport default injectIntl(DisplayOutletIndicator)\n","import { getSalesOrg } from './reducers';\nimport { getWhatsappOptinPreviousPreferences } from '../profile-configuration/reducers';\nimport * as api from '../api'\nimport {\n    getImpersonatedBy,\n    getMandatoryChangePasswordOldPassword,\n    getMandatoryChangePasswordUsername,\n    getMulticartEnabled,\n    getToken,\n    getUserType,\n} from './reducers'\nimport { getLanguage } from '../ui/reducers'\nimport { getIsLogged } from './reducers'\nimport {\n    getCenters,\n    getLowesCenterId,\n    getIsIkeaCenter,\n    getIsLowesCenter,\n    getSelectedCenter,\n    getIsMkToolsCenter\n} from '../centers/reducers'\nimport {\n    fetchSpecialProductNames,\n    fetchUserPriceList,\n    fetchProductsDiscounts,\n    fetchProductsDiscountsByToken,\n    fetchSlidersProducts\n} from '../products/actions'\nimport { fetchProfileConfiguration, fetchPromotionConfiguration,fetchWhatsappConfiguration } from '../profile-configuration/actions'\nimport { getPreferredCenter, getProfileConfiguration } from '../profile-configuration/reducers'\nimport {changeCenter, changeFirstCenterFromSalesOrg} from '../centers/actions'\nimport { fetchReservations } from '../reservations/actions'\nimport { dispatchPushURL, setLanguage } from '../ui/actions'\nimport Cookies from 'js-cookie'\nimport { fetchShippingAddresses } from '../shipping-addresses/actions'\nimport { fetchUserLandings } from '../landing/actions'\nimport { canViewPricesPhase3 } from '../products/reducers'\n\nexport const SIMPLE_LOGIN_REQUEST = 'SIMPLE_LOGIN_REQUEST'\nexport const SIMPLE_LOGIN_SUCCESS = 'SIMPLE_LOGIN_SUCCESS'\n\nexport const SIMPLE_IMPERSONATE_REQUEST = 'SIMPLE_IMPERSONATE_REQUEST'\nexport const SIMPLE_IMPERSONATE_SUCCESS = 'SIMPLE_IMPERSONATE_SUCCESS'\nexport const SIMPLE_IMPERSONATE_FAILURE = 'SIMPLE_IMPERSONATE_FAILURE'\n\nconst simpleLogin = (username, password, ssoData) => (dispatch, getState) => {\n    dispatch({ type: SIMPLE_LOGIN_REQUEST })\n    // console.log(ssoData)\n    if (ssoData) {\n        if (ssoData.type === 'SSO') {\n            return api.loginSSO(ssoData.sapId, ssoData.email, getLanguage(getState())).then(response => {\n                dispatch({ type: SIMPLE_LOGIN_SUCCESS, token: response.data.token })\n                dispatch({ type: 'SET_SAP_ID', sapId: username , simpleAccess: false})\n            })\n        } else if (ssoData.type === 'AD') {\n            // console.log('attempting to login ad')\n            return api.loginAD(ssoData.username, getLanguage(getState()), ssoData.azureToken).then(response => {\n                dispatch({ type: SIMPLE_LOGIN_SUCCESS, token: response.data.token })\n                dispatch({ type: 'SET_SAP_ID', sapId: response.sapId })\n            })\n        } else if (ssoData.type === 'JT') {\n            return api.loginJT(ssoData.sapId, ssoData.email, getLanguage(getState())).then(response => {\n                dispatch({ type: SIMPLE_LOGIN_SUCCESS, token: response.data.token })\n                dispatch({ type: 'SET_SAP_ID', sapId: username , simpleAccess: false})\n                dispatch(fetchLowesStoresData())\n            })\n        } else if (ssoData === 'SHOP') {\n            return api.loginShops(username, password, getLanguage(getState())).then(response => {\n                dispatch({ type: SIMPLE_LOGIN_SUCCESS, token: response.data.token })\n                dispatch({ type: 'SET_SAP_ID', sapId: username , simpleAccess: false})\n            })\n        }\n    } else {\n        return api.login(username, password, getLanguage(getState())).then(response => {\n            dispatch({ type: SIMPLE_LOGIN_SUCCESS, token: response.data.token })\n            dispatch({ type: 'SET_SAP_ID', sapId: null , simpleAccess: true})\n        })\n    }\n}\n\nconst fetchLowesStoresData = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LOWES_STORE_DATA_REQUEST' })\n    return api\n        .fetchInfoUserLowes(getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_LOWES_STORE_DATA_SUCCESS', lowesStoreData: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LOWES_STORE_DATA_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\n\nconst simpleImpersonate = (userId, locale, stay = false) => (dispatch, getState) => {\n    dispatch({ type: SIMPLE_IMPERSONATE_REQUEST })\n    return api.impersonate(userId, getToken(getState()), getLanguage(getState())).then(response => {\n        dispatch({ type: SIMPLE_IMPERSONATE_SUCCESS, token: response.data.token })\n        dispatch({ type: 'SIMPLE_IMPERSONATE_RESUCCESS' })\n        \n        if (!stay) {\n            dispatch(dispatchPushURL())\n        }\n    })\n}\n\nexport const gerPriceListByUserId = userId => (dispatch, getState) => {\n    dispatch({ type: 'GET_PRICE_LIST_REQUEST' })\n    return api.impersonate(userId, getToken(getState()), getLanguage(getState())).then(response => {\n        dispatch({ type: 'GET_PRICE_LIST_SUCCESS', token: response.data.token })\n        if (canViewPricesPhase3(getState())) {\n            dispatch(fetchProductsDiscountsByToken(response.data.token))\n        }\n    })\n}\n\nconst initalizeUser = () => (dispatch, getState) => {\n    return dispatch(fetchProfileConfiguration()).then(() => {\n        dispatch(fetchPromotionConfiguration()).then(() => {})\n        const preferredCenter = getPreferredCenter(getState())\n        const centers = getCenters(getState())\n        if (centers.length > 0) {\n            const selectedCenter = preferredCenter ? parseInt(preferredCenter, 10) : centers[0].centerId\n            dispatch(changeCenter(selectedCenter))\n            dispatch(fetchShippingAddresses())\n            dispatch(fetchUserPriceList())\n            dispatch(fetchUserLandings())\n\n            return dispatch(fetchSpecialProductNames())\n        } else return Promise.reject({ response: { data: { err: 'USER_WITHOUT_CENTERS' } } })\n    })\n}\n\nexport const impersonate = (userId, stay = false) => (dispatch, getState) => {\n    const locale = getLanguage(getState()) === 'en-US' ? '' : getLanguage(getState())\n    dispatch({ type: 'IMPERSONATE_PROCESS_INIT' })\n    return dispatch(simpleImpersonate(userId, locale, stay))\n        .then(success => {\n            return dispatch(initalizeUser()).then(() => {\n                dispatch({ type: 'RESET_CUT_TO_SIZE' })\n                dispatch({ type: 'IMPERSONATE_PROCESS_FINISH' })\n                // dispatch(dispatchPushURL())\n                if (getCenters(getState()).length > 0) dispatch({ type: 'REMEMBER_CENTER' })\n                //Disabled because its unmantained and affects performance\n                // dispatch(fetchChangelogByProject())\n                //Disabled because its unmantained and affects performance\n                // dispatch(fetchChangelogByProject(true))\n                //Call to get user discounts.\n                if (canViewPricesPhase3(getState())) {\n                    dispatch(fetchProductsDiscounts())\n                }\n                //if user bigaccount\n                if (getMulticartEnabled(getState())) {\n                    dispatch({ type: 'TOGGLE_SHOW_BIG_ACCOUNT_MODAL' })\n                }\n\n                dispatch(fetchSlidersProducts())\n                if (getUserType(getState()) === 'ADMIN') {\n                    //Disabled because its unmantained and affects performance\n                    // dispatch(fetchChangelogByProject())\n                    dispatch(getIsCampaignAdmin())\n                    api.mallCheckLogin(userId, getState().login.token).then(response => {\n                        dispatch({ type: 'CHECK_LOGIN_SUCCESS', userAuthorized: response.data })\n                    })\n                }\n            })\n        })\n        .catch(error => {\n            dispatch({ type: 'IMPERSONATE_PROCESS_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const loginRequired = (callback = null, callbackCenter = null, callbackSalesOrg = null) => (dispatch, getState) => {\n    dispatch({\n        type: 'LOGIN_REQUIRED',\n        callbackCenter: callbackCenter,\n        callbackSalesOrg: callbackSalesOrg,\n        // callback: callback ? callback : () => { },\n        callback: () => {},\n        payload: { statusText: 'LOGIN_REQUIRED' }\n    })\n}\nexport const login = (username, password, callback = null, callbackCenter = null, intl, ssoData = null, callbackSalesOrg = null) => (dispatch, getState) => {\n    dispatch({ type: 'LOGIN_PROCESS_INIT' })\n    \n    return dispatch(simpleLogin(username, password, ssoData))\n        .then(() => {\n            return dispatch(initalizeUser()).then(() => {\n                let lang = getLanguage(getState())\n\n                dispatch({ type: 'LOGIN_PROCESS_FINISH' })\n                if (username) {\n                    const token = getState().login.token\n                    dispatch(fetchUserLandings())\n                    api.mallCheckLogin(username, token).then(response => {\n                        dispatch({ type: 'CHECK_LOGIN_SUCCESS', userAuthorized: response.data })\n                    })\n                }\n                if (callback === null && getCenters(getState()).length > 0 && typeof username === 'string' && username.toUpperCase() !== 'MKTOOLS') dispatch({ type: 'REMEMBER_CENTER' })\n                if (getUserType(getState()) === 'SHOP') dispatch(fetchReservations('unassigned'))\n                //Call to get user discounts.\n                if (canViewPricesPhase3(getState())) {\n                    dispatch(fetchProductsDiscounts())\n                }\n                if (callback != null) {\n                    if(callbackSalesOrg){\n                        dispatch(changeFirstCenterFromSalesOrg(callbackSalesOrg))\n                    }\n                    const isBetweenCenters = getCenters(getState()).find(center => parseInt(center.centerId, 10) === parseInt(callbackCenter, 10))\n                    if (callbackCenter && isBetweenCenters) {\n                        dispatch(changeCenter(parseInt(callbackCenter, 10)))\n                    }\n                    dispatch(callback)\n                }\n\n                if (getSelectedCenter(getState()) === getLowesCenterId() && getUserType(getState()) === 'ADMIN')\n                    dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG_LOWES_ADMIN' }).replace(':filter', 'home')))\n                else if (getSelectedCenter(getState()) === getLowesCenterId()) dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG_LOWES' }).replace(':filter', 'home')))\n                else if (getIsIkeaCenter(getState())) {\n                    dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', '')))\n                    dispatch({ type: 'REMEMBER_CENTER' })\n                }\n\n                if (getUserType(getState()) === 'ADMIN') {\n                    //Disabled because its unmantained and affects performance\n                    // dispatch(fetchChangelogByProject())\n                    dispatch(getIsCampaignAdmin())\n                }\n\n                if (callback === null && getProfileConfiguration(getState()).locale) {\n                    lang = getProfileConfiguration(getState()).locale\n                    Cookies.set('defaultLanguage', lang)\n                    dispatch(setLanguage(lang))\n                    dispatch(dispatchPushURL())\n                }\n                //if user bigaccount\n                if (getMulticartEnabled(getState())) {\n                    dispatch({ type: 'TOGGLE_SHOW_BIG_ACCOUNT_MODAL' })\n                }\n\n\n                if (getUserType(getState()) === 'CUSTOMER') {\n\n                    dispatch({ type: 'SHOW_SILESTONEXM_MODAL' })\n\n                    // Dispatch only for user type customer\n                    dispatch(fetchHasWalkthrough())\n                    //whatsapp optin only in Holland, Germany, and Austria\n                    if (['2000', '2001', '2014'].includes(getSalesOrg(getState()))) {\n                        dispatch(fetchWhatsappConfiguration()).then(() => {\n                            // console.log('toy akaaa', getWhatsappOptinPreviousPreferences(getState()))\n                            if (\n                                !getWhatsappOptinPreviousPreferences(getState()) &&\n                                getUserType(getState()) === 'CUSTOMER' &&\n                                !getIsIkeaCenter(getState()) &&\n                                !getIsLowesCenter(getState()) &&\n                                !getImpersonatedBy(getState())\n                            ) {\n                                dispatch({ type: 'SHOW_WHATSAPP_MODAL', showWhatsappModal: true })\n                            }\n                        })\n                    }\n\n                    if (lang === 'es') {\n                        dispatch({ type: 'HOTJAR_FABRICATORS_SURVEY_ES' });\n                        try {\n                            if (window.hj) {\n                                window.hj('trigger', 'fabricators_survey_es');\n                            }\n                        } catch (error) {\n                            console.error('Error triggering Hotjar for ES survey:', error);\n                        }\n                    } else {\n                        dispatch({ type: 'HOTJAR_FABRICATORS_SURVEY_EN' });\n                        try {\n                            if (window.hj) {\n                                window.hj('trigger', 'fabricators_survey_en');\n                            }\n                        } catch (error) {\n                            console.error('Error triggering Hotjar for EN survey:', error);\n                        }\n                    }\n                }\n\n                if(getIsMkToolsCenter(getState()) || getSelectedCenter(getState()) === getLowesCenterId() || getIsIkeaCenter(getState())) dispatch({ type: 'HIDE_ALL_BANNER_CATALOG' })\n                // dispatch(dispatchPushURL())               \n            })\n        })\n        .catch(error => {\n            // console.log('ERROR_LOGIN', error)\n            if (error.message === 'Network Error') dispatch({ type: 'LOGIN_PROCESS_FAILURE', statusText: error.message })\n            else if (error.response && error.response.status === 503 && error.response.data.err === 'MAINTENANCE_MODE_ON') {\n                dispatch({ type: 'MAINTENANCE_MODE_ON' })\n                dispatch({ type: 'RESET_UI' })\n            } else if (error.response && error.response.data && error.response.data.err === 'PASSWORD_DOESNT_MEET_REQUIREMENTS') {\n                dispatch({\n                    type: 'MANDATORY_CHANGE_PASSWORD',\n                    alert: 'MANDATORY_PASSWORD_CHANGE',\n                    username: username,\n                    oldPassword: password\n                })\n            } else dispatch({ type: 'LOGIN_PROCESS_FAILURE', statusText:error.response && error.response.data && error.response.data.err ? error.response.data.err : 'NETWORK_ERROR' })\n        })\n}\n\nexport const hasFeedback = (banner) => (dispatch, getState) => {\n    if(!getIsLogged(getState())) return\n    return api\n        .hasFeedback(banner, getToken(getState()))\n        .then(response => {\n            dispatch({type: 'HAS_FEEDBACK', response: response.data.show})\n        })\n        .catch(error => {\n            dispatch({\n                type: 'SEND_FEDDBACK_FAILURE',\n                statusText: error.response.data.err,\n                status: error.response.status\n            })\n        })\n}\n\nexport const logout = (stay = false) => (dispatch, getState) => {\n    dispatch({\n        type: 'LOGOUT'\n    })\n    dispatch({ type: 'EMPTY_CENTERS' })\n    dispatch({ type: 'EMPTY_CART' })\n    dispatch({ type: 'EMPTY_RESERVATIONS' })\n    localStorage.clear()\n    if (!stay) {\n        dispatch(dispatchPushURL())\n    }\n    return Promise.resolve()\n}\nexport const recoverPassword = (username, email) => (dispatch, getState) => {\n    dispatch({ type: 'RECOVER_PASSWORD_REQUEST', username, email })\n\n    return api\n        .recoverPassword(username, email)\n        .then(response => {\n            dispatch({ type: 'RECOVER_PASSWORD_SUCCESS', statusText: response.data, status: response.status })\n        })\n        .catch(error => {\n            dispatch({\n                type: 'RECOVER_PASSWORD_FAILURE',\n                statusText: error.response.data.err,\n                status: error.response.status\n            })\n        })\n}\nexport const createAccount = (username, email) => (dispatch, getState) => {\n    dispatch({ type: 'CREATE_ACCOUNT_REQUEST', username, email })\n\n    return api\n        .createAccount(username, email)\n        .then(response => {\n            dispatch({ type: 'CREATE_ACCOUNT_SUCCESS', alert: response.data, status: response.status })\n        })\n        .catch(error => {\n            dispatch({\n                type: 'CREATE_ACCOUNT_FAILURE',\n                statusText: error.response.data.err,\n                status: error.response.status\n            })\n        })\n}\nexport const addEmailCenter = (user, email) => (dispatch, getState) => {\n    dispatch({ type: 'ADD_EMAIL_CENTER_REQUEST', user, email })\n\n    return api\n        .addEmailCenter(user, email, getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'ADD_EMAIL_CENTER_SUCCESS', alert: response.data, status: response.status })\n        })\n        .catch(error => {\n            dispatch({\n                type: 'ADD_EMAIL_CENTER_FAILURE',\n                statusText: error.response.data.err,\n                status: error.response.status\n            })\n        })\n}\nexport const mandatoryChangePasswordRequest = (newPassword, newPasswordRepeat) => (dispatch, getState) => {\n    if (newPassword !== newPasswordRepeat) {\n        dispatch({ type: 'MANDATORY_CHANGE_PASSWORD_NOT_MATCH', alert: 'PASSWORDS_NOT_MATCH' })\n        return\n    }\n\n    dispatch({\n        type: 'MANDATORY_CHANGE_PASSWORD_REQUEST'\n    })\n    return api.mandatoryChangePassword(getMandatoryChangePasswordUsername(getState()), getMandatoryChangePasswordOldPassword(getState()), newPassword).then(\n        response => {\n            dispatch({\n                type: 'MANDATORY_CHANGE_PASSWORD_SUCCESS',\n                alert: 'PASS_CHANGED_LOGIN_AGAIN'\n            })\n        },\n        error => {\n            dispatch({\n                type: 'MANDATORY_CHANGE_PASSWORD_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n        }\n    )\n}\n\nexport const getIsCampaignAdmin = () => (dispatch, getState) => {\n    dispatch({ type: 'GET_IS_CAMPAIGN_ADMIN_REQUEST' })\n    return api\n        .getIsCampaignAdmin(getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'GET_IS_CAMPAIGN_ADMIN_SUCCESS', isCampaignAdmin: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'GET_IS_CAMPAIGN_ADMIN_FAILURE' })\n        })\n}\n\n/**\n * Action to fetch / get the user walkthrough data\n */\nexport const fetchHasWalkthrough = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_HAS_WALKTHROUGH_REQUEST' })\n\n    const token = getToken(getState())\n\n    return api.fetchHasWalkthrough(token).then(response => {\n        dispatch({ \n            type: 'FETCH_HAS_WALKTHROUGH_SUCCESS',\n            hasWalkthrough: response.data\n        })\n    },\n    error => {\n            dispatch({ \n                type: 'FETCH_HAS_WALKTHROUGH_FAILURE',\n                status: error.response.status \n            })\n        }\n    )\n}","import * as api from '../api'\nimport { getToken } from '../login/reducers'\nimport { getLanguage } from '../ui/reducers'\nimport { getSelectedCenter } from '../centers/reducers'\nimport {\n    getSelectedBusinesSegment,\n    getSelectedChannel,\n    getSelectedSubchannel,\n    getSelectedTypology,\n    getSelectedUse,\n    getSelectedKB,\n    getSelectedBuilder,\n    getPO,\n    getPreferredSegmentationByName,\n    getSelectedSalesForceId,\n    getSelectedProjectId,\n    getSelectedSubchannelProgram,\n    getSelectedOriginalChannel\n} from './reducers'\nimport suggestedSegmentation from \"../../components/segmentation/SuggestedSegmentation\";\n\nexport const submittSegmentationModal = callback => (dispatch, getState) => {\n    dispatch({ type: 'CLOSE_SEGMENTATION_MODAL' })\n    dispatch({ type: 'SUBMIT_SEGMENTATION_SUCCESS' })\n    dispatch(callback)\n}\nexport const CLEAR_SEGMENTATION = 'CLEAR_SEGMENTATION'\nexport const clearSegmentation = () => {\n    return {\n        type: CLEAR_SEGMENTATION\n    }\n}\nexport const TOGGLE_SEGMENTATION = 'TOGGLE_SEGMENTATION'\nexport const toggleSegmentation = seg => {\n    return {\n        type: TOGGLE_SEGMENTATION,\n        seg\n    }\n}\nexport const SELECT_BUSINESS_SEGMENT = 'SELECT_BUSINESS_SEGMENT'\nexport const selectBusinessSegment = (value, name) => {\n    return {\n        type: SELECT_BUSINESS_SEGMENT,\n        value,\n        name\n    }\n}\nexport const SELECT_CHANNEL = 'SELECT_CHANNEL'\nexport const selectChannel = (value, name) => {\n    return {\n        type: SELECT_CHANNEL,\n        value,\n        name\n    }\n}\nexport const SELECT_SUBCHANNEL = 'SELECT_SUBCHANNEL'\nexport const selectSubChannel = (value, name) => {\n    return {\n        type: SELECT_SUBCHANNEL,\n        value,\n        name\n    }\n}\nexport const SELECT_SALESFORCEID = 'SELECT_SALESFORCEID'\nexport const selectSalesForceId = (value, name, subchannelProgram, businessSegment, subchannelId) => {\n    return { type: SELECT_SALESFORCEID, value, name, subchannelProgram, businessSegment, subchannelId }\n}\nexport const SELECT_PROJECTID = 'SELECT_PROJECTID'\nexport const selectProjectId = (value, name, subchannelProgram, businessSegment, subchannelId) => {\n    return { type: SELECT_PROJECTID, value, name, subchannelProgram, businessSegment, subchannelId }\n}\nexport const selectProjectIdV4 = (value, name, subchannelProgram, businessSegment, subchannelId, salesForceId, salesForceName, originalChannel, originalChannelName, nexusOriginalChannel) => {\n    return { type: SELECT_PROJECTID, value, name, subchannelProgram, businessSegment, subchannelId, salesForceId, salesForceName, originalChannel, originalChannelName, nexusOriginalChannel }\n}\nexport const SELECT_USE = 'SELECT_USE'\nexport const selectUse = (value, name) => {\n    return {\n        type: SELECT_USE,\n        value: value,\n        name: name\n    }\n}\nexport const SELECT_TYPOLOGY = 'SELECT_TYPOLOGY'\nexport const selectTypology = (value, name) => {\n    return {\n        type: SELECT_TYPOLOGY,\n        value: value,\n        name: name\n    }\n}\nexport const SELECT_KB = 'SELECT_KB'\nexport const selectKB = option => {\n    return {\n        type: SELECT_KB,\n        value: option.value,\n        name: option.label\n    }\n}\nexport const SELECT_BUILDER = 'SELECT_BUILDER'\nexport const selectBuilder = value => {\n    return {\n        type: SELECT_BUILDER,\n        value\n    }\n}\nexport const SET_PO = 'SET_PO'\nexport const setPO = value => {\n    return {\n        type: SET_PO,\n        value\n    }\n}\nexport const FETCH_SEGMENTATION_REQUEST = 'FETCH_SEGMENTATION_REQUEST'\nexport const FETCH_SEGMENTATION_SUCCESS = 'FETCH_SEGMENTATION_SUCCESS'\nexport const FETCH_SEGMENTATION_FAILURE = 'FETCH_SEGMENTATION_FAILURE'\nexport const fetchSegmentation = () => (dispatch, getState) => {\n    dispatch({\n        type: FETCH_SEGMENTATION_REQUEST,\n        selectedCenter: getSelectedCenter(getState()),\n        token: getToken(getState()),\n        locale: getLanguage(getState())\n    })\n    return api\n        .fetchSegmentation(getSelectedCenter(getState()), getToken(getState()), getLanguage(getState()))\n        .then(response => {\n            dispatch({ type: FETCH_SEGMENTATION_SUCCESS, segmentation: response.data, segmentationV3: response.data.segmentationV3 })\n        })\n        .catch(error => {\n            dispatch({ type: FETCH_SEGMENTATION_FAILURE })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const deletePreferredSegmentation = currentFavourite => (dispatch, getState) => {\n    dispatch({ type: 'DELETE_PREFERRED_SEGMENTATION_REQUEST', currentFavourite: currentFavourite })\n    return api\n        .deleteSegmentationPreferred(currentFavourite, getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'DELETE_PREFERRED_SEGMENTATION_SUCCESS', currentFavourite: currentFavourite })\n            dispatch(fetchSegmentation())\n        })\n        .catch(error => {\n            dispatch({ type: 'DELETE_PREFERRED_SEGMENTATION_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const loadPreferredSegmentation = currentFavourite => (dispatch, getState) => {\n    dispatch({ type: 'SET_CURRENT_FAVOURITE', currentFavourite: currentFavourite })\n    dispatch({ type: 'LOAD_SEGMENTATION_PREFERED_SUCCESS', segmentation: getPreferredSegmentationByName(getState(), currentFavourite) })\n}\nexport const loadThisSegmentation = segmentation => (dispatch, getState) => {\n    dispatch({\n        type: 'LOAD_SEGMENTATION_PREFERED_SUCCESS',\n        segmentation: segmentation\n    })\n}\nexport const saveSegmentationPreferred = currentFavourite => (dispatch, getState) => {\n    dispatch({ type: 'SAVE_CURRENT_FAVOURITE_REQUEST', currentFavourite: currentFavourite })\n    const state = getState()\n    const originalChannel = getSelectedOriginalChannel(state)\n    const kb = getSelectedKB(state)\n    const builder = getSelectedBuilder(state)\n    const channel = getSelectedChannel(state)\n\n\n\n    let segmentationData = {\n        segmentation: {\n            name: currentFavourite,\n            businessSegment: getSelectedBusinesSegment(state),\n            channel: originalChannel ? originalChannel :channel,\n            subchannel: getSelectedSubchannel(state),\n            salesforceId: getSelectedSalesForceId(state),\n            projectId:getSelectedProjectId(state),\n            subchannelProgram: getSelectedSubchannelProgram(state),\n            typology: getSelectedTypology(state),\n            use: getSelectedUse(state),\n            kbId: kb ? kb.id : null,\n            kbName: kb ? kb.name : null,\n            builderId: builder ? builder.id : null,\n            builderName: builder ? builder.name : null,\n            purchaseOrders: null\n        }\n    }\n\n    return api\n        .saveSegmentationPreferred(\n            getToken(state),\n            getSelectedCenter(state),\n            segmentationData\n        )\n        .then(response => {\n            dispatch({ type: 'SAVE_CURRENT_FAVOURITE_SUCCESS', segmentation: response.data })\n            dispatch(fetchSegmentation())\n        })\n        .catch(error => {\n            dispatch({ type: 'SAVE_CURRENT_FAVOURITE_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const setSegmentationCurrentStep = step => (dispatch) => {\n    dispatch({\n        type: 'SET_SEGMENTATION_CURRENT_STEP',\n        segmentationCurrentStep: step\n    })\n}\n\nexport const setSegmentationEvidence = formData => (dispatch) => {\n    return new Promise((resolve) => {\n        dispatch({\n            type: 'SET_SEGMENTATION_EVIDENCE',\n            segmentationEvidence: formData,\n        });\n        resolve()\n    })\n}\n\nexport const setSegmentationFromSuggested = suggestedSegmentation => (dispatch) => {\n    dispatch({\n        type: 'SET_SEGMENTATION_FROM_SUGGESTED',\n        suggestedSegmentation: suggestedSegmentation\n    })\n}","import React from 'react'\n\nimport PropTypes from 'prop-types'\nimport { confirmable } from 'react-confirm'\nimport Button from './Button'\nimport {defineMessages, injectIntl, IntlProvider, FormattedMessage} from 'react-intl'\nimport {messages as i18nMessages} from '../../i18n/messages'\n\n\ndefineMessages({\n    CONFIRM: {\n        id: 'CONFIRM',\n        description: 'CONFIRM',\n        defaultMessage: 'Are you sure?'\n    },\n    CHANGE_CENTER_CONFIRM: {\n        id: 'CHANGE_CENTER_CONFIRM',\n        description: 'CHANGE_CENTER_CONFIRM',\n        defaultMessage: 'Cart is linked to center, are you sure?'\n    },\n    CHANGE_STORE_CONFIRM: {\n        id: 'CHANGE_STORE_CONFIRM',\n        description: 'CHANGE_STORE_CONFIRM',\n        defaultMessage: 'Cart is linked to store, are you sure?'\n    },\n    CHANGE_SHIPPING_CENTER: {\n        id: 'CHANGE_SHIPPING_CENTER',\n        description: 'CHANGE_SHIPPING_CENTER',\n        defaultMessage: 'Do you want to change the market? your selection by shopping cart will be lost'\n    },\n    IMPERSONATE_CONFIRM: {\n        id: 'IMPERSONATE_CONFIRM',\n        description: 'IMPERSONATE_CONFIRM',\n        defaultMessage: 'Cart is linked to center and user, are you sure?'\n    },\n    REJECT_RESERVATION_CONFIRM: {\n        id: 'REJECT_RESERVATION_CONFIRM',\n        description: 'REJECT_RESERVATION_CONFIRM',\n        defaultMessage: 'Are you sure to reject this reservation?'\n    },\n    DELETE_TEMPLATE_LOWES_CONFIRM: {\n        id: 'DELETE_TEMPLATE_LOWES_CONFIRM',\n        description: 'DELETE_TEMPLATE_LOWES_CONFIRM',\n        defaultMessage: 'Are you sure to delete this template?'\n    },\n    DELETE_ITEM_LOWES_CONFIRM: {\n        id: 'DELETE_ITEM_LOWES_CONFIRM',\n        description: 'DELETE_ITEM_LOWES_CONFIRM',\n        defaultMessage: 'Are you sure you want to delete this item?'\n    },\n    ACTIVATE_PROMOTION_MAILING_CONFIRM:{\n        id: 'ACTIVATE_PROMOTION_MAILING_CONFIRM',\n        description: 'ACTIVATE_PROMOTION_MAILING_CONFIRM',\n        defaultMessage: 'Are you sure to activate the promotion? it will trigger the mailing on promotion start date' \n    },\n    CONFIRM_REJECT_QUOTE: {\n        id: 'CONFIRM_REJECT_QUOTE',\n        description: 'CONFIRM_REJECT_QUOTE',\n        defaultMessage: 'Are you sure to reject this quote?'\n    },\n    CONFIRM_ACCEPT_QUOTE: {\n        id: 'CONFIRM_ACCEPT_QUOTE',\n        description: 'CONFIRM_ACCEPT_QUOTE',\n        defaultMessage: 'Are you sure to accept this quote?'\n    }\n})\n\nfunction findLangFromProvider() {\n    const node = document.querySelector('#root')\n    let _node\n\n    for (var key in node) {\n        if (key.startsWith(\"__reactContainer\")) {\n            _node = node[key].child\n        }\n    }\n\n    return  _node\n        && _node.memoizedState\n        && _node.memoizedState.storeState\n        && _node.memoizedState.storeState.ui\n        && _node.memoizedState.storeState.ui.language\n}\n\nconst ConfirmDialog = (props) => {\n    const lang = findLangFromProvider()\n    return <IntlProvider locale={lang} messages={i18nMessages[lang]} key={lang}>\n            <InjectedConfirmDialog {...props}/>\n        </IntlProvider>\n}\n\nexport const InnerConfirmDialog = ({ show, proceed, dismiss, cancel, confirmation, options, intl }) => {\n\n    const textOk = options.textOk ? options.textOk : intl ? intl.formatMessage({id:'ok', defaultMessage:'Ok'}) : 'OK'\n    const textCancel = options.textCancel ? options.textCancel : intl ? intl.formatMessage({id:'cancel', defaultMessage:'Cancel'}) : 'CANCEL'\n\n    return (\n        <div className={options.isV2 ? 'modal-v2 v2' : 'modal-v2 v2'}>\n            <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} />\n            <div id=\"confirm-container\" className=\"confirm\" style={{ display: show ? 'block' : 'none' }}>\n                <div className=\"container-fluid\">\n                    <div className=\"row\">\n                        <div className=\"col-12 container\">\n                            <header className=\"container-fluid\">\n                                <div>\n                                    <h2>{confirmation}</h2>\n                                    <div className=\"confirm-container-buttons\">\n                                        <Button className={'text-cancel-btn'} onClick={() => cancel('arguments will be passed to the callback')} datacy=\"confirm_dialog__cancel\">\n                                            {textCancel}\n                                        </Button>\n                                        <Button className={'text-ok-btn bt-inverted'} onClick={() => proceed('same as cancel')} datacy=\"confirm_dialog__ok\">\n                                            {textOk}\n                                        </Button>\n                                    </div>\n                                </div>\n                            </header>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nconst InjectedConfirmDialog = injectIntl(InnerConfirmDialog)\n\n\nInnerConfirmDialog.propTypes = {\n    show: PropTypes.bool, // from confirmable. indicates if theyarn start dialog is shown or not.\n    proceed: PropTypes.func, // from confirmable. call to close the dialog with promise resolved.\n    cancel: PropTypes.func, // from confirmable. call to close the dialog with promise rejected.\n    dismiss: PropTypes.func, // from confirmable. call to only close the dialog.\n    confirmation: PropTypes.string, // arguments of your confirm function\n    options: PropTypes.object, // arguments of your confirm function\n}\n\nexport default confirmable(ConfirmDialog)\n","import { createConfirmation } from 'react-confirm'\nimport ConfirmDialog from './ConfirmDialog'\n\n// create confirm function\nconst confirm = createConfirmation(ConfirmDialog)\n\nexport default function(confirmation, options = {}) {\n    return confirm({ confirmation, options })\n}\n","export const initState = {\n    employeeId: null\n}\n\nconst bigAccount = (state = initState, action) => {\n    //please define error messages translations at floatingAlert component\n    switch (action.type) {\n        case 'SET_EMPLOYEE_ID':\n            return Object.assign({}, state, { employeeId: action.employeeId })\n        case 'LOGOUT':\n            return Object.assign({}, state, { employeeId: null })\n        default:\n            return state\n    }\n}\n\nexport const getEmployeeId = state => {\n    return state.bigAccount.employeeId\n}\nexport default bigAccount\n","import * as api from '../api'\nimport { getToken } from '../login/reducers'\nimport {\n    getCurrentPromotionId,\n    getDiscountMaterials,\n    getFetchedCenters,\n    getFetchedCountries,\n    getFetchedMarkets, getMaterialsSelectedData,\n    getStep\n} from './reducers'\nimport { getAvailableLands, getLanguage } from '../ui/reducers'\nimport { getSelectedCenter } from '../centers/reducers'\nimport {sendApproveCampaignDiscount, sendDenyCampaignDiscount} from \"../api\";\n\nexport const sendPromotionHeader = _data => (dispatch, getState) => {\n    let data = { ..._data, promotionId: getCurrentPromotionId(getState()) }\n    dispatch({\n        type: 'SEND_PROMOTION_HEADER_REQUEST',\n        name: data.name,\n        startDate: data.startDate,\n        endDate: data.endDate,\n        commercial_name: data.commercial_name,\n        description: data.description,\n        isNewPromo: !!data.promotionId,\n        promotionId: data.promotionId\n    })\n    return api\n        .sendPromotionHeader(getToken(getState()), data)\n        .then(response => {\n            return dispatch({\n                type: 'SEND_PROMOTION_HEADER_SUCCESS',\n                status: response.status,\n                promotionId: response.data,\n                data,\n                alert: 'Genearl Info saved'\n            })\n        })\n        .catch(error => {\n            dispatch({\n                type: 'SEND_PROMOTION_HEADER_FAILURE',\n                status: error.response.status,\n                alert: error.response.data.err\n            })\n            return Promise.reject()\n            return dispatch({\n                type: 'SEND_PROMOTION_HEADER_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n        })\n}\n\nexport const sendTemplatesSelected = data => (dispatch, getState) => {\n    data = { ...data, promotionId: getCurrentPromotionId(getState()) }\n    dispatch({ type: 'SEND_TEMPLATES_SELECTED_REQUEST', data })\n    return api\n        .sendTemplatesSelected(getToken(getState()), data)\n        .then(response => {\n            return dispatch({ type: 'SEND_TEMPLATES_SELECTED_SUCCESS', status: response.status, data, step: getStep(getState()) + 1 })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'SEND_TEMPLATES_SELECTED_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n        })\n}\nexport const changeStep = step => (dispatch, getState) => {\n    return dispatch({ type: 'PROMOTIONS_ADMIN_CHANGE_STEP', step: step })\n}\n\nexport const updateTranslationObject = (object, data) => (dispatch, getState) => {\n    dispatch({ type: 'UPDATE_OBJECT_TRANSLATIONS', object: object, translations: data })\n}\nexport const uploadPromotionFile = formData => (dispatch, getState) => {\n    dispatch({ type: 'UPLOAD_FILE_REQUEST', formData: formData })\n    return api\n        .uploadPromotionFile(getToken(getState()), formData)\n        .then(response => {\n            return dispatch({ type: 'UPLOAD_FILE_SUCCESS', banner: response.data })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'UPLOAD_FILE_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n        })\n}\n\nexport const sendBanners = (bannerLanding, bannerHome, bannerNewsLetter, sideBannerNewsLetter, banner_title, banner_description) => (dispatch, getState) => {\n    let data = {\n        promotionId: getCurrentPromotionId(getState()),\n        bannerLanding: bannerLanding.id,\n        bannerHome: bannerHome.id,\n        bannerNewsLetter: bannerNewsLetter.id,\n        sideBannerNewsLetter: sideBannerNewsLetter.id,\n        banner_title,\n        banner_description\n    }\n    dispatch({\n        type: 'SEND_BANNERS_REQUEST',\n        bannerLanding,\n        bannerHome,\n        bannerNewsLetter,\n        sideBannerNewsLetter,\n        banner_title,\n        banner_description\n    })\n    return api\n        .sendBanners(getToken(getState()), data)\n        .then(response => {\n            return dispatch({\n                type: 'SEND_BANNERS_SUCCESS',\n                status: response.status,\n                bannerLanding,\n                bannerHome,\n                bannerNewsLetter,\n                sideBannerNewsLetter,\n                banner_title,\n                banner_description,\n                step: getStep(getState()) + 1\n            })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'SEND_BANNERS_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n        })\n}\n\nexport const getMarkets = () => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({ type: 'GET_MARKETS' })\n    return api\n        .promotionFetchMarkets(token)\n        .then(response => {\n            dispatch({ type: 'GET_MARKETS_SUCCESS', status: 200, fetchedMarkets: response.data })\n            return Promise.resolve()\n        })\n        .catch(error => {\n            dispatch({ type: 'GET_MARKETS_FAILURE', status: error.response.status, alert: error.response.data.err })\n            return Promise.reject()\n        })\n}\n\nexport const getCountries = data => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({ type: 'GET_COUNTRIES', salesOrg: data.salesOrg })\n    return api\n        .promotionFetchCountries(token, data)\n        .then(response => {\n            dispatch({ type: 'GET_COUNTRIES_SUCCESS', status: 200, fetchedCountries: response.data })\n            return Promise.resolve()\n        })\n        .catch(error => {\n            dispatch({ type: 'GET_COUNTRIES_FAILURE', status: error.response.status, alert: error.response.data.err })\n            return Promise.reject()\n        })\n}\n\nexport const getCenters = data => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({ type: 'GET_CENTERS', salesOrg: data.salesOrg })\n    return api\n        .promotionFetchCenters(token, data)\n        .then(response => {\n            dispatch({ type: 'GET_CENTERS_SUCCESS', status: 200, fetchedCenters: response.data })\n            return Promise.resolve()\n        })\n        .catch(error => {\n            dispatch({ type: 'GET_CENTERS_FAILURE', status: error.response.status, alert: error.response.data.err })\n            return Promise.reject()\n        })\n}\n\nexport const sendPromotionArea = data => (dispatch, getState) => {\n    data = { ...data, promotionId: getCurrentPromotionId(getState()) }\n    dispatch({ type: 'SEND_PROMOTION_CENTERS_REQUEST', data })\n    return api\n        .sendPromotionArea(getToken(getState()), data)\n        .then(response => {\n            return dispatch({\n                type: 'SEND_PROMOTION_CENTERS_SUCCESS',\n                status: 200,\n                alert: 'Promotion saved',\n                data,\n                step: 3\n            })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'SEND_PROMOTION_CENTERS_FAILURE',\n                status: error.response.status,\n                alert: error.response.data.err\n            })\n        })\n}\n\nexport const fetchCustomersOfArea = (market, countries, centers) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_CUSTOMERS_OF_AREA', market, countries, centers })\n    return api\n        .fetchCustomersOfArea(getToken(getState()), market, countries, centers)\n        .then(response => {\n            return dispatch({ type: 'FETCH_CUSTOMERS_OF_AREA_SUCCESS', customers: response.data })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'FETCH_CUSTOMERS_OF_AREA_FAILURE',\n                status: error.response.status,\n                alert: error.response.data.err\n            })\n        })\n}\nexport const sendCustomersSelected = customers => (dispatch, getState) => {\n    let promotionId = getCurrentPromotionId(getState())\n\n    dispatch({ type: 'SEND_CUSTOMERS_SELECTED_REQUEST', customers, promotionId })\n    return api\n        .sendCustomersSelected(getToken(getState()), promotionId, customers)\n        .then(response => {\n            return dispatch({\n                type: 'SEND_CUSTOMERS_SELECTED_SUCCESS',\n                customers: customers,\n                alert: 'Promotion saved',\n                step: getStep(getState()) + 1\n            })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'SEND_CUSTOMERS_SELECTED_FAILURE',\n                status: error.response.status,\n                alert: error.response.data.err\n            })\n        })\n}\n\nexport const sendMaterialsSelected = (materials, materialsSelectedData) => (dispatch, getState) => {\n    let promotionId = getCurrentPromotionId(getState())\n\n    dispatch({ type: 'SEND_MATERIALS_SELECTED_REQUEST', materials, promotionId })\n    let materialsWithOutletSelected = []\n    if (materialsSelectedData && materialsSelectedData.length > 0) {\n        materialsWithOutletSelected = materialsSelectedData.map(a => {\n            return { productId: a.productId, isSellingOutlet: a.isSellingOutlet }\n        })\n        // console.log(materialsWithOutletSelected)\n    }\n\n    return api\n        .sendMaterialsSelected(getToken(getState()), promotionId, materials, materialsWithOutletSelected)\n        .then(response => {\n            return dispatch({\n                type: 'SEND_MATERIALS_SELECTED_SUCCESS',\n                materials: materials,\n                materialsSelectedData: materialsSelectedData,\n                alert: 'Promotion saved'\n            })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'SEND_MATERIALS_SELECTED_FAILURE',\n                status: error.response.status,\n                alert: error.response.data.err\n            })\n        })\n}\n\nexport const requestMaterialsDiscounts = () => (dispatch, getState) => {\n    const state = getState()\n    const promotionId = getCurrentPromotionId(state)\n    const materialsData = Object.values(getMaterialsSelectedData(state))\n    const discountMaterials = getDiscountMaterials(state)\n    const centerId = getSelectedCenter(state)\n    const token = getToken(state)\n\n    const language = getLanguage(state).toUpperCase()\n\n    const materials = Object.values(discountMaterials).map(m => {\n        const materialData = materialsData.find(md => md.productId == m.materialId)\n        const lang = (language in materialData.translations) ? language : 'Z2'\n\n        return {\n            materialId : m.materialId,\n            requestedDiscount: m.requestedDiscount,\n            acceptedDiscount: m.acceptedDiscount,\n            thumb: materialData.thumb,\n            brand: materialData.brand,\n            description: materialData.translations[lang].productName,\n            rotation: materialData.translations[lang].indRotation,\n            outlet: materialData.outletQuality\n        }\n    })\n\n    dispatch({ type: 'REQUEST_MATERIALS_DISCOUNTS'})\n\n    return api\n        .sendMaterialsToRequestDiscount(token, centerId, promotionId, materials, language)\n        .then(response => {\n            const message = response.data.sent_mail ? 'REQUESTED_CAMPAIGN_DISCOUNT' : 'NOT_REQUESTED_CAMPAIGN_DISCOUNT'\n            // const discountMaterials = {}\n            // response.data.requested_discounts && response.data.requested_discounts.forEach(v => discountMaterials[v.materialId] = {\n            //     materialId: v.materialId,\n            //     requestedDiscount: v.requestedDiscount,\n            //     acceptedDiscount: v.acceptedDiscount\n            // })\n\n            return dispatch({\n                type: 'REQUEST_MATERIALS_DISCOUNTS_SUCCESS',\n                discountMaterials: {...discountMaterials},\n                message\n            })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'REQUEST_MATERIALS_DISCOUNTS_FAILURE',\n                status: error.response.status,\n                alert: error.response.data.err\n            })\n        })\n}\n\n\nexport const fetchPromotionsList = (page, itemsPerPage, filters) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PROMOTIONS_LIST_REQUEST' })\n    return api\n        .getPromotionsList(getToken(getState()), getLanguage(getState()), page, itemsPerPage, filters)\n        .then(response => {\n            return dispatch({ type: 'FETCH_PROMOTIONS_LIST_SUCCESS', status: response.status, promotions: response.data })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'FETCH_PROMOTIONS_LIST_FAILURE',\n                status: error.response.status,\n                alert: error.response.data.err\n            })\n        })\n}\nexport const fetchPromotionToEdit = (promotionId, intl) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PROMOTION_TO_EDIT_REQUEST' })\n    return api.getPromotionToEdit(getToken(getState()), promotionId).then(response => {\n        let languages = getAvailableLands(getState())\n            .filter(\n                language =>\n                    JSON.parse(response.data.commercial_name_data.text) &&\n                    Object.keys(JSON.parse(response.data.commercial_name_data.text))\n                        .filter(val => !val.includes('default'))\n                        .includes(language.localecode)\n            )\n            .map(land => {\n                return { value: land.localecode, label: land.name, name: land.langName, code: land.code }\n            })\n\n        return dispatch(getMarkets()).then(() => {\n            let marketSelected = getFetchedMarkets(getState()).filter(market => market.name === response.data.market)[0]\n            let salesOrgMarket = marketSelected && marketSelected.salesOrg\n            if (salesOrgMarket) {\n                return dispatch(getCountries({ salesOrg: salesOrgMarket })).then(() => {\n                    let countries = Object.keys(getFetchedCountries(getState()))\n                        .filter(country => response.data.countries.includes(country))\n                        .map(country => {\n                            return {\n                                value: country,\n                                label: intl.formatMessage({ id: 'country_' + country }),\n                                salesOrg: getFetchedCountries(getState())[country]\n                            }\n                        })\n                    var groupedSalesOrg = []\n                    countries.forEach(country => {\n                        groupedSalesOrg = groupedSalesOrg.concat(country.salesOrg)\n                    })\n                    return dispatch(getCenters({ salesOrg: groupedSalesOrg })).then(() => {\n                        let centers = getFetchedCenters(getState())\n                            .filter(center => response.data.centers.includes(center.id))\n                            .map(center => {\n                                return {\n                                    value: center.id,\n                                    label: center.id + ' ' + center.name,\n                                    salesOrg: center.salesOrg\n                                }\n                            })\n\n                        return dispatch({\n                            type: 'FETCH_PROMOTION_TO_EDIT_SUCCESS',\n                            status: response.status,\n                            promotion: response.data,\n                            languages,\n                            countries,\n                            centers\n                        })\n                    })\n                })\n            } else {\n                return dispatch({\n                    type: 'FETCH_PROMOTION_TO_EDIT_SUCCESS',\n                    status: response.status,\n                    promotion: response.data,\n                    languages\n                })\n            }\n        })\n    })\n    // .catch(error => {\n    //     return dispatch({ type: 'FETCH_PROMOTION_TO_EDIT_FAILURE', status: error.response.status, alert: error.response.data.err })\n    // })\n}\n\nexport const fetchBanners = (pageSelected, search, type) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PROMOTIONS_BANNERS_REQUEST' })\n    return api\n        .getBanners(getToken(getState()), pageSelected, search, type)\n        .then(response => {\n            return dispatch({\n                type: 'FETCH_PROMOTIONS_BANNERS_SUCCESS',\n                status: response.status,\n                bannersPaginatedResult: response.data\n            })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'FETCH_PROMOTIONS_BANNERS_FAILURE',\n                status: error.response.status,\n                alert: error.response.data.err\n            })\n        })\n}\n\nexport const fetchPromotionData = promotionId => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PROMOTION_DATA_REQUEST' })\n    return api\n        .getPromotionData(getToken(getState()), promotionId, getSelectedCenter(getState()), getLanguage(getState()))\n        .then(response => {\n            return dispatch({ type: 'FETCH_PROMOTION_DATA_SUCCESS', status: response.status, data: response.data })\n        })\n        .catch(error => {\n            return dispatch({\n                type: 'FETCH_PROMOTION_DATA_FAILURE',\n                status: error.response.status,\n                alert: error.response.data.err\n            })\n        })\n}\n\nexport const sendPreviewPromotionEmail = (promotionId, email, userSelected) => (dispatch, getState) => {\n    dispatch({ type: 'SEND_PREVIEW_PROMOTION_EMAIL_REQUEST' })\n    return api\n        .sendPreviewPromotionEmail(getToken(getState()), promotionId, email, userSelected, getSelectedCenter(getState()), getLanguage(getState()))\n        .then(response => {\n            return dispatch({\n                type: 'SEND_PREVIEW_PROMOTION_EMAIL_SUCCESS',\n                status: response.status,\n                alert: response.data\n            })\n        })\n        .catch(error => {\n            return dispatch({ type: 'SEND_PREVIEW_PROMOTION_EMAIL_FAILURE', status: error.response.status })\n        })\n}\n\nexport const enablePromotion = promotionId => (dispatch, getState) => {\n    dispatch({ type: 'SEND_ENABLE_PROMOTION_REQUEST', promotionId })\n    return api\n        .enablePromotion(getToken(getState()), promotionId)\n        .then(() => {\n            return dispatch({ type: 'SEND_ENABLE_PROMOTION_SUCCESS', promotionId })\n        })\n        .catch(error => {\n            return dispatch({ type: 'SEND_ENABLE_PROMOTION_FAILURE', promotionId, error: error.response })\n        })\n}\nexport const disablePromotion = promotionId => (dispatch, getState) => {\n    dispatch({ type: 'SEND_DISABLE_PROMOTION_REQUEST', promotionId })\n    return api\n        .disablePromotion(getToken(getState()), promotionId)\n        .then(() => {\n            return dispatch({ type: 'SEND_DISABLE_PROMOTION_SUCCESS', promotionId })\n        })\n        .catch(error => {\n            return dispatch({ type: 'SEND_DISABLE_PROMOTION_FAILURE', promotionId })\n        })\n}\n\nexport const getPromotionByCenterId = centerId => (dispatch, getState) => {\n    centerId = centerId ? centerId : getSelectedCenter(getState())\n    dispatch({ type: 'FETCH_PROMOTION_ACTIVE_BY_CENTER_AND_USER_REQUEST', center: centerId })\n    return api\n        .getPromotionByCenterId(getToken(getState()), centerId)\n        .then(response => {\n            return dispatch({\n                type: 'FETCH_PROMOTION_ACTIVE_BY_CENTER_AND_USER_SUCCESS',\n                promotion: response.data,\n                promotionId: response.data[centerId] ? response.data[centerId].id : null\n            })\n        })\n        .catch(error => {\n            return dispatch({ type: 'FETCH_PROMOTION_ACTIVE_BY_CENTER_AND_USER_FAILURE' })\n        })\n}\nexport const getAllProductOfTheLastQueryMultiCenterByUser = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PRODUCTS_OF_THE_LAST_QUERY_MULTI_CENTER_REQUEST' })\n    return api\n        .getAllProductOfTheLastQueryMultiCenterByUser(getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_PRODUCTS_OF_THE_LAST_QUERY_MULTI_CENTER_SUCCESS', products: response.data.products })\n            return response.data.products\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PRODUCTS_OF_THE_LAST_QUERY_MULTI_CENTER_FAILURE' })\n            return []\n        })\n}\n\nexport const getDataToResolveDiscount = (promotionId, centers) => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n\n    dispatch({ type: 'FETCH_DATA_TO_RESOLVE_DISCOUNT_REQUEST' })\n    return api\n        .getDataToResolveDiscount(token, promotionId, centers)\n        .then(response => {\n            return dispatch({\n                type: 'FETCH_DATA_TO_RESOLVE_DISCOUNT_SUCCESS',\n                resolveDiscountData: response.data\n            })\n        })\n        .catch(error => {\n            return dispatch({ type: 'FETCH_DATA_TO_RESOLVE_DISCOUNT_FAILURE' })\n        })\n}\n\nexport const fetchDiscountMaterialsData = (promotionId) => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n\n    dispatch({ type: 'FETCH_DISCOUNT_MATERIALS_DATA_REQUEST' })\n    return api\n        .fetchDiscountMaterialsData(token, promotionId)\n        .then(response => {\n            return dispatch({\n                type: 'FETCH_DISCOUNT_MATERIALS_DATA_SUCCESS',\n                materialsData: response.data\n            })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_DISCOUNT_MATERIALS_DATA_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchDiscountCustomersData = (promotionId) => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n\n    dispatch({ type: 'FETCH_DISCOUNT_CUSTOMERS_DATA_REQUEST' })\n    return api\n        .fetchDiscountCustomersData(token, promotionId)\n        .then(response => {\n            return dispatch({\n                type: 'FETCH_DISCOUNT_CUSTOMERS_DATA_SUCCESS',\n                customersData: response.data\n            })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_DISCOUNT_CUSTOMERS_DATA_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const checkPromotionId = (promotionId, vistexId) => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n\n    dispatch({ type: 'CHECK_PROMOTION_DISCOUNTS_REQUEST' })\n    return api\n        .checkPromotionDiscount(token, promotionId, vistexId)\n        .then(response => {\n            dispatch({type: 'CHECK_PROMOTION_DISCOUNTS_REQUEST_SUCCESS'})\n            return {isValid: response.data.isValid}\n        })\n        .catch(error => {\n            dispatch({ type: 'CHECK_PROMOTION_DISCOUNTS_REQUEST_FAILURE' })\n\n            return {\n                status: error.response.status,\n                error: error.response.err\n            }\n        })\n}\n\nexport const applyCampaignDiscount = (promotionId, vistex_ids, comments) => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n    const lang = getLanguage(state)\n\n    dispatch({ type: 'SEND_APPROVE_CAMPAIGN_DISCOUNTS_REQUEST' })\n    return api\n        .sendApproveCampaignDiscount(token, promotionId, vistex_ids, comments, lang)\n        .then(response => {\n            dispatch({type: 'SEND_APPROVE_CAMPAIGN_DISCOUNTS_SUCCESS'})\n            return true\n        })\n        .catch(error => {\n            dispatch({type: 'SEND_APPROVE_CAMPAIGN_DISCOUNTS_FAILURE'})\n            return false\n        })\n}\n\nexport const denyCampaignDiscountStatus = (promotionId, reason) => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n    const lang = getLanguage(state)\n\n    dispatch({ type: 'SEND_DENY_CAMPAIGN_DISCOUNTS_REQUEST' })\n    return api\n        .sendDenyCampaignDiscount(token, promotionId, reason, lang)\n        .then(response => {\n            dispatch({type: 'SEND_DENY_CAMPAIGN_DISCOUNTS_SUCCESS'})\n            return true\n        })\n        .catch(error => {\n            dispatch({type: 'SEND_DENY_CAMPAIGN_DISCOUNTS_FAILURE'})\n            return false\n        })\n}\n\nexport const clonePromotion = (promotionId) => (dispatch, getState) => {\n    const token = getToken(getState())\n\n    dispatch({ type: 'SEND_CLONE_PROMOTION_REQUEST' })\n\n    return api.sendClonePromotion(token, promotionId).then(response => {\n            dispatch({\n                type: 'SEND_CLONE_PROMOTION_SUCCESS',\n                status: response.data.status\n            })\n            dispatch({\n                type: 'FLOATING_ALERTS_ADD_SUCCESS_MESSAGE',\n                successMessage: 'THE_PROMOTION_HAVE_BEEN_CLONED_SUCCESSFULLY',\n            })\n        },\n        error => {\n            dispatch({\n                type: 'SEND_CLONE_PROMOTION_FAILURE',\n                status: error.response.status\n            })\n            dispatch({\n                type: 'FLOATING_ALERTS_ADD_FAILURE_MESSAGE',\n                failureMessage: 'AN_ERROR_HAS_OCCURRED_CLONING_THIS_CAMPAIGN'\n            })\n        }\n    )\n}\n","import * as api from '../api'\nimport { getToken } from '../login/reducers'\nimport { getSelectedCenter, getIsLowesCenter } from '../centers/reducers'\nimport { getLanguage, getLanguageToFetchZ2 } from '../ui/reducers'\nimport { IntlProvider, load, LocalizationProvider, loadMessages, IntlService } from '@progress/kendo-react-intl'\nimport { parseLandingStatus } from '../../components/landing-manager/utils'\nimport { getPreviewPorfolioMode } from './reducers'\nimport moment from 'moment'\n\nconst DATE_FORMAT = 'yyyy-mm-dd hh:mm:ss.SSS'\nconst intl = new IntlService()\n\nexport const fetchMarkets = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_MARKETS_REQUEST' })\n    return api\n        .fetchMarkets(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_MARKETS_SUCCESS', markets: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_MARKETS_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchCountries = salesOrg => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_COUNTRIES_REQUEST' })\n    return api\n        .fetchCountries(getToken(getState()), salesOrg)\n        .then(response => {\n            dispatch({ type: 'FETCH_COUNTRIES_SUCCESS', countries: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_COUNTRIES_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchCenter = salesOrg => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_CENTER_REQUEST' })\n    return api\n        .fetchCenters(getToken(getState()), salesOrg)\n        .then(response => {\n            dispatch({ type: 'FETCH_CENTER_SUCCESS', centers: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_CENTER_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const resetCountriesCenters = () => (dispatch, getState) => {\n    dispatch({ type: 'RESET_COUNTRIES_CENTERS', countries: [], centers: [] })\n}\n\nexport const fetchLangs = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LANGS_REQUEST' })\n    return api\n        .fetchLangs(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_LANGS_SUCCESS', langs: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LANGS_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchTemplates = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_TEMPLATE_REQUEST' })\n    return api\n        .fetchTemplates(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_TEMPLATE_SUCCESS', templates: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_TEMPLATE_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchLandings = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LANDINGS_REQUEST' })\n    return api\n        .fetchLandings(getToken(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            var landings = response.data\n            landings.landings.forEach(l => {\n                l.start_at = l.start_at ? moment(l.start_at, 'YYYY-MM-DD HH:mm:ss').toDate() : '';\n                l.end_at = l.end_at ? moment(l.end_at, 'YYYY-MM-DD HH:mm:ss').toDate() : '';\n                l.created_at = l.created_at ? moment(l.created_at, 'YYYY-MM-DD HH:mm:ss').toDate() : '';\n                // l.start_at = intl.parseDate(new Date(l.start_at), DATE_FORMAT)\n                // l.end_at = intl.parseDate(new Date(l.end_at), DATE_FORMAT)\n                // l.create_at = intl.parseDate(new Date(l.create_at), DATE_FORMAT)\n                l.status = parseLandingStatus(l);\n            })\n            // console.log(landings)\n            dispatch({ type: 'FETCH_LANDINGS_SUCCESS', landings: landings })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LANDINGS_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchLandingsQuery = query => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LANDINGSQUERY_REQUEST' })\n    return api\n        .fetchLandingsQuery(getToken(getState()), query)\n        .then(response => {\n            dispatch({ type: 'FETCH_LANDINGSQUERY_SUCCESS', landings: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LANDINGSQUERY_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchLanding = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LANDING_REQUEST' })\n    return api\n        .fetchLanding(getToken(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_LANDING_SUCCESS', landing: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LANDING_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchLandinById = (id, iso) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LANDINGID_REQUEST' })\n    return api\n        .fetchLandingbyId(getToken(getState()), id, iso)\n        .then(response => {\n            dispatch({ type: 'FETCH_LANDINGID_SUCCESS', landing: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LANDINGID_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const createLanding = landing => (dispatch, getState) => {\n    dispatch({ type: 'CREATE_LANDINGID_REQUEST' })\n    return api\n        .createLanding(getToken(getState()), landing)\n        .then(response => {\n            dispatch({ type: 'CREATE_LANDINGID_SUCCESS', create: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'CREATE_LANDINGID_FAILURE', alert: error.response })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const createLandingTranslated = landing => (dispatch, getState) => {\n    dispatch({ type: 'CREATE_LANDINGID_REQUEST' })\n    return api\n        .createLandingTranslated(getToken(getState()), landing)\n        .then(response => {\n            dispatch({ type: 'CREATE_LANDINGID_SUCCESS', create: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'CREATE_LANDINGID_FAILURE', alert: error.response })\n        })\n}\n\nexport const updateLanding = landing => (dispatch, getState) => {\n    dispatch({ type: 'UPDATE_LANDINGID_REQUEST' })\n    return api\n        .updateLanding(getToken(getState()), landing)\n        .then(response => {\n            dispatch({ type: 'UPDATE_LANDINGID_SUCCESS', update: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'UPDATE_LANDINGID_FAILURE', alert: error.response })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const updateLandingTranslated = landing => (dispatch, getState) => {\n    dispatch({ type: 'UPDATE_LANDINGID_REQUEST' })\n    return api\n        .updateLandingTranslated(getToken(getState()), landing)\n        .then(response => {\n            dispatch({ type: 'UPDATE_LANDINGID_SUCCESS', update: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'UPDATE_LANDINGID_FAILURE', alert: error.response })\n        })\n}\n\nexport const getLandingSlug = data => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LANDINGS_SLUG_REQUEST' })\n    return api\n        .getLandingSlug(getToken(getState()), data)\n        .then(response => {\n            dispatch({ type: 'FETCH_LANDINGS_SLUG_SUCCESS', slug: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LANDINGS_SLUG_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const deleteLanding = (id, iso) => (dispatch, getState) => {\n    dispatch({ type: 'DELETE_LANDING_REQUEST' })\n    return api\n        .deleteLanding(getToken(getState()), id, iso)\n        .then(response => {\n            dispatch({ type: 'DELETE_LANDING_SUCCESS', slug: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'DELETE_LANDING_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const deleteLandingImage = (id, type) => (dispatch, getState) => {\n    dispatch({ type: 'DELETE_LANDING_IMAGE_REQUEST' })\n    return api\n        .deleteLandingImage(getToken(getState()), id, type)\n        .then(response => {\n            dispatch({ type: 'DELETE_LANDING_IMAGE_SUCCESS', slug: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'DELETE_LANDING_IMAGE_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchUserLandings = () => (dispatch, getState) => {\n    const selectedCenter = getSelectedCenter(getState());\n\n    if (selectedCenter) {\n        dispatch({ type: 'FETCH_USER_LANDINGS_REQUEST' })\n        return api\n            .fetchUserLandings(getToken(getState()), getLanguage(getState()), selectedCenter)\n            .then(response => {\n                dispatch({ type: 'FETCH_USER_LANDINGS_SUCCESS', landings: response.data.landings || [] })\n            })\n            .catch(error => {\n                dispatch({ type: 'FETCH_USER_LANDINGS_FAILURE' })\n            })\n    }\n}\n\nexport const fetchProductsLandingsByCenters = (landingId, centers = [], products = [], portfolioMode = null) => (dispatch, getState) => {\n\n    if (!portfolioMode) portfolioMode = getPreviewPorfolioMode(getState())\n\n    dispatch({ type: 'FETCH_PRODUCTS_LANDINGS_REQUEST' })\n    \n    // return Promise.all(centers.map(centerId => {\n\n    //     // const productIds = products.map(p => p.product_id)\n\n    //     const productsByCenter = products.filter((product) => product.center_id == centerId).map(product => product.product_id);\n    //     console.log('PRODUCT BY CNTEER', centers, products, productsByCenter)\n\n    //     if (!productsByCenter.length) {\n    //         return  new Promise((resolve) => {\n    //             setTimeout(resolve, 100, { data: [] });\n    //         });\n    //     }\n\n    //     return api.fetchProducts(centerId, productsByCenter)\n    //     // return api.fetchMallProducts(centers, [])\n    // }))\n    const productIds = products.map(p => p && (p.product_id || p.productId))\n    return api.fetchMallProducts(landingId, centers, productIds, portfolioMode)\n    .then(results => {\n        // const productsLanding = results.reduce((acc, response) => [...acc, ...response.data], [])        \n        dispatch({\n            type: 'FETCH_PRODUCTS_LANDINGS_SUCCESS',\n            productsLanding: results.data.products,\n            productsLots: results.data.lots\n        })\n\n    }).catch(error => {\n        console.log('FETCH_PRODUCTS_LANDINGS_FAILURE' , error)\n        dispatch({ type: 'FETCH_PRODUCTS_LANDINGS_FAILURE' })\n\n        //api.errorHandler(dispatch, error.response)\n    })\n\n}\n\n\nexport const fetchLandingBySlug = (slug) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LANDINGS_BY_SLUG_REQUEST' })\n    return api\n        .getLandingBySlug(getToken(getState()), slug, getLanguage(getState()), getSelectedCenter(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_LANDINGS_BY_SLUG_SUCCESS', landing: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_LANDINGS_BY_SLUG_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchPreviewLandingBySlug = (slug, langID) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_PREVIEW_LANDINGS_BY_SLUG_REQUEST' })\n    return api\n        .getPreviewLandingBySlug(getToken(getState()), slug, langID)\n        .then(response => {\n            dispatch({ type: 'FETCH_PREVIEW_LANDINGS_BY_SLUG_SUCCESS', landing: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PREVIEW_LANDINGS_BY_SLUG_FAILURE' })\n\n            //api.errorHandler(dispatch, error.response)\n        })\n}\n\n\nexport const setPortfolioMode = (portfolioMode) => (dispatch, getState) => {\n    dispatch({ type: 'SET_PORTFOLIO_MODE', portfolioMode })\n\n}\n\nexport const fetchMallLots = (centers, productId, landingCommonId, landingProductId) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_MALL_LOTS_REQUEST' })\n\n    const state = getState()\n\n    return api\n        .getMallLots(getToken(state), centers, productId, landingCommonId, landingProductId, getLanguage(state))\n        .then(response => {\n            dispatch({ type: 'FETCH_MALL_LOTS_SUCCESS', lots: response.data.lots })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_MALL_LOTS_FAILURE' })\n        })\n}\n\n","import React from 'react'\n\nexport default function getNumberFormat(lang, options){\n  if(lang === 'es')\n    lang = 'de'\n  return new Intl.NumberFormat(lang, options);\n}\n","import { PORTFOLIO_MODE_SHOW_ONLY_CODI } from '../../components/landing-manager/utils'\n\nexport const initState = {\n    markets: [],\n    productsLanding: [],\n    productsLots: {},\n    userLandings: [],\n    landingBySlug: null,\n    isLoadingLanding: false,\n    isLoadingLots: false,\n    currentPorfolioMode: PORTFOLIO_MODE_SHOW_ONLY_CODI,\n    mallLots: null,\n    selectedProductId: null,\n    isLoadingProductsAndLots: false\n}\n\nconst landing = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_MARKETS_SUCCESS':\n            return { ...state, markets: action.markets }\n        case 'FETCH_COUNTRIES_SUCCESS':\n            return { ...state, countries: action.countries }\n        case 'FETCH_CENTER_SUCCESS':\n            return { ...state, centers: action.centers }\n        case 'RESET_COUNTRIES_CENTERS':\n            return { ...state, countries: action.countries, centers: action.centers }\n        case 'FETCH_LANGS_SUCCESS':\n            return { ...state, langs: action.langs }\n        case 'FETCH_TEMPLATE_SUCCESS':\n            return { ...state, templates: action.templates }\n        case 'FETCH_LANDINGS_SUCCESS':\n            return { ...state, landings: action.landings }\n        case 'FETCH_USER_LANDINGS_SUCCESS':\n            return { ...state, userLandings: action.landings }\n        case 'FETCH_LANDINGSQUERY_SUCCESS':\n            return { ...state, landings: action.landings }\n        case 'FETCH_LANDING_SUCCESS':\n            return { ...state, landing: action.landing }\n        case 'FETCH_LANDINGID_SUCCESS':\n            return { ...state, landing: action.landing }\n        case 'FETCH_PRODUCTS_LANDINGS_REQUEST':\n            return { ...state, isLoadingProductsAndLots: true }\n        case 'FETCH_PRODUCTS_LANDINGS_FAILURE':\n            return { ...state, isLoadingProductsAndLots: false }\n        case 'FETCH_PRODUCTS_LANDINGS_SUCCESS':\n            return {\n                ...state,\n                productsLanding: action.productsLanding,\n                productsLots: action.productsLots,\n                isLoadingProductsAndLots: false\n            }\n        case 'CREATE_LANDINGID_SUCCESS':\n            return { ...state, create: action.create, error: undefined }\n        case 'UPDATE_LANDINGID_SUCCESS':\n            return { ...state, update: action.update, error: undefined }\n        case 'FETCH_LANDINGS_SLUG_SUCCESS':\n            return { ...state, slug: action.slug }\n        case 'FETCH_LANDINGS_BY_SLUG_REQUEST':\n        case 'FETCH_PREVIEW_LANDINGS_BY_SLUG_REQUEST':\n            return { ...state, landingBySlug: [],isLoadingLanding: true }\n        case 'FETCH_LANDINGS_BY_SLUG_SUCCESS':\n        case 'FETCH_PREVIEW_LANDINGS_BY_SLUG_SUCCESS':\n            return { ...state, landingBySlug: action.landing,isLoadingLanding: false }\n        case 'FETCH_LANDINGS_BY_SLUG_FAILURE':\n        case 'FETCH_PREVIEW_LANDINGS_BY_SLUG_FAILURE':\n                return {...state, isLoadingLanding: false}\n        case 'DELETE_LANDING_SUCCESS':\n            return { ...state }\n        case 'DELETE_LANDING_IMAGE_SUCCESS':\n            return { ...state }\n        case 'UPDATE_LANDINGID_FAILURE':\n        case 'CREATE_LANDINGID_FAILURE':\n            return { ...state, error: action.alert }\n        case 'SET_PORTFOLIO_MODE':\n            return { ...state, currentPorfolioMode: action.portfolioMode}\n        case 'LOGOUT':\n            return { ...initState }\n        case 'FETCH_MALL_LOTS_REQUEST':\n            return { ...state, mallLots: null, isLoadingLots: true }\n        case 'FETCH_MALL_LOTS_FAILURE':\n            return { ...state, isLoadingLots: false }\n        case 'FETCH_MALL_LOTS_SUCCESS':\n            return { ...state, mallLots: action.lots, isLoadingLots: false }\n        case 'SET_SELECTED_MALL_PRODUCT':\n            return { ...state, selectedProductId: action.productId }\n        default:\n            return state\n    }\n}\n\nexport const getUserLandings = state => {\n    return state.landing ? (state.landing.userLandings ? state.landing.userLandings : initState.userLandings): null\n}\nexport const getIsLoadingLanding = state => {\n    return state.landing.isLoadingLanding\n}\n\nexport const getLandingBySlug = state => {\n    return state.landing.landingBySlug\n}\n\nexport const getPreviewPorfolioMode = state => {\n    return state.landing.currentPorfolioMode\n}\n\nexport const getMallLots = state => {\n    return state.landing.mallLots\n}\n\nexport const getMallProductsLots = state => {\n    return state.landing.productsLots\n}\n\nexport const getIsLoadingLots = state => {\n    return state.landing.isLoadingLots\n}\n\nexport const getSelectedProductId = state =>  {\n    return state.landing.selectedProductId\n}\n\nexport const getProductMinStock = (state, productId) => {\n    const landing = state.landing.userLandings && state.landing.userLandings[0]\n    if (landing) {\n        const product = landing.products.find(p => p.product_id = productId)\n        if (product) return !!product.minimum_order ? product.minimum_order : 0\n    }\n    return 0\n}\n\nexport const getSelectedProduct = (state) => {\n    if (state.landing.selectedProductId) {\n        const landing = state.landing.userLandings && state.landing.userLandings[0]\n        if (landing) {\n            return landing.products.find(p => p.id = state.landing.selectedProductId)\n        }\n    }\n\n    return null\n}\n\nexport const getLandingByCommonId = (state, lastSelectedProduct) => {\n    if(!lastSelectedProduct || !lastSelectedProduct.landingId){\n        return null\n    }\n    return state.landing.userLandings.find(l => l.common_id === lastSelectedProduct.landingId)\n}\n\n// export const getProductsLanding = state => {\n//     return state.landing.\n// }\n\nexport default landing\n","module.exports = __webpack_public_path__ + \"static/media/e.cosentino.7662f410.svg\";","import * as api from '../api'\nimport * as segmentation from '../segmentation/actions'\nimport { fetchCart, emptyCart } from '../cart/actions'\nimport { push } from 'react-router-redux'\nimport { getIsLogged, getToken, getIsAdmin } from '../login/reducers'\nimport {\n    canViewCatalog,\n    canBuy,\n    getSelectedCenter,\n    getMktoolsShippingCenter,\n    getCanViewImageByLot,\n    getShowroomCenterId,\n    getLowesCenterId,\n    getCenters\n} from './reducers'\nimport { fetchProductsFavourite } from '../products/actions'\nimport { fetchRecurringOrders } from '../orders/actions'\nimport { fetchShippingAddresses } from '../shipping-addresses/actions'\nimport { fetchUserLandings } from '../landing/actions'\nimport { fetchPromotionData, getPromotionByCenterId } from '../promotions/actions'\nimport { fetchAdvertisements} from '../advertisement/actions'\nimport { dispatchPushURL, setIsXeronBrandVisible, setIsSilestoneBrandVisible } from '../ui/actions'\nimport {setLastSelectedProduct} from \"../selected-objects/actions\";\n\nexport const changeCenter = (centerId, urlCallback) => (dispatch, getState) => {\n    dispatch({\n        type: 'CHANGE_CENTER',\n        center: centerId\n    })\n    dispatch(setLastSelectedProduct(null))\n    dispatch(fetchCenterPreferences())\n    dispatch({ type: 'EMPTY_CART' })\n    dispatch({ type: 'EMPTY_PRODUCTS_FAVOURITE' })\n    dispatch(fetchProductsFavourite())\n    // dispatch(fetchRecurringOrders())\n    dispatch(fetchUserLandings())\n\n    dispatch(getPromotionByCenterId())\n    // dispatch(getPromotionByCenterId()).then(promo => {\n    //     if (promo.promotionId) dispatch(fetchPromotionData(promo.promotionId))\n    // })\n\n    if (canBuy(getState()) && getIsLogged(getState())) {\n        dispatch(segmentation.fetchSegmentation())\n        dispatch(fetchCart())\n        dispatch(fetchShippingAddresses())\n    }\n    if (urlCallback) {\n        if (centerId !== getLowesCenterId()) {\n            if (canViewCatalog(getState())) {\n                dispatch(dispatchPushURL(urlCallback + ''))\n            } else {\n                dispatch(dispatchPushURL(urlCallback + 'outlet'))\n            }\n        } else {\n            dispatch(dispatchPushURL(urlCallback + ''))\n        }\n    }\n\n    dispatch(setIsXeronBrandVisible(false))\n    dispatch(setIsSilestoneBrandVisible(false))\n}\nexport const changeFirstCenterFromSalesOrg = (callbackSalesOrg) => (dispatch, getState) => {\n    const firstCenterWithSelectedSalesOrg = getCenters(getState()).find(center => parseInt(center.salesOrg, 10) === parseInt(callbackSalesOrg, 10))\n\n    if(firstCenterWithSelectedSalesOrg && firstCenterWithSelectedSalesOrg.centerId !== getSelectedCenter(getState())) {\n        dispatch(changeCenter(parseInt(firstCenterWithSelectedSalesOrg.centerId, 10)));\n    }\n}\nexport const changeShippingMethod = shippingMethod => (dispatch, getState) => {\n    dispatch({ type: 'CHANGE_SHIPPING_METHOD', shippingMethod: shippingMethod })\n}\nexport const fetchCenterPreferences = () => (dispatch, getState) => {\n    \n    if (!getIsAdmin(getState())) dispatch(fetchAdvertisements())\n    \n    let token = getToken(getState())\n    const centerId = getSelectedCenter(getState()) || 'near'\n    return api\n        .fetchCenterPreferences(token, centerId)\n        .then(response => {\n            dispatch({ type: 'FETCH_CENTER_PREFERENCES_SUCCESS', centerPreferences: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_CENTER_PREFERENCES_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const setMkToolsShippingCenter = mktoolsShippingCenter => (dispatch, getState) => {\n    if (mktoolsShippingCenter !== getMktoolsShippingCenter(getState()) && getSelectedCenter(getState()) === getShowroomCenterId()) dispatch(emptyCart())\n    dispatch({ type: 'SET_MKTOOLS_SHIPPING_CENTER', mktoolsShippingCenter })\n}\n\nexport const canViewImageByLot = location => (dispathc, getState) => {\n    if (location === 'slabsmith') return getCanViewImageByLot(getState())\n    return true\n}\n\nexport const onlyChangeCenter = centerId => (dispatch) => {\n    dispatch({\n        type: 'ONLY_CHANGE_CENTER',\n        center: centerId\n    })\n}\n","import SilestoneImg from '../../assets/img/silestone.svg';\nimport SilestoneImgWhite from '../../assets/img/silestone-white.svg';\nimport DektonImg from '../../assets/img/dekton.svg';\nimport DektonImgWhite from '../../assets/img/dekton-white.svg';\nimport SensaImg from '../../assets/img/sensa.svg';\nimport SensaImgWhite from '../../assets/img/sensa-white.svg';\nimport NaturalStoneImg from '../../assets/img/natural-stone-black.svg';\nimport NaturalStoneImgWhite from '../../assets/img/natural-stone.svg';\nimport {clone} from \"lodash\";\n\nexport const LANDING_TEMPLATES_IDS = {\n    TEMPLATE_1: '1633bb39-e784-4bd6-9973-61cd53a27fb6',\n    TEMPLATE_2: '0ed8493b-65d2-4944-96f6-c9b01e0a9e11',\n}\n\nexport const TYPE_FILTERS = {\n    BRAND: 'brand',\n    THICKNESS: 'thickness',\n    FORMAT: 'format',\n};\n\nexport const SORT_OPTIONS = [\n    { text: 'Stock ascendiente', id: 'STOCK_ASC' },\n    { text: 'Stock descendiente', id: 'STOCK_DESC' },\n];\n\nexport const SORT_CLEAR_OPTION = { text: 'Limpiar', id: '' };\n\n\n// const BRAND_WITH_IMAGES = ['silestone', 'dekton'];\n\nconst BRAND_IMAGES = {\n    'silestone': SilestoneImg,\n    'silestone-white': SilestoneImgWhite,\n    'dekton': DektonImg,\n    'dekton-white': DektonImgWhite,\n    'sensa': SensaImg,\n    'sensa-white': SensaImgWhite,\n    'natural-stone': NaturalStoneImg,\n    'natural-stone-white': NaturalStoneImgWhite,\n};\n\nexport const removeNullString = (value) => value && value !== 'null' ? value : '';\n\nexport const getFiltersByKey = (products = [], key = '') => products\n    .reduce((filters, product) => {\n        const value = removeNullString(product[key])\n        if (!value || filters.indexOf(value) > -1) {\n            return filters;\n        }\n        return [...filters, value]\n    }, []);\n\nexport const isProductSoldOut = product => {\n    const stock = getProductStock(product);\n    return !(!!stock) || stock === 0\n    // return product && product.productLanding && product.data && ((product.data.outlet && ((!product.data.isStockOutlet && product.productLanding.stock == 0) || (product.data.isStockOutlet && product.productLanding.stock_outlet == 0))) || (!product.data.outlet && product.productLanding.stock == 0));\n}\n\nexport const isProductOutlet = product => product && product.data && product.data.outlet && product.data.isStockOutlet;\n\nexport const getProductStock = product => {\n\n    if (product && product.productLanding && product.data) {\n        if (product.data.mall === 'X') {\n            if (product.productId == \"248071\") console.log('STOCK MALL')\n            if (product.data.lots) {\n                if (product.productId == \"248071\") console.log('STOCK MALL CON LOTS', product)\n                return (product.productsLots && product.productsLots[product.id]) ? product.productsLots[product.id].stock : 0\n            }\n            if (product.productId == \"248071\") console.log('STOCK MALL SIN LOTS')\n            else return product.productLanding.stock_mall\n        }\n        return !!isProductOutlet(product) ? product.productLanding.stock_outlet : product.productLanding.stock\n    }\n\n    if (product && product.productId == \"248071\") console.log('NO STOCK')\n\n\n    return ''\n    // product && product.productLanding && product.data ? (product.data.outlet ? (product.data.isStockOutlet ? product.productLanding.stock_outlet : product.productLanding.stock) : product.productLanding.stock) : '';\n\n}\n\nexport const getProductQtyInCart = (cart, product) => {\n    let qty = 0;\n\n    const matches = cart.filter(l => l.productId === product.productId || l.productId === product.product_id)\n\n    if (matches.length > 0) {\n        matches.forEach(l => {\n            qty += l.qty;\n        })\n    }\n\n    return qty;\n}\n\nexport const getMaxQtyLeftProduct = (cart, product) => {\n    const maxQty = product.realStock;\n    let totalQty = 0;\n    let maxAvailable = 0;\n\n    const matches = cart.filter(\n        l =>\n            (l.productId === product.productId || l.productId === product.product_id) &&\n            l.extra &&\n            l.extra.outlet === (product.outlet ? product.outletQuality : null)\n    )\n\n    matches.forEach(l => {\n        totalQty += l.qty;\n    })\n\n    maxAvailable = maxQty - totalQty;\n\n    return maxAvailable;\n}\n\nexport const canAddCartLine = (cart, product, qty = 0) => getMaxQtyLeftProduct(cart, product) >= qty;\n\nexport const getFilters = (products = []) => ({\n    ...Object.keys(TYPE_FILTERS).\n        reduce((filters, filterKey) => ({\n            ...filters,\n            [TYPE_FILTERS[filterKey]]: getFiltersByKey(products || [], TYPE_FILTERS[filterKey]),\n        }), {}),\n});\n\nexport const generateFiltersState = () => ({\n    ...Object.keys(TYPE_FILTERS).\n        reduce((filters, filterKey) => ({\n            ...filters,\n            [TYPE_FILTERS[filterKey]]: [],\n        }), {}),\n})\n\nexport const isFilterSelected = (filterGroup = [], filterValue) => filterGroup.indexOf(filterValue) > -1;\n\nconst capitalize = (s) => {\n    if (typeof s !== 'string') return ''\n    return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const hasImage = (brand) => BRAND_IMAGES[brand]\n\nexport const getBrandNameWithoutSpaces = (brand) => brand.toLowerCase().split(' ').join('-');\n\n\nexport function getMallProduct (productFromMall = {}, productsFromCatalog = [], productsLots = {}) {\n    const data = productFromMall.data ? (typeof productFromMall.data === 'string' ? JSON.parse(productFromMall.data) : productFromMall.data) : productFromMall;\n    const catalogProduct = clone(productsFromCatalog.find(prod => prod.productId === productFromMall.product_id || prod.productId === productFromMall.productId));\n\n    if (!catalogProduct) return null\n\n    const minimumOrder = productFromMall.minimumOrder ? productFromMall.minimumOrder : parseInt(productFromMall.minimum_order)\n\n    catalogProduct.langingProductId = productFromMall.landing_common_id ? productFromMall.id : productFromMall.langingProductId\n    catalogProduct.landingId = productFromMall.landing_common_id ? productFromMall.landing_common_id : data.landingId\n    catalogProduct.minimumOrder = isNaN(minimumOrder) ? 0 : minimumOrder\n    catalogProduct.detailImage = productFromMall.detail_image_uri || productFromMall.catalog_image\n    catalogProduct.backgroundImage = productFromMall.background_image_uri || productFromMall.catalog_image\n    catalogProduct.thumbnailImage = productFromMall.thumbnail_image_uri || productFromMall.catalog_image\n    catalogProduct.imgLarge = (data && data.imgLarge) || productFromMall.background_image_uri || productFromMall.catalog_image\n    catalogProduct.name = capitalize((productFromMall.name || '').toLowerCase())\n    catalogProduct.brandWithoutSpaces = getBrandNameWithoutSpaces(productFromMall.brand)\n    catalogProduct.hasImage = hasImage(getBrandNameWithoutSpaces(productFromMall.brand))\n    catalogProduct.hasImageWhite = hasImage(`${getBrandNameWithoutSpaces(productFromMall.brand)}-white`)\n    catalogProduct.promotion = removeNullString(productFromMall.promotion)\n    catalogProduct.format = removeNullString(productFromMall.format)\n    catalogProduct.thickness = removeNullString(productFromMall.thickness)\n    catalogProduct.finish = removeNullString(productFromMall.finish)\n    catalogProduct.centerId = data ? data.centerId : ''\n    catalogProduct.outlet = data ? (data.isStockOutlet ? true : false) : catalogProduct.outlet\n    catalogProduct.outletQuality = data ? (catalogProduct.outlet && data.outletQuality) : catalogProduct.outletQuality\n    catalogProduct.productLots = productsLots[catalogProduct.langingProductId]\n    catalogProduct.mallProductId = productFromMall.id\n    catalogProduct.realStock = data.lots ? (catalogProduct.productLots ? catalogProduct.productLots.stock : 0) : (catalogProduct.productLots ? catalogProduct.productLots.stock : catalogProduct.stock_mall)\n    catalogProduct.additionalInfo = data.additionalInfo\n    catalogProduct.fromMall = true\n\n    // console.log('catalogProduct_' + catalogProduct.name, data, catalogProduct)\n\n    return catalogProduct\n}\n\nexport const getFilteredProductsByType = (products = [], type, filterByType = []) =>\n    filterByType && filterByType.length ?\n        products.filter(product => filterByType.indexOf(product[type]) > - 1) :\n        products\n    ;\n\nconst sortByStockAsc = (products = []) => (prod1, prod2) => prod1.realStock - prod2.realStock\nconst sortByStockDesc = (products = []) => (prod1, prod2) => prod2.realStock - prod1.realStock;\n\nconst getSortFunction = (sortSelected, products = []) => {\n    switch (sortSelected) {\n        case 'STOCK_ASC':\n            return sortByStockAsc(products)\n        case 'STOCK_DESC':\n            return sortByStockDesc(products)\n    }\n    return () => { }\n}\n\nexport const sortDataBy = (products, sortSelected) => {\n    if (!sortSelected) {\n        return products;\n    }\n    return products.sort(getSortFunction(sortSelected, products));\n}\n\nexport const getFilteredProducts = ({\n    filters = {},\n    products = [],\n    sortSelected = ''\n}) => {\n    return sortDataBy(\n        Object.keys(filters)\n            .reduce((filteredProducts, type) => getFilteredProductsByType(\n                filteredProducts, type, filters[type]\n            ), [...products]),\n        sortSelected\n    );\n}\n\nexport const generateUnitsData = (from = 1, to) => [...Array(to).keys()].slice(from);\n\n","import * as api from '../api'\nimport { getToken } from '../login/reducers'\nimport { getSelectedCenter } from '../centers/reducers'\n\nexport const fetchProfileConfiguration = () => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_PROFILE_CONFIGURATION_REQUEST'\n    })\n    return api\n        .fetchProfileConfiguration(getToken(getState()), getSelectedCenter(getState()))\n\n        .then(\n            response => {\n                response.data.email = response.data.email === '' ? [] : response.data.email.split(';')\n                dispatch({ type: 'FETCH_PROFILE_CONFIGURATION_SUCCESS', profileConfiguration: response.data })\n                // if (response.data.locale) {\n                //     dispatch({ type: 'SET_LANGUAGE', locale: response.data.locale })\n                //     dispatch(push(`/${response.data.locale === 'en-US' ? '' : response.data.locale}`))\n                // }\n            },\n            error => {\n                dispatch({ type: 'FETCH_PROFILE_CONFIGURATION_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const saveProfileConfiguration = profileConfigData => (dispatch, getState) => {\n    dispatch({\n        type: 'SAVE_PROFILE_CONFIGURATION_REQUEST',\n        profileConfigData\n    })\n\n    return api.saveProfileConfiguration(getToken(getState()), profileConfigData, getSelectedCenter(getState())).then(\n        () => {\n            dispatch({\n                type: 'SAVE_PROFILE_CONFIGURATION_SUCCESS',\n                alert: 'YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY'\n            })\n            dispatch(fetchProfileConfiguration())\n        },\n        error => {\n            dispatch({\n                type: 'SAVE_PROFILE_CONFIGURATION_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n        }\n    )\n}\n\nexport const setUserEmailAAD = email => (dispatch, getState) => {\n    dispatch({\n        type: 'SET_USER_EMAIL_AAD_REQUEST',\n        email\n    })\n\n    return api.setUserEmailAAD(getToken(getState()), email)\n        .then(\n            response => {\n                dispatch({\n                    type: 'SET_USER_EMAIL_AAD_SUCCESS',\n                    alert: 'YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY'\n                })\n            })\n        .catch(error => {\n                  dispatch({ type: 'SET_USER_EMAIL_AAD_FAILURE', alert: error.response.data.err, status: error.response.status,statusText: error.response.data.err })\n\n            })\n}\nexport const changePassword = password => (dispatch, getState) => {\n    dispatch({\n        type: 'CHANGE_PASSWORD_REQUEST'\n    })\n    return api.changePassword(getToken(getState()), password).then(\n        () => {\n            dispatch({\n                type: 'CHANGE_PASSWORD_SUCCESS',\n                alert: 'YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY'\n            })\n            dispatch(fetchProfileConfiguration())\n        },\n        error => {\n            dispatch({ type: 'CHANGE_PASSWORD_FAILURE', alert: error.response.data.err, status: error.response.status })\n        }\n    )\n}\nexport const fetchPromotionConfiguration = () => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_PROMOTION_CONFIGURATION_REQUEST'\n    })\n    return api.fetchPromotionConfiguration(getToken(getState())).then(\n        response => {\n            response.data.email = !response.data.email || response.data.email === '' ? [] : response.data.email.split(';')\n            dispatch({ type: 'FETCH_PROMOTION_CONFIGURATION_SUCCESS', promotionConfiguration: response.data })\n            // if (response.data.locale) {\n            //     dispatch({ type: 'SET_LANGUAGE', locale: response.data.locale })\n            //     dispatch(push(`/${response.data.locale === 'en-US' ? '' : response.data.locale}`))\n            // }\n        },\n        error => {\n            dispatch({ type: 'FETCH_PROMOTION_CONFIGURATION_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const fetchWhatsappConfiguration = () => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_WHATSAPP_CONFIGURATION_REQUEST'\n    })\n    return api.fetchWhatsappConfiguration(getToken(getState())).then(\n        response => {\n            dispatch({ type: 'FETCH_WHATSAPP_CONFIGURATION_SUCCESS', whatsappConfiguration: response.data })\n        },\n        error => {\n            dispatch({ type: 'FETCH_WHATSAPP_CONFIGURATION_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const savePromotionConfiguration = profileConfigPromotion => (dispatch, getState) => {\n    dispatch({\n        type: 'SAVE_PROMOTION_CONFIGURATION_REQUEST',\n        profileConfigPromotion\n    })\n\n    return api.savePromotionConfiguration(getToken(getState()), profileConfigPromotion).then(\n        () => {\n            dispatch({\n                type: 'SAVE_PROMOTION_CONFIGURATION_SUCCESS',\n                alert: 'YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY'\n            })\n            if (profileConfigPromotion.acceptPromotionNotifications) {\n                dispatch({\n                    type: 'OPEN_THANK_YOU_SUBSCRIBE_MODAL'\n                })\n            }\n            //dispatch(fetchPromotionConfiguration())\n        },\n        error => {\n            dispatch({\n                type: 'SAVE_PROMOTION_CONFIGURATION_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n        }\n    )\n}\nexport const unsubscribeNewsletter = tokenOnlyLogin => (dispatch, getState) => {\n    dispatch({\n        type: 'UNSUBSCRIBE_NEWSLETTER_REQUEST',\n        tokenOnlyLogin\n    })\n\n    return api.unsubscribeNewsletter(tokenOnlyLogin).then(\n        () => {\n            dispatch({\n                type: 'UNSUBSCRIBE_NEWSLETTER_SUCCESS',\n                alert: 'YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY'\n            })\n            return Promise.resolve()\n        },\n        error => {\n            dispatch({\n                type: 'UNSUBSCRIBE_NEWSLETTER_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n            return Promise.reject()\n        }\n    )\n}\nexport const resubscribeNewsletter = tokenOnlyLogin => (dispatch, getState) => {\n    dispatch({\n        type: 'RESUBSCRIBE_NEWSLETTER_REQUEST',\n        tokenOnlyLogin\n    })\n\n    return api.resubscribeNewsletter(tokenOnlyLogin).then(\n        () => {\n            dispatch({\n                type: 'RESUBSCRIBE_NEWSLETTER_SUCCESS',\n                alert: 'YOUR_PREFERENCES_HAVE_BEEN_SAVED_SUCCESSFULLY'\n            })\n            return Promise.resolve()\n        },\n        error => {\n            dispatch({\n                type: 'RESUBSCRIBE_NEWSLETTER_FAILURE',\n                alert: error.response.data.err,\n                status: error.response.status\n            })\n            return Promise.reject()\n        }\n    )\n}\n","import {clone} from \"lodash\";\n\nconst initState = {\n    lotsImages: {},\n    currentProductLots: [],\n    lots:null,\n    lastLotCenterLoaded: null,\n    lastLotProductIdLoaded: null,\n    isLastLotOutlet: null,\n    lotsInCart: null,\n    isLoading: false,\n    lotsToBuy: {}\n}\n\nconst lots = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_LOTS_REQUEST':\n            return Object.assign({}, state, { isLoading: true,lastLotCenterLoaded:null,lastLotProductIdLoaded:null, lots:null})\n\n        case 'FETCH_LOTS_SUCCESS':\n            return Object.assign({}, state, {\n                filtered: action.response.filtered,\n                lots: action.response.data,\n                isLoading: false,\n                lastLotCenterLoaded:action.centerId,\n                lastLotProductIdLoaded:action.productId,\n                isLastLotOutlet: action.outlet\n            })\n\n        case 'FETCH_LOTS_FAILURE':\n            return Object.assign({}, state, {\n                isLoading: false\n            })\n\n        case 'FETCH_LOTS_IMAGES_SUCCESS':\n            return Object.assign({}, state, { lotsImages: { ...state.lotsImages, ...action.response } })\n\n        case 'EMPTY_LOT_DETAIL':\n            return Object.assign({}, state, {\n                lotDetail: null\n            })\n\n        case 'FETCH_LOT_SUCCESS':\n            return Object.assign({}, state, {\n                lotDetail: action.response\n            })\n\n        case 'SET_CURRENT_PRODUCT_LOTS':\n            return Object.assign({}, state, {\n                currentProductLots: action.productLots\n            })\n\n        case 'FETCH_CART_SUCCESS':\n            let lotsInCart = null;\n            if (action.cart && action.cart.lines) {\n                lotsInCart = [];\n                action.cart.lines.forEach(line => {\n                    if (line.lotId) lotsInCart.push(line.lotId)\n                    // else if (line.lots && (!line.extra || !line.extra.mall)) line.lots.forEach(lot => lotsInCart.push(lot.lotId))\n                    else if (line.lots) {\n                        line.lots.forEach(lot => lotsInCart.push(lot.lotId))\n                    }\n                })\n            }\n            return Object.assign({}, state, { lotsInCart: lotsInCart , isLoading: false })\n\n        case 'FETCH_CART_FAILURE':\n        case 'ADD_CART_LINE_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n\n        case 'EMPTY_CART':\n            return Object.assign({}, state, { lotsInCart: null })\n\n        case 'ADD_CART_LINE_CALL_API_REQUEST':\n        case 'ADD_CART_BULK_LOTS_CALL_API_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n\n        case 'ADD_CART_LINE_CALL_API_SUCCESS':\n        case 'ADD_CART_BULK_LOTS_CALL_API_SUCCESS':\n            return Object.assign({}, state, { isLoading: false })\n\n        case 'SUBMIT_CHECKOUT_SUCCESS':\n            return Object.assign({}, state, { lastLotProductIdLoaded: null, isLastLotOutlet: null})\n\n        case 'ADD_LOT_TO_BUY':\n            if (action.selectedLot) state.lotsToBuy[action.uuid] = action.selectedLot\n            else delete state.lotsToBuy[action.uuid]\n\n            return Object.assign({}, state, { lotsToBuy: clone(state.lotsToBuy)})\n\n        case 'CLEAR_LOTS_TO_BUY':\n            return Object.assign({}, state, { lotsToBuy: {}})\n\n        default:\n            return state\n    }\n}\nexport const lastLotCenterLoaded = state => {\n    return state.lots.lastLotCenterLoaded\n}\nexport const lastLotProductIdLoaded = state => {\n    return state.lots.lastLotProductIdLoaded\n}\nexport const isLastLotOutlet = state => {\n    return state.lots.isLastLotOutlet\n}\nexport const getLots = state => {\n\n    if (state.lots.lots && state.lots.lotsInCart) {\n\n        const lotsInCartMap = {}\n        state.lots.lotsInCart.forEach(lotId => lotsInCartMap[lotId] = true)\n\n        let lotsCopy = [...state.lots.lots]\n        lotsCopy = lotsCopy.map(lot => {\n            const lotCopy = {...lot}\n            if (lotCopy.lots) lotCopy.lots = lotCopy.lots.filter(l => !(l.lotId in lotsInCartMap))\n            return lotCopy\n        })\n\n        const res = lotsCopy.filter(l => {\n            const haveInnerLots = l.lots && l.lots.length > 0\n            if (!haveInnerLots && l.lotId) return !(l.lotId in lotsInCartMap)\n            else return haveInnerLots\n        })\n        return res\n    }\n\n    return state.lots.lots\n}\nexport const getLotsImages = state => {\n    return state.lots.lotsImages\n}\nexport const getIsLoading = state => {\n    return state.lots.isLoading\n}\nexport const getFiltered = state => {\n    return state.lots.filtered\n}\nexport const getLotDetail = state => {\n    return state.lots.lotDetail\n}\nexport const getCurrentProductLots = state => {\n    return state.lots.currentProductLots\n}\nexport const getSelectedLotsToBy = state => {\n    return state.lots.lotsToBuy\n}\n/**\n * Get the bundles rejection codes for all bundles.\n * @param {object} state \n * @returns {(object|null)}\n */\nexport const getBundlesRejectionCodes = state => {\n    const lots = state.lots.lots\n    let bundlesRejectionCodes = null\n    if (lots && lots.length > 0) {\n        bundlesRejectionCodes = lots.map(lot => {\n            return {\n                'bundleId': lot.bundleId,\n                'rejectionCode': lot.rejectionCode\n            }\n        })\n    }\n\n    return bundlesRejectionCodes\n}\nexport default lots\n","import React, { Component } from 'react'\nimport { defineMessages, injectIntl } from 'react-intl'\nimport mallDiscount from '../../assets/img/logos/mall-discount.svg'\n\ndefineMessages({\n    ORDER_EDITED: {\n        id: 'ORDER_EDITED',\n        description: 'ORDER_EDITED',\n        defaultMessage: 'Order edited successfully'\n    },\n    ORDER_REJECTED: {\n        id: 'ORDER_REJECTED',\n        description: 'ORDER_REJECTED',\n        defaultMessage: 'Order rejected successfully'\n    },\n    ORDER_REJECTED_SENT: {\n        id: 'ORDER_REJECTED_SENT',\n        description: 'ORDER_REJECTED_SENT',\n        defaultMessage: 'Order cancellation request sent'\n    },\n    ORDER_BEING_MODIFIED: {\n        id: 'ORDER_BEING_MODIFIED',\n        description: 'ORDER_BEING_MODIFIED',\n        defaultMessage: 'Order is currently being modified'\n    },\n    ORDER_REJECT_FAILURE: {\n        id: 'ORDER_REJECT_FAILURE',\n        description: 'ORDER_REJECT_FAILURE',\n        defaultMessage: 'Order reject failures'\n    },\n    ORDER_NOT_CANCELLABLE_PROCESS_STARTED: {\n        id: 'ORDER_NOT_CANCELLABLE_PROCESS_STARTED',\n        description: 'ORDER_NOT_CANCELLABLE_PROCESS_STARTED',\n        defaultMessage: 'Order not cancellable, process already started'\n    },\n    ORDER_NOT_CANCELLABLE_PURCHASE_ORDER_NOT_CANCELLABLE: {\n        id: 'ORDER_NOT_CANCELLABLE_PURCHASE_ORDER_NOT_CANCELLABLE',\n        description: 'ORDER_NOT_CANCELLABLE_PURCHASE_ORDER_NOT_CANCELLABLE',\n        defaultMessage: 'Order not cancellable, because could not reject the associated purchase order'\n    },\n    ORDER_NOT_CANCELLABLE_PURCHASE_ORDER_NOT_FOUND: {\n        id: 'ORDER_NOT_CANCELLABLE_PURCHASE_ORDER_NOT_FOUND',\n        description: 'ORDER_NOT_CANCELLABLE_PURCHASE_ORDER_NOT_FOUND',\n        defaultMessage: 'Order not cancellable, because cant found the associated purchase order'\n    },\n\n    DOCUMENTS_NOT_FOUND: {\n        id: 'DOCUMENTS_NOT_FOUND',\n        description: 'DOCUMENTS_NOT_FOUND',\n        defaultMessage: 'Order not cancellable because documents not found'\n    },\n    MAX_MONTH_QTY_PRODUCT_MKTOOLS_REACHED: {\n        id: 'MAX_MONTH_QTY_PRODUCT_MKTOOLS_REACHED',\n        description: 'You have reached monthly limit ( {limitMonth} ) of qty for this product, you have already bought {monthQty} units this month and you want add: {toAdd}',\n        defaultMessage: 'You have reached monthly limit ( {limitMonth} ) of qty for this product, you have already bought {monthQty} units this month and you want add: {toAdd}'\n    },\n    MAX_QTY_PRODUCT_MKTOOLS_REACHED: {\n        id: 'MAX_QTY_PRODUCT_MKTOOLS_REACHED',\n        description: 'You have reached limit ( {limitMax} ) of qty for this product, you have already into cart {alreadyIntoCart} and you want add: {toAdd}',\n        defaultMessage: 'You have reached limit ( {limitMax} ) of qty for this product, you have already into cart {alreadyIntoCart} and you want add: {toAdd}'\n    },\n    THE_PRODUCTS_HAVE_BEEN_SAVED_SUCCESSFULLY: {\n        id: 'THE_PRODUCTS_HAVE_BEEN_SAVED_SUCCESSFULLY',\n        description: 'The products have been saved successfully: {listOfProducts}',\n        defaultMessage: 'The products have been saved successfully: {listOfProducts}'\n    },\n    SOMETHING_WENT_WRONG: {\n        id: 'SOMETHING_WENT_WRONG',\n        description: 'Something went wrong',\n        defaultMessage: 'Something went wrong'\n    },\n    PRICES_EXPERIMENTAL: {\n        id: 'PRICES_EXPERIMENTAL',\n        description: 'PRICES_EXPERIMENTAL',\n        defaultMessage: 'The prices shown here are not definitive and are subject to confirmation by COSENTINO S.A. staff. Any applicable taxes are not included.'\n    },\n    PRICES_EXPERIMENTAL_NOT_MENTION_TAXES: {\n        id: 'PRICES_EXPERIMENTAL_NOT_MENTION_TAXES',\n        description: 'PRICES_EXPERIMENTAL_NOT_MENTION_TAXES',\n        defaultMessage: 'The prices shown here are not definitive and are subject to confirmation by COSENTINO S.A. staff.'\n    },\n    PROMOTION_NEEDS_MATERIALS: {\n        id: 'PROMOTION_NEEDS_MATERIALS',\n        description: 'PROMOTION_NEEDS_MATERIALS',\n        defaultMessage: 'Promotion needs materials to be activated'\n    },\n    PROMOTION_NEEDS_CUSTOMERS: {\n        id: 'PROMOTION_NEEDS_CUSTOMERS',\n        description: 'PROMOTION_NEEDS_CUSTOMERS',\n        defaultMessage: 'Promotion needs customers to be activated'\n    },\n    NO_DATA_HAS_BEEN_SENT: {\n        id: 'NO_DATA_HAS_BEEN_SENT',\n        description: 'NO_DATA_HAS_BEEN_SENT',\n        defaultMessage: 'No data has been sent'\n    },\n    UNDEFINED_ERROR: {\n        id: 'UNDEFINED_ERROR',\n        description: 'UNDEFINED_ERROR',\n        defaultMessage: 'Undefined error. Please contact the support team.'\n    },\n    THE_PROMOTION_HAVE_BEEN_CLONED_SUCCESSFULLY: {\n        id: 'THE_PROMOTION_HAVE_BEEN_CLONED_SUCCESSFULLY',\n        description: 'THE_PROMOTION_HAVE_BEEN_CLONED_SUCCESSFULLY',\n        defaultMessage: 'The promotion has been successfully cloned'\n    },\n    AN_ERROR_HAS_OCCURRED_CLONING_THIS_CAMPAIGN: {\n        id: 'AN_ERROR_HAS_OCCURRED_CLONING_THIS_CAMPAIGN',\n        description: 'AN_ERROR_HAS_OCCURRED_CLONING_THIS_CAMPAIGN',\n        defaultMessage: 'An error has occurred in the cloning of this campaign'\n    }\n})\nclass FloatingAlert extends Component {\n    componentWillUnmount() {\n        this.props.onClose && this.props.onClose()\n    }\n    render() {\n        const { children, onClose, sucessMessage, failureMessage, warningMessage, values, className, pricing, hidden, mallContainerDiscount } = this.props\n\n        const style = failureMessage ? 'alert__failure fadeinup' : warningMessage ? 'alert__warning fadeinup' : 'alert__success fadeinup'\n        let classes = className + ' ' + style\n        if (!children && !failureMessage && !sucessMessage && !warningMessage) return null\n        if (!pricing) {\n            setTimeout(onClose, 8000)\n        }\n        if (hidden) {\n            classes += ' d-none'\n        }\n        return (\n            <div className={classes} style={{ animationDelay: '0.1s' }}>\n                {onClose && (\n                    <span className=\"alert__close\" onClick={onClose}>\n                        &times;\n                    </span>\n                )}\n                {mallContainerDiscount && <img alt=\"\" src={mallDiscount} className=\"mall-discount-image\" />}\n                <span className=\"alert__title\">{this.props.intl.formatMessage({ id: children || failureMessage || sucessMessage || warningMessage }, values ? values : {})}</span>\n                <p className=\"alert__message\" />\n            </div>\n        )\n    }\n}\nexport default injectIntl(FloatingAlert)\n","import * as api from '../api'\nimport { getLanguage } from '../ui/reducers'\nimport { getCenterData, getIsEndiCenter, getSelectedCenter } from '../centers/reducers'\nimport { getToken } from '../login/reducers'\nimport { getShippingAddresses, getFetchedOn, getShippingAddressFilteredToSelectByCenter } from './reducers'\nimport { fetchCart } from '../cart/actions'\nimport { setSelectedShippingAddressEcosentinoKey } from '../checkout/actions'\nimport { getSelectedShippingAddress } from '../checkout/reducers'\n\nexport const fetchShippingAddresses = () => (dispatch, getState) => {\n    if (getShippingAddresses(getState()) && getFetchedOn(getState()) === getSelectedCenter(getState())) return Promise.resolve() //AVOID REFECTH SHIPPING ADDRES WHILE STILL ON SAME CENTER\n    let token = getToken(getState())\n    dispatch({ type: 'FETCH_SHIPPING_ADDRESSES_REQUEST', token })\n\n    return api\n        .fetchShippingAddresses(token, getSelectedCenter(getState()), getLanguage(getState()))\n        .then(response => {\n            dispatch({ type: 'FETCH_SHIPPING_ADDRESSES_SUCCESS', data: response.data, fetchedOn: getSelectedCenter(getState()) })\n            if (getIsEndiCenter(getState())) {\n                let shippingAddressFilteredToSelectByCenter = getShippingAddressFilteredToSelectByCenter(getState())\n                if (shippingAddressFilteredToSelectByCenter.length === 1) {\n                    dispatch(changeEndiShippingAddress(shippingAddressFilteredToSelectByCenter[0].value))\n                } else {\n                    dispatch({ type: 'REMEMBER_SELECT_SHIPPING_ADDRESS_ENDI' })\n                }\n            }\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_SHIPPING_ADDRESSES_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\nexport const changeIkeaShippingAddress = shippingAddressId => (dispatch, getState) => {\n    dispatch({\n        type: 'CHANGE_IKEA_SHIPPING_ADDRESS',\n        shippingAddressId: shippingAddressId\n    })\n    dispatch(fetchCart())\n    dispatch({\n        type: 'CLEAR_FETCHED_ORDERS'\n    })\n}\n\nexport const changeEndiShippingAddress = shippingAddressEcosentinoKey => (dispatch, getState) => {\n    let shippingAddress = getShippingAddresses(getState()).find(shippingAddress => {\n        return shippingAddress.ecosentinoKey === shippingAddressEcosentinoKey\n    })\n    \n    let shippingTypes = getCenterData(getState()).shippingTypes\n            let isAllowed = false\n            let allowedShippingTypesForThisAddress = shippingTypes.filter(shippingType => {\n                return (shippingAddress.allowedShippingTypes.includes(shippingType))\n            })\n    let endiSelectedShippingType = allowedShippingTypesForThisAddress ? allowedShippingTypesForThisAddress[0] : null\n    dispatch({ type: 'CHANGE_ENDI_SHIPPING_ADDRESS', shippingAddressEcosentinoKey, endiSelectedShippingType })\n    dispatch({ type: 'CHANGE_SHIPPING_METHOD', shippingMethod: endiSelectedShippingType })\n}\n","import { LOCATION_CHANGE } from 'react-router-redux'\nimport { getUserType, getUserName, getImpersonatedBy } from '../login/reducers'\nimport { getLowesCenterId, getSelectedCenter } from '../centers/reducers'\n\nconst initState = {\n    showModal: false,\n    fetchingUsers: false,\n    users: [],\n    fetchingCenterUsers: false,\n    centerUsers: []\n}\nconst impersonate = (state = initState, action) => {\n    switch (action.type) {\n        case LOCATION_CHANGE:\n            return Object.assign({}, state, { showModal: false })\n        case 'FETCH_USERS_TO_IMPERSONATE_REQUEST':\n            return Object.assign({}, state, { fetchingUsers: true })\n        case 'FETCH_USERS_TO_IMPERSONATE_BY_CENTER_REQUEST':\n                return Object.assign({}, state, { fetchingCenterUsers: true })\n        case 'FETCH_USERS_TO_IMPERSONATE_SUCCESS':\n            return Object.assign({}, state, { users: action.users, fetchingUsers: false })\n        case 'FETCH_USERS_TO_IMPERSONATE_BY_CENTER_SUCCESS':\n                return Object.assign({}, state, { centerUsers: action.users, fetchingCenterUsers: false })\n        case 'SHOW_IMPERSONATE_MODAL':\n            return Object.assign({}, state, { showModal: true })\n        case 'CLOSE_IMPERSONATE_MODAL':\n            return Object.assign({}, state, { showModal: false })\n        case 'RESET_UI':\n            return Object.assign({}, state, { showModal: false })\n\n        default:\n            return state\n    }\n}\nexport const showModalSelector = state => {\n    return state.impersonate.showModal\n}\nexport const usersSelector = state => {\n    return state.impersonate.users\n}\nexport const centerUsers = state => {\n    return state.impersonate.centerUsers\n}\nexport const getFetchingUsers = state => {\n    return state.impersonate.fetchingUsers\n}\nexport const getFetchingCenterUsers = state => {\n    return state.impersonate.fetchingCenterUsers\n}\n\nexport const canImpersonate = state => {\n    if (getUserName(state) === 'COMERCIAL') return false\n    if (getSelectedCenter(state) === getLowesCenterId()) return false\n    if (getUserType(state) === 'ADMIN') return true\n    if (getImpersonatedBy(state)) return true\n    return false\n}\nexport default impersonate\n","export const setLastSelectedProduct = (product) => (dispatch, getState) => {\n    dispatch({ type: 'SET_LAST_SELECTED_PRODUCT', product})\n}\n\nexport const setLastRouteId = (routeId) => (dispatch, getState) => {\n    console.log('ROUTEE', routeId)\n    // dispatch({ type: 'SET_LAST_ROUTE_ID', routeId})\n}","import React, { Component } from 'react'\n\nclass TextInput extends Component {\n    constructor(props) {\n        super(props)\n        this.inputRef = React.createRef()\n    }\n\n    componentDidMount() {\n        if (this.props.isFocused) {\n            this.focus()\n        }\n    }\n\n    componentDidUpdate(prevProps) {\n        if (!prevProps.isFocused && this.props.isFocused) {\n            this.focus()\n        }\n    }\n\n    focus() {\n        if (this.inputRef.current) {\n            this.inputRef.current.focus()\n        }\n    }\n\n    render() {\n        const { type = 'text', className = '', placeholder, name = '', ...props } = this.props\n\n        return (\n            <input\n                {...props}\n                type={type}\n                className={`global__input__component form-control ${className}`}\n                ref={this.inputRef}\n                placeholder={placeholder}\n                name={name}\n            />\n        )\n    }\n}\n\nexport default TextInput\n","import React, { useState } from 'react'\nimport Button from '../global/Button'\nimport Translation from '../global/Translation'\nimport TextInput from '../global/TextInput'\nimport FloatingAlert from '../alerts/FloatingAlert'\nimport {SEGMENTATION_V3_STEP} from \"./SegmentationSteps\";\n\nconst SegmentationEvidence = props => {\n    const { onSubmitSegmentation, callback, onSetStep, onBackStep, setSegmentationEvidence } = props\n    const [purchaseOrders, setPurchaseOrders] = useState([])\n    const [purchaseOrderInputValue, setPurchaseOrderInputValue] = useState('')\n    const [uploadedFiles, setUploadedFiles] = useState([])\n    const [fileSizeError, setFileSizeError] = useState(false)\n    const [fileTypeError, setFileTypeError] = useState(false)\n\n    const FILE_LIMIT_SIZE = 4 * 1024 * 1024 // 4 MB in bytes\n    const ALLOWED_FILE_TYPES = ['image/jpeg', 'image/png', 'application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'text/plain']\n\n    const handleAddPurchaseOrder = () => {\n        if (purchaseOrderInputValue.trim()) {\n            setPurchaseOrders([...purchaseOrders, purchaseOrderInputValue])\n            setPurchaseOrderInputValue('') // Clear input field after adding\n        }\n    }\n\n    const handleDeletePurchaseOrder = index => {\n        setPurchaseOrders(purchaseOrders.filter((_, i) => i !== index))\n    }\n\n    const handlePurchaseOrderInputChange = event => {\n        setPurchaseOrderInputValue(event.target.value)\n    }\n\n    const handleFileChange = event => {\n        const files = Array.from(event.target.files)\n        const validFiles = []\n        let fileTooLarge = false\n        let fileTypeNotAllowed = false\n    \n        files.forEach(file => {\n            if (file.size > FILE_LIMIT_SIZE) {\n                fileTooLarge = true\n            } else if (!ALLOWED_FILE_TYPES.includes(file.type)) {\n                fileTypeNotAllowed = true\n            } else {\n                validFiles.push(file)\n            }\n        })\n    \n        setFileSizeError(fileTooLarge)\n        setFileTypeError(fileTypeNotAllowed)\n    \n        if (!fileTooLarge && !fileTypeNotAllowed) {\n            setUploadedFiles([...uploadedFiles, ...validFiles])\n        }\n    }\n\n    const handleAddToCart = () => {\n        // const formData = new FormData()\n        //\n        // purchaseOrders && purchaseOrders.forEach((order, index) => {\n        //     formData.append(`purchaseOrders[${index}]`, order)\n        // })\n        //\n        // uploadedFiles && uploadedFiles.forEach((file, index) => {\n        //     formData.append(`uploadedFiles[${index}]`, file)\n        // })\n\n        const formData = {\n            purchaseOrders,\n            uploadedFiles\n        }\n\n        //console.log(Array.from(formData.entries()))\n\n        setSegmentationEvidence(formData).then(() => {\n            onSubmitSegmentation(callback)\n        })\n    }\n\n    const handleDeleteFile = index => {\n        setUploadedFiles(uploadedFiles.filter((_, i) => i !== index))\n    }\n\n    const mandatoryEvidences = props.evidencesType === '02'\n\n    const disableSubmit = () => {\n        return mandatoryEvidences && purchaseOrders.length === 0 && uploadedFiles.length === 0\n    }\n\n\n    return (\n        <div className=\"segmentation__evidence\">\n            <div className=\"segmentation__evidence__content\">\n                <div>\n                    <h5>\n                        <Translation\n                            id=\"segmentation_evidence_in_order_to_verify_that_this_segmentation_is_correct\"\n                            defaultMessage=\"In order to verify that this segmentation is correct, you can upload your customer's purchase documents and/or include your customer's purchase order number.\"\n                        />\n                    </h5>\n                </div>\n                <div className=\"segmentation__evidence__content--input\">\n                    <div>\n                        <span className=\"title\">\n                            <Translation\n                                id=\"segmentation_evidence_enter_one_purchase_order_from_your_customer\"\n                                defaultMessage=\"Enter one or more purchase orders from your customer:\"\n                            />\n                            {mandatoryEvidences && ' *'}\n                        </span>\n                    </div>\n                    <div className=\"input-content\">\n                        <div className=\"input-area\">\n                            <TextInput placeholder={'00000000'} value={purchaseOrderInputValue} onChange={handlePurchaseOrderInputChange} />\n                            <Button onClick={handleAddPurchaseOrder} icon=\"fa fa-plus\" className=\"add-another-purchase-btn\">\n                                <Translation id=\"add_another_purchase_order\" defaultMessage=\"Add purchase order\" />\n                            </Button>\n                        </div>\n\n                        {/* Display the list of added purchase orders */}\n                        <div className=\"purchase-orders-list\">\n                            {purchaseOrders &&\n                                purchaseOrders.map((order, index) => (\n                                    <div key={index} className=\"purchase-order-item\">\n                                        <span>{order}</span>\n                                        <Button onClick={() => handleDeletePurchaseOrder(index)} icon=\"fa fa-trash\" className=\"delete-purchase-btn\" />\n                                    </div>\n                                ))}\n                        </div>\n                    </div>\n                </div>\n                <div className=\"segmentation__evidence__content--upload\">\n                    <div>\n                        <span className=\"title\">\n                            <Translation id=\"upload_one_or_more_purchase_documents\" defaultMessage=\"Upload one or more purchase documents:\" />\n                            {mandatoryEvidences && ' *'}\n                        </span>\n                    </div>\n                    <input type=\"file\" onChange={handleFileChange} id=\"segmentation_evidence_file_upload\" style={{ display: 'none' }} />\n                    <Button\n                        className=\"custom-upload-button\"\n                        onClick={() => document.getElementById('segmentation_evidence_file_upload').click()}\n                        icon={'fa fa-upload'}\n                        iconEnd={true}\n                    >\n                        <Translation id=\"upload\" defaultMessage=\"upload\" />\n                    </Button>\n\n                    {fileSizeError && (\n                            <FloatingAlert\n                                warningMessage={\n                                    <Translation id=\"exceed_file_limit\" \n                                        defaultMessage={`The file has a limit of {fileLimit} MB`}\n                                        values={{fileLimit: FILE_LIMIT_SIZE / (1024 * 1024)}} // Convert to MB\n                                    />\n                                }\n                                onClose={() => setFileSizeError(false)}\n                            />\n                        )\n                    }\n\n                    {fileTypeError && (\n                        <FloatingAlert\n                            warningMessage={\n                                <Translation\n                                    id=\"invalid_file_type\"\n                                    defaultMessage=\"This file type is not allowed.\"\n                                />\n                            }\n                            onClose={() => setFileTypeError(false)}\n                        />\n                    )}\n\n                    {/* Display the list of uploaded files */}\n                    <div className=\"uploaded-files-list\">\n                        {uploadedFiles &&\n                            uploadedFiles.map((file, index) => (\n                                <div key={index} className=\"uploaded-file-item\">\n                                    <div className=\"file-icon\">\n                                        <i class=\"fa fa-file\" aria-hidden=\"true\" />\n                                    </div>\n                                    <div>\n                                        <span className=\"file-name\">{file.name}</span>\n                                        <span className=\"file-size\">&nbsp;{file.size} kb</span>\n                                    </div>\n                                    <Button onClick={() => handleDeleteFile(index)} icon=\"fa fa-trash\" className=\"delete-file-btn\" />\n                                </div>\n                            ))}\n                    </div>\n                </div>\n            </div>\n            <hr></hr>\n            <footer>\n                <Button className={'segmentation-footer-back'} onClick={onBackStep} icon=\"fal fa-chevron-left\">\n                    <Translation id=\"back\" defaultMessage=\"Back\" />\n                </Button>\n                <Button onClick={() => handleAddToCart()}\n                        inverted dataQas=\"global_segmentation-add-to-cart-button\"\n                        icon=\"fa fa-shopping-cart\"\n                        iconEnd={true}\n                        disabled={disableSubmit()}\n                >\n                    <Translation id=\"add_to_cart\" defaultMessage=\"Add to cart\" />\n                </Button>\n            </footer>\n        </div>\n    )\n}\n\nexport default SegmentationEvidence\n","import React, {useState} from 'react'\nimport Button from '../global/Button'\nimport Translation from '../global/Translation'\nimport {SEGMENTATION_EVIDENCE_STEP, SEGMENTATION_V3_STEP} from \"./SegmentationSteps\";\nimport {RadioButton} from \"@progress/kendo-react-inputs\";\nimport LineSegmentationV2 from \"../cart-line/LineSegmentationV2\";\nimport InfoWithToolTip from \"../global/InfoWithToolTip\";\nimport {defineMessages} from \"react-intl\";\n\n\ndefineMessages({\n    here_some_suggested_segmenations: {\n        id: 'no_available_segmentation_no_project',\n        description: 'This segmentation is unavailable as because selected project is no available.',\n        defaultMessage: 'This segmentation is unavailable as because selected project is no available.'\n    },\n    none_above_segmentations: {\n        id: 'no_available_segmentation_no_sku',\n        description: 'This segmentation is unavailable as it is not assigned to the selected product.',\n        defaultMessage: 'This segmentation is unavailable as it is not assigned to the selected product.'\n    },\n    choose_segmentation_manually: {\n        id: 'no_available_segmentation_default',\n        description: 'This segmentation cannot be selected. For more information, please contact your center.',\n        defaultMessage: 'This segmentation cannot be selected. For more information, please contact your center.'\n    }\n})\n\nconst SavedSegmentations = props => {\n    const NO_PROJECT=1, NO_SKU=2, NO_SEG=3\n    const { onSubmitSegmentation, callback, onSetStep, preferredSegmentation, materialProjects, segmentationProjectsSet, currentFavourite } = props\n\n    const [selectedIndex, setSelectedIndex] = useState()\n\n    const handleAddToCart = (needsEvidence) => {\n        const savedSegmentation = preferredSegmentation[selectedIndex]\n\n        props.loadPreferredSegmentation(savedSegmentation.name)\n        if (needsEvidence) onSetStep(SEGMENTATION_EVIDENCE_STEP)\n        else onSubmitSegmentation(callback)\n    }\n\n    const unavailableReasonMsg = reason => {\n        switch (reason) {\n            case NO_PROJECT:\n                return props.intl.formatMessage({\n                    id: 'no_available_segmentation_no_project',\n                    defaultMessage: 'This segmentation is unavailable as because selected project is no available.'\n                })\n            case NO_SKU:\n                return props.intl.formatMessage({\n                    id: 'no_available_segmentation_no_sku',\n                    defaultMessage: 'This segmentation is unavailable as it is not assigned to the selected product.'\n                })\n            default:\n                return props.intl.formatMessage({\n                    id: 'no_available_segmentation_default',\n                    defaultMessage: 'This segmentation cannot be selected. For more information, please contact your center.'\n                })\n        }\n    }\n\n    const getReason = option => {\n        if (!option.active) return NO_SEG\n        if (option.subchannel === 'NX' && option.projectId && !materialProjects.has(option.projectId)) return NO_SKU\n        if (option.projectId && !segmentationProjectsSet.has(option.projectId)) return NO_PROJECT\n\n        return false\n    }\n\n    return (\n        <div className=\"suggested__segmentation\">\n            <div className=\"suggested__segmentation__content--input\">\n                <div className=\"scrolled-list\">\n                    {preferredSegmentation.map((option, index) => {\n                        const key = `saved-segmentation-${index}`\n                        const reason = getReason(option)\n\n                        return <div className=\"my-3 scrolled-list--item saved\"\n                                    key={key}\n                        >\n                            <RadioButton\n                                onClick={() => setSelectedIndex(index)}\n                                id={key}\n                                name={key}\n                                value={index}\n                                disabled={reason !== false}\n                                checked={selectedIndex === index}\n                            >\n                                <label htmlFor={key} className={'k-radio-label'} >\n                                    <div className=\"save-segmentation-name\">\n                                        <span><strong>{option.name}</strong></span>\n                                    </div>\n                                    <div className=\"save-segmentation-option\">\n                                        <LineSegmentationV2 line={{ ...option, segmentation: option }} showAsList hideSpans />\n                                    </div>\n                                </label>\n\n                                {reason !== false && (\n                                    <InfoWithToolTip toolTipText={unavailableReasonMsg(reason)}>\n                                        <Translation id=\"not_available\" defaultMessage=\"Not available\"/>\n                                    </InfoWithToolTip>\n                                )}\n                            </RadioButton>\n                        </div>\n                    })}\n                </div>\n            </div>\n\n            <div>\n                <hr></hr>\n\n                <footer>\n                    <div className=\"double-buttons my-1\">\n                        <Button onClick={() => onSetStep(SEGMENTATION_V3_STEP)} >\n                            <Translation id=\"choose_segmentation_manually\" defaultMessage=\"Choose segmentation manually\" />\n                        </Button>\n                        {\n                            selectedIndex && preferredSegmentation[selectedIndex].evidence ?\n                                <Button\n                                    onClick={() => handleAddToCart(true)}\n                                    inverted\n                                    // dataQas=\"global_segmentation-add-to-cart-button\"\n                                    icon=\"fal fa-chevron-right\"\n                                    iconEnd={true}\n                                >\n                                    <Translation id=\"next\" defaultMessage=\"Next\" />\n                                </Button>\n                                :\n                                <Button\n                                    onClick={() => handleAddToCart(false)}\n                                    inverted\n                                    // dataQas=\"global_segmentation-add-to-cart-button\"\n                                    icon=\"fa fa-shopping-cart\"\n                                    iconEnd={true}\n                                    disabled={selectedIndex === undefined}\n                                >\n                                    <Translation id=\"add_to_cart\" defaultMessage=\"Add to cart\" />\n                                </Button>\n                        }\n                    </div>\n                </footer>\n            </div>\n        </div>\n    )\n}\n\nexport default SavedSegmentations\n","import React, {useState} from 'react'\nimport Button from '../global/Button'\nimport Translation from '../global/Translation'\nimport {SEGMENTATION_EVIDENCE_STEP, SEGMENTATION_SUCCESSFULLY_SAVED, SEGMENTATION_V3_STEP} from \"./SegmentationSteps\";\nimport {RadioButton} from \"@progress/kendo-react-inputs\";\nimport LineSegmentationV2 from \"../cart-line/LineSegmentationV2\";\n\n\n\nconst SavingSegmentation = props => {\n    const { saveSegmentationPreferred, onSetStep } = props\n\n    const [selectedIndex, setSelectedIndex] = useState()\n    const [inputSegmentation, setInputSegmentation] = useState()\n    const option = {\n        businessSegment: props.businessSegment,\n        channel: props.channel,\n        projectId: props.projectId,\n        salesforceId: props.salesforceId,\n        subChannel: props.subchannel,\n        typology: props.typology,\n        use: props.use,\n    }\n\n    console.log('OPTION', option)\n\n    return (\n        <div className=\"suggested__segmentation\">\n            <div className=\"suggested__segmentation__content--input\">\n                <div>\n                    <strong>\n                        <LineSegmentationV2 line={{ ...option, segmentation: option }} showAsList hideSpans />\n                    </strong>\n                </div>\n                <p>\n                    <Translation id=\"segmentation_prompt_body\" defaultMessage=\"Please choose a unique name for this configuration\" />\n                </p>\n                <div className=\"form-group\">\n                    <b>\n                        <Translation id=\"name\" defaultMessage=\"Name\" />\n                    </b>\n                    <input\n                        ref={ref => setInputSegmentation(ref)}\n                        type=\"text\"\n                        className=\"form-control\"\n                        data-cy=\"modal_segmentation__input_name_save_segmentation\"\n                        placeholder={props.intl.formatMessage({\n                            id: 'name'\n                        })}\n                    />\n                </div>\n            </div>\n\n            <div>\n                <hr></hr>\n\n                <footer>\n                    <div className=\"double-buttons my-1\">\n                        <Button onClick={() => onSetStep(SEGMENTATION_V3_STEP)} >\n                            <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\n                        </Button>\n\n                        <Button\n                            onClick={() => {\n                                saveSegmentationPreferred(inputSegmentation.value)\n                                onSetStep(SEGMENTATION_SUCCESSFULLY_SAVED)\n                            }}\n                            inverted\n                            // dataQas=\"global_segmentation-add-to-cart-button\"\n                            icon=\"fal fa-chevron-right\"\n                            iconEnd={true}\n                        >\n                            <Translation id=\"next\" defaultMessage=\"Next\" />\n                        </Button>\n                    </div>\n                </footer>\n            </div>\n        </div>\n    )\n}\n\nexport default SavingSegmentation\n","import React, {useState} from 'react'\nimport Button from '../global/Button'\nimport Translation from '../global/Translation'\nimport {SAVED_SEGMENTATIONS_STEP, SEGMENTATION_EVIDENCE_STEP, SEGMENTATION_V3_STEP} from \"./SegmentationSteps\";\nimport {RadioButton} from \"@progress/kendo-react-inputs\";\nimport LineSegmentationV2 from \"../cart-line/LineSegmentationV2\";\n\n\n\nconst SegmentationSavedSuccesfully = props => {\n    const { onSetStep } = props\n    const option = {\n        businessSegment: props.businessSegment,\n        channel: props.channel,\n        projectId: props.projectId,\n        salesforceId: props.salesforceId,\n        subChannel: props.subchannel,\n        typology: props.typology,\n        use: props.use,\n    }\n\n    return (\n        <div className=\"suggested__segmentation\">\n            <div className=\"suggested__segmentation__content--input\">\n                <div>\n                    <strong>\n                        <LineSegmentationV2 line={{ ...option, segmentation: option }} showAsList hideSpans />\n                    </strong>\n                </div>\n            </div>\n\n            <div>\n                <hr></hr>\n\n                <footer>\n                    <div className=\"double-buttons my-1\">\n                        <Button onClick={() => onSetStep(SAVED_SEGMENTATIONS_STEP)} >\n                            <Translation id=\"view_saved_segmentations\" defaultMessage=\"View saved segmentations\" />\n                        </Button>\n\n                        <Button\n                            onClick={() => onSetStep(SEGMENTATION_V3_STEP)}\n                            inverted\n                            // dataQas=\"global_segmentation-add-to-cart-button\"\n                            icon=\"fal fa-chevron-right\"\n                            iconEnd={true}\n                        >\n                            <Translation id=\"continue\" defaultMessage=\"Continue\" />\n                        </Button>\n                    </div>\n                </footer>\n            </div>\n        </div>\n    )\n}\n\nexport default SegmentationSavedSuccesfully\n","import React, { useEffect, useState } from 'react'\nimport SegmentationV3 from './SegmentationV3'\nimport SegmentationEvidence from './SegmentationEvidence'\nimport SuggestedSegmentation from \"./SuggestedSegmentation\";\nimport SavedSegmentations from \"./SavedSegmentations\";\nimport SavingSegmentation from \"./SavingSegmentations\";\nimport SegmentationSavedSuccesfully from \"./SegmentationsSavedSuccesfully\";\n\n\nexport const SUGGESTED_SEGMENTATIONS_STEP = 0;\nexport const SEGMENTATION_V3_STEP = 1;\nexport const SEGMENTATION_EVIDENCE_STEP = 2;\nexport const SAVED_SEGMENTATIONS_STEP = 3;\nexport const SAVING_SEGMENTATION_STEP = 4;\nexport const SEGMENTATION_SUCCESSFULLY_SAVED = 5;\n\nconst SegmentationSteps = (props) => {\n    const { show, setSegmentationCurrentStep } = props\n    const [currentStep, setCurrentStep] = useState(props.suggestedSegmentations.length > 0 ? SUGGESTED_SEGMENTATIONS_STEP : SEGMENTATION_V3_STEP)\n    const [prevStep, setPrevStep] = useState()\n\n    useEffect(() => {\n        setSegmentationCurrentStep(currentStep)\n    }, [currentStep])\n\n    const handleNextStep = () => {\n        setCurrentStep(prevStep => {\n            const nextStep = prevStep + 1\n            setSegmentationCurrentStep(nextStep)\n            return nextStep\n        })\n    }\n\n    const handleBackStep = () => {\n        // setCurrentStep(prevStep => {\n        //     const nextStep = prevStep - 1\n        //     setSegmentationCurrentStep(nextStep)\n        //     return nextStep\n        // })\n\n        setSegmentationCurrentStep(prevStep)\n        setCurrentStep(prevStep)\n    }\n\n    const setStep = step => {\n        setPrevStep(currentStep)\n        setSegmentationCurrentStep(step)\n        setCurrentStep(step)\n    }\n\n    const getStepContent = () => {\n        switch (currentStep) {\n            case SUGGESTED_SEGMENTATIONS_STEP:\n                return <SuggestedSegmentation {...props} onSetStep={setStep} />\n            case SEGMENTATION_V3_STEP:\n                return <SegmentationV3 {...props} onSetStep={setStep} />\n            case SEGMENTATION_EVIDENCE_STEP:\n                return <SegmentationEvidence {...props} onBackStep={handleBackStep} />\n            case SAVED_SEGMENTATIONS_STEP:\n                return <SavedSegmentations {...props} onSetStep={setStep} />\n            case SAVING_SEGMENTATION_STEP:\n                return <SavingSegmentation {...props} onSetStep={setStep} />\n            case SEGMENTATION_SUCCESSFULLY_SAVED:\n                return <SegmentationSavedSuccesfully {...props} onSetStep={setStep} />\n            default:\n                return <SegmentationV3 {...props} onSetStep={setStep} />\n        }\n    }\n\n    return (\n        <React.Fragment>\n            {getStepContent()}\n        </React.Fragment>\n    )\n}\n\nexport default SegmentationSteps\n","import * as api from '../api'\nimport {byProductId} from '../products/reducers'\nimport {getSelectedCenter} from '../centers/reducers'\nimport {getIsLogged, getToken, getUserType} from '../login/reducers'\nimport {fetchBoughtTogetherProducts} from \"../api\";\n\n\nexport const fetchCrossSelling = productId => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_PRODUCT_CROSSELLING_REQUEST',\n        productId\n    })\n    const state = getState()\n    const centerId = state.centers.selectedCenter ? state.centers.selectedCenter : 'near'\n\n    return api\n        .fetchCrossSelling(centerId, productId)\n        .then(response => {\n            dispatch({ type: 'FETCH_PRODUCT_CROSSELLING_SUCCESS', crossSelling: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PRODUCT_CROSSELLING_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchBoughtTogether = productId => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_BOUGHT_TOGETHER_REQUEST',\n        productId\n    })\n    const state = getState()\n    const centerId = state.centers.selectedCenter ? state.centers.selectedCenter : 'near'\n    const token = getToken(state)\n\n    return api\n        .fetchBoughtTogetherProducts(token, centerId, productId)\n        .then(response => {\n            dispatch({ type: 'FETCH_BOUGHT_TOGETHER_SUCCESS', boughtTogether: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_BOUGHT_TOGETHER_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n            return Promise.reject()\n        })\n}\n\nexport const fetchRelatedProducts = productId => (dispatch, getState) => {\n    const isLogged  = getIsLogged(getState())\n    return isLogged ? dispatch(fetchBoughtTogether(productId)) : dispatch(fetchCrossSelling(productId))\n}\n\nexport const fetchCrossSellingCheckOut = productIds => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_PRODUCT_CROSSELLING_CHECKOUT_REQUEST',\n        productIds\n    })\n    const state = getState()\n    const centerId = state.centers.selectedCenter ? state.centers.selectedCenter : 'near'\n    const token = getToken(state)\n\n    return api\n        .fetchCrossSellingCheckOut(token, centerId, productIds)\n        .then(response => {\n            dispatch({ type: 'FETCH_PRODUCT_CROSSELLING_CHECKOUT_SUCCESS', crossSelling: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PRODUCT_CROSSELLING_CHECKOUT_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchCartCrossSelling = productId => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n\n    dispatch({\n        type: 'FETCH_ADD_TO_CART_CROSSELLING_REQUEST',\n        productId\n    })\n    const centerId = state.centers.selectedCenter\n    return api\n        .fetchCartCrossSelling(token, centerId, productId)\n        .then(response => {\n            dispatch({ type: 'FETCH_ADD_TO_CART_CROSSELLING_SUCCESS', crossSelling: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_ADD_TO_CART_CROSSELLING_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchAlternatives = productId => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_PRODUCT_ALTERNATIVES_REQUEST',\n        productId\n    })\n    const centerId = getState().centers.selectedCenter ? getState().centers.selectedCenter : 'near'\n\n    return api\n        .fetchAlternatives(centerId, productId)\n        .then(response => {\n            dispatch({ type: 'FETCH_PRODUCT_ALTERNATIVES_SUCCESS', alternatives: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_PRODUCT_ALTERNATIVES_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchCartSimilarProducts = (productIds, quantities) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_CART_SIMILAR_PRODUCTS_REQUEST' })\n\n    return api\n        .fetchCartSimilarProducts(getToken(getState()), getSelectedCenter(getState()), productIds, quantities)\n        .then(response => {\n            dispatch({ type: 'FETCH_CART_SIMILAR_PRODUCTS_SUCCESS', products: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_CART_SIMILAR_PRODUCTS_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n            return Promise.reject()\n        })\n}\n\nexport const fetchCartComplementaryProducts = (productIds, quantities) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_CART_COMPLEMENTARY_PRODUCTS_REQUEST' })\n\n    return api\n        .fetchCartComplementaryProducts(getToken(getState()), getSelectedCenter(getState()), productIds, quantities)\n        .then(response => {\n            dispatch({ type: 'FETCH_CART_COMPLEMENTARY_PRODUCTS_SUCCESS', products: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_CART_COMPLEMENTARY_PRODUCTS_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n            return Promise.reject()\n        })\n}\n\nexport const hideCrossSellingModal = () => (dispatch, getState) => {\n    \n}\n","module.exports = __webpack_public_path__ + \"static/media/camera-off.ff55f50d.svg\";","module.exports = __webpack_public_path__ + \"static/media/wide.36b76e29.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.e3ca2cd0.jpg\";","export const initState = {\n    selectedProduct: null,\n    currentRouteId: null\n}\n\nconst selectedObjects = (state = initState, action) => {\n    switch (action.type) {\n        case 'PRODUCT_CLICK':\n        case 'SET_LAST_SELECTED_PRODUCT':\n            return {...state, selectedProduct: action.product}\n        case 'SET_LAST_ROUTE_ID':\n            return {...state, currentRouteId: action.routeId}\n        default:\n            return state\n    }\n}\n\nexport const getLastSelectedProduct = state => state.selectedObjects.selectedProduct\n\nexport const getLastRouteId = state => state.selectedObjects.currentRouteId\n\n\nexport default selectedObjects","module.exports = \"data:image/jpeg;base64,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\"","import { getSelectedCenter, getShippingMethod, getCenterName } from './store/centers/reducers'\nimport {\n    getUserType,\n    getImpersonatedBy,\n    getUserPriceList,\n    getCommonParams,\n    getPriceListAtSelectedCenter,\n    hasAiRecommendations,\n    getDataFromSalesforce,\n    getNaturalStoneViewingPermissions\n} from './store/login/reducers'\nimport { byProductId, getProductsFavouritesByIds } from './store/products/reducers'\nimport { byLineId, getLines, getLinePricePhase2ByLineId, totalSelector, totalCoin } from './store/cart/reducers'\nimport { LOCATION_CHANGE } from 'react-router-redux/reducer'\nimport React from 'react'\nimport {CtsIdsByElaboration} from \"./components/cut-to-size/CutToSizeMaps\";\nimport getNumberFormat from \"./components/getNumberFormat\";\n\n/**\n * Check if the product isCosentinoGlobal\n * @param {number} selectedCenter \n * @param {number} productCenter \n * @returns {boolean}\n */\nconst isCosentinoGlobal = (selectedCenter, productCenter) => {\n    if (selectedCenter != 1100 && productCenter == 1100) return true\n    return false\n}\n\nconst checkLoginType = (userType, impersonatedBy) => {\n    if (impersonatedBy) {\n        return 'Internal - Supplant'\n    }\n    if ((userType === 'CUSTOMER' && !impersonatedBy) || userType === 'SHOP') {\n        return 'Client - Client'\n    }\n    if (userType === 'ADMIN') {\n        return 'Internal - Direct'\n    } else {\n        return 'Visitant'\n    }\n}\n\nexport const cancelOrder = (reservationId, deliveryDate, orderStatus) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true'){\n        global.dataLayer.push({\n            event: 'wwwSeguimientoAcciones',\n            accionSeguimiento: 'cancelarPedido',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: ''\n        })\n        global.dataLayer.push({\n            event: 'ga4wwwSeguimientoAcciones',\n            accionSeguimiento: 'cancelarPedido',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: ''\n        })\n    }\n}\nexport const editOrder = (reservationId, deliveryDate, orderStatus, commonParams) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true'){\n        global.dataLayer.push({\n            event: 'wwwSeguimientoAcciones',\n            accionSeguimiento: 'editarPedido',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: ''\n        })\n        global.dataLayer.push({\n            event: 'ga4wwwSeguimientoAcciones',\n            accionSeguimiento: 'editarPedido',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: ''\n        })\n    }\n}\nexport const viewOrderDetails = (reservationId, deliveryDate, orderStatus, commonParams) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true'){\n        global.dataLayer.push({\n            event: 'wwwSeguimientoAcciones',\n            accionSeguimiento: 'detallePedido',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: '',\n            ...commonParams\n        })\n        global.dataLayer.push({\n            event: 'ga4wwwSeguimientoAcciones',\n            accionSeguimiento: 'detallePedido',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: '',\n            ...commonParams\n        })\n    }\n}\nexport const createRecurringOrder = (reservationId, deliveryDate, orderStatus, commonParams) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true'){\n        global.dataLayer.push({\n            event: 'wwwSeguimientoAcciones',\n            accionSeguimiento: 'pedidoRecurrente',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: '',\n            ...commonParams\n        })\n        global.dataLayer.push({\n            event: 'ga4wwwSeguimientoAcciones',\n            accionSeguimiento: 'pedidoRecurrente',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: '',\n            ...commonParams\n        })\n    }\n}\nexport const viewInvoice = (reservationId, deliveryDate, orderStatus, commonParams) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true'){\n        global.dataLayer.push({\n            event: 'wwwSeguimientoAcciones',\n            accionSeguimiento: 'verFactura',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: '',\n            ...commonParams\n        })\n        global.dataLayer.push({\n            event: 'ga4wwwSeguimientoAcciones',\n            accionSeguimiento: 'verFactura',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: '',\n            ...commonParams\n        })\n    }\n}\nexport const printOrder = (reservationId, deliveryDate, orderStatus, commonParams) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true'){\n        global.dataLayer.push({\n            event: 'wwwSeguimientoAcciones',\n            accionSeguimiento: 'imprimir',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: '',\n            ...commonParams\n        })\n        global.dataLayer.push({\n            event: 'ga4wwwSeguimientoAcciones',\n            accionSeguimiento: 'imprimir',\n            idPedido: reservationId,\n            fechaEntrega: deliveryDate,\n            estado: orderStatus,\n            incidencias: '',\n            ...commonParams\n        })\n    }\n}\nexport const changeCenter = (centerId, commonParams) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true'){\n        global.dataLayer.push({\n            event: 'wwwSeleccionarCentro',\n            nombre_centro: centerId,\n            ...commonParams\n        })\n        global.dataLayer.push({\n            event: 'ga4wwwSeleccionarCentro',\n            nombre_centro: centerId,\n            ...commonParams\n        })\n    }\n}\n\nexport const sendCatalogImpressions = (results, list, userPriceList, userMaterialsPriceList, commonParams, sessionCrossType, selectedCenter) => {\n    const impressions = []\n    const impressionsGA4 = [];\n    if (results) {\n        results.forEach((result, index) => {\n            if (result) {\n                const product = result._source || result // Searckit context products or our products\n                const productHq = isCosentinoGlobal(selectedCenter, product.centerId)\n                const finalPrice = getFinalPrice(product, userPriceList, userMaterialsPriceList, commonParams)\n                //Universal Analytics\n                impressions.push({\n                    name: product.displayName,\n                    id: product.productId,\n                    price: finalPrice,\n                    brand: product.brand,\n                    category: product.type,\n                    variant: product.finish,\n                    dimension1: product.subtype,\n                    dimension2: product.thickness,\n                    dimension3: product.format,\n                    dimension4: product.centerId,\n                    dimension18: sessionCrossType,\n                    dimension19: list,\n                    list: list,\n                    position: index,\n                    product_HQ: productHq\n                })\n                //GA4 Analytics\n                impressionsGA4.push({\n                    item_name: product.displayName,\n                    item_id: product.productId,\n                    price: finalPrice,\n                    item_brand: product.brand,\n                    item_category: product.type,\n                    item_category2: product.subtype,\n                    item_category3: product.thickness,\n                    item_category4: product.format,\n                    item_variant: product.finish,\n                    item_list_id: list,\n                    index: index,\n                    cross_type_product: sessionCrossType,\n                    cross_type_list: list,\n                    product_HQ: productHq\n                })\n            }\n        })\n\n        if (process.env.REACT_APP_ANALYTICS === 'true'){\n\n            //Universal Analytics\n            if (impressions) {\n                global.dataLayer.push({\n                    event: 'wwwProductImpressions',\n                    ecommerce: {\n                        currencyCode: 'EUR', //REVIEW\n                        impressions\n                    },\n                    ...commonParams\n                })\n            }\n            //GA4 Analytics\n            if(impressionsGA4) {\n                const ecommerceObject = {\n                    currency: 'EUR',\n                    items: impressionsGA4\n                }\n                pushDataLayerGA4('ga4wwwProductImpressions', ecommerceObject, commonParams)\n            }\n        }\n    }\n}\n\nexport const sendMallImpressions = (products, userPriceList, userMaterialsPriceList, commonParams, sessionCrossType) => {\n    const impressions = []\n    const impressionsGA4 = []\n    if (products) {\n        products.forEach((product, index) => {\n            if (product) {\n                //Universal Analytics\n                impressions.push({\n                    name: product.displayName,\n                    id: product.productId,\n                    price: getFinalPrice(product, userPriceList, userMaterialsPriceList, commonParams),\n                    brand: product.brand,\n                    category: product.type,\n                    variant: product.finish,\n                    dimension1: product.subtype,\n                    dimension2: product.thickness,\n                    dimension3: product.format,\n                    dimension4: product.centerId,\n                    dimension18: sessionCrossType,\n                    dimension19: 'MALL',\n\n                    list: 'MALL',\n                    position: index\n                })\n                //GA4 Analytics\n                impressionsGA4.push({\n                    item_name: product.displayName,\n                    item_id: product.productId,\n                    price: getFinalPrice(product, userPriceList, userMaterialsPriceList, commonParams),\n                    item_brand: product.brand,\n                    item_category: product.type,\n                    item_category2: product.subtype,\n                    item_category3: product.thickness,\n                    item_category4: product.format,\n                    item_variant: product.finish,\n                    item_list_id: 'MALL',\n                    index: index,\n                    cross_type_product: sessionCrossType,\n                    cross_type_list: 'MALL',\n                })\n            }\n        })\n\n        if (process.env.REACT_APP_ANALYTICS === 'true'){\n            //Universal Analytics\n            if (impressions) {\n                global.dataLayer.push({\n                    event: 'wwwProductImpressions',\n                    ecommerce: {\n                        currencyCode: 'EUR', //REVIEW\n                        impressions\n                    },\n                    ...commonParams\n                })\n            }\n            //GA4 Analytics\n            if(impressionsGA4){\n                const ecommerceObject = {\n                    currency: 'EUR',\n                    items: impressionsGA4\n                }\n                pushDataLayerGA4('ga4wwwProductImpressions', ecommerceObject, commonParams)\n            }\n        }\n\n    }\n}\n\nexport const sendProductDetail = (product, center, userType, shippingMethod, userPriceList = null, userMaterialsPriceList, commonParams, sessionCrossType) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        //Universal Analytics\n        const productLayer = {\n            name: product.displayName,\n            id: product.productId,\n            price: getFinalPrice(product, userPriceList, userMaterialsPriceList, commonParams),\n            brand: product.brand,\n            category: product.type,\n            variant: product.finish,\n            dimension1: product.subtype,\n            dimension2: product.thickness,\n            dimension3: product.format,\n            dimension4: product.centerId,\n            dimension18: sessionCrossType,\n            product_HQ: false\n        }\n\n        if (product.extra) {\n            if (product.extra.analyticsTag) {\n                productLayer.list = product.extra.analyticsTag\n                productLayer.dimension19 = product.extra.analyticsTag\n            }\n            if (product.extra.variant) {\n                productLayer.dimension20 = product.extra.variant\n            }\n            if (product.extra.crossType) productLayer.cross_type_product = product.extra.crossType\n            if (product.extra.isCosentinoGlobal) productLayer.product_HQ = product.extra.isCosentinoGlobal\n        }\n\n        global.dataLayer.push({\n            event: 'wwwProductView',\n            ecommerce: {\n                detail: {\n                    products: [productLayer]\n                }\n            },\n            ...commonParams\n        })\n\n        //GA4 Analytics\n        const productLayerGA4 = {\n            item_name: product.displayName,\n            item_id: product.productId,\n            price: getFinalPrice(product, userPriceList, userMaterialsPriceList, commonParams),\n            item_brand: product.brand,\n            item_category: product.type,\n            item_category2: product.subtype,\n            item_category3: product.thickness,\n            item_category4: product.format,\n            item_variant: product.finish,\n            cross_type_product: sessionCrossType,\n            product_HQ: false\n        }\n\n        if (product.extra) {\n            if (product.extra.analyticsTag) {\n                productLayerGA4.item_list_id = product.extra.analyticsTag\n                productLayerGA4.item_list_name = product.extra.analyticsTag\n                productLayerGA4.cross_type_list = product.extra.analyticsTag\n            }\n            if (product.extra.variant) {\n                productLayerGA4.cross_variant = product.extra.variant\n            }\n            if (product.extra.crossType) productLayer.cross_type_product = product.extra.crossType\n            if (product.extra.isCosentinoGlobal) productLayerGA4.product_HQ = product.extra.isCosentinoGlobal\n        }\n\n        pushDataLayerGA4('ga4wwwProductView', {\n            items: [productLayerGA4]\n        }, commonParams)\n    }\n}\n\nexport const applyDiscount = (discount, priceBefore) => {\n    let priceAfter = priceBefore\n\n    //CAUTION: THIS METHOD WORKS BOTH WITH PROMOTION OR PRICECONDITIONS\n    if (discount.condition === 'A') {\n        priceAfter = discount.price\n        return priceAfter\n    }\n    if (discount.condition === 'B') {\n        priceAfter = priceBefore - (priceBefore * discount.price) / 100\n        return priceAfter\n    }\n\n    if (discount.coin === '%') {\n        if (discount.condition === 'ZEFP' || discount.condition === 'ZEFN') {\n            //esto es un extra\n            priceAfter = priceBefore + (priceBefore * discount.price) / 100\n        } else {\n            // esto es un discount\n            priceAfter = priceBefore - (priceBefore * discount.price) / 100\n        }\n    } else {\n        if (discount.condition === 'ZEFP' || discount.condition === 'ZEFN') {\n            //esto es un extra\n            priceAfter = priceBefore + discount.price\n        } else {\n            // esto es un discount\n            priceAfter = priceBefore - discount.price\n        }\n    }\n\n    return priceAfter\n}\nexport const getFinalPrice = (product, userPriceList, userMaterialsPriceList, commonParams) => {\n    // console.log('por que doy null')\n    // console.log('por que doy null, hola')\n\n    // console.log(product)\n    // console.log(userPriceList)\n    if (!product.price && !userPriceList) return 0\n    let finalPrice = calculatePrice(product, userPriceList, userMaterialsPriceList)\n    // console.log('precio base')\n    // console.log(finalPrice)\n\n    // console.log('lista del usuario')\n    // console.log(userPriceList)\n    let discounts = getDiscounts(product, userPriceList, userMaterialsPriceList)\n    discounts.forEach(discount => {\n        finalPrice = applyDiscount(discount, finalPrice)\n    })\n    // console.log(discounts)\n    // console.log('precio con descuentos')\n    // console.log(finalPrice)\n    // console.log(commonParams)\n    let lang = commonParams && commonParams.idioma ? commonParams.idioma : 'en-US'\n    let numberFormat = getNumberFormat(lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n    if(product.type == 'TABLA' && product.surface){\n        // console.log(finalPrice,'before calculate')\n        //send total price of slab instead of price by m2\n        // console.log(product.surface,'surface')\n        finalPrice = finalPrice * parseInt(product.surface,10)\n        // console.log(finalPrice, 'after calculate')\n    }\n    finalPrice = numberFormat.format(finalPrice)\n    // console.log(numberFormat)\n\n    return finalPrice\n}\n\nexport const getDiscounts = (product, userPriceList, userMaterialsPriceList) => {\n    let priceCondition = {\n        ZT00: { condition: 'ZT00', operator: '-', description: 'BASE_PRICE' },\n        ZEFP: { condition: 'ZEFP', operator: '+', description: 'FINISH_EXTRA_PERCENT' },\n        ZDPR: { condition: 'ZDPR', operator: '-', description: 'PRODUCT_DISCOUNT' },\n        ZDCU: { condition: 'ZDCU', operator: '-', description: 'CUSTOMER_DISCOUNT' },\n        ZDLO: { condition: 'ZDLO', operator: '-', description: 'LOGISTIC_DISCOUNT' },\n        B: { condition: 'B', operator: '-', description: 'PERCENTUAL_DISCOUNT_PROMOTION' },\n        ZEFN: { condition: 'ZEFN', operator: '+', description: 'FINISH_EXTRA' },\n        A: { condition: 'A', operator: '', description: 'FIXED_PRICE_PROMOTION' },\n        ZDWB: { condition: 'ZDWB', operator: '-', description: 'ECOSENTINO_DISCOUNT' },\n        ZDPP: { condition: 'ZDPP', operator: '-', description: 'PROMT_PAYMENT_DISCOUNT' }\n    }\n    let priceConditionOrder = Object.keys(priceCondition)\n\n    let discounts = []\n\n    //prepara descuentos de material\n    // console.log('antes de descuentos')\n    // console.log(userPriceList)\n    // console.log(product.price)\n    // console.log(product.centerId)\n    product.price &&\n        product.price[product.centerId] &&\n        product.price[product.centerId].forEach(priceCondition => {\n            // let discount = this.normalizeDiscount(priceCondition)\n            // if (discount) discounts.push(discount)\n            // console.log('foreach discount')\n            // console.log(priceCondition.salesOrg)\n            // console.log(userPriceList.salesOrg)\n            if (userPriceList && userPriceList.length > 0 && priceCondition.salesOrg === userPriceList[0].salesOrg) {\n                let discount = normalizeDiscount(priceCondition, userPriceList, product)\n                if (discount) discounts.push(discount)\n            }\n        })\n\n    //prepara descuentos de cliente\n    // console.log('despues de descuentos')\n    // console.log(discounts)\n    userMaterialsPriceList &&\n        userMaterialsPriceList[product.productId] &&\n        userMaterialsPriceList[product.productId].forEach(priceCondition => {\n            let discount = normalizeDiscount(priceCondition, userPriceList, product)\n            if (discount) {\n                //if theres a discount with same condition , we keep the user condition, cause its more specific\n                let foundAt = discounts.map(discount => discount.condition).indexOf(discount.condition)\n                if (foundAt > -1) {\n                    discounts.splice(foundAt, 1, discount)\n                } else {\n                    if (discount) discounts.push(discount)\n                }\n            }\n        })\n\n    discounts = discounts.sort((a, b) => {\n        return priceConditionOrder.indexOf(a.condition) - priceConditionOrder.indexOf(b.condition)\n    })\n    return discounts\n}\nexport const normalizeDiscount = (priceCondition, userPriceList, product) => {\n    let m2toft2Ratio = 10.7639\n\n    if (priceCondition.condition === 'ZT00' || priceCondition.condition === 'ZVFG') {\n        return null\n    }\n\n    if (!userPriceList[0] || !getCurrentZT00(product, userPriceList[0].priceList)) return null\n    // console.log('normalizando')\n    // console.log(priceCondition.priceList)\n    // console.log(userPriceList[0].priceList)\n    // console.log(getCurrentZT00(product, userPriceList[0].priceList))\n    if (priceCondition.priceList === userPriceList[0].priceList) {\n        if (getCurrentZT00(product, userPriceList[0].priceList).measure === priceCondition.measure || priceCondition.coin === '%') {\n            return priceCondition\n        } else {\n            if (getCurrentZT00(product, userPriceList[0].priceList).measure === 'M2' && priceCondition.measure === 'PI2') {\n                priceCondition.price = priceCondition.price * m2toft2Ratio\n                return priceCondition\n            } else if (getCurrentZT00(product, userPriceList[0].priceList).measure === 'PI2' && priceCondition.measure === 'M2') {\n                priceCondition.price = priceCondition.price / m2toft2Ratio\n                return priceCondition\n            }\n        }\n    }\n    return null\n}\nexport const getCurrentZT00 = (product, userPriceList) => {\n    // console.log('current zt00')\n    // console.log(product)\n    // console.log(userPriceList)\n    return (\n        product.price &&\n        product.price[product.centerId] &&\n        product.price[product.centerId].filter(priceCondition => priceCondition.condition === 'ZT00' && priceCondition.priceList === userPriceList)[0]\n    )\n}\nexport const calculatePrice = (product, userPriceList, userMaterialsPriceList) => {\n    let basePrice = undefined\n\n    // console.log('calculando')\n    // console.log(userPriceList)\n    // console.log(product)\n    // console.log(userMaterialsPriceList)\n    if (!userPriceList || !userPriceList[0] || !userPriceList[0].priceList) return basePrice\n    let price =\n        product.price &&\n        product.price[product.centerId] &&\n        product.price[product.centerId].filter(condition => {\n            return condition.condition === 'ZT00' && condition.priceList == userPriceList[0].priceList\n        })\n    basePrice = price && price[0] ? price[0].price : 0\n\n    ///TODO:FIX FINAL PRICE\n\n    return basePrice\n}\nexport const productClick = (product, index, list = 'CATALOG', userPriceList, userMaterialsPriceList, commonParams, sessionCrossType, selectedCenter) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        //Universal Analytics\n        const productLayer = {\n            name: product.displayName,\n            id: product.productId,\n            price: getFinalPrice(product, userPriceList, userMaterialsPriceList, commonParams),\n            brand: product.brand,\n            category: product.type,\n            variant: product.finish,\n            dimension1: product.subtype,\n            dimension2: product.thickness,\n            dimension3: product.format,\n            dimension4: product.centerId,\n            dimension18: sessionCrossType,\n            dimension19: list,\n            list: list,\n            position: index,\n            product_HQ: false\n        }\n\n        if (product.extra) {\n            if (product.extra.crossType) productLayer.cross_type_product = product.extra.crossType\n            if (product.extra.variant) productLayer.dimension20 = product.extra.variant\n            if (product.extra.isCosentinoGlobal) productLayer.product_HQ = product.extra.isCosentinoGlobal\n        }\n\n        global.dataLayer.push({\n            event: 'wwwProductClick',\n            ecommerce: {\n                click: {\n                    actionField: {list: list},\n                    products: [productLayer]\n                }\n            },\n            ...commonParams\n        })\n\n        //GA4 Analytics\n        const productLayerGA4 = {\n            item_name: product.displayName,\n            item_id: product.productId,\n            price: getFinalPrice(product, userPriceList, userMaterialsPriceList, commonParams),\n            item_brand: product.brand,\n            item_category: product.type,\n            item_category2: product.subtype,\n            item_category3: product.thickness,\n            item_category4: product.format,\n            item_variant: product.finish,\n            item_list_id: list,\n            index: index,\n            cross_type_product: sessionCrossType,\n            cross_type_list: list,\n            product_HQ: false\n        }\n\n        if (product.extra) {\n            if (product.extra.crossType) productLayerGA4.cross_type_product = product.extra.crossType\n            if (product.extra.variant) productLayerGA4.cross_variant = product.extra.variant\n            if (product.extra.isCosentinoGlobal) productLayerGA4.product_HQ = product.extra.isCosentinoGlobal\n        }\n\n        const ecommerceObject = {\n            item_list_id: list,\n            items: [productLayerGA4]\n        }\n\n        pushDataLayerGA4('ga4wwwProductClick', ecommerceObject, commonParams)\n    }\n}\nexport const sendAddToCart = (product, quantity, shippingMethod, username, userPriceList, userMaterialsPriceList, channelName, commonParams, extra, selectedCenter) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n\n        //Universal Analytics\n        try {\n            const price = getFinalPrice(product, userPriceList, userMaterialsPriceList, commonParams)\n            const lineProduct = {\n                product: product,\n                productId: product.productId,\n                qty: quantity\n            }\n            const productLayer = getProductLayer(lineProduct, price, selectedCenter, extra)\n\n            global.dataLayer.push({\n                event: 'wwwAddToCart',\n                ecommerce: {\n                    currencyCode: 'EUR', //REVIEW\n                    add: {\n                        products: [productLayer]\n                    }\n                },\n                ...commonParams\n            })\n        } catch (e) {\n            console.log('wwwAddToCart ERROR:', e)\n        }\n\n        //GA4 Analytics\n        try {\n            const price = getFinalPrice(product, userPriceList, userMaterialsPriceList, commonParams)\n            const lineProduct = {\n                product: product,\n                productId: product.productId,\n                qty: quantity\n            }\n            const productLayer = getProductLayerGA4(lineProduct, price, selectedCenter, extra)\n\n            const ecommerceObject = {\n                currency: 'EUR',\n                items: [productLayer]\n            }\n\n            pushDataLayerGA4('ga4wwwAddToCart', ecommerceObject, commonParams)\n\n        } catch (e) {\n            console.log('ga4wwwAddToCart ERROR:', e)\n        }\n    }\n}\nexport const sendRemoveFromCart = (line, qty, shippingMethod, username, commonParams, lines = null, center) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        //Universal Analytics\n        try {\n            let items;\n            if(lines){\n                items = lines.map((line) => {\n                    return getProductLayer(line, null, center)\n                })\n            } else if (line) {\n                line.qty = qty\n                const productLayer = getProductLayer(line, null, center)\n                productLayer.item_category5 = line.product.channelName\n                items = [productLayer]\n            }\n\n            global.dataLayer.push({\n                event: 'wwwRemoveFromCart',\n                ecommerce: {\n                    currencyCode: 'EUR', //REVIEW\n                    remove: {\n                        products: items\n                    }\n                },\n                ...commonParams\n            })\n        } catch (e) {\n            console.log('wwwRemoveFromCart ERROR:', e)\n        }\n\n        //GA4 Analytics\n        try {\n            let items;\n            if(lines){\n                items = lines.map((line) => {\n                    return getProductLayerGA4(line, null, center)\n                })\n            } else{\n                const productLayer = getProductLayerGA4(line, null, center)\n                productLayer.item_category5 = line.product.channelName\n                items = [productLayer]\n            }\n\n            const ecommerceObject = {\n                items,\n                currency: 'EUR'\n            }\n\n            pushDataLayerGA4('ga4wwwRemoveFromCart', ecommerceObject, commonParams)\n        } catch (e) {\n            console.log('ga4wwwRemoveFromCart ERROR:', e)\n        }\n    }\n\n}\n\nconst getProductLayer = (line, price, center, extra) => {\n    const productLayer = {\n        name: line.product.displayName,\n        id: line.productId,\n        quantity: line.qty,\n        brand: line.product.brand,\n        category: line.product.type,\n        variant: !!line.cutToSize ? line.cutToSize.finish : line.product.finish,\n        dimension1: line.product.subtype,\n        dimension2: !!line.cutToSize ? line.cutToSize.thickness : line.product.thickness,\n        dimension3: !!line.cutToSize ? `${line.cutToSize.width}x${line.cutToSize.height}`  : line.product.format,\n        dimension4: line.product.centerId,\n        product_HQ: isCosentinoGlobal(center, line.product.centerId)\n    }\n    if (!!price){\n        productLayer.price = price\n    }\n    if (!!line.cutToSize || line.product.isCutToSize) productLayer.dimension16 = \"corte a medida\"\n\n    const list = (!!line.extra && line.extra.analyticsTag) || (!!extra && extra.analyticsTag)\n    if (list) {\n        productLayer.list = list\n        productLayer.dimension19 = list\n    }\n\n    const variant = (!!line.extra && line.extra.variant) || (!!extra && extra.variant)\n    if (variant) {\n        productLayer.dimension20 = variant\n    }\n\n    if (!!line.extra && line.extra.crossType) productLayer.cross_type_product = line.extra.crossType\n    else if (!!extra && extra.crossType) productLayer.cross_type_product = extra.crossType\n    if (!!extra && extra.sessionCrossType) productLayer.dimension18 = extra.sessionCrossType\n    if (!!center) productLayer.dimension4 = center\n\n    return productLayer\n}\n\nconst getProductLayerGA4 = (line, price, center, extra) => {\n    const productLayer = {\n        item_name: line.product.displayName,\n        item_id: line.productId,\n        quantity: line.qty,\n        item_brand: line.product.brand,\n        item_category: line.product.type,\n        item_category2: line.product.subtype,\n        item_category3: !!line.cutToSize ? line.cutToSize.thickness : line.product.thickness,\n        item_category4: !!line.cutToSize ? `${line.cutToSize.width}x${line.cutToSize.height}`  : line.product.format,\n        item_variant: !!line.cutToSize ? line.cutToSize.finish : line.product.finish,\n        product_HQ: isCosentinoGlobal(center, line.product.centerId)\n    }\n    if (!!price){\n        productLayer.price = price\n    }else{\n\n    }\n    if (!!line.cutToSize || line.product.isCutToSize) productLayer.item_category5 = \"corte a medida\"\n    if (!!line.extra && line.extra.crossType) productLayer.cross_type_product = line.extra.crossType\n    else if (!!extra && extra.crossType) productLayer.cross_type_product = extra.crossType\n\n    const list = (!!line.extra && line.extra.analyticsTag) || (!!extra && extra.analyticsTag)\n    if (list) {\n        productLayer.item_list_id = list\n        productLayer.cross_type_list = list\n    }\n\n    const variant = (!!line.extra && line.extra.variant) || (!!extra && extra.variant)\n    if (variant) {\n        productLayer.cross_variant = variant\n    }\n\n    return productLayer\n}\n\nexport const sendCheckoutStep1Review = (center, userType, shippingMethod, username, userPriceList, userMaterialsPriceList, lines, commonParams, sessionCrossType) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        //Universal Analytics\n        const products = lines.map(line => {\n            const price = getFinalPrice(line.product, userPriceList, userMaterialsPriceList, commonParams)\n            return getProductLayer(line, price, center, {sessionCrossType:sessionCrossType})\n        })\n        global.dataLayer.push({\n            event: 'wwwCheckout',\n            ecommerce: {\n                checkout: {\n                    actionField: {step: 1},\n                    products\n                }\n            },\n            ...commonParams\n        })\n\n        //GA4 Analytics\n        const productsGA4 = lines.map(line => {\n            const price = getFinalPrice(line.product, userPriceList, userMaterialsPriceList, commonParams)\n            return getProductLayerGA4(line, price, center, {sessionCrossType:sessionCrossType})\n        })\n\n        const ecommerceObject = {\n            items: productsGA4\n        }\n\n        if (process.env.REACT_APP_ANALYTICS === 'true') {\n            pushDataLayerGA4('ga4wwwCheckout', ecommerceObject, commonParams)\n        }\n    }\n}\n\nexport const sendCheckoutOk = (center, userType, shippingMethod, username, reservationCode, lines, userPriceList, userMaterialsPriceList, total, currencyCode, commonParams, sessionCrossType) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        let shippingNumber = {\n            CONTAINER: 1,\n            FULL_TRUCK: 2,\n            SINGLE_SLAB: 3,\n            DIRECT_TRUCK: 4,\n            MKTOOLS: 5,\n            CUT_TO_SIZE: 6,\n            LOWES_WALL_SAMPLES: 7,\n            LOWES_CUSTOMER_SAMPLES: 8,\n            IKEA: 9\n        }\n\n        //Universal Analytics\n        const products = lines.map(line => {\n            let priceDivided = 0\n            if(line.pricePhase2 > 0){\n                priceDivided = line.pricePhase2 / line.qty\n            }else{\n                priceDivided = getFinalPrice(line.product, userPriceList, userMaterialsPriceList, commonParams)\n            }\n\n            return getProductLayer(line, priceDivided, center, {sessionCrossType:sessionCrossType})\n        })\n\n        global.dataLayer.push({\n            event: 'wwwPurchase',\n            ecommerce: {\n                currencyCode: currencyCode,\n                purchase: {\n                    actionField: {\n                        id: reservationCode,\n                        affiliation: center,\n                        shipping: shippingNumber[shippingMethod],\n                        coupon: undefined, //REVIEW:\n                        tax: undefined, //REVIEW:\n                        revenue: total //REVIEW:\n                    },\n                    products\n                }\n            },\n            ...commonParams\n        })\n\n        //GA4 Analytics\n        const productsGA4 = lines.map(line => {\n            let priceDivided = 0\n            if(line.pricePhase2 > 0){\n                priceDivided = line.pricePhase2 / line.qty\n            }else{\n                priceDivided = getFinalPrice(line.product, userPriceList, userMaterialsPriceList, commonParams)\n            }\n\n            return getProductLayerGA4(line, priceDivided, center, {sessionCrossType:sessionCrossType})\n        })\n\n        const ecommerceObject = {\n            items: productsGA4,\n            currency: currencyCode,\n            transaction_id: reservationCode,\n            shipping_tier: shippingNumber[shippingMethod],\n            value: total\n        }\n\n        pushDataLayerGA4('ga4wwwPurchase', ecommerceObject, commonParams)\n    }\n}\nexport const sendSearchProduct = (term, commonParams) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        //Universal Analytics\n        global.dataLayer.push({\n            event: 'wwwSearch',\n            ecommerce: {\n                search: [\n                    {\n                        event: term\n                    }\n                ]\n            }\n        })\n\n        //GA4 Analytics\n        pushDataLayerGA4('ga4wwwSearch', {search_term: term}, commonParams)\n    }\n}\n\nexport const setLocation = (dispatch, pageType, section, subsection, commonParams) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        const object = {\n            page_section: section,\n            page_subsection: subsection,\n            page_type_ec: pageType\n        }\n\n\n        global.dataLayer.push({\n            event: 'www_ecosentino_pageview',\n            page: object\n        })\n\n        global.dataLayer.push({ ecommerce: null });\n        global.dataLayer.push({\n            event: 'ga4www_ecosentino_pageview',\n            page: object,\n            ...commonParams\n        })\n    }\n\n    dispatch({type: 'SET_LOCATION', pageType, section, subsection})\n}\n\nexport const downloadLots = (type, commonParams) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        global.dataLayer.push({\n            event: 'wwwDescargarLote',\n            tipo_descarga: type,\n            ...commonParams\n        })\n        global.dataLayer.push({\n            event: 'ga4wwwDescargarLote',\n            tipo_descarga: type,\n            ...commonParams\n        })\n    }\n}\n\nexport const showCrossSellingModal = (lines, priceList, userMaterialsPriceList, list, commonParams, sessionCrossType, selectedCenter) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        const articles = lines.single \n        const articlesLink = lines.multi \n\n        if (articles) {\n            //Universal Analytics\n            const impressions = articles.map((item, index) => {\n                return {\n                    name: item.displayName,\n                    id: item.productId,\n                    price: getFinalPrice(item.productId, priceList, userMaterialsPriceList, commonParams),\n                    brand: item.brand,\n                    category: item.type,\n                    variant: item.finish,\n                    dimension1: item.subtype,\n                    dimension2: item.thickness,\n                    dimension3: item.format,\n                    dimension4: item.centerId,\n                    dimension18: sessionCrossType,\n                    dimension19: list,\n                    list: list,\n                    cross_type_product: !!lines.fromRecommendation ? 'dinamico' : 'estatico',\n                    position: index,\n                    product_HQ: isCosentinoGlobal(selectedCenter, item.centerId)\n                }            \n            })\n\n            global.dataLayer.push({\n                event: 'wwwProductImpressions',\n                ecommerce: {\n                    currencyCode: 'EUR', //REVIEW\n                    impressions: impressions                  \n                },\n                ...commonParams\n            })\n\n            //GA4 Analytics\n            const impressionsGA4 = articles.map((item, index) => {\n                return {\n                    item_name: item.displayName,\n                    item_id: item.productId,\n                    price: getFinalPrice(item.productId, priceList, userMaterialsPriceList, commonParams),\n                    item_brand: item.brand,\n                    item_category: item.type,\n                    item_category2: item.subtype,\n                    item_category3: item.thickness,\n                    item_category4: item.format,\n                    item_variant: item.finish,\n                    item_list_id: list,\n                    index: index,\n                    cross_type_product: !!lines.fromRecommendation ? 'dinamico' : 'estatico',\n                    cross_type_list: list,\n                    product_HQ: isCosentinoGlobal(selectedCenter, item.centerId)\n                }\n            })\n\n            const ecommerceObject = {\n                currency: 'EUR',\n                items: impressionsGA4\n            }\n\n            pushDataLayerGA4('ga4wwwProductImpressions', ecommerceObject, commonParams)\n        }\n\n        if (articlesLink) {\n            global.dataLayer.push({\n                event: 'cross_selling',\n                eventCategory: 'modal',\n                eventAction: 'gama_' + articlesLink.type,\n                eventLabel: 'view'\n            })\n        }\n    }\n}\n\nexport const showCrossSellingSlider = (lines, priceList, userMaterialsPriceList, list, commonParams, sessionCrossType, selectedCenter) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n\n        if (lines) {\n            //Universal Analytics\n            const impressions = lines.map((line, index) => {\n                const item = line.product\n                return {\n                    name: item.displayName,\n                    id: item.productId,\n                    price: getFinalPrice(item.productId, priceList, userMaterialsPriceList, commonParams),\n                    brand: item.brand,\n                    category: item.type,\n                    variant: item.finish,\n                    dimension1: item.subtype,\n                    dimension2: item.thickness,\n                    dimension3: item.format,\n                    dimension4: item.centerId,\n                    dimension18: sessionCrossType,\n                    dimension19: list,\n                    list: list,\n                    cross_type_product: !!line.fromRecommendation ? 'dinamico' : 'estatico',\n                    position: index,\n                    product_HQ: isCosentinoGlobal(selectedCenter, item.centerId)\n                }\n            })\n\n            global.dataLayer.push({\n                event: 'wwwProductImpressions',\n                ecommerce: {\n                    currencyCode: 'EUR', //REVIEW\n                    impressions: impressions\n                },\n                ...commonParams\n            })\n\n            //GA4 Analytics\n            const impressionsGA4 = lines.map((line, index) => {\n                const item = line.product\n                return {\n                    item_name: item.displayName,\n                    item_id: item.productId,\n                    price: getFinalPrice(item.productId, priceList, userMaterialsPriceList, commonParams),\n                    item_brand: item.brand,\n                    item_category: item.type,\n                    item_category2: item.subtype,\n                    item_category3: item.thickness,\n                    item_category4: item.format,\n                    item_variant: item.finish,\n                    item_list_id: list,\n                    index: index,\n                    cross_type_product: !!lines.fromRecommendation ? 'dinamico' : 'estatico',\n                    cross_type_list: list,\n                    product_HQ: isCosentinoGlobal(selectedCenter, item.centerId)\n                }\n            })\n\n            const ecommerceObject = {\n                currency: 'EUR',\n                items: impressionsGA4\n            }\n\n            pushDataLayerGA4('ga4wwwProductImpressions', ecommerceObject, commonParams)\n        }\n    }\n}\n\nexport const clickOnCrossSellingLink = (type) => {\n    if (process.env.REACT_APP_ANALYTICS === 'true') {\n        global.dataLayer.push({\n            event: 'cross_selling',\n            eventCategory: 'modal',\n            eventAction: 'gama_' + type,\n            eventLabel: 'click'\n        })\n        global.dataLayer.push({\n            event: 'ga4cross_selling',\n            eventCategory: 'modal',\n            eventAction: 'gama_' + type,\n            eventLabel: 'click'\n        })\n    }\n}\n\nconst pushDataLayerGA4 = (name, ecommerceObject, commonParams) => {\n    global.dataLayer.push({ ecommerce: null });\n    global.dataLayer.push({\n        event: name,\n        ecommerce: ecommerceObject,\n        ...commonParams\n    })\n}\n\n\nconst analyticsEvents = ({ dispatch, getState }) => next => action => {\n    const center = getSelectedCenter(getState())\n    const userType = checkLoginType(getUserType(getState()), getImpersonatedBy(getState()))\n    const shippingMethod = getShippingMethod(getState())\n    const priceList = getPriceListAtSelectedCenter(getState())\n    const userMaterialsPriceList = getUserPriceList(getState())\n    const username = undefined\n    const deliveryDate = undefined //REVIEW:\n    const orderStatus = undefined //REVIEW:\n    let commonParams = getCommonParams(getState())\n    const lines = getLines(getState())\n    const crossType = hasAiRecommendations(getState()) ? 'dinamico' : 'estatico'\n\n    let hasSalesforceAccess = getDataFromSalesforce(getState())\n    let hasWeAccess = 0\n    if (hasSalesforceAccess && hasSalesforceAccess !== 'no_data_found_on_sf') {\n        hasWeAccess = 1\n    }\n\n    /** @type {boolean} */\n    const canViewHQ = getNaturalStoneViewingPermissions(getState()).canViewHQ\n    const canViewOutletAndPnInHQ = canViewHQ\n    \n    switch (action.type) {\n        case LOCATION_CHANGE:\n            return next(action)\n        // case 'SIMPLE_LOGIN_SUCCESS':\n        // case 'SIMPLE_IMPERSONATE_SUCCESS':\n        //     const decoded = jwtDecode(action.token)\n        //     sendLoginType(decoded.type, getImpersonatedBy(getState()))\n        //     return next(action)\n\n        // case 'SUBMIT_CHECKOUT_REQUEST':\n        //     sendCheckoutStep2Reservation(center, userType, shippingMethod, username)\n        //     return next(action)\n\n        // NEW EVENTS\n        // case 'REJECT_ORDER_SUCCESS':\n        //     cancelOrder(action.reservationId, deliveryDate, orderStatus, commonParams)\n        //     return next(action)\n        // case 'FETCH_ORDER_TO_EDIT_SUCCESS':\n        //     editOrder(action.reservationId, action.order.preferredDeliveryDate, action.order.statusText, commonParams)\n        //     return next(action)\n        // case 'FETCH_ORDER_DETAILS_SUCCESS':\n        //     viewOrderDetails(action.order.reservationId, action.order.preferredDeliveryDate, action.order.statusText, commonParams)\n        //     return next(action)\n        case 'ADD2CART_RECURRING_ORDERS_DETAILS_SUCCESS':\n            createRecurringOrder(action.reservationId, deliveryDate, orderStatus, commonParams)\n            return next(action)\n        case 'CHANGE_CENTER_BY_USER':\n            changeCenter(action.center, commonParams)\n            return next(action)\n        case 'PRODUCT_CLICK':\n            productClick(action.product, action.index, action.list, priceList, userMaterialsPriceList, commonParams, crossType, center)\n            return next(action)\n        case 'CHECKOUT_VISIT':\n            sendCheckoutStep1Review(center, userType, shippingMethod, username, priceList, userMaterialsPriceList, lines, commonParams, crossType)\n            return next(action)\n        case 'SUBMIT_CHECKOUT_SUCCESS':\n            const reservationCode = action.code\n            let linesWithPrice = []\n            let total = totalSelector(getState())\n            // console.log('Total selector: ' + total)\n            if (isNaN(total)) {\n                total = 0\n            }\n            // console.log('Total selector after check NaN: ' + total)\n            let currencyCode = totalCoin(getState())\n            linesWithPrice = lines.map(line => {\n                let pricePhase2 = getLinePricePhase2ByLineId(getState(), line.lineId)\n                line.pricePhase2 = pricePhase2 ? pricePhase2 : 0\n                return line\n            })\n\n            sendCheckoutOk(center, userType, shippingMethod, username, reservationCode, linesWithPrice, priceList, userMaterialsPriceList, total, currencyCode, commonParams, crossType)\n            return next(action)\n        case 'ADD_CART_LINE_SUCCESS':\n\n            let addedProduct;\n\n            if (!!action.cutToSize) {\n                addedProduct = {\n                    isCutToSize: true,\n                    displayName: action.cutToSize.colorName,\n                    productId: CtsIdsByElaboration(action.cutToSize.elaboration, action.cutToSize.brand),\n                    price: null,\n                    brand: action.cutToSize.brand,\n                    type: 'TABLA',\n                    quantity: action.qty,\n                    finish: action.cutToSize.finish,\n                    subtype: action.cutToSize.subtype,\n                    thickness: action.cutToSize.thickness,\n                    format: `${action.cutToSize.width}x${action.cutToSize.height}`,\n                    centerId: center,\n                }\n            } else {\n                addedProduct = byProductId(getState(), action.productId)\n            }\n\n            const extra = {...action.extra, sessionCrossType: crossType}\n\n\n            sendAddToCart(\n                addedProduct,\n                action.qty,\n                shippingMethod,\n                username,\n                priceList,\n                userMaterialsPriceList,\n                action.segmentation.channelName,\n                commonParams,\n                extra,\n                center\n            )\n\n            return next(action)\n\n        case 'ADD_CART_BULK_LOTS_SUCCESS':\n            addedProduct = byProductId(getState(), action.productId)\n            const _extra = action.lines[0].extra\n            const quantity = action.lines.reduce((acc, line) => acc + line.quantity, 0)\n\n\n            sendAddToCart(\n                addedProduct,\n                quantity,\n                shippingMethod,\n                username,\n                priceList,\n                userMaterialsPriceList,\n                action.segmentation.channelName,\n                commonParams,\n                _extra,\n                center\n            )\n            return next(action)\n\n        case 'CHANGE_CART_LINE_ADD_QTY':\n            if (action.line.product !== null) {\n                sendAddToCart(action.line.product, action.diffQty, shippingMethod, username, priceList, userMaterialsPriceList, action.line.segmentation.channelName, commonParams, {sessionCrossType: crossType})\n            }\n            return next(action)\n        case 'CHANGE_CART_LINE_REMOVE_QTY':\n            if (action.line.product !== null) {\n                sendRemoveFromCart(action.line, action.diffQty, shippingMethod, username, commonParams, null, center)\n            }\n            return next(action)\n        case 'REMOVE_CART_LINE':\n            const line = byLineId(getState(), action.lineId)\n            //const product = getProductLayer(line, null, center)\n            if (line !== null) {\n                sendRemoveFromCart(line, line.qty, shippingMethod, username, commonParams, null, center)\n            }\n            return next(action)\n        case 'EMPTY_CART_BY_USER':\n            //const products = lines.map(l => getProductLayer(l, null, center))\n            sendRemoveFromCart(null, null, shippingMethod, username, commonParams, lines, center)\n            return next(action)\n\n        case 'PRODUCT_DETAIL_VISIT':\n            sendProductDetail(action.product, center, userType, shippingMethod, priceList, userMaterialsPriceList, commonParams, crossType)\n            return next(action)\n\n        case 'SHOW_CROSS_SELLING_MODAL':\n            showCrossSellingModal(action.lines, priceList, userMaterialsPriceList, 'crossselling-popupcarrito', commonParams, crossType, center)\n            return next(action)\n\n        case 'SHOW_CROSS_SELLING_SLIDER':\n            showCrossSellingSlider(action.products, priceList, userMaterialsPriceList, action.tag, commonParams, crossType, center)\n            return next(action)\n\n        case 'CLICK_CROSS_SELLING_LINK':\n            clickOnCrossSellingLink(action.articleType)\n            return next(action)\n\n        case 'LOGIN_PROCESS_FINISH':\n        case 'SIMPLE_IMPERSONATE_RESUCCESS':\n        case 'FETCH_CENTER_PREFERENCES_SUCCESS':\n        case 'FETCH_SHIPPING_ADDRESSES_SUCCESS':\n        case 'MOUNT_APP':\n            try {\n                if (process.env.REACT_APP_ANALYTICS === 'true') {\n                    global.dataLayerCosentino.cross_type = crossType\n                    global.dataLayerCosentino.has_we_access = hasWeAccess\n                    global.dataLayerCosentino.user_order_HQ = canViewOutletAndPnInHQ\n                }\n            } catch (e) {\n                console.log(e)\n            }\n\n            return next(action)\n\n        case 'SEND_SEARCH_PRODUCT':\n            sendSearchProduct(action.term, commonParams)\n            return next(action)\n\n        case 'CHANGE_ANALYTICS_URL':\n            setLocation(dispatch, action.pageType, action.section, action.subsection, commonParams)\n            return next(action)\n\n        case 'SELECT_VIRTUAL_VISIT':\n            if (process.env.REACT_APP_ANALYTICS === 'true') {\n                pushDataLayerGA4('ga4wwwVirtualVisit', action.values, commonParams)\n            }\n\n        default:\n            return next(action)\n    }\n}\nexport default analyticsEvents\n","import * as api from '../api'\nimport { getToken } from '../login/reducers'\nimport {\n  getLotsImages,\n  lastLotCenterLoaded,\n  lastLotProductIdLoaded,\n  isLastLotOutlet\n} from './reducers'\nimport {byProductId} from \"../products/reducers\";\nimport {getLastSelectedProduct} from \"../selected-objects/reducers\";\n\nexport const fetchLot = (centerId, lotId, productId) => (dispatch, getState) => {\n    dispatch({ type: 'EMPTY_LOT_DETAIL' })\n    dispatch({ type: 'FETCH_LOT_REQUEST', centerId, lotId, productId })\n\n    return api.fetchLot(centerId, lotId, productId, getToken(getState())).then(\n        response => {\n            dispatch({ type: 'FETCH_LOT_SUCCESS', response: response.data })\n        },\n        error => {\n            dispatch({ type: 'FETCH_LOT_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\n\nexport const fetchLots = (productId, quarryBlock = null, shade = null, quality = null, location = null, outlet = null, callback = null) => (dispatch, getState) => {\n\n    let centerId = getState().centers.selectedCenter\n    // const product = byProductId(getState(), productId)\n    let product = getLastSelectedProduct(getState())\n    const fromMall = product && product.fromMall\n\n    if (!product) product = byProductId(getState(), productId)\n    if (product) centerId = product.centerId\n\n    if (!fromMall && lastLotCenterLoaded(getState()) == centerId && lastLotProductIdLoaded(getState()) == productId && isLastLotOutlet(getState()) == outlet) {\n        if (callback) callback()\n        return Promise.resolve()\n    }\n    dispatch({ type: 'FETCH_LOTS_REQUEST', productId, centerId, quarryBlock, shade, quality, location, outlet })\n\n\n    return api.fetchLots(productId, centerId, quarryBlock, shade, quality, location, outlet, getToken(getState())).then(\n        response => {\n            let lotIds = []\n            response.data.data.forEach(bundlelot => {\n                bundlelot.lotId ? lotIds.push(bundlelot.lotId) : bundlelot.lots.forEach(lot => lotIds.push(lot.lotId))\n            })\n            dispatch({ type: 'FETCH_LOTS_SUCCESS', response: response.data, productId, centerId, outlet })\n            const fetchImagesResp = dispatch(fetchLotsImages(lotIds))\n            if (callback) {\n                if (fetchImagesResp.then) fetchImagesResp.then(callback)\n                else callback()\n            }\n        },\n        error => {\n            dispatch({ type: 'FETCH_LOTS_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\n\nexport const fetchLotsImages = lotIds => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_LOTS_IMAGES_REQUEST', lotIds })\n    const lotIdsFeched = Object.keys(getLotsImages(getState()))\n    lotIds = lotIds.filter(lot => !lotIdsFeched.includes(lot))\n    if (lotIds.length === 0) return dispatch({ type: 'FETCH_LOTS_IMAGES_SUCCESS', response: {} })\n    return api.fetchLotsImages(lotIds).then(\n        response => {\n            dispatch({ type: 'FETCH_LOTS_IMAGES_SUCCESS', response: response.data })\n        },\n        error => {\n            dispatch({ type: 'FETCH_LOTS_IMAGES_FAILURE' })\n            // api.errorHandler(dispatch, error.response)\n        }\n    )\n}\n","module.exports = __webpack_public_path__ + \"static/media/CTS_V2.a9789f1c.png\";","import React from 'react'\r\nimport { injectIntl, FormattedMessage } from 'react-intl'\r\nimport {\r\n    getUseOptions,\r\n    getHasSegmentationV3,\r\n    getChannelOptionsV3,\r\n    getTypologyOptionsV3,\r\n    getNexusOptions\r\n} from '../../store/segmentation/reducers'\r\nimport { getShippingMethod } from '../../store/centers/reducers'\r\nimport { connect } from 'react-redux'\r\nimport Translation from '../global/Translation'\r\n\r\nconst mapStateToProps = (state, props) => {\r\n    return {\r\n        useOptions: getUseOptions(state),\r\n        shippingMethod: getShippingMethod(state),\r\n        segmentationV3: getHasSegmentationV3(state),\r\n        channelOptionsV3: getChannelOptionsV3(state),\r\n        typologyOptionsV3: getTypologyOptionsV3(state),\r\n        nexusOptions: props.showAllNexus ? state.segmentation.nexusOptions : getNexusOptions(state)\r\n    }\r\n}\r\nclass LineSegmentationV2 extends React.Component {\r\n    constructor(props) {\r\n        super(props)\r\n        this.state = { showHelp: false }\r\n    }\r\n\r\n    render() {\r\n        let { line, useOptions, segmentationV3, channelOptionsV3, typologyOptionsV3 } = this.props\r\n        let productBS, businessSegment, channel, subchannel, salesforce, project, typology, use\r\n\r\n        if (line.segmentation) {\r\n            if (!segmentationV3) {\r\n                productBS = line.businessSegment === null ? 'NOT' : line.businessSegment\r\n                businessSegment = channelOptionsV3 ? channelOptionsV3[productBS] : undefined\r\n                channel = businessSegment ? businessSegment.channels[line.channel] : undefined\r\n                subchannel = channel ? channel.subchannels[line.subchannel] : undefined\r\n                typology = subchannel ? subchannel.typologies[line.typology] : undefined\r\n                use = useOptions ? useOptions.find(option => line.use === option.id) : undefined\r\n            } else {\r\n\r\n                productBS = line.businessSegment === null ? 'NOT' : line.businessSegment\r\n                typology = typologyOptionsV3 ? typologyOptionsV3.find(option => line.typology === option.id) : undefined\r\n                use = useOptions ? useOptions.find(option => line.use === option.id) : undefined\r\n\r\n                if (typeof line.channel === 'string' && line.channel.startsWith('nexus') && this.props.nexusOptions[line.channel]) {\r\n                    salesforce = this.props.nexusOptions[line.channel].salesforceRelations[line.salesforceId]\r\n                    project = salesforce && salesforce.projectOptions[line.projectId]\r\n                    channel = {name:'C·Nexus'}\r\n                } else {\r\n                    const lineChannel = (line.channel === 'A0' && line.segmentation.projectId) ? 'AP' : line.channel\r\n                    channel = channelOptionsV3 ? channelOptionsV3[lineChannel] : undefined\r\n                    salesforce = channel ? channel.salesforceRelations[line.segmentation.salesforceId] : undefined\r\n                    project = salesforce && line.segmentation.projectId ? salesforce.projectOptions[line.segmentation.projectId] : undefined\r\n                }\r\n            }\r\n        }\r\n        let businessSegmentTXT = '', channelTXT = '', subchannelTXT = '', typologyTXT = '', salesforceIdTXT = '', projectIdTXT = '', useTXT = '', TXT\r\n        if (line.segmentation.businessSegment) {\r\n            businessSegmentTXT = `${this.props.intl.formatMessage({id: productBS})}`\r\n        }\r\n        if (channel) {\r\n            channelTXT = `${channel.name[0].toUpperCase()}${channel.name.substring(1).toLowerCase()}`\r\n        }\r\n        TXT = `${channelTXT}/${businessSegmentTXT} `\r\n\r\n        const hasValue = Object.values(line.segmentation).some(value => {\r\n            if (Array.isArray(value)) return value.length > 0\r\n            else return value !== null\r\n        })\r\n\r\n        if (hasValue) {\r\n            if (this.props.showAsList) {\r\n                const listValues = [];\r\n\r\n                if (businessSegmentTXT) listValues.push(businessSegmentTXT)\r\n                if (channel) listValues.push(channel.name)\r\n                if (subchannel) listValues.push(subchannel.name)\r\n                if (typology) listValues.push(typology.name)\r\n                if (salesforce) listValues.push(salesforce.name)\r\n                if (project && project.projectName) listValues.push(project.projectName)\r\n                if (use) listValues.push(use.name)\r\n\r\n                const list = listValues.join(' / ')\r\n\r\n                return (\r\n                    <React.Fragment>\r\n                        {list}\r\n                    </React.Fragment>\r\n                )\r\n            } else return (\r\n                <React.Fragment>\r\n                    <div>\r\n                        <span className='segmentation-title'>\r\n                            <span className=\"segmentation-title--title\">\r\n                                <Translation id=\"segmentation\" defaultMessage=\"Segmentation\" />\r\n                            </span>:&nbsp;{TXT}\r\n                        </span>\r\n                        <span className='segmentation-link' onClick={() => this.props.editSegmentation()}><Translation id=\"edit\" defaultMessage=\"Edit\" /></span>\r\n                    </div>\r\n                    <div className=\"segmentation\">\r\n                        <div className={`info ${!this.state.showHelp ? 'info--hidden' : ''}`}>\r\n                            {line.segmentation.businessSegment && (\r\n                                <span>\r\n                                    <strong>\r\n                                        <FormattedMessage id=\"business_segment\" defaultMessage=\"business_segment\" />\r\n                                        :&nbsp;\r\n                                    </strong>\r\n                                    {line.segmentation.businessSegment && <FormattedMessage id={productBS} />}\r\n                                </span>\r\n                            )}\r\n                            {channel && (\r\n                                <span>\r\n                                    <strong>\r\n                                        <FormattedMessage id=\"channel\" defaultMessage=\"channel\" />\r\n                                        :&nbsp;\r\n                                    </strong>\r\n                                    {channel.name}\r\n                                </span>\r\n                            )}\r\n                            {subchannel && (\r\n                                <span>\r\n                                    <strong>\r\n                                        <FormattedMessage id=\"subchannel\" defaultMessage=\"subchannel\" />\r\n                                        :&nbsp;\r\n                                    </strong>\r\n                                    {subchannel && subchannel.name}\r\n                                </span>\r\n                            )}\r\n\r\n                            {typology && (\r\n                                <span>\r\n                                    <strong>\r\n                                        <FormattedMessage id=\"typology\" defaultMessage=\"Typology\" />\r\n                                        :&nbsp;\r\n                                    </strong>\r\n                                    {typology.name}\r\n                                </span>\r\n                            )}\r\n                            {salesforce && (\r\n                                <span>\r\n                                    <strong>\r\n                                        <FormattedMessage id=\"salesforceId\" defaultMessage=\"Salesforce Id\" />\r\n                                        :&nbsp;\r\n                                    </strong>\r\n                                    {salesforce.name}\r\n                                </span>\r\n                            )}\r\n                            {project && (\r\n                                <span>\r\n                                    <strong>\r\n                                        <FormattedMessage id=\"projectId\" defaultMessage=\"Project Id\" />\r\n                                        :&nbsp;\r\n                                    </strong>\r\n                                    {project.projectName}\r\n                                </span>\r\n                            )}\r\n                            {use && (\r\n                                <span>\r\n                                    <strong>\r\n                                        <FormattedMessage id=\"use\" defaultMessage=\"Use\" />\r\n                                        :&nbsp;\r\n                                    </strong>\r\n                                    {use.name}\r\n                                </span>\r\n                            )}\r\n                        </div>\r\n                    </div>\r\n                </React.Fragment>\r\n            )\r\n        }\r\n    }\r\n}\r\n\r\nexport default injectIntl(\r\n    connect(\r\n        mapStateToProps,\r\n        null\r\n    )(LineSegmentationV2)\r\n)\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABqCAIAAAAwdOjDAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAA6hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOC0wMS0xMlQxMjowMTo0MDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAzLjc8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzI8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTA1PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+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\"","module.exports = __webpack_public_path__ + \"static/media/wide.5f254b89.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.b71e1cc3.jpg\";","import React from \"react\"\nimport Translation from \"../global/Translation\"\n\n/** @type {object} */\nexport const rejectionCodeMap = {\n    '400': <Translation id=\"400_rejection_code\" defaultMessage=\"Good discontinued\" />,\n    '401': <Translation id=\"401_rejection_code\" defaultMessage=\"Bad thickness\" />,\n    '402': <Translation id=\"402_rejection_code\" defaultMessage=\"Fissure\" />,\n    '403': <Translation id=\"403_rejection_code\" defaultMessage=\"Holes / pores\" />,\n    '404': <Translation id=\"404_rejection_code\" defaultMessage=\"Oxide\" />,\n    '405': <Translation id=\"405_rejection_code\" defaultMessage=\"Excess resin\" />,\n    '406': <Translation id=\"406_rejection_code\" defaultMessage=\"Grated\" />,\n    '407': <Translation id=\"407_rejection_code\" defaultMessage=\"Bad shade / stains\" />,\n    '408': <Translation id=\"408_rejection_code\" defaultMessage=\"Half board (leftover)\" />,\n}\n\n/**\n * Get the rejection code of each bundle.\n * @param {object} lot \n * @param {array} bundlesRejectionCodes \n * @returns {(string|null)} rejectionCode\n */\nexport const getBundleRejectionCode = (lot, bundlesRejectionCodes) => {\n    let rejectionCode = null\n    if (lot && lot.bundleId && bundlesRejectionCodes && bundlesRejectionCodes.length > 0) {\n        rejectionCode = bundlesRejectionCodes.filter((bundle) => bundle.bundleId === lot.bundleId)\n        return rejectionCode[0].rejectionCode\n    }\n    return rejectionCode\n}","module.exports = __webpack_public_path__ + \"static/media/no-image.1e6cef7b.svg\";","module.exports = __webpack_public_path__ + \"static/media/ecosentino.fe46b6cc.svg\";","module.exports = __webpack_public_path__ + \"static/media/Outlet_V2.96ccbd59.png\";","import brochureSensa from '../assets/img/lowes/brochureSensa.jpg'\nimport brochureSilestone from '../assets/img/lowes/brochureSilestone.jpg'\n\n//lowes\nexport const productsLowes2 = [\n    {\n        productId: '223252',\n        name: 'ALPINA WHITE 08',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/6B/detalle/6B-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/6B/detalle/6B-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'codigo1'\n    },\n    {\n        productId: '231004',\n        name: 'ALTAIR15',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/VA1/detalle/VA1-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/VA1/detalle/VA1-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'F255187'\n    },\n    {\n        productId: '231990',\n        name: 'ARIEL',\n        thumb: 'https://assetscolors.cosentino.com/get/sap-ARI/1/slab.jpg?w=100&h=100&fit=crop&auto=compress,format',\n        img: 'https://assetscolors.cosentino.com/get/sap-ARI/1/slab.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '258644',\n        name: 'BLANCO CITY',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/9Y/detalle/9Y-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/9Y/detalle/9Y-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,75X0,7',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '228682',\n        name: 'MAPLE14',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/M14/detalle/M14-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/M14/detalle/M14-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '232555',\n        name: 'BLANCO ORION',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/BON/detalle/BON-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/BON/detalle/BON-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    // {\n    //   \"productId\": \"231062\",\n    //   \"name\": \"NO TIENE\",\n    //   \"thumb\": \"https://assetstools.cosentino.com/api/v1/bynder/product/nocolor/colorsil/colorsil.jpg?trim=color&w=140&h=140&auto=compress\",\n    //   \"img\": \"https://assetstools.cosentino.com/api/v1/bynder/product/nocolor/colorsil/colorsil.jpg?trim=color&w=500&h=300&auto=compress\",\n    //   \"brand\": \"SILESTONE\",\n    //   \"format\": \"NOTIENE\"\n    // , },\n    {\n        productId: '230844',\n        name: 'CORAL CLAY',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/BCR/detalle/BCR-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/BCR/detalle/BCR-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '230447',\n        name: 'GREY EXPO',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/GE/detalle/GE-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/GE/detalle/GE-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '223290',\n        name: 'LAGOON',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/VLN/detalle/VLN-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/VLN/detalle/VLN-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '228686',\n        name: 'LUNA14 JUM',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/LU1/detalle/LU1-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/LU1/detalle/LU1-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'ECO',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '231063',\n        name: 'LUSSO',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/LSS/detalle/LSS-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/LSS/detalle/LSS-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    // {\n    //   \"productId\": \"223277\",\n    //   \"name\": \"LYRA\",\n    //   \"thumb\": \"https://assetstools.cosentino.com/api/v1/bynder/product/VLM/integrity-due-l/integrity-due-l.jpg?trim=color&w=140&h=140&auto=compress\",\n    //   \"img\": \"https://assetstools.cosentino.com/api/v1/bynder/product/VLM/integrity-due-l/integrity-due-l.jpg?trim=color&w=500&h=300&auto=compress\",\n    //   \"brand\": \"SILESTONE\",\n    //   \"format\": \"9,8X4,7X0,3\"\n    // , },\n    {\n        productId: '229556',\n        name: 'MOUNTAIN MIST 12',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/MOM/detalle/MOM-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/MOM/detalle/MOM-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '234965',\n        name: 'ROYAL REEF',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/SL3/detalle/SL3-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/SL3/detalle/SL3-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '229553',\n        name: 'SIENNA RIDGE 12',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/MOS/detalle/MOS-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/MOS/detalle/MOS-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '223246',\n        name: 'STELLAR NIGHT',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/ES/detalle/ES-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/ES/detalle/ES-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '229559',\n        name: 'STELLAR BLANCO13',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/BS4/detalle/BS4-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/BS4/detalle/BS4-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    // {\n    //   \"productId\": \"224658\",\n    //   \"name\": \"VORTIUM\",\n    //   \"thumb\": \"https://assetstools.cosentino.com/api/v1/bynder/product/SMV/integrity-due-l/integrity-due-l.jpg?trim=color&w=140&h=140&auto=compress\",\n    //   \"img\": \"https://assetstools.cosentino.com/api/v1/bynder/product/SMV/integrity-due-l/integrity-due-l.jpg?trim=color&w=500&h=300&auto=compress\",\n    //   \"brand\": \"SILESTONE\",\n    //   \"format\": \"9,8X4,7X0,3\"\n    // , },\n    {\n        productId: '226380',\n        name: 'WHITE DIAMOND',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/E7/detalle/E7-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/E7/detalle/E7-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'ECO',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    {\n        productId: '212986',\n        name: 'WHITE ZEUS Z',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/BZ/detalle/BZ-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/BZ/detalle/BZ-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3',\n        lowesCode: 'tarariquetevi'\n    },\n    //Estos van  ser bornichures\n    // {\n    //     productId: '230711',\n    //     name: 'CYGNUS15',\n    //     thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/VC5/detalle/VC5-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n    //     img: 'https://assetstools.cosentino.com/api/v1/bynder/color/VC5/detalle/VC5-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n    //     brand: 'SILESTONE',\n    //     format: '9,8X4,7X0,3'\n    // },\n    // {\n    //     productId: '226941',\n    //     name: 'FOREST SNOW',\n    //     thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/EFS/detalle/EFS-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n    //     img: 'https://assetstools.cosentino.com/api/v1/bynder/color/EFS/detalle/EFS-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n    //     brand: 'ECO',\n    //     format: '9,8X4,7X0,3'\n    // },\n    {\n        productId: '223263',\n        name: 'TIGRIS SAND',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/6T/detalle/6T-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/6T/detalle/6T-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3'\n    },\n    {\n        productId: '228683',\n        name: 'WHITE STORM14',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/WS1/detalle/WS1-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/WS1/detalle/WS1-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        brand: 'SILESTONE',\n        format: '9,8X4,7X0,3'\n    }\n]\n\nexport const brochuresLowes = [\n    {\n        productId: '907218',\n        name: 'Brochure Sensa',\n        thumb: brochureSensa,\n        img: brochureSensa,\n        brand: 'Sensa'\n    },\n    {\n        productId: '905252',\n        name: 'Brochure Silestone',\n        thumb: brochureSilestone,\n        img: brochureSilestone,\n        brand: 'Silestone'\n    }\n]\n\n//cutToSize\nexport const furnituresCutToSize = [\n    {\n        name: 'furniture 1 (con color)',\n        id: 'id1',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        furniture: {\n            color: {\n                label: 'IROK',\n                value: 'DOK',\n                thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n                img: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n                product: {\n                    id: 'DOK',\n                    name: 'IROK',\n                    format: '320X144',\n                    subtypeId: 'ESTANDAR',\n                    img: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n                    imgFull: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-detail.jpg?fit=crop&auto=compress,format',\n                    thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n                    thumbMd: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=220&h=160&fit=crop&auto=compress,format',\n                    thumbMdPreview: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=22&h=16&fit=crop&auto=compress,format',\n                    finish: ['GC2', 'MAL', 'AND'],\n                    thickness: ['0.8', '1.2', '2.0']\n                }\n            },\n            width: 100,\n            height: 100,\n            thickness: '2.0',\n            finish: 'MAL'\n        }\n    },\n    {\n        name: 'furniture 2 (sin color)',\n        id: 'id2',\n        thumb: '',\n        img: '',\n        furniture: {\n            color: null,\n            width: 150,\n            height: 100,\n            thickness: '2.0',\n            finish: 'MAL'\n        }\n    },\n    {\n        name: 'furniture 3 (incompleto)',\n        id: 'id3',\n        thumb: '',\n        img: '',\n        furniture: {\n            color: null,\n            width: 500,\n            // height: 100,\n            thickness: '2.0',\n            finish: 'AND'\n        }\n    }\n]\nexport const samplesCutToSize = [\n    {\n        name: 'ejemplo 1 (con color)',\n        id: 'id1',\n        thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n        img: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n        sample: {\n            color: {\n                label: 'IROK',\n                value: 'DOK',\n                thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n                img: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n                product: {\n                    id: 'DOK',\n                    name: 'IROK',\n                    format: '320X144',\n                    subtypeId: 'ESTANDAR',\n                    img: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-detail.jpg?w=500&h=300&fit=crop&auto=compress,format',\n                    imgFull: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-detail.jpg?fit=crop&auto=compress,format',\n                    thumb: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=140&h=140&fit=crop&auto=compress,format',\n                    thumbMd: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=220&h=160&fit=crop&auto=compress,format',\n                    thumbMdPreview: 'https://assetstools.cosentino.com/api/v1/bynder/color/DOK/detalle/DOK-thumb.jpg?w=22&h=16&fit=crop&auto=compress,format',\n                    finish: ['GC2', 'MAL', 'AND'],\n                    thickness: ['0.8', '1.2', '2.0']\n                }\n            },\n            width: 100,\n            height: 100,\n            thickness: '2.0',\n            finish: 'GC2'\n        }\n    },\n    {\n        name: 'ejemplo2 (sin color)',\n        id: 'id2',\n        thumb: '',\n        img: '',\n        sample: {\n            color: null,\n            width: 150,\n            height: 100,\n            thickness: '2.0',\n            finish: 'MAL'\n        }\n    },\n    {\n        name: 'ejemplo3 (incompleto)',\n        id: 'id3',\n        thumb: '',\n        img: '',\n        sample: {\n            color: null,\n            width: 500,\n            // height: 100,\n            thickness: '2.0',\n            finish: 'AND'\n        }\n    }\n]\n\n//mktools\nexport const productWithOptionsByMktools = ['906543', '907369', '907635']\nexport const listBrandsMktoolsAttr = ['SILESTONE', 'DEKTON', 'PREXURY', 'SCALEA', 'SENSA', 'EARTHIC', 'SILESTONEXM']\nexport const listBrandsMktoolsAttrWithXeron = listBrandsMktoolsAttr.concat(['XERON'])\nexport const colorsMktoolsAttr2 = {\n    SILESTONE: ['Color Silestone'],\n    DEKTON: ['Color Dekton'],\n    PREXURY: ['Color Prexury'],\n    SCALEA: ['Color Scalea'],\n    SENSA: ['Color Sensa']\n}\nexport const colorsMktoolsAttr = {\n    SENSA: [\n        'Abyss',\n        'Amarillo Santa Cecilia',\n        'Amazonas',\n        'Amelia Ridge',\n        'Amelia Ridge',\n        'Avalanche',\n        'Baltic Brown',\n        'Baltica Cream',\n        'Beige Butterfly',\n        'Beige Ipanema',\n        'Bianco Antico',\n        'Black beauty',\n        'Black Galaxy',\n        'Blanco Gabrielle',\n        'Blanco Leblon',\n        'Blat',\n        'Blue Pearl',\n        'Boira',\n        'Brown Persa',\n        'Caledonia',\n        'Caroline Summer',\n        'Colonial white',\n        'Cosmic Grey',\n        'Cosmos Brown',\n        'Crema Pearl',\n        'Crescent Veil',\n        'Crisol',\n        'Dakota Mahagony',\n        'Dawn Mist',\n        'Delicatus Ice',\n        'El Dorado',\n        'Emerald Pearl',\n        'Floresta Green',\n        'Gabon',\n        'Giallio Latina',\n        'Giallo Latina',\n        'Giallo Ornamental',\n        'Giallo Vicenza',\n        'Glacial Blue',\n        'Golden King',\n        'Graphite Grey',\n        'Highland Frost',\n        'Iberian Sunset',\n        'Ice Blue',\n        'Indian Black',\n        'Jatoba Red',\n        'Juparana Cathedral',\n        'Juparana Fantasy',\n        'Key West Gold',\n        'Lapidus',\n        'Latina',\n        'Luna Pearl',\n        'Madison Spring',\n        'Majestic White',\n        'Manglar',\n        'Maroon Bay',\n        'Moak black',\n        'Namib',\n        'New Smoke',\n        'New Zealand',\n        'Nilo',\n        'Orinoco',\n        'Outono',\n        'Red Terrain',\n        'San Benedito',\n        'Sant Angelo',\n        'Santa Cecilia',\n        'Savannah',\n        'Silver Silk',\n        'Star Beach',\n        'Star Galaxy',\n        'Tahoe',\n        'Taj Mahal',\n        'Tanami',\n        'Tangier',\n        'Tea',\n        'Thailand',\n        'Thailand',\n        'Tropical Brown',\n        'Tuscany Brown',\n        'Tuscany',\n        'Ubatuba',\n        'Vena Oro',\n        'Verde Aquarius',\n        'Verde Butterfly',\n        'Waterfall',\n        'White Macaubas'\n    ],\n    SCALEA: [\n        'Absolute Cream',\n        'Alaskan',\n        'Amarillo Indalo',\n        'Amarillo Ornametal',\n        'Amazonix',\n        'Antique White',\n        'Arabescato',\n        'Athiri White',\n        'Avalanche Marble',\n        'Azul Bahia',\n        'Azul Celeste',\n        'Azul Macauba ',\n        'Bamboo',\n        'Bambu ',\n        'Beige Butterfly',\n        'Beige Ipanema',\n        'Black Beauty ',\n        'Black Marinace',\n        'Black Pearl',\n        'Black Sky',\n        'Blanco Acropolis',\n        'Blanco Alaskan',\n        'Blanco Cachoeiro',\n        'Blanco Cintilante',\n        'Blanco Classico',\n        'Blanco Cristal',\n        'Blanco Desiree',\n        'Blanco Iberico',\n        'Blanco Macael',\n        'Blanco Romano',\n        'Blanco Tranco',\n        'Blanquino',\n        'Blue Flower',\n        'Bordeaux',\n        'Bordeaux River',\n        'Cafe Emperador',\n        'Calacatta ',\n        'Caliza Alba',\n        'Caliza Blanca',\n        'Caliza Capri',\n        'Caliza Sahel',\n        'Capuccino',\n        'Caramelo br',\n        'Carioca Gold',\n        'Chateau Blanc',\n        'Coffe Brown',\n        'Copacabana',\n        'Copenhagen',\n        'Copper Sunset',\n        'Cosmic Black',\n        'Cosmic Brown',\n        'Crema Bordeaux',\n        'Crema Julia',\n        'Crema Marfil',\n        'Crema-Bordeaux-New',\n        'Crystalo',\n        'Daino Reale',\n        'Dark Emperador',\n        'Delicatus',\n        'Denia Cream',\n        'El Gran Dorado',\n        'Emerald Quartzite',\n        'Estatuario ',\n        'Everest',\n        'Everest Marble',\n        'Exodus White',\n        'Four Seasons',\n        'Fusion',\n        'Giallo Antico',\n        'Giallo Fiorito',\n        'Giallo Santa Cruz',\n        'Gold Bariloche',\n        'Gold Macaubas',\n        'Golden Beach',\n        'Golden Fantasy',\n        'Golden Marinace',\n        'Golden Rustic',\n        'Golden Thunder',\n        'Gran Perla',\n        'Gran Valle',\n        'Granada Hill',\n        'Green Emerald',\n        'Gris Adria',\n        'Gris Azulado Rústicas',\n        'Gris Macael',\n        'Gris Monaco',\n        'Gris Pulpis',\n        'Gris Viola',\n        'Grisal',\n        'Iberian White',\n        'Icy Mist',\n        'Indian Impala',\n        'Javea Cream',\n        'Juaparama Gold',\n        'Juparana Colombo',\n        'Juparana Dream',\n        'Kozmus',\n        'Labrador Claro',\n        'Lapidus Gold',\n        'Madura Gold',\n        'Magma Gold',\n        'Magnetic Blue',\n        'Maracuya',\n        'Maroon Bay',\n        'Marpa Rusticas',\n        'Marron Cohiba',\n        'Marron Emperador',\n        'Marron Tabaco',\n        'Marron Tupi',\n        'Mascarello',\n        'Matrix',\n        'Moleanos',\n        'Montana',\n        'Multicolor Rojo',\n        'Negro Cosmos',\n        'Negro Eclipse',\n        'Negro Estrella',\n        'Negro Marquina',\n        'Negro Sudafrica',\n        'Negro Zimbawe',\n        'New Gris Viola',\n        'New Venetian Gold',\n        'Onix Blanco ',\n        'Orinoco',\n        'Ornamental',\n        'Ornametal Light',\n        'Oro Brasil',\n        'Oro Brazil',\n        'Oyster',\n        'Paradiso Bash',\n        'Parga',\n        'Peacock Green',\n        'Perlado',\n        'Persa',\n        'Pink Sand Exoticas',\n        'Pinta Verde',\n        'Pizarra Gris',\n        'Pizarra Verde',\n        'Portofino',\n        'Prahada Gold',\n        'Preto Rio Preto',\n        'Red Dragon',\n        'Red Hollywood',\n        'Rhodium',\n        'Rojo Alicante',\n        'Rojo Barón Exóticas',\n        'Rojo Cehejin',\n        'Rojo Hollywood Exóticas',\n        'Romanix',\n        'Rosa Porriño',\n        'Rosa Portugues',\n        'Ruby Fusion',\n        'San Gabriel',\n        'San Vicente',\n        'Santa Cecilia light',\n        'Santa Helena',\n        'Serpeggiante',\n        'Shangrila',\n        'Shivakashi',\n        'Sienna Bodeaux',\n        'Soapstone',\n        'Soapstone Barroca',\n        'Soapstone Fantasy',\n        'Soapstone Julia',\n        'Soapstone Smoke',\n        'Spring Breeze',\n        'Star Galaxy',\n        'Star White',\n        'Steel Grey',\n        'Sunflower',\n        'Super White',\n        'Taj White',\n        'Tan Brown',\n        'Taupe',\n        'Travertino Abassi',\n        'Travertino Nazarí',\n        'Travertino Oro',\n        'Travertino Rania',\n        'Travertino Rojo',\n        'Travertino Romano',\n        'Tropical Fashion',\n        'Typhoon Bordeaux',\n        'Venato Carrara',\n        'Verde Bamboo Exóticas',\n        'Verde Esmeralda Exóticas',\n        'Verde Guaco',\n        'Verde Plata Rústicas',\n        'Via Lattea',\n        'Victoria Dream',\n        'Viena White',\n        'Viscount White',\n        'Vogue',\n        'White Bariloche',\n        'White Ice',\n        'White Macaubas',\n        'White Splendor',\n        'Wild Sea',\n        'Yellow Rive'\n    ],\n    PREXURY: [\n        'Amethyst',\n        'Angel Jasper',\n        'Classic Quartz',\n        'Labradorite',\n        'Petrified Wood',\n        'Red Jasper',\n        'Retro Petrified Wood',\n        'Retro Tiger Iron',\n        'Rose Quartz',\n        'Smoky Quartz',\n        'Wild Agate'\n    ],\n    DEKTON: [\n        'Aldem',\n        'Ananke',\n        'Arga',\n        'Aura 15',\n        'Aura',\n        'Baltic',\n        'Bento',\n        'Bergen',\n        'Blanc Concrete',\n        'Blaze',\n        'Borea',\n        'Bromo',\n        'Danae',\n        'Domoos',\n        'Edora',\n        'Entzo',\n        'Feroe',\n        'Fiord',\n        'Fossil',\n        'Gada',\n        'Galema',\n        'Glacier',\n        'Halo',\n        'Irok',\n        'Kadum',\n        'Kairos',\n        'Kelya',\n        'Keon',\n        'Keranium',\n        'Kira Grey',\n        'Kira',\n        'Korso',\n        'Korus',\n        'Kreta',\n        'Laos',\n        'Lumina',\n        'Lunar',\n        'Makai',\n        'Manhattan',\n        'Milar',\n        'Natura',\n        'Nayla',\n        'Nilium',\n        'Olimpo',\n        'Opera',\n        'Orix',\n        'Portum',\n        'Qatar',\n        'Radium',\n        'Sarey',\n        'Sirius',\n        'Sirocco',\n        'Sogne',\n        'Soke',\n        'Spectra',\n        'Splendor',\n        'Sterling',\n        'Strato',\n        'Taga',\n        'Trilium',\n        'Tundra',\n        'Valterra',\n        'Vegha',\n        'Ventus',\n        'Vera',\n        'Vienna',\n        'Zenith'\n    ],\n    SILESTONE: [\n        'Absolute Green',\n        'Acqua Fraccaroli',\n        'African Red',\n        'Albedo',\n        'Alpina White',\n        'Altair',\n        'Aluminio Nube',\n        'Amarillo Arena',\n        'Amarillo Dream',\n        'Amarillo Gea',\n        'Amarillo Monsul',\n        'Amarillo Palmira',\n        'Antique Gold',\n        'Aquatint',\n        'Arctic',\n        'Arden Blue',\n        'Ariel',\n        'Atlantis',\n        'Azul Enjoy',\n        'Azul Ugarit',\n        'Bamboo',\n        'Beige Daphne',\n        'Bering',\n        'Bianco Calacatta',\n        'Bianco Rivers',\n        'Black Canyon',\n        'Blanco Capri',\n        'Blanco City',\n        'Blanco Dune',\n        'Blanco Maple',\n        'Blanco Matrix',\n        'Blanco Norte',\n        'Blanco Orion',\n        'Blanco Stellar',\n        'Blanco Zeus Extreme',\n        'Brazilian Brown',\n        'Brooklyn',\n        'Brooklyn',\n        'Calypso',\n        'Caramel Rhine',\n        'Carbono',\n        'Cemento Spa',\n        'Charcoal Soapstone',\n        'Chrome',\n        'Classic White',\n        'Copper Mist',\n        'Coral Clay',\n        'Cream Stone',\n        'Crema Minerva',\n        'Crema Stellar',\n        'Crema Urban',\n        'Cygnus',\n        'Daria',\n        'Desert Silver',\n        'Diana Pearl',\n        'Dinux',\n        'Doradus',\n        'Dreis',\n        'E. Bianco Calacatta',\n        'E. Calacatta Classic',\n        'E. Calacatta Gold',\n        'E. Desert Silver',\n        'E. Emperador',\n        'E. Emperador',\n        'E. Marfil',\n        'E. Marfil',\n        'E. Marquina',\n        'E. Noir',\n        'E. Serena',\n        'E. Statuario',\n        'Ebony Pearl',\n        'Eros Stellar',\n        'Forest Snow',\n        'Gedatsu',\n        'Giallo Nova',\n        'Giallo Quarry',\n        'Grey Moss',\n        'Gris Amazon',\n        'Gris Expo',\n        'Haiku',\n        'Halley',\n        'Helix',\n        'Hudson',\n        'Iconic Black',\n        'Iconic White',\n        'Iron Bark',\n        'Iron Ore',\n        'Istmo',\n        'Ivory Coast',\n        'Kensho',\n        'Kimbler Mist',\n        'Kimbler',\n        'Koan',\n        'Kona Beige',\n        'Lagoon',\n        'Luna',\n        'Lusso',\n        'Lyra',\n        'Magenta Energy',\n        'Mahogany',\n        'Maple Orna',\n        'Marengo',\n        'Marina Stellar',\n        'Marrón Júpiter',\n        'Mediterranean',\n        'Merope',\n        'Miami White 17',\n        'Montblanc',\n        'Moonstone',\n        'Mountain Mist',\n        'Naranja Cool',\n        'Negro Anubis',\n        'Negro Stellar',\n        'Negro Tao',\n        'Negro Tebas',\n        'Niebla',\n        'Night Mist',\n        'Nile',\n        'Noka',\n        'Nuit Bleue',\n        'Nymbus',\n        'Ocean Jasper',\n        'Ocean Storm',\n        'Olive Green',\n        'Olivia',\n        'Orange Fuego',\n        'Pacific',\n        'Pearl Jasmine',\n        'Phoenix',\n        'Pietra',\n        'Polar Cap',\n        'Pulsar',\n        'Quasar',\n        'Rain Forest',\n        'Red Pine',\n        'Riverbed',\n        'Rojo Eros',\n        'Rojo Vital',\n        'Rosa Grey',\n        'Rosso Monza',\n        'Rougui',\n        'Royal Reef',\n        'Santa Fe Brown',\n        'Satori',\n        'Seleno',\n        'Sienna Ridge',\n        'Sierra Madre',\n        'Silken Pearl',\n        'Silver Lake',\n        'Siridium',\n        'Snowy Ibiza',\n        'Sonora Gold',\n        'Starlight',\n        'Steel',\n        'Stellar Grey',\n        'Stellar Rose',\n        'Stellar Sun',\n        'Terra',\n        'Tigris Sand',\n        'Toffee',\n        'Tritium',\n        'Unsui',\n        'Urban Frost',\n        'Verde Fun',\n        'Verde Ugarit',\n        'Vortium',\n        'White Arabesque',\n        'White Diamond',\n        'White Platinum',\n        'White Storm',\n        'Yukon',\n        'Zirconium',\n        'Zirix',\n        'Zynite'\n    ]\n}\n","import Translation from \"../global/Translation\";\nimport React from \"react\";\nimport {injectIntl} from \"react-intl\";\n\nclass IntegerInputNumber extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            value: props.valueDefault ? props.valueDefault : props.min,\n            min: props.min ? props.min : 0,\n            max: props.max ? props.max : 999\n        }\n    }\n\n    componentDidMount() {\n        this.setState({\n            value: this.props.valueDefault ? this.props.valueDefault : this.props.min,\n            min: this.props.min ? this.props.min : 0,\n            max: this.props.max ? this.props.max : 999\n        });\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if(this.props.max !== prevProps.max || this.props.min !== prevProps.min){\n            this.setState({\n                ...this.state,\n                min: this.props.min ? this.props.min : 0,\n                max: this.props.max ? this.props.max : 999\n            })\n        }\n    }\n\n    upNumber = () => {\n        if(!this.isDisabled() && this.state.value < this.state.max){\n            let value = this.state.value\n            if (value === '') value = this.state.min\n            else value += 1\n            this.setState({value})\n            if (typeof this.props.onChangeValue === \"function\") this.props.onChangeValue(value)\n        }\n    }\n\n    downNumber = () => {\n        if(!this.isDisabled() && this.state.value > this.state.min){\n            let value = this.state.value\n            if (value === '') value = this.state.min\n            else value -= 1\n            this.setState({value})\n            if (typeof this.props.onChangeValue === \"function\") this.props.onChangeValue(value)\n        }\n    }\n\n    handleChangeValue = (e) => {\n        let value = e.target.value === '' ? '' : parseInt(e.target.value)\n        if (value === '') {\n            this.setState({value:''})\n            if (typeof this.props.onChangeValue === \"function\") this.props.onChangeValue(this.props.min)\n        } else if(!isNaN(value)) {\n            value = Math.max(this.state.min, value)\n            value = Math.min(this.state.max, value)\n            this.setState({value})\n            if (typeof this.props.onChangeValue === \"function\") this.props.onChangeValue(value)\n        }\n    }\n\n    handleBlur = () => {\n        let value = this.state.value\n        if (value === '') this.setState({value: this.state.min })\n    }\n\n    isDisabled = () => this.props.disabled ? true : (this.state.max <= this.state.min)\n\n    render(){\n        const disabled = this.isDisabled()\n\n        return (\n            <div className=\"integer__input__number__container\">\n            <div className=\"integer__input__number\">\n                <div className=\"integer__input__number--down\">\n                    <button \n                        onClick={() => this.downNumber()}\n                        disabled={disabled}\n                    >\n                        <i className=\"far fa-minus\" />\n                    </button>\n                </div>\n                <div className=\"integer__input__number--number\">\n                    <input\n                        maxLength=\"3\"\n                        value={this.state.value}\n                        onChange={this.handleChangeValue}\n                        onBlur={this.handleBlur}\n                        disabled={disabled}\n                    />\n                </div>\n                <div className=\"integer__input__number--up\">\n                    <button \n                        onClick={() => this.upNumber()}\n                        disabled={disabled}\n                    >\n                        <i className=\"far fa-plus\" />\n                    </button>\n                </div>\n\n                {this.props.max && (\n                    <div className=\"integer__input__number--max\">\n                        <span>\n                            <Translation id=\"of\" defaultMessage=\"of\" /> {this.props.max}\n                        </span>\n                    </div>\n                )}\n            </div>\n        </div>\n        )\n    }\n}\nexport default injectIntl(IntegerInputNumber)","module.exports = __webpack_public_path__ + \"static/media/wide.e99bfef6.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.2a955b62.jpg\";","module.exports = __webpack_public_path__ + \"static/media/chevron-down.10706aee.svg\";","module.exports = __webpack_public_path__ + \"static/media/logoutv2.9428a524.svg\";","const initState = {\n    advertisements: null,\n    showAdvertisements: false\n}\nconst advertisements = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_ADVERTISEMENTS_SUCCESS':\n            return Object.assign({}, state, { advertisements: action.advertisements, showAdvertisements: action.advertisements !== null })\n\n        case 'REMOVE_ADVERTISEMENTS':\n                return Object.assign({}, state, { advertisements: null, showAdvertisements: false})\n\n        case 'HIDE_ADVERTISEMENTS':\n            return Object.assign({}, state, { showAdvertisements: false})\n        \n        default:\n            return state\n    }\n}\n\nexport const getAdvertisements = state => {\n    return state.advertisements.advertisements\n}\n\nexport const showAdvertisements = state => {\n    return state.advertisements.showAdvertisements\n}\n\nexport default advertisements","import * as api from '../api'\n\nexport const fetchReservations = unassigned => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_RESERVATIONS_REQUEST',\n        unassigned,\n        token\n    })\n\n    return api\n        .fetchReservations(token, unassigned)\n\n        .then(\n            response => {\n                dispatch({ type: 'FETCH_RESERVATIONS_SUCCESS', reservations: response.data })\n                if (unassigned) dispatch({ type: 'FETCH_RESERVATIONS_UNASSIGNED_COUNT', reservations: response.data })\n            },\n            error => {\n                dispatch({ type: 'FETCH_RESERVATIONS_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const fetchCustomers = () => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_CUSTOMERS_REQUEST',\n        token\n    })\n\n    return api\n        .fetchCustomers(token)\n\n        .then(\n            response => {\n                dispatch({ type: 'FETCH_CUSTOMERS_SUCCESS', customers: response.data })\n            },\n            error => {\n                dispatch({ type: 'FETCH_CUSTOMERS_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const rejectReservation = reservationId => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({ type: 'REJECT_RESERVATION_REQUEST', token, reservationId })\n\n    return api.rejectReservation(token, reservationId).then(\n        response => {\n            dispatch({ type: 'REJECT_RESERVATION_SUCCESS', customers: response.data })\n            dispatch(fetchReservations('unassigned'))\n        },\n        error => {\n            dispatch({ type: 'REJECT_RESERVATION_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\n\nexport const assignCustomer = (shippingAddressId, reservationId, date, po, comments) => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({ type: 'ASSIGN_RESERVATION_REQUEST', token, shippingAddressId, reservationId })\n\n    return api.assignCustomer(token, shippingAddressId, reservationId, date, po, comments).then(\n        response => {\n            dispatch({ type: 'ASSIGN_RESERVATION_SUCCESS', customers: response.data })\n            dispatch(fetchReservations('unassigned'))\n        },\n        error => {\n            dispatch({ type: 'ASSIGN_RESERVATION_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\n","module.exports = __webpack_public_path__ + \"static/media/Tablas_V2.f33b2240.png\";","module.exports = __webpack_public_path__ + \"static/media/triangle.ec138331.svg\";","module.exports = __webpack_public_path__ + \"static/media/cart-thin.0c91880a.svg\";","module.exports = __webpack_public_path__ + \"static/media/caution.c61bcdb6.svg\";","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport Spinner from '../global/Spinner'\nimport Alerts from '../alerts/Alerts'\nimport ChannelV4 from './ChannelV4'\nimport SalesForceIdV3 from './SalesForceIdV3'\nimport ProjectIdV3 from './ProjectIdV3'\nimport UseV3 from './UseV3'\nimport TypologyV3 from './TypologyV3'\nimport {SAVED_SEGMENTATIONS_STEP, SAVING_SEGMENTATION_STEP, SEGMENTATION_EVIDENCE_STEP} from \"./SegmentationSteps\";\n\n\nclass SegmentationV3 extends React.Component {\n\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            saveSegmentationPromptOpen: false,\n            active: null,\n            excuse: null,\n            expandSaved: false\n        }\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (prevProps.segmentatingProductId !== this.props.segmentatingProductId) {\n            this.setState({ product: this.props.getProductById(this.props.segmentatingProductId) })\n        }\n\n        if (\n            prevState.active && !this.state.active &&\n            (this.props.businessSegment != prevProps.businessSegment ||\n                this.props.channel != prevProps.channel ||\n                this.props.subchannel != prevProps.subchannel ||\n                this.props.salesForceId != prevProps.salesForceId ||\n                this.props.salesForceName != prevProps.salesForceName ||\n                this.props.projectId != prevProps.projectId ||\n                this.props.projectName != prevProps.projectName ||\n                this.props.subchannelProgram != prevProps.subchannelProgram ||\n                this.props.typology != prevProps.typology ||\n                this.props.useName != prevProps.useName)\n        ) {\n            this.setState({ active: null })\n        }\n    }\n\n    clearSegmentation = () => {\n        this.setState({ active: null })\n        this.props.clearSegmentation()\n    }\n\n    toggleSegmentation = name => {\n        const activeSegmentation = this.state.active === name ? null : name\n        if (activeSegmentation) {\n            this.loadSegmentation(activeSegmentation)\n        } else {\n            this.clearSegmentation()\n        }\n        this.setState({ active: activeSegmentation })\n    }\n\n    loadSegmentation = name => {\n        this.props.loadPreferredSegmentation(name)\n        this.setState({ active: name })\n    }\n\n    needsEvidence = () => this.props.subchannelProgram && this.props.evidencesType\n\n    componentDidMount() {\n        this.props.fetchSegmentation()\n    }\n\n    canAddMaterial() {\n        if (this.props.isExclusiveHomeDepot) {\n            if (!this.props.validHomeDepotSegmentation) {\n                if (!this.state.excuse) this.setState({ excuse: 'EXCLUSIVE_HOME_DEPOT' })\n                return false\n            }\n        }\n\n        if (this.state.excuse) this.setState({ excuse: null })\n\n        return true\n    }\n\n    scrollDown = () => {\n        const element = document.getElementById('seg-content')\n        if (element) {\n            element.scrollTop = element.scrollHeight\n        }\n    }\n\n    render() {\n        const { channel } = this.props\n\n        const formFullFilled = isFormFullFilled(this.props)\n\n        return (\n            <div className=\"suggested__segmentation\">\n                <div className=\"suggested__segmentation__content--input\">\n                    {(this.props.isSaving) && <Spinner isLoading={this.props.isSaving} />}\n                    {this.state.excuse && <Alerts alert={this.state.excuse} status=\"warning\" />}\n\n                    <div id=\"seg-content\">\n                        <div>\n                            <div className=\"mt-3\">\n                                <ChannelV4 intl={this.props.intl} />\n                            </div>\n                            <div>\n                                {channel != null && channel !== 'B0' && channel !== 'HE' && channel !== 'AP' && channel !== 'PO' && (\n                                    <div className=\"mt-2\" onClick={this.scrollDown}>\n                                        <SalesForceIdV3 intl={this.props.intl} />\n                                    </div>\n                                )}\n                                {(channel === 'C0' ||\n                                    channel === 'AP' ||\n                                    channel === 'PO' ||\n                                    channel === 'BB' ||\n                                    channel === 'BD' ||\n                                    channel === 'B0' ||\n                                    channel === 'HE' ||\n                                    channel === 'DA' ||\n                                    channel === 'HO' ||\n                                    channel === 'nexus_retail' ||\n                                    channel === 'nexus_non_retail') && (\n                                    <div className=\"mt-2\" onClick={this.scrollDown}>\n                                        <ProjectIdV3 intl={this.props.intl} />\n                                    </div>\n                                )}\n                            </div>\n                            {this.props.viewFullSegmentationV3 && (\n                                <div className=\"row p-0 m-0 mt-2\" style={{ gap: '16px' }}>\n                                    <div className=\"col p-0 m-0\" onClick={this.scrollDown}>\n                                        <TypologyV3 intl={this.props.intl} product={this.state.product} />\n                                    </div>\n                                    <div className=\"col p-0 m-0\" onClick={this.scrollDown}>\n                                        <UseV3 intl={this.props.intl} />\n                                    </div>\n                                </div>\n                            )}\n                        </div>\n                    </div>\n\n                    <div className={`mt-3 link ${formFullFilled ? '' : 'disabled'}`} onClick={() => {\n                        if (formFullFilled) this.props.onSetStep(SAVING_SEGMENTATION_STEP)\n                    }}>\n                        <div className=\"inner\">\n                            <i className=\"fal fa-heart\"/>\n                            &nbsp;&nbsp;\n                            <Translation id=\"save_this_segmentation\" defaultMessage=\"Save this segmentation\"/>\n                        </div>\n                    </div>\n                </div>\n\n                <div>\n                    <hr />\n                    <footer>\n                        <div className=\"double-buttons my-1\">\n                            <Button onClick={() => this.props.onSetStep(SAVED_SEGMENTATIONS_STEP)} >\n                                <Translation id=\"view_saved_segmentations\" defaultMessage=\"View saved segmentations\" />\n                            </Button>\n\n                            {formFullFilled && this.canAddMaterial() && !window.location.href.includes('personal') ? (\n                                this.needsEvidence() ? (\n                                    <Button\n                                        onClick={() => this.props.onSetStep(SEGMENTATION_EVIDENCE_STEP)}\n                                        inverted\n                                        // dataQas=\"global_segmentation-add-to-cart-button\"\n                                        icon=\"fal fa-chevron-right\"\n                                        iconEnd={true}\n                                    >\n                                        <Translation id=\"next\" defaultMessage=\"Next\" />\n                                    </Button>\n                                ) : (\n                                    <Button\n                                        onClick={() => this.props.onSubmitSegmentation(this.props.callback)}\n                                        inverted\n                                        dataQas=\"global_segmentation-add-to-cart-button\"\n                                        icon=\"fa fa-shopping-cart\"\n                                        iconEnd={true}\n                                    >\n                                        <Translation id=\"add_to_cart\" defaultMessage=\"Add to cart\" />\n                                    </Button>\n                                )) : (\n                                <Button\n                                    disabled\n                                    inverted\n                                    icon=\"fal fa-chevron-right\"\n                                    iconEnd={true}\n                                >\n                                    <Translation id=\"next\" defaultMessage=\"Next\" />\n                                </Button>\n                            )}\n                        </div>\n                    </footer>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(SegmentationV3)\n\nexport const isFormFullFilled = (props) => {\n    let salesForceIsValid = props.sfOptions && Object.keys(props.sfOptions).length > 0 ? props.salesforceId !== null : true\n    if (props.channel === 'B0') {\n        salesForceIsValid = true\n    }\n    const isNexusChannel = typeof props.channel === 'string' && props.channel.startsWith('nexus')\n\n    const needsProjectId = (\n        (\n            (props.channel === 'BD' || props.channel === 'BB')\n            && props.salesforceId\n            && props.sfOptions[props.salesforceId]\n            && Object.keys(props.sfOptions[props.salesforceId].projectOptions).length > 0\n        ) || (\n            (props.channel === 'PO' || props.channel === 'B0') && Object.keys(props.projectOptions).length > 0\n        ) || (\n            props.channel === 'C0' && Object.keys(props.projectOptions).length > 0 && !props.isOptionalBuilderProjectCenter\n        ) || isNexusChannel\n    )\n\n    const needsUseAndEnvironment = (\n        (!props.use || !props.typology) && isNexusChannel\n    )\n\n    // const needsUse = props.isAdmin || !props.use\n    if (needsUseAndEnvironment) return false\n\n    const formIsFullfilled = props.channel === 'A0' || (props.channel && salesForceIsValid && (needsProjectId ? props.projectId : true))\n\n    return formIsFullfilled\n}\n\n","import React from \"react\";\r\nimport Translation from '../global/Translation'\r\n\r\nconst channels = {\r\n    A0: <Translation id=\"channel_A0\" defaultMessage=\"Kitchen & bath\" />,\r\n    D0: <Translation id=\"channel_D0\" defaultMessage=\"Home center\" />,\r\n    B0: <Translation id=\"channel_B0\" defaultMessage=\"Projects\" />,\r\n    AP: <Translation id=\"channel_AP\" defaultMessage=\"Projects\" />,\r\n    PO: <Translation id=\"channel_AP\" defaultMessage=\"Projects\" />,\r\n    C0: <Translation id=\"channel_C0\" defaultMessage=\"Builder\" />,\r\n    HE: <Translation id=\"channel_HE\" defaultMessage=\"Projects\" />,\r\n    HO: <Translation id=\"channel_HO\" defaultMessage=\"Cosentino Home Owners\" />,\r\n    DA: <Translation id=\"channel_DA\" defaultMessage=\"Direct Accounts\" />,\r\n    BB: <Translation id=\"channel_BB\" defaultMessage=\"Projects\" />,\r\n    BD: <Translation id=\"channel_BD\" defaultMessage=\"Projects\" />,\r\n    nexus: <Translation id=\"channel_nexus\" defaultMessage=\"C·Nexus\" />,\r\n};\r\n\r\nconst noChannel = <Translation id=\"no_channel\" defaultMessage=\"No Channel\" />\r\n\r\nconst SegmentationTranslation = ({ channel }) => {\r\n    return !!channels[channel] ? channels[channel] : noChannel\r\n}\r\nexport default SegmentationTranslation;\r\n","module.exports = __webpack_public_path__ + \"static/media/PPCC_V2.d8e8f60f.png\";","import React from 'react'\r\nimport Translation from '../global/Translation'\r\n\r\nimport { connect } from 'react-redux'\r\nimport { getCurrentSegmentation, getSelectedChannel, getChannelOptionsV3, getNexusOptions, getSegmentatingProductId } from '../../store/segmentation/reducers'\r\nimport { toggleSegmentation, selectChannel } from '../../store/segmentation/actions'\r\nimport SegmentationTranslation from './SegmentationTranslation'\r\nconst mapStateToProps = (state, props) => {\r\n    return {\r\n        show: getCurrentSegmentation(state) === 'CHANNEL',\r\n        selected: getSelectedChannel(state),\r\n        options: getChannelOptionsV3(state),\r\n        nexusOptions: props.inProfile ? state.segmentation.nexusOptions : getNexusOptions(state),\r\n        selectedProduct: getSegmentatingProductId(state)\r\n    }\r\n}\r\nconst mapDispatchToProps = dispatch => {\r\n    return {\r\n        onToggle: () => {\r\n            dispatch(toggleSegmentation('CHANNEL'))\r\n        },\r\n        onSelect: (value, valueName) => {\r\n            dispatch(selectChannel(value, valueName))\r\n        },\r\n        onSelectRetail: value => {\r\n            dispatch({ type: 'CLEAR_SEGMENTATION' })\r\n        }\r\n    }\r\n}\r\n\r\nconst RETAIL_CHANNEL = ['A0', 'D0', 'nexus_retail']\r\nconst NON_RETAIL_CHANNEL = ['AP', 'B0', 'C0', 'HE', 'DA', 'BB', 'BD', 'HO', 'nexus_non_retail']\r\n/**\r\n * This is for the attribute data-qas to show the typology name to the QAS Team.\r\n * @type {object}\r\n */\r\nconst SEGMENTATION_CHANNELS = {\r\n    A0: 'kitchen-and-bath',\r\n    AP: 'kitchen-and-bath',\r\n    D0: 'home-center',\r\n    B0: 'projects',\r\n    C0: 'builder',\r\n    HE: 'projects',\r\n    HO: 'cosentino-home-owners',\r\n    DA: 'direct-accounts',\r\n    BB: 'projects',\r\n    BD: 'projects',\r\n    nexus: 'cosentino-nexus',\r\n    '': 'no-channel'\r\n}\r\n\r\nconst ChannelIcon = ({ mask, active }) => (\r\n    <div style={{\r\n        WebkitMaskImage: `url(${mask})`,\r\n        maskImage: `url(${mask})`,\r\n        width: '24px',\r\n        height: '24px',\r\n        marginRight: '8px',\r\n        maskSize: 'cover',\r\n        maskRepeat: 'no-repeat',\r\n        maskPosition: 'center',\r\n        backgroundColor: `${active ? '#365BCA' : '#232323'}`\r\n    }} />\r\n)\r\n\r\nclass ChannelV4 extends React.Component {\r\n    state = { selected: null, selectedSegment: 'retail' }\r\n\r\n    componentDidUpdate(prevProps, prevState, snapshot) {\r\n        if (this.props.options && prevProps.selected !== this.props.selected) {\r\n            const channel = this.props.selected\r\n            const retail = RETAIL_CHANNEL.includes(channel) ? 'retail' : 'no_retail'\r\n            this.setState({ selectedSegment: retail })\r\n        }\r\n    }\r\n\r\n    getBusinessSegment = () => {\r\n        let retailOptions = []\r\n\r\n        if (\r\n            Object.keys(this.props.options).some(item => RETAIL_CHANNEL.includes(item)) ||\r\n            (this.props.nexusOptions['nexus_retail'] && Object.keys(this.props.nexusOptions['nexus_retail']).length > 0)\r\n        ) {\r\n            retailOptions.push({\r\n                label: 'Retail',\r\n                value: 'retail'\r\n            })\r\n        }\r\n\r\n        if (\r\n            Object.keys(this.props.options).some(item => NON_RETAIL_CHANNEL.includes(item)) ||\r\n            (this.props.nexusOptions['nexus_non_retail'] && Object.keys(this.props.nexusOptions['nexus_non_retail']).length > 0)\r\n        ) {\r\n            retailOptions.push({\r\n                label: 'Non Retail',\r\n                value: 'no_retail'\r\n            })\r\n        }\r\n\r\n        return Object.entries(retailOptions).map((option, index) => {\r\n            let isActive = this.state.selectedSegment === option[1].value\r\n            return (\r\n                <div\r\n                    key={index}\r\n                    className={`segmentation-v4-box ${isActive ? 'is-active' : ''}`}\r\n                    data-qa=\"option\"\r\n                    data-key={option[0]}\r\n                    onClick={() => {\r\n                        this.setState({ selectedSegment: option[1].value }, () => this.props.onSelectRetail())\r\n                    }}\r\n                    data-qas={option[1].value === 'retail' ? 'global_segmentation-bussiness-segment-retail' : 'global_segmentation-bussiness-segment-non-retail'}\r\n                >\r\n                    <div data-qa=\"label\" className=\"sk-item-list-option__text\">\r\n                        {option[1].value === 'retail' ? <Translation id=\"retail\" defaultMessage=\"Retail\" /> : <Translation id=\"non-retail\" defaultMessage=\"Non Retail\" />}\r\n                    </div>\r\n                </div>\r\n            )\r\n        })\r\n    }\r\n\r\n    getTypologies = () => {\r\n        const showedOptions = {}\r\n        Object.entries(this.props.options).forEach(([key, option]) => {\r\n            //Los canales AP, B0 y HE deben ir en el mismo saco\r\n            if (key === 'AP' || key === 'HE' || key === 'B0') {\r\n                showedOptions['PO'] = option\r\n            } else {\r\n                showedOptions[key] = option\r\n            }\r\n\r\n            // if (!(key === 'HE' && showedOptions['B0']) && !(key === 'B0' && showedOptions['HE'])) {\r\n            //     showedOptions[key] = option\r\n            // }\r\n        })\r\n\r\n        if (this.props.nexusOptions) {\r\n            let channelName\r\n            if (this.state.selectedSegment === 'retail' && this.props.nexusOptions.nexus_retail) {\r\n                channelName = 'nexus_retail'\r\n            }\r\n            if (this.state.selectedSegment === 'no_retail' && this.props.nexusOptions.nexus_non_retail) {\r\n                channelName = 'nexus_non_retail'\r\n            }\r\n\r\n            if (channelName) {\r\n                showedOptions[channelName] = {\r\n                    id: 'nexus',\r\n                    name: 'Cosentino Nexus'\r\n                }\r\n            }\r\n        }\r\n\r\n        return Object.entries(showedOptions)\r\n            .filter(([channel, option]) => (this.state.selectedSegment === 'retail' ? RETAIL_CHANNEL.includes(channel) : !RETAIL_CHANNEL.includes(channel)))\r\n            .map(([channel, option], index) => {\r\n                const isActive = this.props.selected === channel\r\n                const refChannel = typeof channel === 'string' && channel.startsWith('nexus') ? 'nexus' : channel\r\n                const channelName = SEGMENTATION_CHANNELS[refChannel]\r\n\r\n                const channelIcon = require(`../../assets/img/icons/${refChannel}.svg`)\r\n\r\n                return (\r\n                    <div\r\n                        key={index}\r\n                        className={`segmentation-v4-box channel-icon ${isActive ? 'is-active' : ''}`}\r\n                        data-qa=\"option\"\r\n                        data-key={channel}\r\n                        data-qas={'global_segmentation-typology-' + channelName}\r\n                        onClick={() => {\r\n                            this.setState({ selected: channel }, () => this.props.onSelect(channel, option.name))\r\n                        }}\r\n                    >\r\n                        <div data-qa=\"label\" className=\"sk-item-list-option__text\" style={{ display: 'flex', flexDirection: 'row', alignItems: 'center' }}>\r\n                            <ChannelIcon mask={channelIcon} active={isActive}/>\r\n                            &nbsp;\r\n                            <SegmentationTranslation channel={refChannel} />\r\n                        </div>\r\n                    </div>\r\n                )\r\n            })\r\n    }\r\n\r\n    render() {\r\n        if (this.props.options === undefined) {\r\n            return ''\r\n        }\r\n\r\n        return (\r\n            <div>\r\n                <div>\r\n                    <div className=\"segmentation-segment-title\">\r\n                        <Translation id=\"business_segment\" defaultMessage=\"Bussines Segment\" />*:\r\n                    </div>\r\n                    <div data-qa=\"options\" className=\"sk-item-list mt-1\" style={{ justifyContent: 'flex-start', flexWrap: 'wrap', marginTop: '.5em' }}>\r\n                        {this.getBusinessSegment()}\r\n                    </div>\r\n                </div>\r\n                <div>\r\n                    <div className=\"segmentation-segment-title\">\r\n                        <Translation id=\"typology\" defaultMessage=\"Typology\" />*:\r\n                    </div>\r\n                    <div data-qa=\"options\" className=\"sk-item-list mt-1\" style={{ justifyContent: 'flex-start', flexWrap: 'wrap' }}>\r\n                        {this.getTypologies()}\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ChannelV4)\r\n","module.exports = __webpack_public_path__ + \"static/media/bars.0b61d92c.svg\";","module.exports = __webpack_public_path__ + \"static/media/carrito.8bb492c8.svg\";","module.exports = __webpack_public_path__ + \"static/media/danger-icon.b98aadc0.svg\";","module.exports = __webpack_public_path__ + \"static/media/file.cca16370.svg\";","module.exports = __webpack_public_path__ + \"static/media/lots-icon.ed9b420f.svg\";","module.exports = __webpack_public_path__ + \"static/media/user-inverted.f0b97d67.svg\";","module.exports = __webpack_public_path__ + \"static/media/warning-triangle.913ae855.svg\";","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { connect } from 'react-redux'\nimport { getSelectedChannel, getSelectedSalesForceId, getSalesforceRelationsV3 } from '../../store/segmentation/reducers'\nimport { selectSalesForceId } from '../../store/segmentation/actions'\nimport Select from 'react-select'\n\nconst mapStateToProps = (state, props) => {\n    return {\n        selected: getSelectedSalesForceId(state),\n        options: getSalesforceRelationsV3(state, props.inProfile)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onSelect: (value, name, subchannelProgram, businessSegment, subchannelId) => {\n            dispatch(selectSalesForceId(value, name, subchannelProgram, businessSegment, subchannelId))\n        }\n    }\n}\nclass SalesForceIdV3 extends React.Component {\n    render() {\n        const { selected, onSelect, options, intl } = this.props\n        if (options === undefined) {\n            return ''\n        }\n        return (\n            <div>\n                <div className=\"segmentation-segment-title\">\n                    <Translation id=\"account\" defaultMessage=\"Account\" />*:\n                </div>\n                <Select\n                    placeholder={intl.formatMessage({ id: 'choose_option' })}\n                    options={Object.entries(options).map(option => {\n                        const projectOptions = Object.values(option[1].projectOptions)[0]\n                        return {\n                            label: option[1].name === '' ? 'RESIDENTIAL' : option[1].name,\n                            value: option[0],\n                            businessSegment: option[1].businessSegment,\n                            subchannelProgram: projectOptions.subchannelProgram,\n                            subchannelId: projectOptions.subchannelId\n                        }\n                    })}\n                    value={selected}\n                    onChange={option => {\n                        option && onSelect(option.value, option.label, option.subchannelProgram, option.businessSegment, option.subchannelId)\n                    }}\n                    clearable={false}\n                />\n            </div>\n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(SalesForceIdV3)\n","import React, {useEffect} from 'react'\nimport Translation from '../global/Translation'\n\nimport classNames from 'classnames';\nimport createClass from 'create-react-class'\nimport { connect } from 'react-redux'\nimport {\n    getCurrentSegmentation,\n    getSelectedChannel,\n    getSelectedSalesForceId,\n    getSelectedProjectId,\n    getProjectIdV3, getNexusEnvironment, getNexusUse, getMaterialProjects\n} from '../../store/segmentation/reducers'\nimport {\n    toggleSegmentation,\n    selectProjectIdV4,\n    selectTypology,\n    selectUse\n} from '../../store/segmentation/actions'\nimport Select, {Option} from 'react-select'\nimport {isOptionalBuilderProjectCenter} from \"../../store/centers/reducers\";\nimport PropTypes from \"prop-types\";\nimport InfoWithToolTip from \"../global/InfoWithToolTip\";\n\nconst mapStateToProps = (state, props) => {\n    const channel = getSelectedChannel(state)\n    const salesForceId = getSelectedSalesForceId(state)\n\n    return {\n        show: getCurrentSegmentation(state) === 'SUBCHANNEL',\n        selected: getSelectedProjectId(state),\n        options: getProjectIdV3(state, channel, salesForceId, props.inProfile),\n        isOptionalBuilderProjectCenter: isOptionalBuilderProjectCenter(state),\n        nexusEnvironment: getNexusEnvironment(state),\n        nexusUse: getNexusUse(state),\n        materialProjects: getMaterialProjects(state),\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggle: () => {\n            dispatch(toggleSegmentation('SUBCHANNEL'))\n        },\n        onSelect: (value, name, subchannelProgram, businessSegment, subchannelId, salesForceId, salesForceName, originalChannel, originalChannelName, nexusOriginalChannel) => {\n            console.log(value, name, subchannelProgram, businessSegment, subchannelId, salesForceId, salesForceName, originalChannel, originalChannelName, nexusOriginalChannel)\n            dispatch(selectProjectIdV4(value, name, subchannelProgram, businessSegment, subchannelId, salesForceId, salesForceName, originalChannel, originalChannelName, nexusOriginalChannel))\n        },\n        selectTypology: nexusEnvironment => {\n            const envValue = nexusEnvironment && nexusEnvironment.id\n            const envVName = nexusEnvironment && nexusEnvironment.name\n            dispatch(selectTypology(envValue, envVName))\n        },\n        selectUse: nexusUse => {\n            const useValue = nexusUse && nexusUse.id\n            const useVName = nexusUse && nexusUse.name\n            dispatch(selectUse(useValue, useVName))\n        }\n    }\n}\n\nconst CustomOption = createClass({\n    propTypes: Option.propTypes,\n    handleMouseDown(event) {\n        event.preventDefault()\n        event.stopPropagation()\n        this.props.onSelect(this.props.option, event)\n    },\n    handleMouseEnter(event) {\n        this.props.onFocus(this.props.option, event)\n    },\n    handleMouseMove(event) {\n        if (this.props.isFocused) return\n        this.props.onFocus(this.props.option, event)\n    },\n    render() {\n        return (\n            <div\n                className={this.props.className}\n                onMouseDown={this.handleMouseDown}\n                onMouseEnter={this.handleMouseEnter}\n                onMouseMove={this.handleMouseMove}\n                title={this.props.option.title}\n            >\n                {this.props.children}\n                {this.props.isDisabled &&\n                    <div className=\"info_with_tool_tip\">\n                        <Translation id=\"not_available\" defaultMessage=\"Not available\"/>\n                    </div>\n                }\n            </div>\n        )\n    }\n})\n\n\n\n\nclass ProjectIdV3 extends React.Component {\n\n    componentDidMount() {\n        this.props.selectTypology(this.props.nexusEnvironment)\n        this.props.selectUse(this.props.nexusUse)\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (this.props.selected !== prevProps.selected) {\n            this.props.selectTypology(this.props.nexusEnvironment)\n            this.props.selectUse(this.props.nexusUse)\n        }\n    }\n\n    render() {\n        const { selected, onSelect, options, materialProjects, intl } = this.props\n        if (options === undefined) {\n            return ''\n        }\n        const _options = options && Object.entries(options)\n        if (_options && (_options.length === 0 /*|| (_options.length === 1 && !_options[0][1].projectId)*/)) {\n            return ''\n        }\n\n        // console.log('OPTIONS' , _options)\n        // console.log('SELECTED > ' , this.props.selected, this.props.nexusEnvironment, this.props.nexusUse)\n\n        return (\n            <div>\n                <div className=\"segmentation-segment-title\">\n                    <Translation id=\"choose_project\" defaultMessage=\"Choose project\" />\n                    {!this.props.isOptionalBuilderProjectCenter && <span>*</span>}:\n                </div>\n\n                <Select\n                    placeholder={intl.formatMessage({ id: 'choose_option' })}\n                    options={_options.map(option => ({\n                        label: option[1].projectName === '' ? 'PROJECT' : option[1].projectName,\n                        value: option[0],\n                        disabled: option[1].subchannelId === 'NX' && !materialProjects.has(option[1].projectId),//solo para Nexus\n                        subchannelProgram: option[1].subchannelProgram ? option[1].subchannelProgram : null,\n                        businessSegment: option[1].businessSegment ? option[1].businessSegment : null,\n                        subchannelId: option[1].subchannelId ? option[1].subchannelId : null,\n                        originalChannel: option[1].originalChannel ? option[1].originalChannel : null,\n                        originalChannelName: option[1].originalChannelName ? option[1].originalChannelName : null,\n                        nexusOriginalChannel: option[1].nexusOriginalChannel ? option[1].nexusOriginalChannel : null,\n                        salesForceId: option[1].salesForceId ? option[1].salesForceId : null,\n                        salesForceName: option[1].salesForceName ? option[1].salesForceName : null\n                    }))}\n\n                    value={selected}\n                    onChange={option => option && onSelect(\n                        option.value,\n                        option.label,\n                        option.subchannelProgram,\n                        option.businessSegment,\n                        option.subchannelId,\n                        option.salesForceId,\n                        option.salesForceName,\n                        option.originalChannel,\n                        option.originalChannelName,\n                        option.nexusOriginalChannel\n                    )}\n                    clearable={false}\n                    optionComponent={CustomOption}\n\n                />\n                {/* <hr /> */}\n            </div>\n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProjectIdV3)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { connect } from 'react-redux'\nimport {\n    getCurrentSegmentation,\n    getSelectedChannel,\n    getSelectedUse,\n    getUseOptions\n} from '../../store/segmentation/reducers'\nimport { selectUse, toggleSegmentation } from '../../store/segmentation/actions'\nimport Select from 'react-select'\n\nconst mapStateToProps = state => {\n    return {\n        show: getCurrentSegmentation(state) === 'USE',\n        selected: getSelectedUse(state),\n        options: getUseOptions(state),\n        channel: getSelectedChannel(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggle: () => {\n            dispatch(toggleSegmentation('USE'))\n        },\n        onSelect: (value, label) => {\n            dispatch(selectUse(value, label))\n        }\n    }\n}\n\nconst DEFAULT_VALUE = '10'\n\nconst UseV3 = ({ show, selected, onToggle, onSelect, options, intl, channel }) => {\n    if (!options || Object.entries(options).length === 0) {\n        return ''\n    }\n\n    const isOptional = channel !== 'nexus_retail' && channel !== 'nexus_non_retail'\n    let placeholder= intl.formatMessage({ id: 'use' })\n\n\n    if (options.length === 1 && selected !== options[0].id) {\n        onSelect(options[0].id, options[0].name)\n    }\n    if (isOptional) placeholder += ' (' + intl.formatMessage({ id: 'optional' }) + ')'\n\n    return (\n        <div>\n            <div className=\"segmentation-segment-title\">\n                <Translation id=\"use\" defaultMessage=\"Use\" />\n                {!isOptional && ( <span>*</span>)}:\n            </div>\n            <Select\n                // placeholder={intl.formatMessage({ id: 'use' })}\n                placeholder={placeholder}\n                options={options.map(option => ({\n                    label: option.name,\n                    value: option.id\n                }))}\n                value={selected}\n                onChange={option => option ? onSelect(option.value, option.label) : onSelect(null, null)}\n                clearable={options && options.length > 1}\n            />\n        </div>\n    )\n}\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(UseV3)\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport {\n    getSelectedChannel,\n    getSelectedTypology,\n    getTypologyOptionsV3\n} from '../../store/segmentation/reducers'\nimport { selectTypology } from '../../store/segmentation/actions'\nimport Select from 'react-select'\nimport Translation from '../global/Translation'\n\nconst mapStateToProps = state => {\n    return {\n        selected: getSelectedTypology(state),\n        options: getTypologyOptionsV3(state),\n        channel: getSelectedChannel(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onSelect: (value, name) => {\n            dispatch(selectTypology(value, name))\n        }\n    }\n}\n\n\nconst TypologyV3 = ({ selected, product, onSelect, options, intl, channel }) => {\n\n    if (!options || Object.entries(options).length === 0) {\n        return ''\n    }\n\n    let placeholder = intl.formatMessage({ id: 'choose_option' })\n    let isOptional = true\n\n    if (product) {\n        const isBath = product.brand === 'BATHS'\n        isOptional = !isBath && channel !== 'nexus_retail' && channel !== 'nexus_non_retail'\n\n        if (isBath) options = options.filter(o => o.id === 'BA')\n        if (isOptional) placeholder += ' (' + intl.formatMessage({ id: 'optional' }) + ')'\n    }\n\n    if (options.length === 1 && selected !== options[0].id) {\n        onSelect(options[0].id, options[0].name)\n    }\n\n    return (\n        <div>\n            <div className=\"segmentation-segment-title\">\n                <Translation id=\"enviroment\" defaultMessage=\"Environment\" />\n                {!isOptional && ( <span>*</span>)}:\n            </div>\n\n            <Select\n                placeholder={placeholder}\n                options={options.map(option => ({\n                    label: option.name,\n                    value: option.id\n                }))}\n                value={selected}\n                onChange={option => option ? onSelect(option.value, option.label) : onSelect(null, null)}\n                clearable={options && options.length > 1}\n            />\n        </div>\n    )\n}\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(TypologyV3)\n","module.exports = __webpack_public_path__ + \"static/media/mall-discount.c5c4049b.svg\";","import en from \"./locales/en.json\";\nimport es from \"./locales/es.json\";\nimport de from \"./locales/de.json\";\nimport da from \"./locales/da.json\";\nimport enUs from \"./locales/en-us.json\";\nimport fi from \"./locales/fi.json\";\nimport frCa from \"./locales/fr-ca.json\";\nimport enCa from \"./locales/en-ca.json\";\nimport fr from \"./locales/fr.json\";\nimport he from \"./locales/he.json\";\nimport it from \"./locales/it.json\";\nimport ja from \"./locales/ja.json\";\nimport nl from \"./locales/nl.json\";\nimport no from \"./locales/no.json\";\nimport pl from \"./locales/pl.json\";\nimport pt from \"./locales/pt.json\";\nimport sv from \"./locales/sv.json\";\nimport tr from \"./locales/tr.json\";\n\nexport const messages = {\n    en,\n    es,\n    de,\n    da,\n    'en-US': enUs,\n    fi,\n    'fr-CA': frCa,\n    'en-CA': enCa,\n    fr,\n    he,\n    it,\n    ja,\n    nl,\n    no,\n    pl,\n    pt,\n    sv,\n    tr\n}","import * as api from '../api'\nimport { getSelectedCenter } from '../centers/reducers'\nimport { getAdvertisements} from './reducers'\n\nexport const fetchAdvertisements = () => (dispatch, getState) => {\n\n    const state = getState();\n    // const advs = getAdvertisements(state)\n\n    const center = getSelectedCenter(state)\n\n    dispatch({type: 'FETCH_ADVERTISEMENTS', center})\n\n    return api.fetchAdvertisements(center)\n        .then(response => {\n            let advertisements = null\n            if (response.data) advertisements = response.data\n            dispatch({type: 'FETCH_ADVERTISEMENTS_SUCCESS', advertisements })\n        })\n        .catch(error => {\n            dispatch({type: 'FETCH_ADVERTISEMENTS_FAILURE'})\n        })\n}","module.exports = __webpack_public_path__ + \"static/media/copy-to-clipboard.5700098d.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAdSSURBVHgB7Zxna1RdEIAnMViwi9i7iF2xd8UuFlQUxD/mJ8EPYkdU7F0Re0fU2FCxY0nv7X2fgRtu4sZsotFzZ+cBWbPZJMt97syZmXOSrNzc3DpxzJItjmlcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFcsHFyJEAqKirk3bt3Ul1dLaHQrl076dmzp/Tu3VuSRHCC6+rq5NChQ/Lt2zcJkQULFsjkyZMlKQQn+Pnz5yqXizhixAgJibNnz8rdu3dd8O9QUFCgj8gdOHCghMTgwYPl6dOnkiSCXIP/Nki7f/++5OfnS/v27WXYsGEyc+ZM6datmySdjK+ib926JefPn5eSkhIZNWqUdO/eXXJzc7UOKC4ulqST0RFcWFiogonUTZs2SefOnfX5O3fuyI0bN+TevXuycOFCSTIZHcG0YjBv3rx6uTB9+nTp0aOHvHjxQpJORgsuLy9v8nMdO3bUfjzpZLTgfv366eP79+8bPE/qplULrYpvDRm9BiMQyY8ePZKqqioZPXq0fP/+XdfempoamTBhgiSdjG+T1q1bpwMMKmf+QYcOHWTx4sUycuRISTqmBLOmsna2BGSuXbtWPnz4IGVlZZKdna2RzfMWMCP45s2b2t5Q/W7evLnFgiyst6kwUWQ9ePBAbt++rVOovLw8uXDhQrNf8/XrV70hKKgsk3jBVLsMK7p27SpbtmzRadSrV6909NgUyD1w4IAOM/bt21c//7ZIogUzSjxx4oRUVlbKypUrdSK1aNEi3be9fv26rquNYbhx+PBhXWtnzZqlvS4fWxhLpiLRgk+ePKkpdvbs2fU9LUXWmjVrdIP+9OnTOmOOIHKPHj0qtbW1sn79epkxY4YsWbJEioqK5MiRI/pojcQKJr1++fJFxowZo6PFOBRac+fOldLSUjlz5ow+R+QiMScnR1uj/v376/Pjxo3TG4S1+/jx4yamV3ESKZiiigKJVLx06dKUr5k4caIOKkjT7BYRuZwW2bBhgwwYMKDBa7lBpk2bpus5KZ8It0LiBP/48UNbIooqIjErK6vJ186ZM0d69eql+71U2KTlPn36NPlabgpuiMuXL6d8TXRGLEk3QKL6YNbbY8eOaSQuW7as2Q15emHW4/3792tR1dwQhAKNgu3x48fSqVMnjeyXL1/qDfLx40f9ubBt2za9wajYyRIhHwxIVASzniKZdJruYIINfPZ0WY+5OZqD13JykiVg165dcu7cOY3qSG4EBRkz67179+prQyUxgq9evSqfP3+WSZMmafXbEthEmDJliqb3K1eu/PK1RH10qC6dqpqIp+BLZ7jyL0hEima3h8EFkTV//nxpDVTKROLDhw91HUZ6KthNarwGk4KR3qVLF70B6Jnfvn3b4EDAkydP9NAAvXVIBB/BVLZELxdv9erVupa2BvriVatW6fe5dOlSkyNKWqX4gXuyxdatW1XwoEGDtHKnNWOwEj/mA4xLUw1X/iVBCyZFRm0L7c3vFjN8/YoVK3Tvl7aJxzhsF8bFs9YTkbwPpl3bt2+XHTt2yM6dO7VvppfmfcVvOsamIRG0YCZRXHAuMpHzJ6A44/sh6Nq1aw0+R8UcQZXM0Vl+/sGDB/XUR1RoDR06VIcpfMz7Yn2PIIJDGpYEK5jChaKKi0ck/UlIuxxiZ21nTY749OlT/f85eE9aJ53HhfFeqLSJ6j179ugeNCk7TnSYLwSCE8woEbjYFENtVbRwYoOUzaYE6zxtVFwkURq9jwgqeAYi7D6RsqnKiWyimL45IqQtyOCqaCKHi07640Lu3r1b2gqEUlBxyL3xAYEoHUePZBKO1yKPmXYkMVp/4+sw57lCITjBrG0bN27UcWRbwzobhyiOKmjaJaKYUSc7VcjlhovLBbIA6Tq+a8VwJRSC7IPZDEDy34a0Gx2hffPmjUydOlVHnbRCjSMXxo4dq705PXCcvn37Sij4b/jHiI8/mT0/e/ZM5RLVnLyM5LLBwRya3xXmOfrfCCLaIzhQKKLYioyKrYsXL+ou1PDhw7XfJbqpmhl4IJ6JFv10fKRJaxUSWf8393Xi1EMvfOrUqQbPkYrZSqRapnVCLL+ozvg0XnnTerElGRIuOAUUePG0mw6kZeoG5tUh4Sk6BfTe9OOITmdzf8iQIbJ8+fIGvXAoeAT/AgooevLXr1+n/Is/zKLHjx//0yQrJFxwGrDOMu3ikf1fIpX1OAl/4sFTdBow5Urqr7Z4H2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2wcF2yc/wDbDCknU2swiwAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/warning.46d2d44b.jpg\";","module.exports = __webpack_public_path__ + \"static/media/logo-silestone.9adee56f.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-dekton.a718be4d.svg\";","module.exports = __webpack_public_path__ + \"static/media/DKTN.0d636e8d.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-sensa.b044a853.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-natural-stone.8b95fadd.svg\";","module.exports = __webpack_public_path__ + \"static/media/location.1b2349bb.svg\";","import React, {useEffect, useState} from 'react'\nimport Button from '../global/Button'\nimport Translation from '../global/Translation'\nimport {defineMessages, injectIntl} from \"react-intl\";\nimport {SAVED_SEGMENTATIONS_STEP, SEGMENTATION_EVIDENCE_STEP, SEGMENTATION_V3_STEP} from \"./SegmentationSteps\";\nimport {RadioButton} from \"@progress/kendo-react-inputs\";\n\ndefineMessages({\n    here_some_suggested_segmenations: {\n        id: 'here_some_suggested_segmentations',\n        description: 'Here are some suggested segmentations containing the material you have selected:',\n        defaultMessage: 'Here are some suggested segmentations containing the material you have selected:'\n    },\n    none_above_segmentations: {\n        id: 'none_above_segmentations',\n        description: 'None of the above segmentations?',\n        defaultMessage: 'None of the above segmentations?'\n    },\n    choose_segmentation_manually: {\n        id: 'choose_segmentation_manually',\n        description: 'Choose segmentation manually',\n        defaultMessage: 'Choose segmentation manually'\n    },\n    view_saved_segmentations: {\n        id: 'view_saved_segmentations',\n        description: 'View saved segmentations',\n        defaultMessage: 'View saved segmentations'\n    },\n})\n\n\nconst SuggestedSegmentation = props => {\n    const { onSubmitSegmentation, callback, onSetStep } = props\n\n    const [selectedIndex, setSelectedIndex] = useState()\n\n    const handleAddToCart = (needsEvidence) => {\n        const selectedSegmentation = props.suggestedSegmentations[selectedIndex]\n        props.setSegmentationFromSuggested(selectedSegmentation)\n        if (needsEvidence) onSetStep(SEGMENTATION_EVIDENCE_STEP)\n        else onSubmitSegmentation(callback)\n    }\n\n    const needsEvidence = () => selectedIndex !== undefined\n        && props.suggestedSegmentations[selectedIndex].subchannelProgram\n        && (props.suggestedSegmentations[selectedIndex].evidences === '01' || props.suggestedSegmentations[selectedIndex].evidences === '02')\n\n    // const needsEvidence = () => selectedIndex === 3\n\n\n    return (\n        <div className=\"suggested__segmentation\">\n            <div className=\"suggested__segmentation__content--input\" >\n                <div>\n                    <span className=\"title\">\n                        <Translation\n                            id=\"here_some_suggested_segmentations\"\n                            defaultMessage=\"Here are some suggested segmentations containing the material you have selected:\"\n                        />\n                    </span>\n                </div>\n                <div className=\"scrolled-list\">\n                    {\n                        props.suggestedSegmentations.map((value, index) => {\n                            // const label = props.intl.formatMessage({ id: 'project', defaultMessage: 'Project'}) + ': ' +\n                            const key = `suggested-segmentation-${index}`\n\n                            return <div className=\"my-3 scrolled-list--item\"\n                                        key={key}\n                            >\n                                <RadioButton\n                                    onClick={() => setSelectedIndex(index)}\n                                    id={key}\n                                    name={key}\n                                    value={index}\n                                    checked={selectedIndex === index}\n                                >\n                                    <label htmlFor={key} className={'k-radio-label'} >\n                                        <Translation id=\"project\" defaultMessage=\"Project\"/>:&nbsp;\n                                        <strong>{value.projectName}</strong>\n                                    </label>\n                                </RadioButton>\n                            </div>\n\n                        })\n                    }\n                </div>\n                <div>\n                    <span className=\"title\">\n                        <Translation\n                            id=\"none_above_segmentations\"\n                            defaultMessage=\"None of the above segmentations?\"\n                        />\n                    </span>\n                </div>\n\n                <div className=\"double-buttons my-1\">\n                    <Button onClick={() => onSetStep(SAVED_SEGMENTATIONS_STEP)} >\n                        <Translation id=\"view_saved_segmentations\" defaultMessage=\"View saved segmentations\" />\n                    </Button>\n\n                    <Button onClick={() => onSetStep(SEGMENTATION_V3_STEP)} >\n                        <Translation id=\"choose_segmentation_manually\" defaultMessage=\"Choose segmentation manually\" />\n                    </Button>\n                </div>\n\n            </div>\n\n            <div>\n                <hr></hr>\n                <footer>\n                    {\n                        needsEvidence() ?\n                            <Button\n                                onClick={() => handleAddToCart(true)}\n                                inverted\n                                // dataQas=\"global_segmentation-add-to-cart-button\"\n                                icon=\"fal fa-chevron-right\"\n                                iconEnd={true}\n                            >\n                                <Translation id=\"next\" defaultMessage=\"Next\" />\n                            </Button>\n                            :\n                            <Button\n                                onClick={() => handleAddToCart(false)}\n                                inverted\n                                // dataQas=\"global_segmentation-add-to-cart-button\"\n                                icon=\"fa fa-shopping-cart\"\n                                iconEnd={true}\n                                disabled={selectedIndex === undefined}\n                            >\n                                <Translation id=\"add_to_cart\" defaultMessage=\"Add to cart\" />\n                            </Button>\n                    }\n                </footer>\n            </div>\n\n\n        </div>\n    )\n}\n\nexport default SuggestedSegmentation\n","module.exports = __webpack_public_path__ + \"static/media/camion_completo.7988f1a1.svg\";","module.exports = __webpack_public_path__ + \"static/media/checkmark.51262748.svg\";","module.exports = __webpack_public_path__ + \"static/media/close-black.69f6e463.svg\";","module.exports = __webpack_public_path__ + \"static/media/close-white.37ec7b60.svg\";","module.exports = __webpack_public_path__ + \"static/media/cosentino-message.2bc61bc5.svg\";","module.exports = __webpack_public_path__ + \"static/media/download-gray.1c805eb4.svg\";","module.exports = __webpack_public_path__ + \"static/media/facebook.a8249830.svg\";","module.exports = __webpack_public_path__ + \"static/media/filter.c19f02b5.svg\";","module.exports = __webpack_public_path__ + \"static/media/instagram.0a1e26ab.svg\";","module.exports = __webpack_public_path__ + \"static/media/linkedin.86558dc5.svg\";","module.exports = __webpack_public_path__ + \"static/media/list.e2cb87c8.svg\";","module.exports = __webpack_public_path__ + \"static/media/medio_camion.729f5ab1.svg\";","module.exports = __webpack_public_path__ + \"static/media/pinterest.8799b140.svg\";","module.exports = __webpack_public_path__ + \"static/media/print.e628f8af.svg\";","module.exports = __webpack_public_path__ + \"static/media/tabla.4461c8f9.svg\";","module.exports = __webpack_public_path__ + \"static/media/twitter.2c6197bf.svg\";","module.exports = __webpack_public_path__ + \"static/media/user.7f184d12.svg\";","module.exports = __webpack_public_path__ + \"static/media/youtube.32662b75.svg\";","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 18,\n    height: 18,\n    viewBox: \"0 0 18 18\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8.625 12.375H9.375V8.25H8.625V12.375ZM9 7.18125C9.125 7.18125 9.2345 7.1375 9.3285 7.05C9.422 6.9625 9.46875 6.85 9.46875 6.7125C9.46875 6.5875 9.422 6.48125 9.3285 6.39375C9.2345 6.30625 9.125 6.2625 9 6.2625C8.875 6.2625 8.7655 6.30625 8.6715 6.39375C8.578 6.48125 8.53125 6.5875 8.53125 6.7125C8.53125 6.85 8.578 6.9625 8.6715 7.05C8.7655 7.1375 8.875 7.18125 9 7.18125ZM9 15.75C8.0625 15.75 7.1845 15.572 6.366 15.216C5.547 14.8595 4.8345 14.378 4.2285 13.7715C3.622 13.1655 3.1405 12.453 2.784 11.634C2.428 10.8155 2.25 9.9375 2.25 9C2.25 8.0625 2.428 7.18425 2.784 6.36525C3.1405 5.54675 3.622 4.83425 4.2285 4.22775C4.8345 3.62175 5.547 3.1405 6.366 2.784C7.1845 2.428 8.0625 2.25 9 2.25C9.9375 2.25 10.8157 2.428 11.6347 2.784C12.4532 3.1405 13.1658 3.62175 13.7723 4.22775C14.3783 4.83425 14.8595 5.54675 15.216 6.36525C15.572 7.18425 15.75 8.0625 15.75 9C15.75 9.9375 15.572 10.8155 15.216 11.634C14.8595 12.453 14.3783 13.1655 13.7723 13.7715C13.1658 14.378 12.4532 14.8595 11.6347 15.216C10.8157 15.572 9.9375 15.75 9 15.75ZM9 15C10.675 15 12.0937 14.4187 13.2562 13.2562C14.4187 12.0937 15 10.675 15 9C15 7.325 14.4187 5.90625 13.2562 4.74375C12.0937 3.58125 10.675 3 9 3C7.325 3 5.90625 3.58125 4.74375 4.74375C3.58125 5.90625 3 7.325 3 9C3 10.675 3.58125 12.0937 4.74375 13.2562C5.90625 14.4187 7.325 15 9 15Z\",\n    fill: \"#365BCA\"\n  })));\n};\n\nexport default __webpack_public_path__ + \"static/media/info.4d70e77b.svg\";\nexport { SvgComponent as ReactComponent };","import ReactTooltip from \"react-tooltip\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ReactComponent as InfoIcon } from '../../assets/img/icons/info.svg'\n\nconst InfoWithToolTip = props => {\n\n    return (\n        <div className=\"info_with_tool_tip\">\n            <span data-tip={props.toolTipText} >\n                <ReactTooltip className = \"tooltip\" bg-coloreffect=\"solid\" place={props.place} openEvents={['click','mouseover ']}/>\n                {props.children}\n                <InfoIcon/>\n            </span>\n        </div>\n    )\n}\n\nInfoWithToolTip.propTypes = {\n    toolTipText: PropTypes.string.isRequired,\n    place: PropTypes.oneOf(['top', 'bottom'])\n}\n\nInfoWithToolTip.defaultProps = {\n    place: 'top'\n}\n\n\nexport default InfoWithToolTip","module.exports = __webpack_public_path__ + \"static/media/banner-catalog.b8efc473.jpg\";","module.exports = __webpack_public_path__ + \"static/media/brochureSensa.026de5cd.jpg\";","module.exports = __webpack_public_path__ + \"static/media/brochureSilestone.6bd3dbb4.jpg\";","module.exports = __webpack_public_path__ + \"static/media/furnitures.fbfbcba9.svg\";","module.exports = __webpack_public_path__ + \"static/media/Mobiliario-v2.58ab7d07.png\";","module.exports = __webpack_public_path__ + \"static/media/NewBanos_v2.4277cc02.png\";","module.exports = __webpack_public_path__ + \"static/media/outlet1.100dea4f.png\";","module.exports = __webpack_public_path__ + \"static/media/outlet2.54e40260.png\";","module.exports = __webpack_public_path__ + \"static/media/dekton_894x470.43631ab5.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/wide.e2d0d4ef.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.3e621e51.jpg\";","module.exports = __webpack_public_path__ + \"static/media/banner-silestone-background.451826eb.png\";","module.exports = __webpack_public_path__ + \"static/media/wide.785dbcd0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.713d707a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.ae906574.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.3692b91c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/home-slide.198784a0.png\";","module.exports = __webpack_public_path__ + \"static/media/Banos_V2.1df8a1fd.png\";","module.exports = __webpack_public_path__ + \"static/media/home-slide-outlet.758e6020.png\";","module.exports = __webpack_public_path__ + \"static/media/mall-slide.9afb53f8.png\";","module.exports = __webpack_public_path__ + \"static/media/Promo_Card_1.85a69b0c.png\";","module.exports = __webpack_public_path__ + \"static/media/Promo_Card_2.d744fdb7.png\";","module.exports = __webpack_public_path__ + \"static/media/Promo_Card_3.bbd56a5b.png\";","module.exports = __webpack_public_path__ + \"static/media/cosentino-workwear.830880a9.jpg\";","module.exports = __webpack_public_path__ + \"static/media/cosentino-supplies.eb2ce0ce.jpg\";","var map = {\n\t\"./A0.png\": 1761,\n\t\"./B0.png\": 1762,\n\t\"./BB.png\": 1763,\n\t\"./BD.png\": 1764,\n\t\"./C0.png\": 1765,\n\t\"./D0.png\": 1766,\n\t\"./E0.png\": 1767,\n\t\"./ecosentino-small.png\": 1768,\n\t\"./ecosentino.png\": 1769,\n\t\"./icon-dekton.png\": 1770,\n\t\"./icon-scalea.png\": 1771,\n\t\"./icon-sensa.png\": 1772,\n\t\"./icon-silestone.png\": 1773,\n\t\"./icon-table.png\": 1774,\n\t\"./products/mktools.png\": 1775,\n\t\"./sinks.png\": 1776\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 761;","module.exports = __webpack_public_path__ + \"static/media/banner-home.fe07d947.jpg\";","module.exports = __webpack_public_path__ + \"static/media/flyer-italy-promo-12mm.6fa3bce6.pdf\";","module.exports = __webpack_public_path__ + \"static/media/silestone.bcc96f68.svg\";","module.exports = __webpack_public_path__ + \"static/media/silestone-white.e445d49a.svg\";","module.exports = __webpack_public_path__ + \"static/media/dekton.d8931241.svg\";","module.exports = __webpack_public_path__ + \"static/media/dekton-white.65d3b550.svg\";","module.exports = __webpack_public_path__ + \"static/media/sensa.cb3a6042.svg\";","module.exports = __webpack_public_path__ + \"static/media/sensa-white.a2a3af10.svg\";","module.exports = __webpack_public_path__ + \"static/media/natural-stone-black.22b9c693.svg\";","module.exports = __webpack_public_path__ + \"static/media/natural-stone.cc3e5013.svg\";","module.exports = __webpack_public_path__ + \"static/media/landing_preview_v2.f6cba4d1.jpg\";","module.exports = __webpack_public_path__ + \"static/media/mail_preview_v2.6c164a6e.jpg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"repeatLots\":\"4\"};","var map = {\n\t\"./A0.svg\": 1085,\n\t\"./AP.svg\": 1086,\n\t\"./B0.svg\": 1087,\n\t\"./BB.svg\": 1088,\n\t\"./BD.svg\": 1089,\n\t\"./C0.svg\": 1090,\n\t\"./D0.svg\": 1091,\n\t\"./DA.svg\": 1092,\n\t\"./HE.svg\": 1093,\n\t\"./HO.svg\": 1094,\n\t\"./HQ-icon.svg\": 1095,\n\t\"./PO.svg\": 1096,\n\t\"./Recurso 3.svg\": 1097,\n\t\"./Recurso 4.svg\": 1098,\n\t\"./activity.svg\": 1099,\n\t\"./app-store.svg\": 1100,\n\t\"./bars-white.svg\": 1101,\n\t\"./bars.svg\": 416,\n\t\"./calendar-2.svg\": 1102,\n\t\"./calendar.svg\": 1103,\n\t\"./camera-off.svg\": 151,\n\t\"./camion.svg\": 1104,\n\t\"./camion_completo.svg\": 510,\n\t\"./carrito.svg\": 417,\n\t\"./cart-thin.svg\": 367,\n\t\"./cart.svg\": 1105,\n\t\"./caution.svg\": 368,\n\t\"./chat.svg\": 1106,\n\t\"./chatter.svg\": 1107,\n\t\"./checkmark.svg\": 511,\n\t\"./chevron-down.svg\": 323,\n\t\"./chevron-right.svg\": 1108,\n\t\"./chevron-up.svg\": 1109,\n\t\"./circle-view-off.svg\": 1110,\n\t\"./circle-view-on.svg\": 1111,\n\t\"./close-black.svg\": 512,\n\t\"./close-white.svg\": 513,\n\t\"./coins.svg\": 1112,\n\t\"./cosentino-global-icon-c.svg\": 1113,\n\t\"./cosentino-message.svg\": 514,\n\t\"./cross-black.svg\": 1114,\n\t\"./cross-white.svg\": 1115,\n\t\"./danger-icon.svg\": 418,\n\t\"./danger.svg\": 1116,\n\t\"./download-gray.svg\": 515,\n\t\"./download.svg\": 1117,\n\t\"./ecosentino-white.svg\": 1118,\n\t\"./ecosentino.svg\": 288,\n\t\"./edit.svg\": 1119,\n\t\"./elaborated-white.svg\": 1120,\n\t\"./facebook.svg\": 516,\n\t\"./fav.svg\": 1121,\n\t\"./file.svg\": 419,\n\t\"./filter-black.svg\": 1122,\n\t\"./filter.svg\": 517,\n\t\"./filters.svg\": 1123,\n\t\"./icon-catalog-download.svg\": 1124,\n\t\"./icon-catalog-info.svg\": 1125,\n\t\"./icon-catalog-shipping-truck.svg\": 1126,\n\t\"./icon-catalog-slabs.svg\": 1127,\n\t\"./icon-catalog-warning.svg\": 1128,\n\t\"./info.svg\": 1129,\n\t\"./instagram.svg\": 518,\n\t\"./landing-mngr.svg\": 1130,\n\t\"./linkedin.svg\": 519,\n\t\"./list.svg\": 520,\n\t\"./location.svg\": 446,\n\t\"./login.svg\": 1131,\n\t\"./logout.svg\": 1318,\n\t\"./logoutv2.svg\": 324,\n\t\"./lots-icon.svg\": 420,\n\t\"./mail.svg\": 1319,\n\t\"./medio_camion.svg\": 521,\n\t\"./money.svg\": 1320,\n\t\"./nexus.svg\": 1321,\n\t\"./no-image.svg\": 219,\n\t\"./pinterest.svg\": 522,\n\t\"./platoducha-white.svg\": 1322,\n\t\"./play-store.svg\": 1323,\n\t\"./print.svg\": 523,\n\t\"./products/anchors.svg\": 1324,\n\t\"./products/caja.svg\": 1325,\n\t\"./products/fregadero.svg\": 1326,\n\t\"./products/gabinets.svg\": 1327,\n\t\"./products/lavabos.svg\": 1328,\n\t\"./products/libro.svg\": 1329,\n\t\"./products/merchandising.svg\": 1330,\n\t\"./products/mktools.svg\": 1331,\n\t\"./products/muestra.svg\": 1332,\n\t\"./products/news.svg\": 1333,\n\t\"./products/operaciones.svg\": 1334,\n\t\"./products/otros.svg\": 1335,\n\t\"./products/papeleria.svg\": 1336,\n\t\"./products/platoducha.svg\": 1337,\n\t\"./products/ppcc.svg\": 1338,\n\t\"./products/ppe.svg\": 1339,\n\t\"./products/productos-pro.svg\": 1340,\n\t\"./products/sales.svg\": 1341,\n\t\"./products/showroom.svg\": 1342,\n\t\"./products/signage.svg\": 1343,\n\t\"./products/supplies.svg\": 1344,\n\t\"./products/tables.svg\": 1345,\n\t\"./products/tags.svg\": 1346,\n\t\"./products/test-kit.svg\": 1347,\n\t\"./products/torre-expositor.svg\": 1348,\n\t\"./products/warehouse.svg\": 1349,\n\t\"./products/workwear.svg\": 1350,\n\t\"./profile.svg\": 1351,\n\t\"./rectangle-view-off.svg\": 1352,\n\t\"./rectangle-view-on.svg\": 1353,\n\t\"./search.svg\": 1354,\n\t\"./send.svg\": 1355,\n\t\"./sent.svg\": 1356,\n\t\"./slab.svg\": 1357,\n\t\"./star.svg\": 1358,\n\t\"./tabla.svg\": 524,\n\t\"./trash.svg\": 1359,\n\t\"./tresd-icon.svg\": 1360,\n\t\"./triangle.svg\": 345,\n\t\"./truck.svg\": 1361,\n\t\"./twitter.svg\": 525,\n\t\"./union.svg\": 1362,\n\t\"./user-inverted.svg\": 421,\n\t\"./user.svg\": 526,\n\t\"./warning-triangle.svg\": 422,\n\t\"./youtube.svg\": 527\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1084;","module.exports = __webpack_public_path__ + \"static/media/A0.eab6037d.svg\";","module.exports = __webpack_public_path__ + \"static/media/AP.2b57e84a.svg\";","module.exports = __webpack_public_path__ + \"static/media/B0.2b57e84a.svg\";","module.exports = __webpack_public_path__ + \"static/media/BB.2b57e84a.svg\";","module.exports = __webpack_public_path__ + \"static/media/BD.2b57e84a.svg\";","module.exports = __webpack_public_path__ + \"static/media/C0.e8c0964e.svg\";","module.exports = __webpack_public_path__ + \"static/media/D0.ebed3403.svg\";","module.exports = __webpack_public_path__ + \"static/media/DA.2b57e84a.svg\";","module.exports = __webpack_public_path__ + \"static/media/HE.ebed3403.svg\";","module.exports = __webpack_public_path__ + \"static/media/HO.ebed3403.svg\";","module.exports = __webpack_public_path__ + \"static/media/HQ-icon.ba9fdcf6.svg\";","module.exports = __webpack_public_path__ + \"static/media/PO.2b57e84a.svg\";","module.exports = __webpack_public_path__ + \"static/media/Recurso 3.204afbad.svg\";","module.exports = __webpack_public_path__ + \"static/media/Recurso 4.cd689786.svg\";","module.exports = __webpack_public_path__ + \"static/media/activity.21a5c783.svg\";","module.exports = __webpack_public_path__ + \"static/media/app-store.cc9bf945.svg\";","module.exports = __webpack_public_path__ + \"static/media/bars-white.93b692af.svg\";","module.exports = __webpack_public_path__ + \"static/media/calendar-2.ac18cc30.svg\";","module.exports = __webpack_public_path__ + \"static/media/calendar.4dac7728.svg\";","module.exports = __webpack_public_path__ + \"static/media/camion.9f16d8ed.svg\";","module.exports = __webpack_public_path__ + \"static/media/cart.1f985188.svg\";","module.exports = __webpack_public_path__ + \"static/media/chat.522c7d30.svg\";","module.exports = __webpack_public_path__ + \"static/media/chatter.559923d4.svg\";","module.exports = __webpack_public_path__ + \"static/media/chevron-right.4edb03b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/chevron-up.49988e65.svg\";","module.exports = __webpack_public_path__ + \"static/media/circle-view-off.02d126f1.svg\";","module.exports = __webpack_public_path__ + \"static/media/circle-view-on.df5d43b9.svg\";","module.exports = __webpack_public_path__ + \"static/media/coins.5891dd2b.svg\";","module.exports = __webpack_public_path__ + \"static/media/cosentino-global-icon-c.7f3097e7.svg\";","module.exports = __webpack_public_path__ + \"static/media/cross-black.86cc322b.svg\";","module.exports = __webpack_public_path__ + \"static/media/cross-white.0aae3e8d.svg\";","module.exports = __webpack_public_path__ + \"static/media/danger.09c15373.svg\";","module.exports = __webpack_public_path__ + \"static/media/download.797ae2f0.svg\";","module.exports = __webpack_public_path__ + \"static/media/ecosentino-white.b00e5719.svg\";","module.exports = __webpack_public_path__ + \"static/media/edit.9708173e.svg\";","module.exports = __webpack_public_path__ + \"static/media/elaborated-white.cd24b0ea.svg\";","module.exports = __webpack_public_path__ + \"static/media/fav.abb386e3.svg\";","module.exports = __webpack_public_path__ + \"static/media/filter-black.b588fd67.svg\";","module.exports = __webpack_public_path__ + \"static/media/filters.913edbac.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-catalog-download.8278a99a.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-catalog-info.d598133a.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-catalog-shipping-truck.401d1838.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-catalog-slabs.903e69ec.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-catalog-warning.9c476ed0.svg\";","module.exports = __webpack_public_path__ + \"static/media/info.4d70e77b.svg\";","module.exports = __webpack_public_path__ + \"static/media/landing-mngr.0b891806.svg\";","module.exports = __webpack_public_path__ + \"static/media/login.045b3407.svg\";","module.exports = __webpack_public_path__ + \"static/media/flooring.713f4b12.svg\";","module.exports = __webpack_public_path__ + \"static/media/skirting.fd9e6cc3.svg\";","module.exports = __webpack_public_path__ + \"static/media/just-cut.ea290667.svg\";","module.exports = __webpack_public_path__ + \"static/media/Soleria-v2.f418df97.png\";","module.exports = __webpack_public_path__ + \"static/media/Rodapies-v2.2e6e2b1e.png\";","module.exports = __webpack_public_path__ + \"static/media/solo-corte-v2.41f3bf05.png\";","module.exports = __webpack_public_path__ + \"static/media/presupuesto_det.491a5bf9.png\";","module.exports = __webpack_public_path__ + \"static/media/washbasin-bath.0c218bc3.png\";","module.exports = __webpack_public_path__ + \"static/media/grip.551ea534.svg\";","module.exports = __webpack_public_path__ + \"static/media/grip-plus.f70f6a89.svg\";","module.exports = __webpack_public_path__ + \"static/media/hybriq.43d4b214.svg\";","module.exports = __webpack_public_path__ + \"static/media/nboost.47377765.svg\";","module.exports = __webpack_public_path__ + \"static/media/ukiyo.2bd156f3.svg\";","module.exports = __webpack_public_path__ + \"static/media/optimma-logo.8c3930ae.svg\";","module.exports = __webpack_public_path__ + \"static/media/silestone-xm.d3776461.svg\";","module.exports = __webpack_public_path__ + \"static/media/banner-tarificador.a63e2369.png\";","module.exports = __webpack_public_path__ + \"static/media/promo_natural_stone_catalog_v2.3c18fe05.png\";","module.exports = __webpack_public_path__ + \"static/media/outlet-offpacksmart.15948894.mp4\";","module.exports = __webpack_public_path__ + \"static/media/outlet-digital-esp.20f4f352.mp4\";","module.exports = __webpack_public_path__ + \"static/media/outlet-digital-en.5c1cd111.mp4\";","module.exports = __webpack_public_path__ + \"static/media/custom-product-icon.744f9e0a.svg\";","module.exports = __webpack_public_path__ + \"static/media/wide.397e0b55.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.5a5579a7.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.8726d214.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.4b330855.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.e58a580b.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.977683a6.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.ad28a9c3.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.bc4cb7a5.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.8bac15d2.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.6f437ee2.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.0a1aa2df.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.06d2bd74.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.bd81bccf.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.a14ffdc3.jpg\";","module.exports = __webpack_public_path__ + \"static/media/Silestone-Flash-Promo-Flyer-Canada.f5b37666.pdf\";","module.exports = __webpack_public_path__ + \"static/media/Silestone-Flash-Promo-Flyer-USA.e6424fd1.pdf\";","module.exports = __webpack_public_path__ + \"static/media/hybriq_1140x200.c99c21b6.png\";","module.exports = __webpack_public_path__ + \"static/media/hybriq_210x210.7e8457d6.png\";","module.exports = __webpack_public_path__ + \"static/media/wide.c88425f2.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.400c2eba.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.eabdc493.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.07054690.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.d3f2bea5.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.1f37bb78.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.b779ed3c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.4267d9d4.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.850cf59b.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.f2399f31.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.90ab94d7.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.9eb024c1.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.a64bcf9a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.5fe7e919.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.f14bb2ea.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.4edb9410.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.8d933e52.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.2eb37fe6.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.6170d57b.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.6f353f9c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.3a0049c5.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.907bdfd0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.b00839d9.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.7db753c2.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.ae2fdaa3.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.c43b935a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.6340e988.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.d3b52e04.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.2db74fe0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.bcdd6918.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.669f1cfc.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.95cf7661.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.c49bd40e.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.3038a918.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.1167f746.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.ed3b7e5f.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.1515d5bc.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.53b30534.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.c974ee68.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.3b40f69c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.3b96bc4a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.05bffa26.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.930a2bcb.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.61a6800d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/wide.c222b52c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/squared.b2c19076.jpg\";","module.exports = __webpack_public_path__ + \"static/media/logo-silestone-xm.d304db8d.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/silestone-xm-background-img.a38f09f0.png\";","module.exports = __webpack_public_path__ + \"static/media/rock-master.514f130d.png\";","module.exports = __webpack_public_path__ + \"static/media/truck.23268c5a.svg\";","module.exports = __webpack_public_path__ + \"static/media/container.84690924.svg\";","module.exports = __webpack_public_path__ + \"static/media/promo_natural_stone_v2.3f253575.png\";","module.exports = __webpack_public_path__ + \"static/media/favoritos.a7d1345f.png\";","module.exports = __webpack_public_path__ + \"static/media/pre-order-banner.304ccd91.png\";","import { injectIntl } from 'react-intl';\nimport React from 'react'\nimport Translation from '../global/Translation'\n\nimport Lightbox from 'react-image-lightbox'\nimport { copy } from '../../helpers'\nimport { connect } from 'react-redux'\nimport Add2CartSuccessContainer from '../add2cart-success/Add2CartSuccessContainer'\nimport Spinner from '../global/Spinner'\nimport { byProductId } from '../../store/products/reducers'\nimport { fetchProduct } from '../../store/products/actions'\nimport {getCurrentProductLots, getBundlesRejectionCodes} from '../../store/lots/reducers'\nimport { goBack } from 'react-router-redux'\nimport IntegerInputNumber from \"../input-number-other/IntegerInputNumber\";\nimport {addCartLineBundle, addCartLineLot} from \"../../store/cart/actions\";\nimport DisplayOutletIndicator from \"../catalog/rectangleResult/displays/DisplayOutletIndicator\";\nimport {getIsAdding, isSuccessfullyAddedToCart} from \"../../store/cart/reducers\";\nimport {canViewAllLots} from \"../../store/centers/reducers\";\nimport {getLastSelectedProduct} from \"../../store/selected-objects/reducers\";\nimport ProductDisplayName from '../global/ProductDisplayName'\nimport { rejectionCodeMap, getBundleRejectionCode } from '../lots/utils';\n\n\nconst mapStateToProps = (state, ownProps) => {\n    return {\n        product: byProductId(state, ownProps.productId),\n        productLots: getCurrentProductLots(state),\n        isSuccessfullyAddedToCart: isSuccessfullyAddedToCart(state),\n        isAddingToCart: getIsAdding(state),\n        canViewAllLots: canViewAllLots(state),\n        lastSelectedProduct: getLastSelectedProduct(state),\n        bundlesRejectionCodes: getBundlesRejectionCodes(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchProduct: productId => {\n            dispatch(fetchProduct(productId))\n        },\n        goBack: () => {dispatch(goBack())},\n        buyLot: (productId, lotId, centerId) => {\n            dispatch(addCartLineLot(productId, lotId, centerId))\n        },\n        buyBundle: (productId, bundleId, qty, centerId) => {\n            dispatch(addCartLineBundle(productId, bundleId, qty, centerId))\n        }\n    }\n}\n\n\nclass LotImageViewer extends React.Component {\n    constructor(props) {\n        super(props)\n\n        props.fetchProduct(this.props.productId)\n\n        this.state = {\n            photoIndex: this.getIndex(),\n            quantity: 1,\n            addedLots: {},\n            isAddingToCart: false\n        }\n\n        this.closeWindow = this.closeWindow.bind(this)\n        this.copyLink = this.copyLink.bind(this)\n    }\n\n    componentDidMount() {\n        document.body.style.overflow = 'hidden'\n    }\n\n    componentWillUnmount() {\n        document.body.style.overflow = 'auto'\n    }\n\n    componentDidUpdate(prevProps) {\n        if (this.state.isAddingToCart && prevProps.isAddingToCart && !this.props.isAddingToCart) {\n            this.setState({isAddingToCart: false})\n            if (this.props.isSuccessfullyAddedToCart) this.closeWindow()\n        }\n    }\n\n    getIndex = () => {\n        return Math.max(0 , this.props.productLots.findIndex(b => b.lot_id === this.props.lotId))\n    }\n\n    closeWindow() {\n        this.props.goBack()\n    }\n\n    copyLink() {\n        copy(global.location.href)\n    }\n\n    setQuantity = (quantity) => {\n        this.setState({quantity: quantity})\n    }\n\n    addToCart = (currentLot) => {\n        this.setState({isAddingToCart: true})\n\n        const {productId, centerId, buyLot, buyBundle} = this.props\n        const isBundle = currentLot && currentLot.bundleId && true\n        if (isBundle) buyBundle(productId, currentLot.bundleId, this.state.quantity, centerId)\n        else if (currentLot && currentLot.lot_id) buyLot(productId, currentLot.lot_id, centerId)\n\n        //Update available lots count\n        // {\n        //     let addedLots = this.state.addedLots[this.state.photoIndex] ? this.state.addedLots[this.state.photoIndex] : 0;\n        //     addedLots += this.state.quantity\n        //     this.state.addedLots[this.state.photoIndex] = addedLots\n        //     this.forceUpdate()\n        // }\n    }\n\n    getMeasure = (field, current_lot, isSurface) => {\n        let localeField = field + '_' + this.props.unit\n        if (isSurface) localeField += '2'\n        return current_lot[localeField]\n    }\n\n    render() {\n        const { isAdmin, productId, productLots, outlet, impersonatedBy, canViewAllLots, bundlesRejectionCodes } = this.props\n        const { photoIndex } = this.state;\n        const prevIndex = (photoIndex + productLots.length - 1) % productLots.length\n        const nextIndex = (photoIndex + 1) % productLots.length\n        const currentLot = productLots && productLots.length && productLots[photoIndex]\n\n        if (!currentLot) return null\n\n        const width =this.getMeasure('width', currentLot)\n        const length = this.getMeasure('length', currentLot)\n        const surface = this.getMeasure('qty', currentLot, true)\n        const isBundle = currentLot.bundleId && true\n\n        const addedLots = this.state.addedLots[this.state.photoIndex] ? this.state.addedLots[this.state.photoIndex] : 0;\n        const maxCount = currentLot && (currentLot.count - addedLots)\n\n\n\n        return (\n            <section id=\"section-lots-viewer\">\n                <div className=\"carousel\">\n                    {currentLot && !this.state.isAddingToCart ? (\n                        <div>\n                            <Lightbox\n                                mainSrc={currentLot.image}\n                                // mainSrcThumbnail={currentLot.thumb}\n                                // prevSrcThumbnail={productLots[prevIndex].thumb}\n                                // nextSrcThumbnail={productLots[nextIndex].thumb}\n                                prevSrc={productLots[prevIndex].image}\n                                nextSrc={productLots[nextIndex].image}\n                                onCloseRequest={this.closeWindow}\n                                wrapperClassName={'carousel-custom'}\n                                onMovePrevRequest={() =>\n                                    this.setState({\n                                        photoIndex: (photoIndex + productLots.length - 1) % productLots.length\n                                    })\n                                }\n                                onMoveNextRequest={() =>\n                                    this.setState({\n                                        photoIndex: (photoIndex + 1) % productLots.length\n                                    })\n                                }\n                                imagePadding={60}\n                                imageTitle={\n                                    <div className=\"lot-viewer-title\">\n                                        <div>\n                                            <div>\n                                                {isBundle ? (\n                                                        <React.Fragment>Bundle {currentLot.bundleId}</React.Fragment>\n                                                    ) : (\n                                                        <React.Fragment>\n                                                            {(isAdmin || impersonatedBy || canViewAllLots) && (\n                                                                <span>\n                                                                    <Translation id=\"lot\" defaultMessage=\"Lot\" /> {currentLot.lot_id}\n                                                                </span>\n                                                            )}\n                                                        </React.Fragment>\n                                                    )}{' '}\n                                                    <ProductDisplayName product={this.props.lastSelectedProduct} />\n                                                    {this.props.lastSelectedProduct.thickness}cm{' '}\n                                                    {this.props.intl.formatMessage({ id: this.props.lastSelectedProduct.finish })}{' '}\n                                            </div>\n\n                                            {outlet && currentLot.qualityOutlet && (\n                                                <div className=\"m-auto\" style={{ width: 'fit-content' }}>\n                                                    <DisplayOutletIndicator outletQuality={currentLot.qualityOutlet} />\n                                                </div>\n                                            )}\n                                        </div>\n\n                                        <div className=\"lot-viewer-header-btns\">\n                                            <div className=\"bt\">\n                                                <a href={process.env.REACT_APP_API_HOST + '/helper/download-url/?url=' + encodeURIComponent(currentLot.image)}>\n                                                    <i className=\"fal fa-download mr-1\" />\n                                                    <span className=\"lot-viewer-download\"><Translation id=\"download\" defaultMessage=\"Download\" /></span>\n                                                </a>\n                                            </div>\n                                            <div className=\"bt\">\n                                                <span onClick={this.copyLink}>\n                                                    <i className=\"fal fa-link mr-1\" />\n                                                    <span className=\"lot-viewer-copy-link\"><Translation id=\"copy_link\" defaultMessage=\"Copy link\" /></span>\n                                                </span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                }\n                                imageCaption={\n                                    <div className=\"lot__viewer__contents\">\n                                        <div className=\"lot__viewer__contents--left\">\n                                            <div>\n                                                {(isAdmin || impersonatedBy || canViewAllLots) && (\n                                                    <div className=\"\">\n                                                        <b><Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />:</b> {currentLot.lot_id}\n                                                    </div>\n                                                )}\n                                                <div>\n                                                    <b>\n                                                        <Translation id=\"quarryBlock\" defaultMessage=\"Quarry Block\" />:\n                                                    </b>{' '}\n                                                    {currentLot.quarryBlock}\n                                                </div>\n                                                <div>\n                                                    <b>\n                                                        <Translation id=\"quality\" defaultMessage=\"Quality\" />:\n                                                    </b>{' '}\n                                                    {currentLot.quality}\n                                                </div>\n\n                                                {(isAdmin || impersonatedBy) && (\n                                                    <div>\n                                                        <b>\n                                                            <Translation id=\"shade\" defaultMessage=\"Shade\" />:\n                                                        </b>{' '}\n                                                        {currentLot.shade}\n                                                    </div>\n                                                )}\n                                            </div>\n\n                                            <div>\n                                                {(isAdmin || impersonatedBy) && (\n                                                    <div>\n                                                        <b>\n                                                            <Translation id=\"location\" defaultMessage=\"Location\" />:\n                                                        </b>{' '}\n                                                        {currentLot.location}\n                                                    </div>\n                                                )}\n                                                <div>\n                                                    <b>{isBundle ? <Translation id=\"main_size\" defaultMessage=\"Main size\" /> : <Translation id=\"size\" defaultMessage=\"Size\" />}</b>:{' '}\n                                                    {length} x {width} {this.props.unit}\n                                                </div>\n                                                <div>\n                                                    <b>\n                                                        {isBundle ? (\n                                                            <Translation id=\"main_surface\" defaultMessage=\"Main surface\" />\n                                                        ) : (\n                                                            <Translation id=\"surface\" defaultMessage=\"Surface\" />\n                                                        )}\n                                                    </b>\n                                                    : {surface} {this.props.unit}2\n                                                </div>\n                                                <div>\n                                                    <b>\n                                                        <Translation id=\"units_available\" defaultMessage=\"Available units\" />:\n                                                    </b>{' '}\n                                                    {currentLot.count}\n                                                </div>\n                                            </div>\n\n\n                                            {/* Rejection code when is not Bundle, that means when is only lot */}\n                                            {!isBundle && currentLot.rejectionCode && (\n                                                <div className=\"row_lot__info__status\">\n                                                    <div className=\"row_lot__info__status--icon\">\n                                                        <i class=\"fas fa-exclamation-circle\"></i>\n                                                    </div>\n                                                    <div className=\"row_lot__info__status--text\">\n                                                        <div><span className=\"main-text\"><Translation id=\"material_status_information\" defaultMessage=\"Material status information\" /></span>:&nbsp;</div>\n                                                        <div><span className=\"categories\">{rejectionCodeMap[currentLot.rejectionCode]}</span></div>\n                                                    </div>\n                                                </div>\n                                            )}\n\n                                            {/* Rejection code when is Bundle, that means when is not only lot */}\n                                            {isBundle && getBundleRejectionCode(currentLot, bundlesRejectionCodes) && (\n                                                <div className=\"row_lot__info__status\">\n                                                    <div className=\"row_lot__info__status--icon\">\n                                                        <i class=\"fas fa-exclamation-circle\"></i>\n                                                    </div>\n                                                    <div className=\"row_lot__info__status--text\">\n                                                        <div><span className=\"main-text\"><Translation id=\"material_status_information\" defaultMessage=\"Material status information\" /></span>:&nbsp;</div>\n                                                        <div><span className=\"categories\">{rejectionCodeMap[getBundleRejectionCode(currentLot, bundlesRejectionCodes)]}</span></div>\n                                                    </div>\n                                                </div>\n                                            )}\n                                        </div>\n\n                                        <div className=\"lot__viewer__contents--right\">\n                                            <div className=\"text-end\">\n                                                <span>\n                                                    {\n                                                        !isBundle && (\n                                                                <Translation id=\"this_lot_or_table_does_not_belong_to_any_bundle\" defaultMessage=\"This lot or table does not belong to any bundle\" />\n                                                        )\n                                                    }\n                                                </span>\n                                            </div>\n                                            {this.props.lastSelectedProduct && !this.props.lastSelectedProduct.fromMall && !isAdmin && (\n                                                <div className=\"button-quantity-block\">\n                                                    <IntegerInputNumber max={maxCount} min={1} valueDefault={1} onChangeValue={v => this.setQuantity(v)}/>\n                                                    <div>\n                                                        <button\n                                                            className=\"button-block\"                                                    \n                                                            onClick={() => this.addToCart(currentLot)}\n                                                        >\n                                                            <i className=\"fal fa-shopping-cart mr-1\" />\n                                                            <Translation id=\"add\" defaultMessage=\"Add\" />\n                                                        </button>\n                                                    </div>\n                                                </div>\n                                            )}\n                                        </div>\n                                    </div>\n                                }\n                                toolbarButtons={[]}\n                            />\n                            {/*<Add2CartSuccessContainer productId={productId} />*/}\n                        </div>\n                    ) : (\n                        <Spinner loading={true} />\n                    )}\n                </div>\n            </section>\n        )\n    }\n}\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(LotImageViewer))","module.exports = __webpack_public_path__ + \"static/media/mall-discount-bg-green.4dce7e98.svg\";","module.exports = __webpack_public_path__ + \"static/media/newsletter.5e8b76d9.jpg\";","module.exports = __webpack_public_path__ + \"static/media/whatsapp-ecosentino-logo.ee22ff12.svg\";","module.exports = __webpack_public_path__ + \"static/media/pedidos_recurrentes.ca65c8eb.png\";","module.exports = __webpack_public_path__ + \"static/media/promo-image-en.13b4d058.jpg\";","module.exports = __webpack_public_path__ + \"static/media/promo-image-fr.48f9a798.jpg\";","module.exports = __webpack_public_path__ + \"static/media/flyer-2011.cd5fb780.pdf\";","module.exports = __webpack_public_path__ + \"static/media/flyer-2032-en.cd5fb780.pdf\";","module.exports = __webpack_public_path__ + \"static/media/flyer-2032-fr.7a947ca5.pdf\";","module.exports = __webpack_public_path__ + \"static/media/promo-colors.d16e99f4.jpg\";","module.exports = __webpack_public_path__ + \"static/media/logo-silestone.5f4c7460.jpg\";","module.exports = __webpack_public_path__ + \"static/media/logo-dekton.d1d378df.jpg\";","module.exports = __webpack_public_path__ + \"static/media/logo-dktn.ec7b2939.jpg\";","module.exports = \"data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMuaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA2LjAtYzAwMiA3OS4xNjQzNTIsIDIwMjAvMDEvMzAtMTU6NTA6MzggICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMS4xIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjQyQkQ4MjA3QTk5MTExRUJCOTNBOUNCODQ5OTcwMzRFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjQyQkQ4MjA4QTk5MTExRUJCOTNBOUNCODQ5OTcwMzRFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDJCRDgyMDVBOTkxMTFFQkI5M0E5Q0I4NDk5NzAzNEUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDJCRDgyMDZBOTkxMTFFQkI5M0E5Q0I4NDk5NzAzNEUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkL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pjy2dHGkFuDeCOIIuXAQf+sg3vbu3sXt7ExYrFskjpQFxjZLLLO4c7i4/hJnPeeJ7ygySAgINXtdMtkWd4Q7xlxo/iKAtLLrJJWaua0sDnRtcI3HlOmpb9ZBtCAgIMfm9v4nNwV4MnB84iq2YbkDeZzdJ67ueN3wFuvK7uPA96DIIND3N0N6Y7isuuXMMyveceY26L31Xlx+UREWscfW5pQYKXyz7AmZ4c17Myw/8l99zmaejQtQbJtHo1042nO21h8PGLrOLbthz7EzT6WOlLuQ/caIN1QEBBpe7ujvT7d+UGUz+PfbuiNsIeLNiJvIzUtHJHIxvyjx0QYT+mno1+xH/plz8qg3rbG2MNtjDQ4bDQugx9cvMUT5JJiDI4vd8crnvPF3pQZVAI1GiCMpfLd0flkdJLhpHveSXOdduEkn/wB1B8f009Gv2G/9MuflUH7/AE09G/2I/wDTLn5VBImIxVLEYqni6DDHSowx160bnOeWxxNDGAueXOdoB2k6oO2gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/2Q==\"","module.exports = __webpack_public_path__ + \"static/media/ecosentino-logo-negative.e991eb3c.svg\";","module.exports = __webpack_public_path__ + \"static/media/something-went-wrong-icon.509541c8.svg\";","module.exports = __webpack_public_path__ + \"static/media/Path-v2.8958be71.png\";","module.exports = __webpack_public_path__ + \"static/media/logout.f8fe78a6.svg\";","module.exports = __webpack_public_path__ + \"static/media/mail.bdee0336.svg\";","module.exports = __webpack_public_path__ + \"static/media/money.7080fe96.svg\";","module.exports = __webpack_public_path__ + \"static/media/nexus.3e3b5dc1.svg\";","module.exports = __webpack_public_path__ + \"static/media/platoducha-white.075e30c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/play-store.5239a283.svg\";","module.exports = __webpack_public_path__ + \"static/media/anchors.28cf1e35.svg\";","module.exports = __webpack_public_path__ + \"static/media/caja.8ea00474.svg\";","module.exports = __webpack_public_path__ + \"static/media/fregadero.204afbad.svg\";","module.exports = __webpack_public_path__ + \"static/media/gabinets.06657e57.svg\";","module.exports = __webpack_public_path__ + \"static/media/lavabos.cd689786.svg\";","module.exports = __webpack_public_path__ + \"static/media/libro.e1033628.svg\";","module.exports = __webpack_public_path__ + \"static/media/merchandising.0fba6832.svg\";","module.exports = __webpack_public_path__ + \"static/media/mktools.03fbe0b8.svg\";","module.exports = __webpack_public_path__ + \"static/media/muestra.e422fa36.svg\";","module.exports = __webpack_public_path__ + \"static/media/news.82d93197.svg\";","module.exports = __webpack_public_path__ + \"static/media/operaciones.5edb3fda.svg\";","module.exports = __webpack_public_path__ + \"static/media/otros.2a3bdb27.svg\";","module.exports = __webpack_public_path__ + \"static/media/papeleria.41a7a2bd.svg\";","module.exports = __webpack_public_path__ + \"static/media/platoducha.075e30c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/ppcc.cd24b0ea.svg\";","module.exports = __webpack_public_path__ + \"static/media/ppe.0f9336f2.svg\";","module.exports = __webpack_public_path__ + \"static/media/productos-pro.a9a3e73a.svg\";","module.exports = __webpack_public_path__ + \"static/media/sales.214841a4.svg\";","module.exports = __webpack_public_path__ + \"static/media/showroom.b91f35ab.svg\";","module.exports = __webpack_public_path__ + \"static/media/signage.fa1ac7b1.svg\";","module.exports = __webpack_public_path__ + \"static/media/supplies.47936bd6.svg\";","module.exports = __webpack_public_path__ + \"static/media/tables.3da7c187.svg\";","module.exports = __webpack_public_path__ + \"static/media/tags.f4160ec1.svg\";","module.exports = __webpack_public_path__ + \"static/media/test-kit.dbf29554.svg\";","module.exports = __webpack_public_path__ + \"static/media/torre-expositor.c038eae9.svg\";","module.exports = __webpack_public_path__ + \"static/media/warehouse.ded61599.svg\";","module.exports = __webpack_public_path__ + \"static/media/workwear.b8e642be.svg\";","module.exports = __webpack_public_path__ + \"static/media/profile.00c3813b.svg\";","module.exports = __webpack_public_path__ + \"static/media/rectangle-view-off.1da91148.svg\";","module.exports = __webpack_public_path__ + \"static/media/rectangle-view-on.e8ec6bc2.svg\";","module.exports = __webpack_public_path__ + \"static/media/search.9841d690.svg\";","module.exports = __webpack_public_path__ + \"static/media/send.44c49b67.svg\";","module.exports = __webpack_public_path__ + \"static/media/sent.20f23298.svg\";","module.exports = __webpack_public_path__ + \"static/media/slab.b27dc515.svg\";","module.exports = __webpack_public_path__ + \"static/media/star.f3e4577e.svg\";","module.exports = __webpack_public_path__ + \"static/media/trash.df4ed3ae.svg\";","module.exports = __webpack_public_path__ + \"static/media/tresd-icon.ef927ee7.svg\";","module.exports = __webpack_public_path__ + \"static/media/truck.75107d49.svg\";","module.exports = __webpack_public_path__ + \"static/media/union.ceec8d52.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAABP9JREFUaAXlm02ITWEYx+dKRESURBYWmgWhJiGTDBsLC18bNlcWlJ1kqSwtlI2aLJWUjaxQFndGI9/FxsdCKDSUotGYfP/+977vvWeOc97zfe+ZuU/95z3nfZ/neZ//Oe+57+dU/iI9xcg4bkfAY/DSYJR0zICkZ77BUtJegz7SfjAX5C6VnAl/IsLL4Cq4X6lUfqSJmJhmYbcR7AUHwRKQj4hwDjKMj11gZj5RtbzIp/GtOjJLT0YPNezV/NoiqguoztSSlvAHajzQFpYBlahuoBgSSxrC16llQUAcbc1SDECxJJKkhM/ifUZbmTkqUyxAMcWWuIQn8Fh11N3RIsUGFGOkxCH8CS+bO8ooRuWKEShWp0QR1lMrPVn7PBQrcL7pKMKlbcaWpD+FcBWEiovwWb+zqXIP29AfsjDC+rkvza9x0get2EFglxVEWB16pn4W+yPgJ0gr3zDcmpSoVx979dP/DU6Cxr4nGPR/9RqnuN6CjXy/AhMJ7Reivxxo1nQ7oW1TXRwgfIIMTWZaQqZXaq2S9Fc4vGicrkvqBbuqsT2e1DZIH18146+e+L/TU0FGUzxvEidvkx6mGYy4yPGIKpTvAatcepStMeWHsfkQoesvVlOW7MBW8+Iw+UPBA2IeDlNQvjjhR59G4zeBGyu7XIYqQ3HQKpcoPRojbs3V62JXPLRSsZyn8ctljMU3yr8D/RjoCXdS5lH5ILhD3M45OXGrJb8HS2y3dI6bSGk8o79PIhXbpJAkHnTPSd/+aGkNarpLnaMIa3Xx/nRnaziOi/AI30Cq1cWp9JAMxzsirHXjbpFHIqxF8m6Rl11HWP2Ttj8KFXqDZVQw4KjkJ2U3+M7GHDp5FI2qH14c15P6MSRxP4zNzbql+8+ZuHFYPeMudjzoL9YbLvqpKj5N+SQayPtHcyvIOwasDpeFyZiGlrPidkt6ooSiufKthCFtR38RmENdk+bHuNxE/l3wGiTpMTSR2Qee4nM9aaSIq96wtiw/R2q3FLQasr91m9vVSjwJRcr8NITVje1OGNUV9NdG2EjndISOv/i5PyPivk5Ym9FvIhS9xRM0oRfejKhrmpJmWJKxxlfRuDF/1TQlX1L4bVjG/7tUb1g77/fi26TSvISVPgVLzu9E3dI1f2YB972WcAG+Wy55c+e5EzotvRpp9XU6ijbW3yfC2lV3rR21MZ7iqjIc+0VYp2U2FldVaTyL41wRlui0zHSXBkdeteQj0A+YU+qaKcbSTqcZCuPGI25AHJtrWjoHtTND3WU3Fbf6WS/bpBXwyZhRR7aEmH4yqemtGQca30dJk5s1ksFWnPTTZ444rJ9Rthq9t6RxKnK4ylw023hQTKEiThQ2dyLtQrw1GILwgL3xpxhvIO8C0FZL2KjJb1bU/W8cPwSHiPldWCXEXKNsW7OcDL8caBZO8QuI6QDbJLE7D97MzBviZXhOEArcEA8iLPJddeTBvu2uOtRiSVfL0DyTxEDgVRt8UBrWpK1u1x1ME/GuOnrofdOlbd4EWQXOI4eWSFSTtno27Zrjw5awUnVZWp/qqCgGEwtJfEn6hq1nDU46NiJT3eC/U3Y2OFealrD1WePCeaAkz2aguoDqTC1ZCduKh7jQ0SDv7CsXrvJpfKuOzOKfLWUNsvT/qJU3Ye8DG+dGc2ttkGl7RhgF2q20O5ba1xK0+6ENAUHLxvpMtLiYu/wDetr96oMrc9QAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAAA9CAYAAAAeYmHpAAAACXBIWXMAAAsSAAALEgHS3X78AAAFLElEQVRogdVb7W3cOBCdW9yvQwCrgygV7HYQuYLoKvCmgmwH0XawqSByBVYqiFLByRWctgMZMO4vD1y8CcYyJfFTth/AOLsrkvM4wyFnSP2hlNoRUUbr4y8i+u8F+u016ZaIPibq4ExEnSgDSiee4UHPUQp8d5VIpuOfCRq9J6KaiBo9qhbPdxPfa+J7IiqJ6H1MATeR2nkgolsi+gBhT5aE56AH4wDtX6P9KIhB+gjB9hGITqFF+x9ikA8h/QNCVJina6AH+WtMo9VIa1P+jLmWSrNLaDGNjj6VXUnfo7M6WOw4qKD1B5fWXEj/wHLyUtqdAmvd2txtSd/CnNeau67ooRAr4jakb+E8XjsGW+JLpO/fCGEGE5+d43Okz2jgrWGR+Bzp1zyHl9DBsxsxRfo4sycORQGBWhQlSoflsIzQj94K/zL9YIqyzthWxkQOouUoehoLpaOtrZDjhOKLHAMp+zySJq2eolBKUaSSK6Vq0XqnlDroGH6mfV2nUkoNok4eII9uS6Iak24jEt4LwVuPwcyUUifUHxYGaqmdYY50LC3XQtgy0uCFEK+mSPeRCXcY5Rht7sQg+rSZSdLSe4c4DIb2vDdinx5ryesQ2V0hI+OK4UkcLjQd4izYDGNreFwa9LH3qFuypnnJyhCp+CIX6zovdw00HzMMzRBcDJDX1ZL08yc2bx+Tkahgens0zGt/7B3dgGn43nMD017+9VxOZMlHy90Bn0+JTJyXIB/He5DeO0QI9taFEMjXy9oWXoJcl8OCvXdIJiSDmd2LjOUVUrcpgxX2E64mfvE7oaQLkGQh9gjpQn3EEnoMtCvpiyI2gRrhTht47S3+v0ZIWmPAXYm3m8AQskA01I8GYA00sKraNbujSb/zFDDD0tHiM6/z7UydUMi9RC92fS6k32nSj56CsAByU3JOZNp8sPDPiPggNiy2eAw51jGRTpET12Z8B3Iyo1OKBIHTlNoEbD/5IJ+JRj1OBfRAfkIAs8POL8cUusMzfzuSzjYBtxB4jy21249+D73h0OOQkJ2kdlr/Yot7iz5cHeduE5APm6uXQbiDZ9tjMNkb5NWuxT7fBRclbAI0YiLN3/GUCXFq+QTZImCFuMi1kR8cUIk5zHXP48Yt9gClYfB2CcgyCkna5SRDC/VVfGahK7EdZcuZ0nSBAbkbTYEDiMUmK2X/HVp2DpFKhwiHQ8jeEJpyFGRK5D1J0iEay0RWxNRerPIsMWiTLjoJYUmkiDie5lCPB8QkfINnub9SpGibhCFpaSJdWVTsDVYxTugrYQ1zbY7z2j55L5fSmEjbZCJYG6bfcmi4EZqbIl2gPzXSeqrC2Z1npJXFaPOzdUD+WWr3kJgsl8lkv422M/H8IByR7ZySxzyptStlnj3WsdE24Zle1KlByjQAOzGf1tSuScuTpHsH7e0n6rcocoRTeuapkqvnqKZuAX9z3DfL27vj3R0ftKc65J+DidvkLeAvqGAbwfSv6EIdo5q60j2XRKgT3EhYC8Voq2xNmjMSL3HrPwS7JQtdShdtYeZvhXgGwrNvBdjkyN4KcU4jLaatbBODr534DqvD1uJZp1vAW3jpkHPsFNhDIdYvurimgK+Qe568jbciMqww313f7PHNe3+FOb3U3VHOed/4VA5J9mtz/7nyel6InLd3nj3G2zo3SOI1ke50msDz9meMF+divoz2CeWMAWgCEnoZtFoa7pMGI8UbeNrs9N5dFw2d1eRXDuUgyHct+XaTnib6r9XS4wUi+h+siWLFmrH/IgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAAA9CAYAAAAeYmHpAAAACXBIWXMAAAsSAAALEgHS3X78AAAEdklEQVRogeVb7VHjMBBdGP9kBndAOsBXwTkVABWcqQBTAU4Flw4IHeQqwFcBSQVnKrgww3/dyPOWUYQVW1+Jw70ZD8axpX3e1Wq1K58IIXI6DM6I6P0APa8kaRGxg7XsRDkI5xucp0SU4Vz+nRCRVMJlRJmmMUg/EVFNREuFnC1SkL/GcR5QvimJMGiEEIUQIpXvMPCRou0mkKy5L2kmG5qo6cgDkM9PPcxkhjG4CGh6fajR5z0Rvbk24kJaOqdvRFQ5i+6PORzfb5eWbEk/obPVgHtjo4Gzm8UkfUtExQjI6qgg22AMJX2757FriwWG3KBxPoT02AkzVjD3XvSRPhbCjNUQU99F+unICDMWfc7NFIauYSquYeQYIOf07x1yTE2aLiIRTuFtG7Q/R7ARA4XJsXWRnkWYhzOY3V8sICoIJa//wW+hl7iNMYDS4tJN4EWDjMtrtL0QQlzj2goxdCmEyPCbwPXQsbweq3+KvcsAZp2inQbmK8fWDX5b4O0vFG2/4LcbLEcryFAFMv3PAZW2YvJ5oxNobKNokbXKms47nss6nis1C8kCantraVl5kGUBlxBYJzFkyKQdL6lUTL9GX67DrJO0a4O5Yil9Wh166NpnTbm2maKtLdJLDwFTCMPkUxEO3FaJ9n2cLFtMnmBo1x6OYqM9z47wHlOfnJZ+trmp3ZjDwfF0+ay0tfKUkeAkf8iTRLkQGrqgfUJvApEz4aNdOWW9Ynr56tggvG5J/w+EGa22E0dz2ndCcN4RNJUO4XKr4MRR07kSeal4NpxLDCkq6M8wFhrBCjG8Len2fh/S9Q4r6fPUttAd3BKknZA4Ppd3aJkRy/vqffx0eK6dQhNUD20g590LwzQXWsOqsPr/b4rFDYX0C2eJQ7k035Fk34eWGWzitn2+u1Q4bN9uLNQOiQfpfJ3KOmMifclEBqKthZ8qRfEhyFArHgPpBtGkdZrp1PJNyQ5+2XYSEbYm3t6bWD50jbRqzC0btlhb3N+mnxJL886VvzJ6OrF4VqD64JL3qhGFVUpQVDkMs5ZrgjHqW37NDMOk0SI+SfjBMOVlSj6ctGdCIOUNPByR5Z6k54ZqwsyQe+4aUibthSr+f4StTLqA4D6YKmSaEdayP140k76EGfmurR/gWMZWA0s5VURacGJaQHwFbFmdSrqwnLO7MMXLG9sL3JJHJX0eQFieTsawEYchlXmhXuiqZflqe2z45P110ucH3h8WGhVpWm5hqEX0lU/ygFUMV/TJmJm4mbZfvCJCOubtFyvDFmrj9ouLI91kw1js2jO+K4lwFSBKOwQKNRCxJS1xN9KtkSZIWR/7bhqSLno8EuKDCJNFjuxx5KZeDiVMlonBO6RdxxS8pHBaVol/22zolc3G08jIEPLudFohSBOms2eY+yG0zrsOX1w/ZfL5huNO2ZW3L/IF+nzwaSTUd1lvGFvzCEX+CciWgb7PivIx2hovwGeJOUFOK4cfCYkopFVIC+DaMm+kYajfWnI2VZKUhD+vjEKBaPoPre1qdEULfzoAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/ecosentino.09b9e60b.png\";","module.exports = __webpack_public_path__ + \"static/media/icon-dekton.6e9aa102.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjlFQzNGODI4OTg4MTFFOEJENzA5OEU1MjE2Qjk0REEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjlFQzNGODM4OTg4MTFFOEJENzA5OEU1MjE2Qjk0REEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2OUVDM0Y4MDg5ODgxMUU4QkQ3MDk4RTUyMTZCOTREQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2OUVDM0Y4MTg5ODgxMUU4QkQ3MDk4RTUyMTZCOTREQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmjt628AABIkSURBVHja7J0HsFxV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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODQ5MjYyNDg4OTg4MTFFOEE0RTFBQkFGREEyNjlGQTAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODQ5MjYyNDk4OTg4MTFFOEE0RTFBQkFGREEyNjlGQTAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4NDkyNjI0Njg5ODgxMUU4QTRFMUFCQUZEQTI2OUZBMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4NDkyNjI0Nzg5ODgxMUU4QTRFMUFCQUZEQTI2OUZBMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpxQL9YAACCjSURBVHja7J0JnFxF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\"","module.exports = __webpack_public_path__ + \"static/media/icon-table.d9a7b6ec.png\";","module.exports = __webpack_public_path__ + \"static/media/mktools.04c61e68.png\";","module.exports = __webpack_public_path__ + \"static/media/sinks.04af35f9.png\";","export const initState = {\n    infoEnv: null\n}\n\nconst changelog = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_INFO_DEV_SUCCESS':\n            return { ...state, infoEnv: action.infoEnv }\n        default:\n            return state\n    }\n}\nexport const getInfoEnv = state => {\n    return state.infoEnv.infoEnv\n}\nexport default changelog\n","export const initState = {\n    crossSelling: [],\n    crossSellingCheckout: [],\n    cartCrossSelling: {},\n    showCrossSellingModal: false,\n    boughtTogetherProducts: null,\n    cartSimilarProducts: null,\n    cartComplementaryProducts: null\n\n}\n\nconst crossSelling = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_PRODUCT_CROSSELLING_SUCCESS':\n            return Object.assign({}, state, { crossSelling: action.crossSelling })\n        case 'FETCH_ADD_TO_CART_CROSSELLING_SUCCESS':\n            return Object.assign({}, state, { cartCrossSelling: action.crossSelling })\n        case 'FETCH_PRODUCT_ALTERNATIVES_SUCCESS':\n            return Object.assign({}, state, { alternatives: action.alternatives })\n        case 'SHOW_CROSSELLLING_MODAL':\n            return Object.assign({}, state, { showCrossSellingModal: true })\n        case 'HIDE_CROSSELLLING_MODAL':\n            return Object.assign({}, state, { showCrossSellingModal: false })\n        case 'FETCH_PRODUCT_CROSSELLING_CHECKOUT_SUCCESS':\n            return Object.assign({}, state, { crossSellingCheckout: action.crossSelling })\n        case 'FETCH_BOUGHT_TOGETHER_SUCCESS':\n            return { ...state, boughtTogetherProducts: action.boughtTogether }\n        case 'FETCH_CART_SIMILAR_PRODUCTS_SUCCESS':\n            return { ...state, cartSimilarProducts: action.products }\n        case 'FETCH_CART_COMPLEMENTARY_PRODUCTS_SUCCESS':\n            return { ...state, cartComplementaryProducts: action.products }\n        default:\n            return state\n    }\n}\n\nexport const getCurrentCartCrossSelling = state => {\n    return state.crossSelling.cartCrossSelling\n}\nexport const getCurrentCrossSelling = state => {\n    return state.crossSelling.crossSelling\n}\nexport const getCurrentCrossSellingCheckout = state => {\n    return state.crossSelling.crossSellingCheckout\n}\nexport const getCurrentAlternatives = state => {\n    return state.crossSelling.alternatives\n}\nexport const showCrossSellingModal = state => {\n    return state.crossSelling.showCrossSellingModal\n}\nexport const getBoughtTogetherProducts = state => {\n    return state.crossSelling.boughtTogetherProducts\n}\nexport const getCartSimilarProducts = state => {\n    return state.crossSelling.cartSimilarProducts\n}\nexport const getCartComplementaryProducts = state => {\n    return state.crossSelling.cartComplementaryProducts\n}\nexport default crossSelling\n","const initState = {\n    alert: null\n}\nconst error = (state = initState, action) => {\n    switch (action.type) {\n        case 'SET_ERROR':\n            return Object.assign({}, state, { alert: action.error })\n        case 'ADD_CART_LINE_FAILURE':\n            return Object.assign({}, state, { alert: `Error: ${action.payload.statusText}` })\n        default:\n            return state\n    }\n}\nexport const getAlert = state => {\n    return state.error.alert\n}\nexport default error\n","export const initState = {\n    templates: [],\n    planograms: [],\n    idConfirmation: null,\n    isLoadingCheckout: false,\n    isLoadingTemplate: false,\n    isLoadingStores: false,\n    isLoadingProduct: false,\n    isLoadingBrochure: false,\n    isAdmin: false,\n    usersShopper: [],\n    products: null,\n    brochures: [],\n    alertSendForm: null\n}\nconst lowes = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_TEMPLATES_LOWES_REQUEST':\n            return Object.assign({}, state, { isLoadingTemplate: true })\n        case 'FETCH_TEMPLATES_LOWES_SUCCESS':\n            const loadedTemplates = action.response.map(template => {\n                let result = { ...template, samples: template.plan }\n                delete result.plan\n                return result\n            })\n            return Object.assign({}, state, { templates: loadedTemplates, isLoadingTemplate: false })\n        case 'FETCH_TEMPLATES_LOWES_FAILURE':\n            return Object.assign({}, state, { isLoadingTemplate: false })\n        case 'SEND_CHECKOUT_LOWES_REQUEST':\n            return Object.assign({}, state, { isLoadingCheckout: true })\n        case 'SEND_CHECKOUT_LOWES_SUCCESS':\n            return Object.assign({}, state, { idConfirmation: action.response.idConfirmation, isLoadingCheckout: false })\n        case 'SEND_CHECKOUT_LOWES_FAILURE':\n            return Object.assign({}, state, { isLoadingCheckout: false })\n        case 'FETCH_USERS_SHOPPER_LOWES_REQUEST':\n            return Object.assign({}, state, { isLoadingStores: true })\n        case 'FETCH_USERS_SHOPPER_LOWES_SUCCESS':\n            return Object.assign({}, state, { usersShopper: action.response, isLoadingStores: false })\n        case 'FETCH_USERS_SHOPPER_LOWES_FAILURE':\n            return Object.assign({}, state, { isLoadingStores: false })\n        case 'FETCH_PRODUCTS_LOWES_REQUEST':\n            return Object.assign({}, state, { isLoadingProduct: true })\n        case 'FETCH_PRODUCTS_LOWES_SUCCESS':\n            return Object.assign({}, state, { products: action.response.filter(item => item.type !== 'FREGADERO'), isLoadingProduct: false })\n        case 'FETCH_PRODUCTS_LOWES_FAILURE':\n            return Object.assign({}, state, { isLoadingProduct: false })\n        case 'FETCH_BROCHURES_LOWES_REQUEST':\n            return Object.assign({}, state, { isLoadingBrochure: true })\n        case 'FETCH_BROCHURES_LOWES_SUCCESS':\n            return Object.assign({}, state, { brochures: action.response.brochures, isLoadingBrochure: false })\n        case 'FETCH_BROCHURES_LOWES_FAILURE':\n            return Object.assign({}, state, { isLoadingBrochure: false })\n        case 'SAVE_TEMPLATE_REQUEST':\n            return Object.assign({}, state, { isLoadingTemplate: true })\n        case 'SAVE_TEMPLATE_SUCCESS':\n            return Object.assign({}, state, { isLoadingTemplate: false })\n        case 'SAVE_TEMPLATE_FAILURE':\n            return Object.assign({}, state, { isLoadingTemplate: false })\n        case 'UPDATE_TEMPLATE_REQUEST':\n            return Object.assign({}, state, { isLoadingTemplate: true })\n        case 'UPDATE_TEMPLATE_SUCCESS':\n            return Object.assign({}, state, { isLoadingTemplate: false })\n        case 'UPDATE_TEMPLATE_FAILURE':\n            return Object.assign({}, state, { isLoadingTemplate: false })\n        case 'DELETE_TEMPLATE_REQUEST':\n            return Object.assign({}, state, { isLoadingTemplate: true })\n        case 'DELETE_TEMPLATE_SUCCESS':\n            return Object.assign({}, state, { isLoadingTemplate: false })\n        case 'DELETE_TEMPLATE_FAILURE':\n            return Object.assign({}, state, { isLoadingTemplate: false })\n        case 'CHANGE_TEMPLATE_NAME_SUCCESS':\n            return Object.assign({}, state, {\n                templates: state.templates.map(template => {\n                    return template.id === action.response.id ? { ...template, name: action.response.name } : template\n                })\n            })\n        case 'ADD_NEW_TEMPLATE':\n            return Object.assign({}, state, { templates: state.templates.concat({ ...action.response, id: state.templates.length.toString(), users: [] }) })\n        // case 'SAVE_TEMPLATE':\n        //     let newsTemaplates = state.templates.map(template => {\n        //         if (action.response.id === template.id) return action.response\n        //         else return template\n        //     })\n        //     return Object.assign({}, state, { templates: newsTemaplates })\n        case 'SEND_FORM_REGISTER_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'SEND_FORM_REGISTER_SUCCESS':\n            return Object.assign({}, state, { isLoading: false, alertSendForm: action.response.data })\n        case 'SEND_FORM_REGISTER_FAILURE':\n            return Object.assign({}, state, { isLoading: false, alertSendForm: action.error.data })\n        default:\n            return state\n    }\n}\nexport const getTemplates = state => {\n    return state.lowes.templates\n}\nexport const getPlanograms = state => {\n    return state.lowes.planograms\n}\nexport const getIsLoading = state => {\n    return state.lowes.isLoadingCheckout || state.lowes.isLoadingTemplate || state.lowes.isLoadingStores || state.lowes.isLoadingProduct || state.lowes.isLoadingBrochure\n}\nexport const getIdConfirmation = state => {\n    return state.lowes.idConfirmation\n}\nexport const getIsLowesAdmin = state => {\n    return state.lowes.isAdmin\n}\nexport const getUsersShopper = state => {\n    return state.lowes.usersShopper\n}\nexport const getProductsLowes = state => {\n    return state.lowes.products\n}\nexport const getBrochuresLowes = state => {\n    return state.lowes.brochures\n}\nexport const getAlertSendForm = state => {\n    return state.lowes.alertSendForm\n}\n\nexport default lowes\n","import jwtDecode from 'jwt-decode'\n\nconst initState = {\n    successMessage: null,\n    failureMessage: null,\n    values: null\n}\n\nconst floatingAlerts = (state = initState, action) => {\n    //please define error messages translations at floatingAlert component\n    switch (action.type) {\n        case 'SIMPLE_LOGIN_SUCCESS':\n            const decoded = jwtDecode(action.token)\n            return { ...state, successMessage: decoded.accountCreated ? 'account sucessfully created' : null, values: null, failureMessage: null }\n        case 'CREATE_ACCOUNT_SUCCESS':\n            return { ...state, successMessage: 'account sucessfully created', values: null, failureMessage: null }\n        case 'CLOSE_FLOATING_ALERT':\n            return { ...state, successMessage: null, failureMessage: null, values: null }\n        case 'FLOATING_ALERTS_ADD_SUCCESS_MESSAGE':\n            return { ...state, successMessage: action.successMessage, values: action.values, failureMessage: null }\n        case 'FLOATING_ALERTS_ADD_FAILURE_MESSAGE':\n            return { ...state, successMessage: null, values: action.values, failureMessage: action.failureMessage }\n        case 'REJECT_ORDER_SUCCESS':\n            return { ...state, successMessage: 'ORDER_REJECTED_SENT' }\n        case 'REJECT_ORDER_FAILURE':\n            return { ...state, failureMessage: action.statusText }\n        case 'SEND_ACCEPT_QUOTE_FAILURE':\n            return { ...state, failureMessage: action.statusText }\n        case 'SEND_REJECT_QUOTE_FAILURE':\n            return { ...state, failureMessage: action.statusText }\n        case 'SAVE_ORDER_TO_EDIT_SUCCESS':\n            return { ...state, successMessage: 'ORDER_EDITED' }\n        case 'SAVE_ORDER_TO_EDIT_FAILURE':\n            return { ...state, failureMessage: action.error }\n\n        case 'GET_FILE_BY_URL_FAILURE':\n            return { ...state, failureMessage: action.error }\n        case 'ADD_CART_LINE_FAILURE':\n        case 'CHANGE_CART_LINE_QTY_FAILED':\n        case 'CUT_TO_SIZE_ASK_FOR_BUDGET_FAILURE':\n            let values = {}\n            if (action.payload.statusText === 'CART_TYPE_INCOMPATIBLE_EXCEPTION') {\n                return { ...state }\n            }\n            if (action.payload.statusText === 'MAX_MONTH_QTY_PRODUCT_MKTOOLS_REACHED')\n                values = {\n                    monthQty: action.payload.values.monthQty,\n                    limitMonth: action.payload.values.limitMonth,\n                    toAdd:\n                        action.payload.values.alreadyIntoCart > 0\n                            ? '( ' + action.payload.values.alreadyIntoCart + ' + ' + action.payload.values.toAdd + ' )'\n                            : '( ' + action.payload.values.toAdd + ' )'\n                }\n            if (action.payload.statusText === 'MAX_QTY_PRODUCT_MKTOOLS_REACHED')\n                values = {\n                    alreadyIntoCart: action.payload.values.alreadyIntoCart,\n                    limitMax: action.payload.values.limitMax,\n                    toAdd: action.payload.values.toAdd\n                }\n            if (action.payload.statusText === 'EXCEEDE_ORDER_MAXIMUM_LOWES')\n                values = {\n                    monthItems: action.payload.values.monthItems\n                }\n            if (action.payload.statusText === 'SEND_QUOTE_REQUEST') {\n                values =  action.payload.values.cause\n            }\n\n            return { ...state, failureMessage: action.payload.statusText, values: values }\n\n        case 'SAVE_COLORS_MKTOOLS_ATTR_SUCCESS':\n            return { ...state, successMessage: 'SAVE_COLORS_MKTOOLS_ATTR_SUCCESS' }\n        case 'SAVE_CCOLORS_MKTOOLS_ATTR_FAILURE':\n            return { ...state, failureMessage: 'SAVE_CCOLORS_MKTOOLS_ATTR_FAILURE' }\n        case 'DUPLICATED_COLOR_MKTOOLS_ATTR':\n            return { ...state, failureMessage: 'DUPLICATED_COLOR_MKTOOLS_ATTR' }\n        case 'SEND_PREVIEW_PROMOTION_EMAIL_FAILURE':\n            return { ...state, failureMessage: 'PROMOTION_OR_EMAIL_NOT_FOUND' }\n        case 'SEND_PREVIEW_PROMOTION_EMAIL_SUCCESS':\n            return { ...state, successMessage: 'EMAIL_SENT' }\n\n        //promotions\n        case 'SEND_PROMOTION_HEADER_FAILURE':\n        case 'SEND_TEMPLATES_SELECTED_FAILURE':\n        case 'UPLOAD_FILE_FAILURE':\n        case 'SEND_BANNERS_FAILURE':\n        case 'SEND_PROMOTION_CENTERS_FAILURE':\n        case 'SEND_CUSTOMERS_SELECTED_FAILURE':\n        case 'SEND_MATERIALS_SELECTED_FAILURE':\n        case 'RESUBSCRIBE_NEWSLETTER_FAILURE':\n        case 'UNSUBSCRIBE_NEWSLETTER_FAILURE':\n        case 'CREATE_ACCOUNT_FAILURE':\n            return { ...state, failureMessage: 'SOMETHING_WENT_WRONG' }\n        case 'SEND_ENABLE_PROMOTION_FAILURE':\n            return { ...state, failureMessage: action.error }\n        case 'SEND_PROMOTION_HEADER_SUCCESS':\n            return { ...state, successMessage: 'SEND_PROMOTION_HEADER_SUCCESS' }\n        case 'SEND_PROMOTION_CENTERS_SUCCESS':\n            return { ...state, successMessage: 'SEND_PROMOTION_CENTERS_SUCCESS' }\n        case 'SEND_CUSTOMERS_SELECTED_SUCCESS':\n            return { ...state, successMessage: 'SEND_CUSTOMERS_SELECTED_SUCCESS' }\n        case 'SEND_MATERIALS_SELECTED_SUCCESS':\n            return { ...state, successMessage: 'SEND_MATERIALS_SELECTED_SUCCESS' }\n        case 'SEND_TEMPLATES_SELECTED_SUCCESS':\n            return { ...state, successMessage: 'SEND_TEMPLATES_SELECTED_SUCCESS' }\n        case 'SEND_BANNERS_SUCCESS':\n            return { ...state, successMessage: 'SEND_BANNERS_SUCCESS' }\n        case 'ADD_EMAIL_CENTER_SUCCESS':\n            return { ...state, successMessage: 'SUCCESS_EMAIL_CENTER' }\n        case 'ADD_EMAIL_CENTER_FAILURE':\n            return { ...state, failureMessage: action.statusText }\n        case 'SEND_FEDDBACK_SUCCESS':\n            return { ...state, successMessage: 'SUCCESS_SEND_FEDDBACK' }\n        case 'SEND_FEDDBACK_FAILURE':\n            return { ...state, failureMessage: action.statusText }\n        case 'REQUEST_MATERIALS_DISCOUNTS_SUCCESS':\n            return { ...state, successMessage: action.message }\n        case 'CUT_TO_SIZE_CANCEL_PREORDER_FAILURE':\n            return { ...state, failureMessage: action.message }\n        case 'FETCH_CONFIGURABLE_BATHS_MODELS_FAILURE':\n                return { ...state, failureMessage: action.message }\n        default:\n            return state\n    }\n}\n\nexport const getSuccessMessage = state => {\n    return state.floatingAlerts.successMessage\n}\nexport const getFailureMessage = state => {\n    return state.floatingAlerts.failureMessage\n}\nexport const getValues = state => {\n    return state.floatingAlerts.values\n}\nexport default floatingAlerts\n","import moment from 'moment'\nimport { isMobile } from 'react-device-detect'\n\nconst initState = {\n    currentDeliveryId: undefined,\n    deliveryDetails: [],\n    summary: undefined,\n    openOrders: null,\n    filtersOpen: !isMobile,\n    filters: {\n        startDate: moment().startOf('year'),\n        endDate: moment(),\n        centers: [],\n        customers: [],\n        topColors: []\n    }\n}\n\nconst kpis = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_DELIVERY_DETAIL_REQUEST':\n            return Object.assign({}, state, { currentDeliveryId: action.deliveryId })\n        case 'CLOSE_DELIVERY_DETAIL':\n            return Object.assign({}, state, { currentDeliveryId: undefined })\n        case 'FETCH_DELIVERY_DETAIL_SUCCESS':\n            return Object.assign({}, state, { deliveryDetails: action.deliveryDetails })\n        case 'FETCH_KPIS_REQUEST':\n        case 'FETCH_KPIS_OPEN_ORDERS_REQUEST':\n        case 'FETCH_KPIS_BACK_ORDERS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_KPIS_SUCCESS':\n            return Object.assign({}, state, { summary: action.summary, isLoading: false })\n        case 'FETCH_KPIS_OPEN_ORDERS_SUCCESS':\n            return Object.assign({}, state, { openOrders: action.response, isLoading: false })\n        case 'FETCH_KPIS_BACK_ORDERS_SUCCESS':\n            return Object.assign({}, state, { backOrders: action.response, isLoading: false })\n        case 'SET_KPIS_FILTERS':\n            return Object.assign({}, state, { filters: action.filters })\n        case 'TOGGLE_KPIS_FILTERS':\n            return Object.assign({}, state, { filtersOpen: action.showFilters })\n\n        default:\n            return state\n    }\n}\n\nexport const currentDeliveryId = state => {\n    return state.kpis.currentDeliveryId\n}\nexport const currentDeliveryDetailLines = state => {\n    return state.kpis.deliveryDetails.filter(deliveryDetail => {\n        return deliveryDetail.deliveryId === state.kpis.currentDeliveryId\n    })\n}\nexport const getSummary = state => {\n    return state.kpis.summary\n}\nexport const getBackOrders = state => {\n    return state.kpis.backOrders\n}\nexport const getOpenOrders = state => {\n    return state.kpis.openOrders\n}\n\nexport const getIsLoading = state => {\n    return state.kpis.isLoading\n}\nexport const getFilters = state => {\n    return state.kpis.filters\n}\nexport const getFiltersOpen = state => {\n    return state.kpis.filtersOpen\n}\nexport const getFiltersToApi = state => {\n    const filters = getFilters(state)\n    const data = {\n        startDate: filters.startDate,\n        endDate: filters.endDate,\n        centerIds: filters.centers.map(center => {\n            return center.value\n        }),\n        customerIds: filters.customers.map(customer => {\n            return customer.value\n        }),\n        colorIds: filters.topColors\n    }\n    return data\n}\nexport default kpis\n","//import { createSelector } from 'reselect'\n\nconst initState = {\n    reservations: [],\n    customers: undefined,\n    isLoading: false,\n    countUnassigned: undefined\n}\nconst reservations = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_CUSTOMERS_SUCCESS':\n            return Object.assign({}, state, { customers: action.customers })\n        case 'FETCH_RESERVATIONS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_RESERVATIONS_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        case 'FETCH_RESERVATIONS_SUCCESS':\n            return Object.assign({}, state, { reservations: action.reservations, isLoading: false })\n        case 'FETCH_RESERVATIONS_UNASSIGNED_COUNT':\n            return Object.assign({}, state, { countUnassigned: action.reservations.length })\n        case 'EMPTY_RESERVATIONS':\n            return Object.assign({}, state, { reservations: [], countUnassigned: undefined })\n        default:\n            return state\n    }\n}\nexport const getReservations = state => {\n    return state.reservations.reservations\n}\nexport const getReservationsLoading = state => {\n    return state.reservations.isLoading\n}\nexport const getCustomers = state => {\n    return state.reservations.customers\n}\nexport const countUnassignedReservations = state => {\n    return state.reservations.countUnassigned\n}\n\nexport default reservations\n","export const initState = {\n    deliveriesCurrentPage: 1,\n    deliveriesLastPage: 1,\n    deliveries: [],\n    delivery: null,\n    isLoading: false,\n    isLoadingDetails: false,\n    showModal: false,\n    error: null,\n}\n\nconst deliveries = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_ORDER_DELIVERIES_PAGINATE_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n\n        case 'FETCH_ORDER_DELIVERIES_PAGINATE_SUCCESS':\n            return Object.assign({}, state, {\n                deliveries: action.deliveriesCurrentPage > 1 ? state.deliveries.concat(action.deliveries) : action.deliveries,\n                deliveriesCurrentPage: action.deliveriesCurrentPage,\n                deliveriesLastPage: action.deliveriesLastPage,\n                isLoading: false\n            })\n\n        case 'FETCH_ORDER_DELIVERIES_PAGINATE_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n\n        default:\n            return state\n    }\n}\n\nexport const getDeliveries = state => {\n    return state.deliveries.deliveries\n}\n\nexport const getDeliveriesCurrentPage = state => {\n    return state.deliveries.deliveriesCurrentPage\n}\n\nexport const getDeliveriesLastPage = state => {\n    return state.deliveries.deliveriesLastPage\n}\n\nexport const getDeliveriesLoading = state => {\n    return state.deliveries.isLoading\n}\n\nexport default deliveries\n","export const initState = {\n    delivery: [],\n    isLoading: false,\n    error: null,\n}\n\nconst delivery = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_ORDER_DELIVERY_ID_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n\n        case 'FETCH_ORDER_DELIVERY_ID_SUCCESS':\n            return Object.assign({}, state, {\n                delivery: action.delivery,\n                isLoading: false\n            })\n\n        case 'FETCH_ORDER_DELIVERY_ID_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n\n        default:\n            return state\n    }\n}\n\nexport default delivery\n\nexport const getDelivery = state => {\n    return state.delivery.delivery\n}\n\nexport const getDeliveryIsLoading = state => {\n    return state.delivery.isLoading\n}","export const initState = {\n    directSlabAccess: [],\n    isLoading: false\n}\nconst directSlabAccess = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_DIRECT_SLAB_ACCESS_REQUEST':\n            return Object.assign({}, state, { isLoading: true })\n        case 'FETCH_DIRECT_SLAB_ACCESS_SUCCESS':\n            return Object.assign({}, state, { directSlabAccess: action.response, isLoading: false, reservationId: action.reservationId, invoiceId: action.invoiceId })\n        case 'FETCH_DIRECT_SLAB_ACCESS_FAILURE':\n            return Object.assign({}, state, { isLoading: false })\n        default:\n            return state\n    }\n}\nexport const getDirectSlabAccess = state => {\n    return state.directSlabAccess.directSlabAccess\n}\nexport const getReservationId = state => {\n    return state.directSlabAccess.reservationId\n}\nexport const getInvoiceId = state => {\n    return state.directSlabAccess.invoiceId\n}\nexport const getDirectSlabAccessLoading = state => {\n    return state.directSlabAccess.isLoading\n}\n\nexport default directSlabAccess\n","const initState = {\n    isSending: false,\n    status: null,\n    alert: null\n}\n\nconst suggestion = (state = initState, action) => {\n    switch (action.type) {\n        case 'SEND_SUGGESTION_REQUEST':\n            return Object.assign({}, state, { isSending: true })\n        case 'SEND_SUGGESTION_SUCCESS':\n            return Object.assign({}, state, { isSending: false, alert: action.alert, status: 200 })\n        case 'SEND_SUGGESTION_FAILURE':\n            return Object.assign({}, state, { isSending: false, alert: `${action.alert}`, status: action.status })\n        case 'DEL_ALERT_SUGGESTION':\n            return Object.assign({}, state, { alert: null, status: null })\n        default:\n            return state\n    }\n}\n\nexport const getIsSending = state => {\n    return state.suggestion.isSending\n}\nexport const getStatus = state => {\n    return state.suggestion.status\n}\nexport const getAlert = state => {\n    return state.suggestion.alert\n}\nexport default suggestion\n","export const initState = {\n    maintenanceMode: false\n}\n\nconst maintenanceMode = (state = initState, action) => {\n    switch (action.type) {\n        case 'MAINTENANCE_MODE_ON':\n            return Object.assign({}, state, { maintenanceMode: true })\n        case 'MAINTENANCE_MODE_OFF':\n            return Object.assign({}, state, { maintenanceMode: false })\n        default:\n            return state\n    }\n}\nexport const getMaintenanceMode = state => {\n    return state.maintenanceMode.maintenanceMode\n}\nexport default maintenanceMode\n","import moment from 'moment'\n\nexport const initState = {\n    lastView: null,\n    lastRelease: null,\n    loading: false,\n    items: null,\n    itemsNews: null\n}\n\nconst changelog = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_CHANGELOG_BY_PROJECT_REQUEST':\n            return { ...state, loading: true }\n        case 'FETCH_CHANGELOG_BY_PROJECT_SUCCESS':\n            return { ...state, loading: false, items: action.items, lastRelease: moment(Object.keys(action.items)[0]).valueOf() }\n        case 'FETCH_CHANGELOG_BY_PROJECT_NEWS_SUCCESS':\n            return { ...state, loading: false, itemsNews: action.items }\n        case 'FETCH_CHANGELOG_BY_PROJECT_FAILURE':\n            return { ...state, loading: false, items: action.items }\n        case 'SET_LAST_VIEW':\n            return Object.assign({}, state, { lastView: action.date })\n\n        case 'SIMPLE_IMPERSONATE_SUCCESS':\n        case 'LOGOUT':\n            return initState\n        default:\n            return state\n    }\n}\nexport const getChangesRead = state => state.changelog.lastView > state.changelog.lastRelease\n\nexport const getChangelogLastView = state => state.changelog.lastView\n\nexport const getChangelogLastUpdate = state => state.changelog.lastRelease\n\nexport const getChangelogItems = state => state.changelog.items\n\nexport const getChangelogItemsNews = state => state.changelog.itemsNews\n\nexport const getIsLoading = state => state.changelog.loading\n\nexport default changelog\n","export const initState = []\n\nconst toastNotifications = (state = initState, action) => {\n    switch (action.type) {\n        case 'SHOW_TOAST_NOTIFICATION': {\n            return [ ...state, action.toastNotification ]\n        }\n        case 'REMOVE_TOAST_NOTIFICATION': {\n            const i = state.findIndex(t => t.id === action.toastNotification.id);\n\n            if (i === -1) {\n                return state;\n            }\n\n            return [\n                ...state.slice(0, i),\n                ...state.slice(i + 1)\n            ]\n        }\n        default: {\n            return state;\n        }\n    }\n}\n\nexport default toastNotifications;","export const initState = []\n\nconst loader = (state = initState, action) => {\n    switch (action.type) {\n        case 'ADD_LOADER': {\n            return [ ...state, action.loader ]\n        }\n        case 'REMOVE_LOADER': {\n            const i = state.findIndex(t => t === action.loader);\n\n            if (i === -1) {\n                return state;\n            }\n\n            return [\n                ...state.slice(0, i),\n                ...state.slice(i + 1)\n            ]\n        }\n        default: {\n            return state;\n        }\n    }\n}\n\nexport default loader;","import {isOnlyUsaSalesOrg, isUsaOrCanada} from \"../centers/reducers\";\n\nexport const initState = {\n           isLoading: false,\n           mainParams: {\n               materials: null,\n               catalog: null,\n               pricingGroup: null,\n               soleriaColors: null\n           },\n           secondaryParams: null,\n           preOrdersCts: [],\n           preOrdersCurrentPage: 1,\n           preOrdersLastPage: 1,\n           preOrdersProjectAvailables: [],\n           isSending:false,\n           //Configurable bathrooms\n           configurableModels: [],\n           configurableInProgress: {},\n           configurablePlanAcceptanceList: {},\n           configurableModifiedList: {},\n           configurableDrawingList: {}\n       }\n\nconst cutToSize = (state = initState, action) => {\n    switch (action.type) {\n        case 'FETCH_CUT_TO_SIZE_MAIN_PARAMS_REQUEST':\n            return { ...state, isLoading: true }\n\n        case 'FETCH_CUT_TO_SIZE_MAIN_PARAMS_SUCCESS':\n            return { ...state, mainParams: action.mainParams, isLoading: false }\n\n        case 'RESET_CUT_TO_SIZE':\n            return { ...state, mainParams: initState.mainParams, secondaryParams: null, isLoading: false }\n\n        case 'FETCH_CUT_TO_SIZE_MAIN_PARAMS_FAILURE':\n            return { ...state, mainParams: initState.mainParams, isLoading: false }\n\n        case 'FETCH_CUT_TO_SIZE_SECONDARY_PARAMS_REQUEST':\n            return { ...state, isLoading: true }\n\n        case 'FETCH_CUT_TO_SIZE_SECONDARY_PARAMS_SUCCESS':\n            return { ...state, secondaryParams: action.secondaryParams, isLoading: false }\n\n        case 'FETCH_CUT_TO_SIZE_SECONDARY_PARAMS_FAILURE':\n            return { ...state, secondaryParams: null, isLoading: false }\n        case 'FETCH_PRE_ORDERS_CTS_FAILURE':\n        case 'CUT_TO_SIZE_SEND_PREORDER_MESSAGE_FAILURE':\n        case 'CUT_TO_SIZE_SEND_APPROVE_PREORDER_MESSAGE_FAILURE':\n        case 'CUT_TO_SIZE_CANCEL_PREORDER_FAILURE':\n            return { ...state, isLoading: false }\n\n        case 'CUT_TO_SIZE_SEND_PREORDER_MESSAGE_SUCCESS':\n        case 'CUT_TO_SIZE_SEND_APPROVE_PREORDER_MESSAGE_SUCCESS':\n            const preorder = state.preOrdersCts.find(po => po.id === action.preorderId)\n            preorder.communications = action.communications\n            preorder.files = action.files\n            return { ...state, isLoading: false }\n\n        case 'CLEAR_PRE_ORDERS_CTS':\n            return { ...state, preOrdersCts: [] }\n\n        case 'FETCH_PRE_ORDERS_CTS_REQUEST':\n        case 'CUT_TO_SIZE_SEND_PREORDER_MESSAGE':\n        case 'CUT_TO_SIZE_SEND_APPROVE_PREORDER_MESSAGE':\n        case 'CUT_TO_SIZE_CANCEL_PREORDER':\n            return { ...state, isLoading: true }\n        case 'FETCH_PRE_ORDERS_CTS_SUCCESS':\n            return {\n                ...state,\n                preOrdersCts: action.ordersCurrentPage > 1 ? state.preOrdersCts.concat(action.data) : action.data,\n                isLoading: false,\n                preOrdersCurrentPage: action.ordersCurrentPage,\n                preOrdersLastPage: action.ordersLastPage\n            }\n        case 'FETCH_PRE_ORDERS_CTS_PROJECT_AVAILABLES_SUCCESS':\n            return { ...state, preOrdersProjectAvailables: action.projects }\n        case 'CUT_TO_SIZE_PREORDER_REQUEST':\n            return { ...state, isSending: true }\n        case 'CUT_TO_SIZE_PREORDER_REQUEST_SUCCESS':\n            return { ...state, isSending: false }\n        case 'CUT_TO_SIZE_PREORDER_REQUEST_FAILURE':\n            return { ...state, isSending: false }\n        case 'FETCH_CONFIGURABLE_BATHS_MODELS_SUCCESS':\n            return Object.assign({}, state, { configurableModels: action.configurableModels })\n        case 'ADD_CONFIGURABLE_IN_PROGRESS':\n            return {\n                ...state,\n                configurableInProgress: {\n                    ...state.configurableInProgress,\n                    [action.refcode]: action.configData\n                }\n            }\n        case 'ADD_CONFIGURABLE_PLAN_ACCEPTANCE_CHECKED':\n            return {\n                ...state,\n                configurablePlanAcceptanceList: {\n                    ...state.configurablePlanAcceptanceList,\n                    [action.refcode]: {\n                        isPlanAcceptanceChecked: action.isPlanAcceptanceChecked\n                    }\n                }\n            }\n        case 'ADD_CONFIGURABLE_MODIFIED_LIST':\n            return {\n                ...state,\n                configurableModifiedList: {\n                    ...state.configurableModifiedList,\n                    [action.refcode]: {\n                        isConfigurableModified: action.isConfigurableModified\n                    }\n                }\n            }\n        case 'FETCH_CONFIGURABLE_DRAWING_SUCCESS':\n            return {\n                ...state,\n                configurableDrawingList: {\n                    ...state.configurableDrawingList,\n                    [action.configurableDrawing.referenceCode]: {\n                        exists: action.configurableDrawing.exists,\n                        documentUrl: action.configurableDrawing.documentUrl\n                    }\n                }\n            }\n        default:\n            return state\n    }\n}\n\nexport const isLoading = state => {\n    return state.cutToSize.isLoading\n}\nexport const getPreOrdersCts = state => {\n    return state.cutToSize.preOrdersCts\n}\n\nexport const getPreOrderById = (state,id) => {\n    return state.cutToSize.preOrdersCts.find(item =>{ return item.id == id || item.id.toLowerCase() == id.toLowerCase()})\n}\nexport const getCutToSizeMainParams = state => {\n    return state.cutToSize.mainParams\n}\n\nexport const getCutToSizeMaterials = state => {\n    return state.cutToSize.mainParams.materials\n}\n\nexport const getCutToSizeCatalog = state => {\n    return state.cutToSize.mainParams.catalog\n}\n\nexport const getCutToSizeSoleriaColors = state => {\n    return state.cutToSize.mainParams.soleriaColors\n}\n\nexport const getCutToSizeCustomerPricingGroup = state => {\n    return state.cutToSize.mainParams.pricingGroup\n}\n\nexport const getCutToSizeSecondaryParams = state => {\n    return state.cutToSize.secondaryParams\n}\nexport const getPreOrdersCurrentPage = state => {\n    return state.cutToSize.preOrdersCurrentPage\n}\nexport const getPreOrdersLastPage = state => {\n    return state.cutToSize.preOrdersLastPage\n}\nexport const getPreOrdersProjectAvailables = state => {\n    return state.cutToSize.preOrdersProjectAvailables\n}\nexport const getIsSending = state => {\n    return state.cutToSize.isSending\n}\n\nexport const getConfigurableModels = state => {\n    return state.cutToSize.configurableModels\n}\n\nexport const getConfigurableInProgress = state => {\n    return state.cutToSize.configurableInProgress\n}\n\nexport const getConfigurablePlanAcceptanceList = state => {\n    return state.cutToSize.configurablePlanAcceptanceList\n}\n\nexport const getConfigurableModifiedList = state => {\n    return state.cutToSize.configurableModifiedList\n}\n\nexport const getConfigurableDrawingList = state => {\n    return state.cutToSize.configurableDrawingList\n}\n\nexport const canFilterQuickShip = state => {\n    return isOnlyUsaSalesOrg(state) || (isUsaOrCanada(state) && state.login.impersonatedBy === 'DBU')\n}\n\nexport default cutToSize\n","import React, { forwardRef } from 'react'\n\nconst Modal = forwardRef((props, ref) => {\n    const {\n        customStyle,\n        title,\n        subtitle,\n        children,\n        footer,\n        onClose,\n        size,\n        customClass,\n        showCloseButton = true,\n        showBody = true,\n        showFooter = true,\n        customId = 'general-modal-comp',\n        gtmLabel\n    } = props\n\n    let dialogClasses = ''\n\n    switch (size) {\n        case 'small':\n            dialogClasses += ' modal-sm'\n            break\n        case 'large':\n            dialogClasses += ' modal-lg'\n            break\n        case 'xl':\n            dialogClasses += ' modal-xl'\n            break\n        default:\n            dialogClasses += ' modal-lg'\n    }\n\n    if (customClass) {\n        dialogClasses += ' ' + customClass\n    }\n\n    return (\n        <div id={customId} gtm-label={gtmLabel}>\n            <div className=\"full-overlay\" onClick={onClose} />\n            <div className={'modal modal-new-version-experience fade show ' + customClass} tabIndex=\"-1\" role=\"dialog\" data-backdrop=\"static\" style={{ display: 'block' }}>\n                <div className={'modal-dialog' + dialogClasses} data-cy=\"global__modal_dialog\" role=\"document\">\n                    <div className=\"modal-content\">\n                        <div className=\"modal-header\">\n                            <div style={{ width: showCloseButton ? 'auto' : '100%' }}>\n                                <h5 className=\"modal-title\" data-cy=\"modal__title\">\n                                    {title}\n                                </h5>\n                                {subtitle && <span>{subtitle}</span>}\n                            </div>\n                            {showCloseButton && (\n                                <button type=\"button\" className=\"close\" aria-label=\"Close\" onClick={onClose}>\n                                    <i className=\"fal fa-times\" />\n                                </button>\n                            )}\n                        </div>\n\n                        {showBody && (\n                            <div className=\"modal-body\" ref={ref} style={customStyle}>\n                                {children}\n                            </div>\n                        )}\n                        {showFooter && <div className=\"modal-footer\">{footer}</div>}\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n})\n\nexport default Modal\n","import React from 'react'\nimport chevronDown from \"../../assets/img/icons/chevron-down.svg\";\nimport {RefinementListFilter} from \"searchkit\";\n\nconst FilterV2Box = props => {\n\n  const {filteredDataName, translatedTitle, onTransform, listComponent, size, gtmLabel, operator = 'OR'} = props;\n\n  return (\n    <div className={'filtersV2-box ' + filteredDataName} onMouseLeave={() => {\n      [...document.querySelectorAll(\"#\" + filteredDataName + \"-filter\")].map(e => e.hidden = true);\n      [...document.querySelectorAll(\"#\" + filteredDataName + \"-filter-container\")].map(e => e.classList.remove('filter-active'));\n    }} gtm-label={gtmLabel}>\n      <div id={filteredDataName + '-filter-container'} className=\"filter-container\">\n        <div className=\"filters-box-items\" onClick={()=> {\n          [...document.querySelectorAll(\"#\" + filteredDataName + \"-filter\")].map(e => e.hidden = !e.hidden);\n          [...document.querySelectorAll(\"#\" + filteredDataName + \"-filter-container\")].map(e =>\n            e.classList.contains('filter-active') ?\n              e.classList.remove('filter-active') :\n              e.classList.add('filter-active')\n          );\n        }}\n        >\n          <span>{translatedTitle}</span>\n          <img alt=\"\" src={chevronDown} />\n        </div>\n        <div hidden={true} id={filteredDataName + '-filter'} className='filter-list'>\n          <RefinementListFilter\n            id={filteredDataName}\n            field={filteredDataName + \".raw\"}\n            operator={operator}\n            title={translatedTitle}\n            bucketsTransform={onTransform}\n            size={size}\n            listComponent={listComponent}\n          />\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default FilterV2Box\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport { injectIntl } from 'react-intl'\nimport { RefinementListFilter, ResetFilters, CheckboxFilter, TermsQuery, TermQuery, BoolShould, SelectedFilters } from 'searchkit'\nimport { withRouter } from 'react-router-dom'\nimport confirm from '../global/confirm'\nimport Modal from '../global/Modal'\nimport Select from 'react-select'\nimport LocalizedLink from '../global/LocalizedLink'\nimport FilterV2Box from './FilterV2Box'\nimport Button from '../global/Button'\n\nconst confirmChangeShippingCenter = (center, onChangeShippingCenter, intl) => {\n    return confirm(intl.formatMessage({ id: 'CHANGE_SHIPPING_CENTER' })).then(\n        confirm => {\n            return onChangeShippingCenter(center)\n        },\n        cancel => {\n            return Promise.reject()\n        }\n    )\n}\nconst initState = {\n    filtersDivStyles: {},\n    selectedShippingCenter: null,\n    hasXeronBucket: false,\n    hasSilestoneBucket: false,\n    visibleFilters: 6,\n    showMoreFilters: false,\n    isSmallScreen: window.innerWidth <= 776,\n    showClearFilter: false,\n}\n\nclass FiltersV2 extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.state = initState\n    }\n\n    componentDidMount() {\n        setInterval(() => {\n            this.checkFilters()\n        }, 1000)\n\n        if (this.props.mktoolsShippingCenter)\n            this.setState({ selectedShippingCenter: this.props.location.search.indexOf('mktoolShippingCenter[0]') > -1 ? this.props.mktoolsShippingCenter : null })\n\n        window.addEventListener('resize', this.handleResize)\n    }\n\n    componentWillUnmount() {\n        window.removeEventListener('popstate', this.checkFilters)\n        window.removeEventListener('resize', this.handleResize)\n    }\n\n    checkFilters = () => {\n        let filtersArray = []\n        \n        document.querySelectorAll(\".sk-selected-filters\").forEach(e => {\n            for (let i of e.children) {\n                for (let x of i.classList) {\n                    if (x.includes(\"selected-filter--\")) {\n                        let fil = x.split(\"selected-filter--\")[1]\n                        filtersArray.push(fil)\n                    }\n                }\n            }\n        })\n    \n        filtersArray = [...new Set(filtersArray)]\n        filtersArray = filtersArray.filter(fil => fil !== \"type\" && fil !== \"subtype\")\n\n        if (filtersArray.length > 0) {\n            if (!this.state.showClearFilter) {\n                this.setState({ showClearFilter: true })\n            }\n        } else if (this.state.showClearFilter) {\n            this.setState({ showClearFilter: false })\n        }\n    \n        return filtersArray\n    }\n    \n    handleResize = () => {\n        this.setState({ isSmallScreen: window.innerWidth <= 776 })\n    }\n\n    toggleFilters = () => {\n        this.setState(prevState => ({\n            showMoreFilters: !prevState.showMoreFilters\n        }))\n    }\n\n    changeShippingCenter = selectedCenter => {\n        this.props.setMkToolsShippingCenter(selectedCenter)\n        this.setState({ selectedShippingCenter: selectedCenter })\n    }\n\n    onReset = () => {\n        // this.setState({ selectedShippingCenter: null })\n        if (this.props.selectedCenter === 1060)\n            this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', '') + '?mktoolShippingCenter[0]=' + this.state.selectedShippingCenter)\n    }\n\n    noShippingCentermsg = () => {\n        return <Translation id=\"havent_center_shipping_addres\" defaultMessage=\"You do not have center shipping addresses, please contact your supplier\" />\n    }\n\n    ShippingCenterOptions = props => {\n        return (\n            <div>\n                {props.items && props.items.length > 0 ? (\n                    <React.Fragment>\n                        <Select\n                            options={props.items.map(item => ({\n                                label: item.name,\n                                value: item.id\n                            }))}\n                            className={'select-shipping'}\n                            value={this.state.selectedShippingCenter}\n                            clearable={false}\n                            onChange={selectedOption => {\n                                selectedOption &&\n                                    confirmChangeShippingCenter(selectedOption.value, this.changeShippingCenter, this.props.intl).then(() => {\n                                        let selected = selectedOption ? [selectedOption.value] : []\n                                        if (this.props.selectedCenter === 1060) props.setItems(selected)\n                                        // Add the mktoolShippingCenter in url after close the modal\n                                        if (!window.location.href.includes('mktoolShippingCenter[0]')) {\n                                            const mktoolShippingParam = window.location.href + '&mktoolShippingCenter[0]=' + selected\n                                            window.history.replaceState(null, '', mktoolShippingParam)\n                                        }\n                                    })\n                            }}\n                            placeholder={this.props.intl.formatMessage({ id: 'select' }) + '...'}\n                        />\n                    </React.Fragment>\n                ) : (\n                    this.noShippingCentermsg()\n                )}\n            </div>\n        )\n    }\n\n    ShippingCenterOptionsWithoutFilter = options => {\n        return (\n            <div style={{ width: '100%' }}>\n                {options && options.length > 0 ? (\n                    <Select\n                        options={options.map(item => ({\n                            label: item.name,\n                            value: item.id\n                        }))}\n                        value={this.state.selectedShippingCenter}\n                        clearable={false}\n                        onChange={selectedOption => {\n                            selectedOption && confirmChangeShippingCenter(selectedOption.value, this.changeShippingCenter, this.props.intl)\n                        }}\n                        placeholder={this.props.intl.formatMessage({ id: 'select' }) + '...'}\n                    />\n                ) : (\n                    this.noShippingCentermsg()\n                )}\n            </div>\n        )\n    }\n\n    subtypeOptions = (props, subType) => {\n        return (\n            <Select\n                options={props.items.map(item => ({ label: this.props.intl.formatMessage({ id: subType + '_' + item.key }), value: item.key }))}\n                value={props.selectedItems[0]}\n                onChange={selectedOption => {\n                    let selected = selectedOption ? [selectedOption.value] : []\n                    props.setItems(selected)\n                }}\n                placeholder={\n                    this.props.intl.formatMessage({\n                        id: 'select'\n                    }) + '...'\n                }\n            />\n        )\n    }\n\n    subtypeOptions0 = props => this.subtypeOptions(props, 'subtype')\n\n    subtypeOptions1 = props => this.subtypeOptions(props, 'subtype_1')\n\n    subtypeOptions2 = props => this.subtypeOptions(props, 'subtype_2')\n\n    colorOptions = props => {\n        return (\n            <Select\n                options={props.items.map(item => ({ label: item.key, value: item.key }))}\n                value={props.selectedItems[0]}\n                onChange={selectedOption => {\n                    let selected = selectedOption ? [selectedOption.value] : []\n                    props.setItems(selected)\n                }}\n                placeholder={this.props.intl.formatMessage({\n                    id: 'color'\n                })}\n            />\n        )\n    }\n\n    hideMobileFilters = () => {\n        this.setState({\n            filtersDivStyles: {}\n        })\n        document.body.classList.remove('noscroll')\n    }\n\n    finishTransform = filters => {\n        if (!Array.isArray(filters)) return []\n\n        return filters\n            .filter(filter => {\n                if (!filter.key) {\n                    return false\n                }\n                return true\n            })\n            .map(filter => {\n                filter.title = this.props.intl.formatMessage({ id: filter.key }, {}, filter.key)\n                return filter\n            })\n            .sort((a, b) => a.key.localeCompare(b.key))\n    }\n\n    outletQualityTransform = filters => {\n        let result = filters\n            .map(filter => {\n                filter.title = this.props.intl.formatMessage({ id: 'outlet_' + filter.key.toLowerCase() })\n                return filter\n            })\n            .sort((a, b) => a.title.localeCompare(b.title))\n\n        return result\n    }\n\n    discontinuedTransform = filters => {\n        let result = filters.map(filter => {\n            filter.title = this.props.intl.formatMessage({ id: filter.key.toUpperCase() + '_SHORT' })\n            return filter\n        })\n        return result\n    }\n\n    operationTypeTransform = filters => {\n        return filters.map(filter => {\n            filter.title = this.props.intl.formatMessage({ id: 'operation_type_' + filter.key.toLowerCase() })\n            return filter\n        })\n    }\n\n    thicknessTransform(filters) {\n        if (!Array.isArray(filters)) return []\n        return filters\n            .map(filter => {\n                filter.title = filter.key.replace('.', ',') + ' cm'\n                return filter\n            })\n            .sort((a, b) => parseFloat(a.key) - parseFloat(b.key))\n    }\n\n    handleXeronAndSilestoneCheck = filters => {\n        const xeronBucket = filters.find(bucket => bucket.key === 'XERON' && bucket.doc_count > 0)\n\n        const SilestoneBucket = filters.find(bucket => bucket.key === 'SILESTONE' && bucket.doc_count > 0)\n\n        // Update state only if the value changes\n        if (!!xeronBucket !== this.state.hasXeronBucket) {\n            this.setState({ hasXeronBucket: !!xeronBucket }, () => {\n                this.props.setIsXeronBrandVisible(this.state.hasXeronBucket)\n            })\n        }\n\n        if (!!SilestoneBucket !== this.state.hasSilestoneBucket) {\n            this.setState({ hasSilestoneBucket: !!SilestoneBucket }, () => {\n                this.props.setIsSilestoneBrandVisible(this.state.hasSilestoneBucket)\n            })\n        }\n    }\n\n    brandTransform = filters => {\n        if (!Array.isArray(filters)) return []\n\n        const typeMap = {\n            SERVICES: <Translation id=\"operaciones\" defaultMessage=\"Operaciones\" />,\n            DEKTON: this.props.selectedCenter === 7130 ? 'DKTN' : 'Dekton'\n        }\n\n        this.handleXeronAndSilestoneCheck(filters)\n\n        return filters.map(bucket => {\n            return {\n                title: typeMap[bucket.key] || bucket.key,\n                ...bucket\n            }\n        })\n    }\n\n    typeTransform(filters) {\n        const typeMap = {\n            TABLA: <Translation id=\"tables\" defaultMessage=\"Slabs\" />,\n            PPCC: <Translation id=\"professional_products\" defaultMessage=\"Professional Products\" />,\n            FREGADERO: <Translation id=\"sinks\" defaultMessage=\"Sinks\" />,\n            MK: <Translation id=\"mktool\" defaultMessage=\"Marketing Tools\" />,\n            SH: <Translation id=\"showroom\" defaultMessage=\"Showroom\" />,\n            WH: <Translation id=\"warehouse\" defaultMessage=\"Warehouse\" />,\n            OPERATIONS: <Translation id=\"OPERATIONS\" defaultMessage=\"Operations\" />,\n            SERVICE: <Translation id=\"SERVICE\" defaultMessage=\"Services\" />,\n            ENCIMERA: <Translation id=\"WORKTOPS\" defaultMessage=\"Worktops\" />,\n            ELABORADOS: <Translation id=\"manufactured_products\" defaultMessage=\"Manufactured products\" />,\n            BAÑOS: <Translation id=\"baths_and_wall_cladding\" defaultMessage=\"Bathrooms and Wall Cladding\" />,\n            '01': <Translation id=\"SAMPLES\" defaultMessage=\"Samples\" />,\n            '02': <Translation id=\"OTHERS\" defaultMessage=\"Others\" />,\n            '03': <Translation id=\"MERCHANDISING\" defaultMessage=\"Merchandising\" />,\n            '04': <Translation id=\"LITERATURE\" defaultMessage=\"Literature\" />,\n            '05': <Translation id=\"TAGS\" defaultMessage=\"Tags\" />,\n            '06': <Translation id=\"ANCHORING\" defaultMessage=\"anchoring\" />,\n            '07': <Translation id=\"BOXES\" defaultMessage=\"Boxes\" />,\n            '08': <Translation id=\"DISPLAYS\" defaultMessage=\"Displays\" />,\n            '09': <Translation id=\"BOOKS\" defaultMessage=\"Books\" />,\n            '10': <Translation id=\"CABINETS\" defaultMessage=\"Cabinets\" />,\n            '11': <Translation id=\"SIGNAGE\" defaultMessage=\"Signage\" />,\n            '12': <Translation id=\"TEST_KITS\" defaultMessage=\"Test kits\" />,\n            '13': <Translation id=\"WORKWEAR\" defaultMessage=\"Workwear\" />,\n            '14': <Translation id=\"EPP\" defaultMessage=\"EPP\" />,\n            '15': <Translation id=\"WAREHOUSE_SUPPLIES\" defaultMessage=\"warehouse supplies\" />,\n            NEWS: <Translation id=\"NEWS\" defaultMessage=\"NEWS\" />\n        }\n\n        let sorting = {\n            TABLA: { val: 0 },\n            PPCC: { val: 3 },\n            FREGADERO: { val: 2 },\n            BAÑOS: { val: 2 },\n            '01': { val: 0 },\n            '08': { val: 1 },\n            '07': { val: 2 },\n            '09': { val: 3 },\n            '12': { val: 4 },\n            '04': { val: 5 },\n            '03': { val: 6 },\n            '05': { val: 7 },\n            '02': { val: 9999 }\n        }\n        filters.sort((a, b) => {\n            if (b.key === '02') return -1\n            else if (sorting[b.key] && sorting[a.key]) return sorting[a.key].val - sorting[b.key].val\n            else return 1\n        })\n\n        return filters\n            .filter(bucket => typeMap[bucket.key])\n            .map(bucket => {\n                return {\n                    title: typeMap[bucket.key],\n                    ...bucket\n                }\n            })\n    }\n\n    shippingCenterTransform = filters => {\n        return this.props.shippingAddressesCenters && this.props.shippingAddressesCenters\n    }\n\n    subtypeTransform = data => {\n        return data.map(item => {\n            item.title = this.props.intl.formatMessage({ id: 'subtype_' + item.key.toLowerCase().replace(/\\s/g, '_'), defaultMessage: item.key.toLowerCase() })\n            return item\n        })\n    }\n\n    supplyWarehouseTransform = filters => {\n        const typeMap = {\n            '13': <Translation id=\"WORKWEAR\" defaultMessage=\"Workwear\" />,\n            '14': <Translation id=\"EPP\" defaultMessage=\"EPP\" />,\n            '15': <Translation id=\"WAREHOUSE_SUPPLIES\" defaultMessage=\"warehouse supplies\" />\n        }\n\n        return filters.map(bucket => {\n            return {\n                title: typeMap[bucket.key] || bucket.key,\n                ...bucket\n            }\n        })\n    }\n\n    colorSerieDescTransform = filters => {\n        if (!Array.isArray(filters)) return []\n\n        return filters\n            .filter(bucket => bucket && bucket.key.trim() !== '')\n            .map(bucket => ({\n                title: bucket.key,\n                ...bucket\n            }))\n            .sort((a, b) => a.key.localeCompare(b.key))\n    }\n\n    toneTransform = filters => {\n        if (!Array.isArray(filters)) return []\n\n        return filters\n            .filter(bucket => bucket && bucket.key.trim() !== '')\n            .map(bucket => ({\n                title: bucket.key,\n                ...bucket\n            }))\n            .sort((a, b) => a.key.localeCompare(b.key))\n    }\n\n    zaddonTransform = filters => {\n        if (!Array.isArray(filters)) return []\n\n        const typeMap = {\n            MAL: <Translation id=\"yes\" defaultMessage=\"Yes\" />,\n            '': <Translation id=\"no\" defaultMessage=\"No\" />\n        }\n\n        return filters\n            .filter(bucket => bucket && (bucket.key === '' || bucket.key === 'MAL'))\n            .map(bucket => ({\n                title: typeMap[bucket.key] || bucket.key,\n                ...bucket\n            }))\n    }\n\n    render() {\n        const { isSmallScreen, visibleFilters, showMoreFilters } = this.state\n\n        let bannerSelector =\n            this.props.center === 7110\n                ? 'BE-' + this.props.intl.locale.toUpperCase()\n                : this.props.center === 7130\n                ? 'CH-' + this.props.intl.locale.toUpperCase()\n                : this.props.intl.locale.toUpperCase()\n        const favouritesFilter = (\n            <CheckboxFilter\n                id=\"favouriteV2\"\n                title={this.props.intl.formatMessage({ id: 'favourites' })}\n                label={this.props.intl.formatMessage({ id: 'only_show_favourites' })}\n                filter={TermsQuery('productId.raw', this.props.favouriteProducts)}\n            />\n        )\n\n        const mkToolShippingCenterFilter =\n            this.props.selectedCenter === 1060 && !this.props.isMagazineMk ? (\n                <div className=\"operationType mktools\">\n                    <div id=\"operationType-filter\" className=\"filter-list filter-mktool-v2\">\n                        <RefinementListFilter\n                            id=\"mktoolShippingCenter\"\n                            title={this.props.intl.formatMessage({\n                                id: 'mktoolShippingCenter'\n                            })}\n                            field=\"mktoolShippingCenter.raw\"\n                            listComponent={this.ShippingCenterOptions}\n                            bucketsTransform={this.shippingCenterTransform}\n                            size={9999}\n                            operator=\"OR\"\n                        />\n                    </div>\n                </div>\n            ) : (\n                this.ShippingCenterOptionsWithoutFilter(this.props.shippingAddressesCenters)\n            )\n\n        const typeFilter = (\n            <RefinementListFilter\n                id=\"type\"\n                title={this.props.intl.formatMessage({\n                    id: 'type'\n                })}\n                field={`${this.props.mktools ? 'typeId.raw' : 'type.raw'}`}\n                operator=\"OR\"\n                bucketsTransform={this.typeTransform}\n                orderKey=\"_term\"\n                className=\"test\"\n            />\n        )\n\n        const subTypeFilter = (\n            <div style={{ display: 'none' }}>\n                <RefinementListFilter\n                    id=\"subtype\"\n                    title={this.props.intl.formatMessage({ id: 'subtype' })}\n                    field=\"subtypeName.raw\"\n                    operator=\"OR\"\n                    bucketsTransform={this.subtypeTransform}\n                    size={5}\n                />\n            </div>\n        )\n\n        const operationTypeFilterForIkea = this.props.isIkeaCenter && (\n            <FilterV2Box filteredDataName=\"operationType\" translatedTitle={this.props.intl.formatMessage({ id: 'OPERATIONS' })} onTransform={this.operationTypeTransform} />\n        )\n\n        const outletQualityFilter = ['outlet'].includes(this.props.currentLocation.section) && (\n            <FilterV2Box filteredDataName=\"outletQuality\" translatedTitle={this.props.intl.formatMessage({ id: 'outletQuality' })} onTransform={this.outletQualityTransform} />\n        )\n\n        /* const discontinuedFilter = (\n            <RefinementListFilter\n                id=\"discontinued\"\n                title={this.props.intl.formatMessage({\n                    id: 'discontinued'\n                })}\n                field=\"discontinued.raw\"\n                operator=\"OR\"\n                bucketsTransform={this.discontinuedTransform}\n            />\n        ) */\n\n        /* const outletDeviatedFilter = this.props.selectedCenter == 1000 && (this.props.isAdmin || this.props.impersonatedBy) && (\n            <CheckboxFilter\n                id=\"outletDeviated\"\n                title={this.props.intl.formatMessage({\n                    id: 'deviated'\n                })}\n                label=\"deviated\"\n                filter={BoolShould([TermQuery('outletDeviated.raw', true)])}\n            />\n        ) */\n\n        /* const outletFilter = (\n            <CheckboxFilter\n                id=\"outlet\"\n                title={this.props.intl.formatMessage({\n                    id: 'outlet'\n                })}\n                label=\"outlet\"\n                filter={BoolShould([TermQuery('outlet.raw', false)])}\n            />\n        ) */\n\n        const webHeadingFilter = (\n            <RefinementListFilter\n                id=\"webHeading\"\n                title={this.props.intl.formatMessage({\n                    id: 'category'\n                })}\n                field=\"webHeading.raw\"\n                operator=\"OR\"\n                bucketsTransform={this.typeTransform}\n                orderKey=\"_term\"\n            />\n        )\n\n        const thicknessFilter = (\n            <FilterV2Box\n                filteredDataName=\"thickness\"\n                translatedTitle={this.props.intl.formatMessage({ id: 'thickness' })}\n                onTransform={this.thicknessTransform}\n                size={5}\n                gtmLabel=\"ec_filtros_grosor\"\n            />\n        )\n\n        const formatFilter = !this.props.isLowesCenter && !this.props.isIkeaCenter && (\n            <FilterV2Box\n                filteredDataName=\"format\"\n                translatedTitle={this.props.intl.formatMessage({ id: 'format' })}\n                onTransform={this.finishTransform}\n                size={5}\n                gtmLabel=\"ec_filtros_formato\"\n            />\n        )\n        const finishFilter = !this.props.mktools && (this.props.userType === 'ADMIN' || this.props.impersonatedBy || this.props.isIkeaCenter) && (\n            <FilterV2Box\n                filteredDataName=\"finish\"\n                translatedTitle={this.props.intl.formatMessage({ id: 'finish' })}\n                onTransform={this.finishTransform}\n                gtmLabel=\"ec_filtros_acabado\"\n            />\n        )\n\n        const finishFamilyFilter = (\n            <FilterV2Box\n                filteredDataName=\"finishFamily\"\n                translatedTitle={this.props.intl.formatMessage({ id: 'finishFamily' })}\n                onTransform={this.finishTransform}\n                gtmLabel=\"ec_filtros_familia_acabados\"\n            />\n        )\n\n        const brandFilter = (\n            <FilterV2Box\n                filteredDataName=\"brand\"\n                translatedTitle={this.props.intl.formatMessage({ id: 'brands' })}\n                onTransform={this.brandTransform}\n                gtmLabel=\"ec_filtros_marcas\"\n            />\n        )\n\n        /* const promoFilter = (\n            <div style={{ display: 'none' }}>\n                <CheckboxFilter\n                    id=\"promo\"\n                    title={this.props.intl.formatMessage({\n                        id: 'promotion'\n                    })}\n                    field=\"promo.raw\"\n                    operator=\"OR\"\n                    label=\"promotion\"\n                    filter={BoolShould([TermQuery('promo.raw', true)])}\n                />\n            </div>\n        ) */\n\n        const supplyWarehouseFilter = !this.props.isLowesCenter && this.props.mktools && this.props.isWarehouse && (\n            <FilterV2Box filteredDataName=\"typeId\" translatedTitle={this.props.intl.formatMessage({ id: 'WAREHOUSE_SUPPLIES' })} onTransform={this.supplyWarehouseTransform} />\n        )\n\n        /* const colorSerieDescFilter = !this.props.mktools && (\n            <FilterV2Box\n                filteredDataName=\"colorSerieDesc\"\n                translatedTitle={this.props.intl.formatMessage({ id: 'collection' })}\n                onTransform={this.colorSerieDescTransform}\n                size={5}\n            />\n        ) */\n\n        /* const toneFilter = !this.props.mktools && (\n            <FilterV2Box filteredDataName=\"tone\" translatedTitle={this.props.intl.formatMessage({ id: 'tone' })} onTransform={this.toneTransform} size={5} />\n        ) */\n\n        const zaddonFilter = !this.props.mktools && (\n            <FilterV2Box filteredDataName=\"zaddon\" translatedTitle={this.props.intl.formatMessage({ id: 'MAL' })} onTransform={this.zaddonTransform} size={5} operator={'AND'} />\n        )\n\n        //All filters\n        const allFilters = [\n            brandFilter,\n            thicknessFilter,\n            finishFilter,\n            finishFamilyFilter,\n            formatFilter,\n            //colorSerieDescFilter,\n            //toneFilter,\n            supplyWarehouseFilter,\n            //subTypeFilter,\n            operationTypeFilterForIkea,\n            zaddonFilter,\n            outletQualityFilter\n            //outletDeviatedFilter,\n            //outletFilter,\n            //promoFilter,\n        ].filter(Boolean)\n\n        return (\n            <div>\n                <div className=\"catalog__group_filters_options\" data-cy=\"catalog__group_filters_options v2\">\n                    {this.props.mktools && this.props.isLogged && !this.state.selectedShippingCenter && this.props.userType === 'ADMIN' && (\n                        <div className=\"container\">\n                            <Modal\n                                customClass=\"showOverflow\"\n                                title={<Translation id=\"please_select_shipping_center\" defaultMessage=\"Please select shipping center\" />}\n                                showCloseButton={false}\n                            >\n                                {this.props.isLoadingShippingAddresses ? (\n                                    <Translation id=\"loading_shipping_addresses\" defaultMessage=\"Loading Shipping Addresses\" />\n                                ) : (\n                                    <div className={this.props.mktools ? 'filters__contain mktools' : 'filters__contain'}>{mkToolShippingCenterFilter}</div>\n                                )}\n                            </Modal>\n                        </div>\n                    )}\n                    {this.props.hasPromoActivated &&\n                        (this.props.promoBanners[bannerSelector] || this.props.promoBanners['default'].catalogBanner) &&\n                        !this.props.location.search.includes('promo') && (\n                            <div className=\"\">\n                                <LocalizedLink routeId=\"ROUTE_CATALOG\" queryString=\"?type[0]=TABLA&promo=true\" params={{ outlet: '' }}>\n                                    <div className=\"d-block d-md-none\">\n                                        <img\n                                            src={\n                                                this.props.promoBanners[bannerSelector]\n                                                    ? this.props.promoBanners[bannerSelector].homeBannerMobile\n                                                    : this.props.promoBanners['default'].homeBannerMobile\n                                            }\n                                            style={{ width: '100%' }}\n                                            alt=\"\"\n                                            extraClass=\" image-slide\"\n                                        />\n                                    </div>\n                                    <div className=\"d-none d-md-block\">\n                                        <img\n                                            src={\n                                                this.props.promoBanners[bannerSelector]\n                                                    ? this.props.promoBanners[bannerSelector].homeBannerMobile\n                                                    : this.props.promoBanners['default'].homeBannerMobile\n                                            }\n                                            style={{ width: '100%' }}\n                                            alt=\"\"\n                                            extraClass=\" image-slide\"\n                                        />\n                                    </div>\n                                </LocalizedLink>\n                                <br />\n                            </div>\n                        )}\n\n                    {\n                        <span\n                            className=\"filter-responsive\"\n                            onClick={() => {\n                                ;[...document.querySelectorAll('#filters')].map(e => {\n                                    e.hidden = !e.hidden\n                                    e.style.display = 'flex'\n                                    ;[...document.querySelectorAll('#show-filters')].map(i => (i.hidden = !e.hidden))\n                                    ;[...document.querySelectorAll('#hide-filters')].map(i => (i.hidden = e.hidden))\n                                })\n                            }}\n                        >\n                            <strong id=\"show-filters\">\n                                <Translation id=\"show_filters\" defaultMessage=\"Show filters\" />\n                            </strong>\n                            <strong hidden id=\"hide-filters\">\n                                <Translation id=\"hide_filters\" defaultMessage=\"Hide filters\" />{' '}\n                            </strong>\n                            <i className=\"fas fa-filter fa-xs\"></i>\n                        </span>\n                    }\n\n                    <div className=\"filters\" id=\"filters\" hidden={window.innerWidth < 776}>\n                        {this.props.mktools && (\n                            <div style={{ display: 'none' }} className=\"row no-gutters\">\n                                <div className=\"col-12\">{webHeadingFilter}</div>\n                            </div>\n                        )}\n\n                        <div className={this.props.mktools ? 'filters__contain mktools' : 'filters__contain'}>\n                            <div className=\"first-line\">\n                                <div className=\"filter-content\">\n                                    <div className=\"filter-items\">\n                                        <div className=\"filter-items--child\">\n                                            {allFilters &&\n                                                allFilters.map((filter, index) => {\n                                                    // En pantallas grandes, aplicar la lógica de ocultar los filtros\n                                                    if (!isSmallScreen) {\n                                                        return (\n                                                            <div key={index} className={`filter-item ${!showMoreFilters && index >= visibleFilters ? 'hidden-filter' : ''}`}>\n                                                                {filter}\n                                                            </div>\n                                                        )\n                                                    }\n\n                                                    // En pantallas pequeñas, mostrar todos los filtros sin restricciones\n                                                    return (\n                                                        <div key={index} className=\"filter-item\">\n                                                            {filter}\n                                                        </div>\n                                                    )\n                                                })}\n\n                                            {allFilters && allFilters.length > visibleFilters && (\n                                                <div className=\"catalog-toggle-filters\">\n                                                    <Button icon=\"filter\" onClick={this.toggleFilters} className=\"catalog-toggle-filters--btn\">\n                                                        {showMoreFilters ? (\n                                                            <Translation id=\"less_filters\" defaultMessage=\"Less filters\" />\n                                                        ) : (\n                                                            <Translation id=\"more_filters\" defaultMessage=\"More filters\" />\n                                                        )}\n                                                    </Button>\n                                                </div>\n                                            )}\n                                        </div>\n                                    </div>\n                                    {subTypeFilter}\n                                    <div>\n                                        {this.props.isLogged && this.props.favouriteProducts && (\n                                            <div className=\"contain-favourites\" onClick={() => this.props.filterFavourites()}>\n                                                <div>{favouritesFilter}</div>\n                                            </div>\n                                        )}\n                                    </div>\n                                </div>\n                                {this.props.selectedCenter === 7777 && (\n                                    <div>\n                                        <span>\n                                            For assistance please email <a href=\"mailto:lowescustomercare@cosentino.com\">lowescustomercare@cosentino.com</a>\n                                        </span>\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                        {!this.props.isLowesCenter && (\n                            <div className={this.props.mktools ? '' : 'd-none'}>\n                                <div className=\"col-12 v2\">{typeFilter}</div>\n                            </div>\n                        )}\n                        <div className=\"tags_clean\">\n                            <SelectedFilters itemComponent={CustomFilterItem} />\n                            {this.state.showClearFilter && (\n                                <ResetFilters component={<ClearFiltersDesktop onReset={this.onReset} />} />\n                            )}\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default withRouter(injectIntl(FiltersV2))\n\nconst ClearFiltersDesktop = ({ hasFilters, translate, resetFilters, onReset }) => (\n    <span\n        size=\"small\"\n        icon=\"trash\"\n        hidden={!hasFilters}\n        className=\"clean-filters\"\n        onClick={() => {\n            resetFilters()\n            onReset()\n        }}\n        datacy=\"catalog__clear_all_filters\"\n    >\n        {translate('reset.clear_all')}\n    </span>\n)\n\nconst CustomFilterItem = ({ filterId, labelKey, labelValue, removeFilter, translate }) => {\n\n    /* README: If you want to add a new translation, make sure to define that translation in the SearchKit translations object, it's on Catalog.js */\n\n    // Define a map to handle logic for different filterIds\n    const logicMap = {\n        zaddon: (value) => {\n            if (value === 'MAL') {\n                return translate('yes') || 'Yes'\n            } else if (!value) {\n                return translate('no') || 'No'\n            }\n            return value\n        },\n        outletQuality: (value) => {\n            if (value === 'O') {\n                return translate('outlet_o') || 'Outlet Basic'\n            } else if (value === 'V') {\n                return translate('outlet_v') || 'Outlet Premium'\n            } else if (value === 'X') {\n                return translate('outlet_x') || 'Outlet Exclusive'\n            }\n            return value\n        },\n    }\n\n     // Fallback for unknown filterIds or default logic\n     const defaultHandler = (value) => value || ''\n\n     // Get the display label based on the logic map\n    const getDisplayLabel = () => {\n        const handler = logicMap[filterId] || defaultHandler\n        return handler(labelValue)\n    }\n\n    //RESPECT THE HTML STRUCTURE. checkFilters METHOD DEPENDS ON.\n\n    return (\n        <div className={`sk-selected-filters-option sk-selected-filters__item selected-filter--${filterId}`}>\n            <div className=\"sk-selected-filters-option__name\">\n                {labelKey + ': '}\n                <span>{getDisplayLabel()}</span>\n            </div>\n            <div className=\"sk-selected-filters-option__remove-action\" onClick={() => removeFilter()}>\n                x\n            </div>\n        </div>\n    )\n}\n","import React from 'react'\r\nimport Translation from '../../global/Translation'\r\n\r\nimport LocalizedLink from '../../global/LocalizedLink'\r\nimport { injectIntl } from 'react-intl'\r\n\r\nimport iconoTemporalAcabado from '../../../assets/img/acabado.png'\r\nimport ProductDisplayName from '../../global/ProductDisplayName'\r\nimport withRouter from 'react-router-dom/withRouter'\r\n\r\nclass CircleResult extends React.Component {\r\n    constructor(props) {\r\n        super(props)\r\n        const source = props.result !== undefined ? props.result._source : props.product\r\n        this.product = source\r\n    }\r\n\r\n    render() {\r\n        const goToProduct = () => {\r\n            this.props.setLastSelectedProduct(this.product)\r\n        }\r\n\r\n        const promoCenter = this.props.location.search.indexOf('promo=true') > -1 ? 7500 : null\r\n        const thickness = this.product.thickness ? (\r\n            <div className=\"thickness\">\r\n                <div className=\"icon\">\r\n                    <div style={{ height: `${this.product.thickness}px` }} />\r\n                </div>\r\n                <div className=\"text\">{this.product.thickness.replace('.', ',')} cm</div>\r\n            </div>\r\n        ) : null\r\n\r\n        const finish = this.product.finish2 ? (\r\n            <div className=\"finish\">\r\n                <div className=\"icon\">\r\n                    <img alt=\"\" src={iconoTemporalAcabado} />\r\n                </div>\r\n                <div className=\"text\">{this.props.intl.formatMessage({ id: this.product.finish2 })}</div>\r\n            </div>\r\n        ) : null\r\n\r\n        return (\r\n            <div className=\"result\" data-cy=\"catalog__product_circle_result\" data-key={this.product.productId} data-color={this.product.colorId} type={this.product.type}>\r\n                <LocalizedLink\r\n                    routeId=\"ROUTE_PRODUCT_DETAIL\"\r\n                    params={{ id: this.product.productId, outlet: this.props.outlet ? 'outlet' : '' }}\r\n                    queryString={this.props.location.search.indexOf('promo=true') > -1 ? '?promo=true' : undefined}\r\n                    onClick={goToProduct}\r\n                >\r\n                    <div className=\"product-image-container\">\r\n                        <div className=\"product-image\" style={{ backgroundImage: 'url(\"' + this.product.thumb + '\")' }} />\r\n                    </div>\r\n                </LocalizedLink>\r\n                <div className=\"product-info\">\r\n                    <div className=\"product-brand\">{this.product.brand.toLowerCase()} &reg;</div>\r\n                    <div className=\"product-color-name\">\r\n                        <ProductDisplayName product={this.product} />\r\n                    </div>\r\n                    <div className=\"product-info-details\">\r\n                        {thickness}\r\n                        {finish}\r\n                    </div>\r\n                </div>\r\n                <div className=\"product-actions\">\r\n                    <div className=\"action-buttons\">\r\n                        <span\r\n                            className=\"action-button bt-add-to-cart\"\r\n                            onClick={() => {\r\n                                this.props.addCartLine(this.product.productId, 1, promoCenter)\r\n                            }}\r\n                        >\r\n                            <i className=\"fal fa-shopping-cart\" />\r\n                        </span>\r\n                        <LocalizedLink\r\n                            routeId=\"ROUTE_PRODUCT_DETAIL\"\r\n                            queryString={this.props.location.search.indexOf('promo=true') > -1 ? '?promo=true' : undefined}\r\n                            params={{ id: this.product.productId, outlet: this.props.outlet ? 'outlet' : '' }}\r\n                            className=\"action-button bt-view-detail\"\r\n                            onClick={goToProduct}\r\n                        >\r\n                            <i className=\"fal fa-eye\" />\r\n                        </LocalizedLink>\r\n                    </div>\r\n                    <LocalizedLink\r\n                        routeId=\"ROUTE_PRODUCT_DETAIL\"\r\n                        queryString={this.props.location.search.indexOf('promo=true') > -1 ? '?promo=true' : undefined}\r\n                        params={{\r\n                            id: this.product.productId,\r\n                            outlet: this.props.outlet ? 'outlet' : ''\r\n                        }}\r\n                        className=\"bt-more-info\"\r\n                        onClick={goToProduct}\r\n                    >\r\n                        <Translation id=\"more_info\" defaultMessage=\"+ Information\" />\r\n                    </LocalizedLink>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default withRouter(injectIntl(CircleResult))\r\n","import { connect } from 'react-redux'\nimport { addCartLine } from '../../../store/cart/actions'\nimport CircleResult from './CircleResult'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport {setLastSelectedProduct} from \"../../../store/selected-objects/actions\";\n\nconst mapStateToProps = (state, { match }) => {\n    return { outlet: match.params.outlet }\n}\n\nconst CircleResultContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            { addCartLine: addCartLine,\n              setLastSelectedProduct: setLastSelectedProduct}\n        )(CircleResult)\n    )\n)\n\nexport default CircleResultContainer\n","import React from 'react'\n\nimport debounce from 'lodash/debounce'\n\nconst initState = { value: 1, displayValue: 1 }\nclass InputNumberViewV2 extends React.Component {\n    _isMounted = false\n    constructor(props) {\n        super(props)\n        this.state = initState\n    }\n    componentDidMount() {\n        this._isMounted = true\n        this.btnMinus.addEventListener('click', this.debounceMinus)\n        this.btnPlus.addEventListener('click', this.debouncePlus)\n        this.input.addEventListener('blur', this.inputTypeWithouthDebounce)\n        this.input.addEventListener('keypress', this.debounceInput)\n\n        let value = this.props.allowNull ? this.props.value || '' : this.props.value || 1\n        let displayValue = this.props.allowNull ? this.props.value || '' : this.props.value || 1\n        this.setState({ value: value, displayValue: displayValue })\n    }\n    componentWillUnmount() {\n        this._isMounted = false\n    }\n    componentDidUpdate(prevProps) {\n        let value = this.props.allowNull ? this.props.value || '' : this.props.value || 1\n        let displayValue = this.props.allowNull ? this.props.value || '' : this.props.value || 1\n        if (this.props.value != prevProps.value) this.setState({ value: value, displayValue: displayValue })\n    }\n\n    debounceMinus = debounce(() => {\n        if (this._isMounted) {\n            let val = this.props.onChange(this.state.value, 'minus')\n            this.setState({ value: val, displayValue: val })\n        }\n    }, 250)\n    debouncePlus = debounce(() => {\n        if (this._isMounted) {\n            let val = this.props.onChange(this.state.value, 'plus')\n            this.setState({ value: val, displayValue: val })\n        }\n    }, 250)\n    inputTypeWithouthDebounce = e => {\n        if (this._isMounted) {\n            let val = this.props.onChange(this.state.value)\n            this.setState({ value: val, displayValue: e.key === ',' || e.key === '.' || e.target.value === '0' ? this.state.displayValue : val })\n        }\n    }\n    debounceInput = debounce(e => {\n        if (this._isMounted) {\n            let val = this.props.onChange(this.state.value)\n            this.setState({ value: val, displayValue: e.key === ',' || e.key === '.' || e.target.value === '0' ? this.state.displayValue : val })\n        }\n    }, 2000)\n    render() {\n        let { size = '', step = 1, decimals = 0 } = this.props\n        const cssClass = 'input-number noselect ' + (this.props.oldStyle ? '' : 'v2 ') + size\n\n        return (\n            <div className={cssClass}>\n                <div\n                    className=\"spin minus\"\n                    ref={node => {\n                        this.btnMinus = node\n                    }}\n                    onClick={() => {\n                        this.setState({\n                            value: parseFloat((+this.state.value - step).toFixed(decimals), 10),\n                            displayValue: parseFloat((+this.state.value - step).toFixed(decimals), 10)\n                        })\n                    }}\n                >\n                    <i className=\"far fa-minus\" />\n                </div>\n                <div className=\"input-container\">\n                    <input\n                        ref={node => {\n                            this.input = node\n                        }}\n                        className=\"inner-input-number\"\n                        data-cy=\"global__input_number\"\n                        data-qas={this.props.dataQas}\n                        value={this.state.displayValue}\n                        type=\"number\"\n                        onChange={e => {\n                            this.setState({ displayValue: e.target.value })\n                            if (this.props.allowNull) {\n                                if (/[0-9]+([.|,][0-9]+)?/.test(e.target.value))\n                                    this.setState({ value: parseFloat(e.target.value, 10) }, () => (this.input.value = this.state.value))\n                                if (e.target.value == null || e.target.value == '') {\n                                    this.setState({ value: null }, () => {\n                                        this.props.onChange(this.state.value)\n                                        this.input.value = this.state.value\n                                    })\n                                }\n                            } else {\n                                if (/[0-9]+([.|,][0-9]+)?/.test(e.target.value))\n                                    this.setState({ value: parseFloat(e.target.value, 10) }, () => (this.input.value = this.state.value))\n                            }\n                        }}\n                    />\n                </div>\n                <div\n                    className=\"spin plus\"\n                    ref={node => {\n                        this.btnPlus = node\n                    }}\n                    onClick={() => {\n                        this.setState({\n                            value: parseFloat((+this.state.value + step).toFixed(decimals), 10),\n                            displayValue: parseFloat((+this.state.value + step).toFixed(decimals), 10)\n                        })\n                    }}\n                >\n                    <i className=\"far fa-plus\" />\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default InputNumberViewV2\n","import React from 'react'\n\nimport InputNumberViewV2 from './InputNumberViewV2'\n\nclass InputNumber extends React.Component {\n    render() {\n        let { value, change, size = '', step = 1, min = null, limit = null, decimals = 0, allowNull = false, dataQas, oldStyle, onDelete } = this.props\n        let lvlPrecision = decimals > 4 ? decimals : 4\n\n        if (limit && parseFloat(limit, 10) <= 0) value = 0\n        \n        const changeValue = (val, button = '') => {\n            if (parseFloat(val) === 0 && onDelete) {\n                onDelete()\n                return // Salir de la función sin actualizar el valor\n            }\n\n            let newValue = val\n            // Si el nuevo valor no es divisible por el step: toma el valor inmediatamente menor\n            if (val % step !== 0) newValue = (step * parseInt((val / step).toFixed(lvlPrecision), 10)).toFixed(decimals)\n            // En el caso de tener límite y el núevo valor está por encima de la diferencia del límite con el step: tomará el valor del límite\n            // Para los casos de entrada en el input y el botón plus\n            if (limit && (val > limit || limit - step < val)) newValue = limit\n            // Para el botón minus: En el caso de estár en el límite y restar 1 step, restará la diferencia y un step ej.\n            // valor 11, step 3, --> nuevo valor debería ser 6  (de 6 a 11 y de 11 a 6)\n            if (limit && (button === 'minus' && (val > limit || limit - step <= val))) newValue = (step * parseInt((val / step).toFixed(lvlPrecision), 10)).toFixed(decimals)\n            //Si el valor está por debajo del min estando definido\n            if (min && val < min) newValue = min\n            //Si el valor está por debajo del step sin estar el min definido\n            else if (val < step) newValue = step\n\n            // si permite null, modificamos comportamiento para que pueda gardar 0 en la tabla de admin mktools\n            if (allowNull) {\n                if (val == 0 || val == '' || val == null) {\n                    newValue = 0\n                } else if (val < step) {\n                    newValue = step\n                }\n            }\n            //Si el valor no es un número\n            if (isNaN(val) && !allowNull) newValue = min || step\n            //Si el límite es 0, el valor es 0\n            if (limit !== null && limit <= 0) newValue = 0\n            //Si el límite es menor que el mínimo, el valor es 0\n            if (limit !== null && limit < min) newValue = 0\n\n            if (change !== undefined) {\n                change(parseFloat(newValue))\n            }\n\n            return parseFloat(newValue)\n        }\n\n        return <InputNumberViewV2 value={value} onChange={changeValue} step={step} size={size} decimals={decimals} allowNull={allowNull} dataQas={dataQas} oldStyle={oldStyle}/>\n    }\n}\n\nexport default InputNumber\n","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport Button from './Button'\nimport { getProductsIdFavourite } from '../../store/products/reducers'\nimport { toogleFavourite, fetchProductsFavourite } from '../../store/products/actions'\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggleFavourite: productId => {\n            dispatch(toogleFavourite(productId))\n        },\n        fetchProductsFavourite: () => {\n            dispatch(fetchProductsFavourite())\n        }\n    }\n}\nconst mapStateToProps = state => {\n    return {\n        productsFavourite: getProductsIdFavourite(state)\n    }\n}\n\nclass AddFavourite extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {}\n    }\n\n    render() {\n        const { productId, onToggleFavourite, intl } = this.props\n\n        const isAdded = this.props.productsFavourite && this.props.productsFavourite.find(id => id === this.props.productId) !== undefined\n\n        return (\n            <Button\n                icon=\"heart\"\n                far={isAdded ? undefined : true}\n                size=\"small\"\n                inverted\n                title={`${isAdded ? intl.formatMessage({ id: 'remove_favourite' }) : intl.formatMessage({ id: 'add_favourite' })}`}\n                customClass={`bt-add-favourite ${isAdded ? 'isFavourite' : ''}`}\n                datacy=\"global__favourite_heart\"\n                onClick={() => {\n                    onToggleFavourite(productId)\n                }}\n            />\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(AddFavourite)\n)\n","import React, { useState, useEffect } from \"react\"\nimport gripImg from \"../../../../assets/img/logos/grip.svg\"\nimport gripPlusImg from \"../../../../assets/img/logos/grip-plus.svg\"\nimport hybriqImg from \"../../../../assets/img/logos/hybriq.svg\"\nimport nboostImg from \"../../../../assets/img/logos/nboost.svg\"\nimport ukiyoImg from \"../../../../assets/img/logos/ukiyo.svg\"\nimport optimmaImg from \"../../../../assets/img/logos/optimma-logo.svg\"\nimport silestonexmImg from \"../../../../assets/img/logos/silestone-xm.svg\"\n\nconst technologyData = {\n    grip: { img: gripImg, alt: \"GRIP Technology\", defaultWidth: \"74px\", defaultHeight: \"24px\" },\n    \"grip+\": { img: gripPlusImg, alt: \"GRIP+ Technology\", defaultWidth: \"74px\", defaultHeight: \"24px\" },\n    hybriq: { img: hybriqImg, alt: \"Hybriq Technology\", defaultWidth: \"63px\", defaultHeight: \"24px\" },\n    nboost: { img: nboostImg, alt: \"NBOOST Technology\", defaultWidth: \"74px\", defaultHeight: \"24px\" },\n    ukiyo: { img: ukiyoImg, alt: \"Ukiyo Technology\", defaultWidth: \"63px\", defaultHeight: \"24px\" },\n    optimma: { img: optimmaImg, alt: \"Optimma Technology\", defaultWidth: \"63px\", defaultHeight: \"24px\" },\n    silestonexm: { img: silestonexmImg, alt: \"Silestone XM Technology\", defaultWidth: \"63px\", defaultHeight: \"24px\" },\n}\n\nconst DisplayTechnology = ({\n    technology,\n    subBrand,\n    backgroundColor = \"#FFFFFF\",\n    className,\n    desktopWidth,\n    desktopHeight,\n    showTechnologies = true,\n    inSmallBox = false,\n    withBorder = false\n}) => {\n    const [isDesktop, setIsDesktop] = useState(window.innerWidth >= 768)\n\n    // Update the state on window resize\n    useEffect(() => {\n        const handleResize = () => {\n            setIsDesktop(window.innerWidth >= 768)\n        }\n\n        window.addEventListener(\"resize\", handleResize)\n\n        return () => {\n            window.removeEventListener(\"resize\", handleResize)\n        }\n    }, [])\n\n    // Verify if the technology should be displayed\n    if (!showTechnologies) {\n        return null\n    }\n\n    let techKey = technology && typeof technology === \"string\" ? technology.toLowerCase() : null\n    let techInfo\n\n    if (subBrand && typeof subBrand === \"string\" && subBrand.toUpperCase() === \"XM\") {\n        techKey = \"silestonexm\"\n    }\n\n    if (techKey && technologyData[techKey]) {\n        techInfo = technologyData[techKey]\n    }\n\n    if (!techInfo) return null\n\n    // Adjusted dimensions and padding for checkout\n    const smallBoxStyles = {\n        width: \"auto\",\n        height: \"17px\",\n        padding: \"2px 4px\",\n    }\n\n    // General styles\n    const styles = {\n        generalStyles: {\n            display: \"inline-block\",\n            backgroundColor: backgroundColor,\n            padding: inSmallBox ? smallBoxStyles.padding : \"6px 8px\",\n            lineHeight: \"0\",\n            border: withBorder ? '1px solid #cacaca' : '',\n            width: isDesktop\n                ? desktopWidth || (inSmallBox ? smallBoxStyles.width : techInfo.defaultWidth)\n                : inSmallBox\n                ? smallBoxStyles.width\n                : techInfo.defaultWidth,\n            height: isDesktop\n                ? desktopHeight || (inSmallBox ? smallBoxStyles.height : techInfo.defaultHeight)\n                : inSmallBox\n                ? smallBoxStyles.height\n                : techInfo.defaultHeight,\n        },\n        imgStyles: {\n            width: \"100%\",\n            height: \"100%\",\n        },\n    }\n\n    return (\n        <div className={className} style={styles.generalStyles}>\n            <img src={techInfo.img} alt={techInfo.alt} style={styles.imgStyles} />\n        </div>\n    )\n}\n\nexport default DisplayTechnology\n","import React from 'react'\n\nexport default class DisplayBlackIndicator extends React.Component {\n    render() {\n        const { value } = this.props\n\n        const styles = {\n            backgroundColor: '#EE0015',\n            color: '#FFFFFF',\n            padding: '4px 8px',\n            fontSize: '10px',\n            fontWeight: '500',\n            zIndex: 1,\n            display: 'inline-block',\n            lineHeight: '16px'\n        }\n\n        return (\n            value && (\n                <div className=\"new-indicator new-indicator--black\" style={styles}>\n                    {value}\n                </div>\n            )\n        )\n    }\n}\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport { getImageThumb, isOtherMask } from '../../store/products/actions'\nimport { canViewImageByLot } from '../../store/centers/actions'\nimport { getHQCenterId, getIKEACenterId, getIsMkToolsCenter, getSelectedCenter, getIsIkeaCenter } from '../../store/centers/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport { getDeviatedDescriptions, canViewPricesPhase3 } from '../../store/products/reducers'\nimport { withRouter } from 'react-router-dom'\nimport noImage from '../../assets/img/icons/no-image.svg'\nimport { ElaborationOptionsMapById } from '../cut-to-size/CutToSizeMaps'\nimport DisplayTechnology from './rectangleResult/displays/DisplayTechnology'\nimport DisplayBlackIndicator from './rectangleResult/displays/DisplayBlackIndicator'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        isMktoolsCenter: getIsMkToolsCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        locale: getLanguage(state),\n        deviatedDescritions: getDeviatedDescriptions(state),\n        centerId: getSelectedCenter(state),\n        outlet: match.params.outlet,\n        canViewPricesPhase3: canViewPricesPhase3(state),\n        HQCenterId: getHQCenterId(),\n        IkeaCenterId: getIKEACenterId()\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        getImageThumb: product => dispatch(getImageThumb(product)),\n        isOtherMask: product => isOtherMask(product),\n        canViewImageLot: location => dispatch(canViewImageByLot(location))\n    }\n}\n\nclass ProductImage extends React.Component {\n    render() {\n        const { materialId, product, state, canViewPricesPhase3, intl, showTechnologies, inSmallBox } = this.props\n        \n        const labelsBlock = (\n                <div className=\"product-image-technology\">\n                    <div className=\"technology-content\">\n                        <DisplayTechnology technology={product && product.technology} subBrand={product && product.subBrand} showTechnologies={showTechnologies} inSmallBox={inSmallBox}/>\n                    </div>\n\n                {canViewPricesPhase3 &&\n                    state &&\n                    state.promotions &&\n                    state.promotions.length > 0 &&\n                    (state.promotions[0].dealType === 'A' ? (\n                        <div className=\"d-flex\">\n                            <DisplayBlackIndicator value={intl.formatMessage({ id: 'new_price' })} />\n                        </div>\n                    ) : state.promotions[0].dealType === 'B' ? (\n                        <div className=\"d-flex\">\n                            <DisplayBlackIndicator value={`-${state.promotions[0].value}%`} />\n                        </div>\n                    ) : null)}\n            </div>\n        )\n\n        if (!product) {\n            if (materialId && ElaborationOptionsMapById[materialId])\n                return (\n                    <div className=\"product-image-container\">\n                        <div\n                            className=\"product-image\"\n                            style={{\n                                backgroundColor: 'white',\n                                backgroundImage: 'url(\"' + ElaborationOptionsMapById[materialId].icon + '\")',\n                                backgroundSize: 'cover'\n                            }}\n                        ></div>\n                    </div>\n                )\n            else\n                return (\n                    <div\n                        className=\"product-image-container\"\n                        style={{\n                            backgroundImage: 'url(\"' + noImage + '\")',\n                            backgroundColor: '#f6f6f6',\n                            backgroundRepeat: 'no-repeat',\n                            backgroundPosition: 'center',\n                            border: '1px dashed #cccccc'\n                        }}\n                    >\n                        <div className=\"product-image\">\n                        {labelsBlock}\n                        </div>\n                    </div>\n                )\n        } else if (product && !this.props.getImageThumb(product)) {\n            return (\n                <div\n                    className=\"product-image-container\"\n                    style={{\n                        backgroundImage: 'url(\"' + noImage + '\")',\n                        backgroundColor: '#f6f6f6',\n                        backgroundRepeat: 'no-repeat',\n                        backgroundPosition: 'center',\n                        border: '1px dashed #cccccc'\n                    }}\n                >\n                    <div className=\"product-image\">\n                    {labelsBlock}\n                    </div>\n                </div>\n            )\n        }\n        return (\n            <div className={this.props.customClass && this.props.customClass !== '' ? this.props.customClass + ' product-image-container' : 'product-image-container'}>\n                {(product.thumbMd || this.props.isIkeaCenter || this.props.isMktoolsCenter) && (\n                    <div\n                        className=\"product-image\"\n                        type={product.subtypeId == 'REVESTIMIENTO' ? 'TABLA' : product.type}\n                        style={\n                            this.props.getImageThumb(product) && {\n                                backgroundColor: 'white',\n                                backgroundImage: 'url(\"' + this.props.getImageThumb(product) + '\")',\n                                backgroundSize: this.props.getImageThumb(product).includes('product-adv') && product.type == 'FREGADERO' ? '180%' : '',\n                                backgroundPosition: this.props.getImageThumb(product).includes('product-adv') ? '57% 41%' : ''\n                            }\n                        }\n                    >\n                        {product.promotionFreeItem && canViewPricesPhase3 && (\n                            <div\n                                className=\"other_mask free-item\"\n                                type={product.promotionFreeItem.type}\n                                style={{\n                                    backgroundImage: 'url(\"' + product.promotionFreeItem.thumb + '\")'\n                                }}\n                            />\n                        )}\n\n                        {this.props.isOtherMask(product) && (\n                            <div\n                                className=\"other_mask\"\n                                style={{\n                                    backgroundImage: 'url(\"' + product.colorImg + '\")'\n                                }}\n                            />\n                        )}\n\n                        {labelsBlock}\n                    </div>\n                )}\n                {this.props.centerId === this.props.HQCenterId &&\n                    this.props.outlet === 'outlet' &&\n                    this.props.deviatedDescritions &&\n                    this.props.deviatedDescritions[product.productId] && (\n                        <div className=\"product-image-container__text-info\">\n                            {this.props.deviatedDescritions[product.productId][this.props.locale]\n                                ? this.props.deviatedDescritions[product.productId][this.props.locale]\n                                : this.props.deviatedDescritions[product.productId]['default']}\n                        </div>\n                    )}\n            </div>\n        )\n    }\n}\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(ProductImage))\n","import React from 'react'\nimport Translation from '../../global/Translation'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport PPCC_V2 from '../../../assets/img/banners-v2/PPCC_V2.png'\nimport CTS_V2 from '../../../assets/img/banners-v2/CTS_V2.png'\nimport Banos_V2 from '../../../assets/img/banners-v2/NewBanos_v2.png'\nimport OUTLET from '../../../assets/img/banners-v2/Outlet_V2.png'\nimport TARIFICADOR from '../../../assets/img/banners-v2/banner-tarificador.png'\nimport promoNaturalStoneCatalogV2 from '../../../assets/img/banners-exclusive-promo-natural-stone/promo_natural_stone_catalog_v2.png'\n\nexport default class BannerResultV2 extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {}\n    }\n    render() {\n        let banner = [\n            [\n                PPCC_V2,\n                <Translation id=\"professional_products\" defaultMessage=\"Professional products\" />,\n                <Translation id=\"banner_ppcc_result_v2\" defaultMessage=\"Find here your silicones, adhesives, tapes and much more\" />,\n                <Translation id=\"view_section\" defaultMessage=\"View secction\" />,\n                'cover',\n                'center center',\n                '27.43%',\n                '?type[0]=PPCC',\n                { outlet: '' },\n                'ROUTE_CATALOG'\n            ],\n            [\n                Banos_V2,\n                <Translation id=\"standard_products\" defaultMessage=\"Standard Products\" />,\n                <Translation id=\"banner_bath_subtitle\" defaultMessage=\"Washbasins, shower trays and optima boards\" />,\n                <Translation id=\"view_section\" defaultMessage=\"View secction\" />,\n                'cover',\n                'center center',\n                null,\n                '?type[0]=TABLA&type[1]=CTS&subtype[0]=Optimma&subtype[1]=SOLERIA&type[2]=BAÑOS&subtype[2]=Washbasin&type[3]=BAÑOS&subtype[3]=Shower%20tray&?type[4]=FREGADERO',\n                { outlet: '' },\n                'ROUTE_CATALOG'\n            ],\n            [\n                CTS_V2,\n                <Translation id=\"CTS_V2_TXT\" defaultMessage=\"Now your materials cut to size\" />,\n                <Translation id=\"CTS_V2_TXT_2\" defaultMessage=\"Now your materials cut to size\" />,\n                <Translation id=\"view_section\" defaultMessage=\"View secction\" />,\n                'cover',\n                'center center',\n                '-0.57%',\n                '',\n                { outlet: '' },\n                'ROUTE_CUT_TO_SIZE'\n            ],\n            [\n                OUTLET,\n                <Translation id=\"cosentino_outlet\" defaultMessage=\"Cosentino outlet\" />,\n                <Translation id=\"OUTLET_V2_TXT\" defaultMessage=\"Offers at your nearest Center\" />,\n                <Translation id=\"view_section\" defaultMessage=\"View secction\" />,\n                'cover',\n                'center center',\n                '-0.57%',\n                '?type[0]=TABLA',\n                { outlet: 'outlet' },\n                'ROUTE_CATALOG'\n            ],\n            [\n                TARIFICADOR,\n                <Translation id=\"try_our_new_rater\" defaultMessage=\"Try our new Rater\" />,\n                <Translation id=\"upload_your_rates\" defaultMessage=\"Upload your rates and generate quotes in seconds\" />,\n                <Translation id=\"view_section\" defaultMessage=\"View secction\" />,\n                'cover',\n                'center center',\n                '-0.57%',\n                '',\n                { outlet: '' },\n                ''\n            ]\n        ]\n        let type;\n        if(this.props.typeClient === 1 && this.props.location.search !== \"?type[0]=BAÑOS\" && this.props.testAB === 'A'){\n            type = 1\n        }else if(this.props.typeClient === 1 && this.props.location.search !== \"?type[0]=PPCC\" && this.props.testAB === 'A'){\n            type = 0\n        }else if(this.props.typeClient === 1 && this.props.location.search !== \"?type[0]=BAÑOS\" && this.props.testAB === 'B'){\n            type = 4\n        }else if(this.props.typeClient === 3 && this.props.location.search !== \"?type[0]=BAÑOS\"){\n            type = 1\n        }else if(this.props.typeClient === 3 && this.props.location.search !== \"?type[0]=PPCC\"){\n            type = 0\n        }else if(this.props.typeClient === 2 && this.props.location.search !== \"?type[0]=TABLA\"){\n            type = 2\n        }else{\n            type = 3\n        }\n\n        // if(this.props.type && this.props.type !== ''){\n        //     type = this.props.type\n        // }\n\n        if(this.props.showBannerPromo) {\n            banner[type][0] = promoNaturalStoneCatalogV2\n            banner[type][1] = <Translation id=\"exclusive_promo_natural_stone\" defaultMessage=\"Exclusive promo Natural Stone\" />\n            banner[type][2] = <Translation id=\"from_14_18_november\" defaultMessage=\"From 14-18 November\" />\n            banner[type][3] = <Translation id=\"make_a_reservation\" defaultMessage=\"Make a reservation\" />\n            banner[type][4] = 'auto'\n            banner[type][9] = 'URL'\n            banner[type][10] = 'https://forms.cosentino.com/natural-stone-week-eu/'\n        }\n        //console.log(type)\n\n        return (        \n                \n                banner[type][9] !== 'URL' ? (\n                    <LocalizedLink\n                        routeId={banner[type][9]}\n                        queryString={banner[type][7]}\n                        params={banner[type][8]}\n                        gtmLabel=\"ec_banner_list\"\n                    >                        \n                        <div className={'box-parent-banner-result-v2'} style={{\n                            backgroundImage: `url(${banner[type][0]})`,\n                            backgroundSize: banner[type][4],\n                            backgroundPosition: banner[type][5]\n                        }}>\n                            <div className=\"box-container\" style={banner[type][6] ?\n                                {background: `linear-gradient(179.95deg, #494E51 ${banner[type][6]}, rgba(58, 58, 58, 0) 99.94%)`}\n                                : {}\n                            }>\n                                <div className={`box-title  ${banner[type][0] === Banos_V2 ? 'maxi' : ''}`}>{banner[type][1]}</div>\n                                <div className=\"box-subtitle\">{banner[type][2]}</div>\n                                <div className=\"box-button-container\" style={{\n                                    maxHeight: type === 3 ? '290px' : type === 4 ? '197px' : '230px'\n                                }}>\n                                    <div className=\"v2 bt bt-inverted bt-size-large\">{banner[type][3]}</div>\n                                </div>\n                            </div>\n                        </div>\n                    </LocalizedLink>\n                ) : (\n                    <a href={banner[type][10]} target='_blank' gtm-label=\"ec_banner_list\">\n                        <div className=\"box-parent-banner-result-v2\" style={{\n                            backgroundImage: `url(${banner[type][0]})`,\n                            backgroundSize: banner[type][4],\n                            backgroundPosition: banner[type][5]\n                        }}>\n                           \n                            <div className=\"box-container\" style={{\n                                background: `linear-gradient(179.95deg, #494E51 ${banner[type][6]}, rgba(58, 58, 58, 0) 99.94%)`,\n                            }}>\n                                <div className=\"box-title\">{banner[type][1]}</div>\n                                <div className=\"box-subtitle\">{banner[type][2]}</div>\n                                <div className=\"box-button-container\" style={{\n                                    maxHeight: type === 3 ? '290px' : type === 4 ? '197px' : '230px'\n                                }}>\n                                    <div className=\"v2 bt bt-inverted bt-size-large\">{banner[type][3]}</div>\n                                </div>\n                            </div>\n                        </div>\n                    </a>\n                )   \n            \n            \n        )\n    }\n}\n","import React, {useState} from 'react'\nimport Translation from '../../global/Translation'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport Button from '../../global/Button'\nimport InputNumber from '../../global/InputNumber'\nimport AddFavourite from '../../global/AddFavourite'\nimport ProductImage from '../ProductImage'\nimport BannerResultV2 from '../banners/BannerResultV2'\nimport cameraOff from '../../../assets/img/icons/camera-off.svg'\nimport DisplayTechnology from './displays/DisplayTechnology'\nimport DisplayBlackIndicator from './displays/DisplayBlackIndicator'\nimport Slider from 'react-slick'\n\nconst RectangleResultV2UI = props => {\n    const limit = props.getLimit()\n\n    const showValidImage = () => {\n        if (props.product.detailImage && props.product.detailImage !== 'null' && props.product.detailImage !== undefined && props.product.detailImage !== 'undefined')\n            return props.product.detailImage\n        if (props.product.imgLarge && (props.product.imgLarge !== 'null' || props.product.imgLarge != 'null')) return props.product.imgLarge\n        return cameraOff\n    }\n\n    const placeHolderClassName = () => {\n        if (!props.product.detailImage || props.product.detailImage === 'null' || !props.product.imgLarge || props.product.imgLarge === 'null' || props.product.imgLarge == 'null')\n            return '--placeholder'\n        return ''\n    }\n\n    const extras = () => {\n        return props.getExtras()\n    }\n\n    const isCosentinoBrazil = () => {\n        return extras() && extras().isCosentinoBrazil\n    }\n\n    const slickSettings = {\n        arrows: false,\n        swipeToSlide: true,\n        dots: false,\n        speed: 750,\n        autoplaySpeed: 7500,\n        slidesToShow: 1,\n        slidesToScroll: 1,\n        infinite: true,\n        autoplay: false,\n        variableWidth: false,\n        pauseOnHover: true\n    }\n\n    const CustomSlide = (props) => {\n        const [isMovin, setIsMovin] = useState(false)\n\n        const { id, bannerUrl, bannerTitle, bannerText } = props;\n        const handleClick = e => {\n            if (isMovin) e.preventDefault()\n        }\n\n        return (\n            <div className=\"box-parent-banner-result-v2\"\n                 style={{ background: 'white', display: 'flex', justifyContent: 'space-between', flexDirection: 'column' }}\n                 onDragStart={e => {\n                     e.preventDefault()\n                 }}\n                 onMouseDown={e => {\n                     if (isMovin===true) setIsMovin(false)\n                 }}\n                 onMouseMove={e => {\n                     if (isMovin===false) setIsMovin(true)\n                 }}\n            >\n                <LocalizedLink routeId=\"ROUTE_PROMOTION_LANDING\"\n                               params={{ promotionId: id }}\n                               gtmLabel=\"ec_banner_list\"\n                               style={{height:\"100%\"}}\n                               onClick={handleClick}\n                >\n                    <div className=\"d-md-block position-relative box-parent-banner-result-v2\"\n                         style={{ backgroundImage: `url(${bannerUrl})`,backgroundSize:'cover',backgroundRepeat:'no-repeat',backgroundPosition:'center' }}>\n                        <div className=\"text_banner text_banner--filters\" style={{position:\"absolute\", fontSize:\"8px\", top:\"25%\", width:\"100%\"}}>\n                            <div dangerouslySetInnerHTML={{ __html: bannerTitle }} />\n                            <div dangerouslySetInnerHTML={{ __html: bannerText }} />\n                        </div>\n\n                        <div style={{position:\"absolute\", bottom:\"10%\", width:\"100%\"}}>\n                            <LocalizedLink routeId=\"ROUTE_PROMOTION_LANDING\"\n                                           params={{ promotionId: id }}\n                                           gtmLabel=\"ec_banner_list\"\n                            >\n                                <Button inverted size=\"large\"\n                                        style={{borderRadius:\"4px\", paddingBlock:\"24px\", paddingInline: \"48px\", margin: \"auto\", width:\"fit-content\"}}\n                                >\n                                    <Translation id=\"view_section\" defaultMessage=\"View section\" />\n                                </Button>\n                            </LocalizedLink>\n                        </div>\n                    </div>\n                </LocalizedLink>\n            </div>\n        )\n    }\n\n    return (\n        <React.Fragment>\n            {/********************************************* BANNERS **************************************************/}\n            {props.result &&\n                props.index === 4 &&\n                props.location.pathname.includes(props.intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', '')) &&\n                !props.isHideAllBannerCatalog &&\n                !props.isIkeaCenter && (\n                    <React.Fragment>\n                        {props.hasPromotionLandingActivated &&\n                            <Slider {...slickSettings}>\n                                {props.promotionData.map(p => {\n                                    const bannerTitle = p.banner_title ? (p.banner_title[props.locale] ? p.banner_title[props.locale] : p.banner_title[p.banner_title.default]) : null\n                                    const bannerText = p.banner_text ? (p.banner_text[props.locale] ? p.banner_text[props.locale] : p.banner_text[p.banner_text.default]) : null\n\n                                    return <CustomSlide id={p.id}\n                                                         bannerUrl={p.lateral_banner_url}\n                                                         bannerTitle={bannerTitle}\n                                                         bannerText={bannerText}\n                                    />\n                                })}\n                            </Slider>\n                        }\n                        {!(props.hasPromotionLandingActivated) && (\n                            <BannerResultV2\n                                type=\"0\"\n                                isIkeaCenter={props.isIkeaCenter}\n                                testAB={props.testAB}\n                                typeClient={props.typeClient}\n                                location={props.location}\n                                showBannerPromo={props.showBannerPromo}\n                            />\n                        )}\n                    </React.Fragment>\n                )}\n            {/********************************************** FIN BANNERS *********************************************/}\n\n            <div\n                className={`rectangle-result-v2 v2 ${props.size && props.size === 'S' ? 'small' : ''} ${props.mallPromotionSection ? 'mall-promo' : ''} ${\n                    props.product.fromMall ? 'landing-mall' : ''\n                }`}\n                data-cy=\"catalog__product_rectangle_result\"\n                data-key={props.product.productId}\n                data-color={props.product.colorId}\n                type={props.getTypeProductForStyles()}\n            >\n                {(!props.product.fromMall || props.showImg) && (\n                    <div className=\"wrapper-product-image\">\n                        {props.indicators}\n\n                        {props.canOnlyViewOutlet ? (\n                            props.product.lotViewAvailable === undefined || props.product.lotViewAvailable ? (\n                                <LocalizedLink routeId=\"ROUTE_LOTS\" params={{ id: props.product.productId, outlet: 'outlet' }}>\n                                    <ProductImage product={props.product} state={props.state} intl={props.intl} />\n                                </LocalizedLink>\n                            ) : (\n                                <ProductImage product={props.product} state={props.state} intl={props.intl} />\n                            )\n                        ) : (\n                            <LocalizedLink\n                                routeId=\"ROUTE_PRODUCT_DETAIL\"\n                                params={{ id: props.product.productId, outlet: props.outlet ? 'outlet' : '' }}\n                                onClick={() => props.goToProductCard(props.product)}\n                            >\n                                {/* Show the custom upload image or normal image of Mall Campaigns */}\n                                {props.product.fromMall ? (\n                                    <div className={'product-image-container ' + placeHolderClassName()}>\n                                        <div\n                                            className=\"product-image\"\n                                            style={{\n                                                backgroundColor: 'white',\n                                                backgroundImage: 'url(\"' + showValidImage() + '\")',\n                                                backgroundRepeat: 'no-repeat',\n                                                backgroundPosition: 'center'\n                                            }}\n                                        >\n                                            <div className=\"product-image-technology\">\n                                                <div className=\"technology-content\">\n                                                    <DisplayTechnology technology={props.product.technology} subBrand={props.product.subBrand} />\n                                                </div>\n\n                                                {props.canViewPricesPhase3 &&\n                                                    props.state &&\n                                                    props.state.promotions &&\n                                                    props.state.promotions.length > 0 &&\n                                                    (props.state.promotions[0].dealType === 'A' ? (\n                                                        <div className=\"d-flex\">\n                                                            <DisplayBlackIndicator value={props.intl.formatMessage({ id: 'new_price' })} />\n                                                        </div>\n                                                    ) : props.state.promotions[0].dealType === 'B' ? (\n                                                        <div className=\"d-flex\">\n                                                            <DisplayBlackIndicator value={`-${props.state.promotions[0].value}%`} />\n                                                        </div>\n                                                    ) : null)}\n                                            </div>\n                                        </div>\n                                    </div>\n                                ) : (\n                                    <ProductImage product={props.product} state={props.state} intl={props.intl} />\n                                )}\n                            </LocalizedLink>\n                        )}\n                        {!props.product.fromMall && <AddFavourite productId={props.product.productId} />}\n                    </div>\n                )}\n\n                {props.details}\n\n                {props.canBuy && (\n                    (props.isLatinaVitoria && ['SENSA', 'SCALEA', 'PREXURY'].includes(props.product.brand)) ? (\n                /* {props.canBuy &&\n                    (props.showLotsInPortfolio(props.product, !!props.outlet, isCosentinoBrazil()) ? ( */\n                        props.getStock() > 0 ? (\n                            <div className=\"pb-3 px-3\">\n                                <LocalizedLink\n                                    routeId=\"ROUTE_LOTS\"\n                                    params={{ id: props.product.productId, outlet: '' }}\n                                    onClick={() => {\n                                        props.product.extra = props.getExtras()\n                                        props.setLastSelectedProduct(props.product)\n                                    }}\n                                >\n                                    <Button>\n                                        <Translation id=\"view_lots\" defaultMessage=\"View lots\" />\n                                    </Button>\n                                </LocalizedLink>\n                            </div>\n                        ) : (\n                            <div className=\"pb-3 px-3\">\n                                <Button disabled={true}>\n                                    <Translation id=\"view_lots\" defaultMessage=\"View lots\" />\n                                </Button>\n                            </div>\n                        )\n                    ) : (\n                        <div className={`product-actions ${props.mallPromotionSection ? 'mall' : ''}`}>\n                            {!props.product.haveOptions && !props.mallPromotionSection && (\n                                <div className=\"input-row\">\n                                    <div className=\"input\">\n                                        <InputNumber\n                                            value={props.getValueToAdd()}\n                                            change={qty => props.state.setQtyToAdd(qty)}\n                                            step={props.isIkeaCenter && props.product.unit === 'M2' ? 0.01 : props.getStep()}\n                                            limit={limit}\n                                            min={props.getMin()}\n                                            decimals={props.isIkeaCenter && props.product.unit === 'M2' ? 2 : 0}\n                                        />\n                                    </div>\n                                </div>\n                            )}\n                            {props.mallPromotionSection && (\n                                <LocalizedLink\n                                    routeId=\"ROUTE_PRODUCT_DETAIL\"\n                                    params={{ id: props.product.productId, outlet: props.outlet ? 'outlet' : '' }}\n                                    onClick={() => {\n                                        if (props.indexOfList !== undefined) props.clickDetail(props.product, props.list, props.indexOfList)\n                                    }}\n                                    style={{ width: '100%' }}\n                                >\n                                    <Button>\n                                        <span className=\"btn-add-to-cart-text\">\n                                            <Translation id=\"view_more\" defaultMessage=\"View more\" />\n                                        </span>\n                                    </Button>\n                                </LocalizedLink>\n                            )}\n                            <div className=\"bt-row\">\n                                {props.product.haveOptions ? (\n                                    props.canOnlyViewOutlet ? (\n                                        (props.product.lotViewAvailable === undefined || props.product.lotViewAvailable) && (\n                                            <LocalizedLink routeId=\"ROUTE_LOTS\" params={{ id: props.product.productId, outlet: 'outlet' }}>\n                                                <Button icon=\"shopping-cart\" size=\"small\" customClass=\"cart\">\n                                                    <Translation id=\"options\" defaultMessage=\"Options\" />\n                                                </Button>\n                                            </LocalizedLink>\n                                        )\n                                    ) : (\n                                        <LocalizedLink routeId=\"ROUTE_PRODUCT_DETAIL\" params={{ id: props.product.productId, outlet: props.outlet ? 'outlet' : '' }}>\n                                            <Button icon=\"shopping-cart\" size=\"small\" customClass=\"cart\">\n                                                <Translation id=\"options\" defaultMessage=\"Options\" />\n                                            </Button>\n                                        </LocalizedLink>\n                                    )\n                                ) : (\n                                    <Button\n                                        far={true}\n                                        icon=\"cart-shopping\"\n                                        inverted\n                                        customClass=\"cart add-to-cart-button\"\n                                        disabled={props.isAdding || (limit != null ? limit : 1) <= 0 || !props.state.qtyToAdd >= 1}\n                                        onClick={() => props.addToCart()}\n                                        dataQas=\"global_product-add-to-cart-button\"\n                                    >\n                                        <span className=\"btn-add-to-cart-text\">\n                                            <Translation id=\"add\" defaultMessage=\"add\" />\n                                        </span>\n                                    </Button>\n                                )}\n                            </div>\n                        </div>\n                    ))}\n            </div>\n        </React.Fragment>\n    )\n}\n\nexport default RectangleResultV2UI\n","import {useEffect, useState} from 'react'\nimport {canViewAllLots} from \"../../../../../store/centers/reducers\";\n\nexport const productLogic = (props, baseLogicFunction) => {\n    const {product, getMin, getStep, getLimit, getType, getTypeProductForStyles, canDisplayDiscontinued, validateOutletPromotions, isCosentinoGlobal, isCosentinoBrazil} = baseLogicFunction(props)\n\n    const [qtyToAdd, setQtyToAdd] = useState(1)\n    const [step, setStep] = useState(1)\n    const [promotions, setPromotions] = useState([])\n\n    useEffect(() => {\n        let qtyAdd = 1\n\n        setStep(getStep())\n\n        if (getLimit() === 0) qtyAdd = 0\n        else if (getMin()) qtyAdd = getMin()\n        else if (product && (product.typeId === '01' || product.typeId === 'NEWS')) qtyAdd = 1\n        else if (product.minQty[props.shippingMethod]) qtyAdd = product.minQty[props.shippingMethod]\n        setQtyToAdd(qtyAdd)\n\n        generatePromotionTags()\n    }, [product])\n\n    useEffect(() => {\n        let qty = qtyToAdd\n        if (getLimit() && getValueWithMax() < qtyToAdd) qty = getValueWithMax()\n        if (getMin()) qty = Math.max(getMin(), qty)\n        setQtyToAdd(qty)\n    }, [qtyToAdd])\n\n    const getExtras = () => {\n        let extras = baseLogicFunction(props).getExtras()\n        if (isCosentinoGlobal || isCosentinoBrazil) {\n            if (!extras) extras = {}\n            extras.isCosentinoGlobal = isCosentinoGlobal\n            extras.isCosentinoBrazil = isCosentinoBrazil\n        }\n        return extras\n    }\n\n    const addToCart = (extras=null) => {\n        extras = extras ? extras : getExtras()\n        if (props.needsSegmentation) {\n            props.addCartLine(\n                product.productId,\n                qtyToAdd,\n                extras,\n                null,\n                product.finish === 'AND' && ['DEKTON', 'DKTN'].includes(product.brand),\n                product.centerId\n            )\n        } else {\n            props.addCartLineWithouthSeg(product.productId, qtyToAdd, extras)\n        }\n    }\n\n    const getValueWithMax = () => {\n        return qtyToAdd <= getLimit() ? qtyToAdd : getLimit()\n    }\n\n    const getValueToAdd = () => {\n        let value = getLimit() ? getValueWithMax() : qtyToAdd;\n        value = value > 0 ? value : 1;\n        return Math.max(getMin(), value)\n    }\n\n    const generatePromotionTags = () => {\n\n        let allPromotions = []\n\n        let sorting = {\n            Z70D: { val: 0 },\n            Z71D: { val: 1 },\n            Z73D: { val: 2 },\n            ZQ00: { val: 3 }\n        }\n\n        if (props.productDiscounts && Object.keys(props.productDiscounts).length > 0) {\n            allPromotions = allPromotions.concat(props.productDiscounts)\n        }\n        if (props.outlet) {\n            allPromotions = validateOutletPromotions(allPromotions)\n        }\n        let promotionsUpdated = allPromotions.sort((a, b) => {\n            if (sorting[b.conditionClass] && sorting[a.conditionClass]) {\n                // console.log(a.conditionClass)\n                // console.log(sorting[a.conditionClass].val)\n                if (a.conditionClass == b.conditionClass) {\n                    if (a.conditionClass == 'Z71D') {\n                        //Discunt higher more favorable.\n                        if (a.value > b.value) {\n                            return -1\n                        }\n                        if (a.value < b.value) {\n                            return 1\n                        }\n                    } else {\n                        if (a.value > b.value) {\n                            return 1\n                        }\n                        if (a.value < b.value) {\n                            return -1\n                        }\n                    }\n                }\n\n                return sorting[a.conditionClass].val - sorting[b.conditionClass].val\n            }\n\n            // a must be equal to b\n            return 1\n        })\n\n        setPromotions(promotionsUpdated)\n    }\n\n    const state = {\n        qtyToAdd, setQtyToAdd,\n        step, setStep,\n        promotions, setPromotions\n    }\n\n\n\n    const showLots = () => {\n        return getStock() > 0 && product.type === 'TABLA' && (\n            (product.brand !== 'SILESTONE' && product.brand !== 'DEKTON' && product.brand !== 'XERON')\n            // || ((props.impersonatedBy || props.isAdmin) && props.isUsaOrCanada)\n            || ((props.impersonatedBy || props.isAdmin || props.canOffer) && props.canViewAllLots)\n            || props.isUsaOrCanada\n        )\n    }\n\n    const getStock = () => {\n        const { canViewThresholdMax } = props\n        let result\n\n        if (product.fromMall) {\n            result = product.realStock\n        } else if (!!props.outlet) {\n            result = product.stock_outlet\n        } else {\n            result = product.stock\n        }\n        return result\n    }\n\n    const goToProductCard = (_product) => {\n        _product.extra = getExtras()\n        if (props.indexOfList !== undefined) props.clickDetail(_product, props.list, props.indexOfList)\n    }\n\n    return {...props,\n        state,\n        addToCart,\n        goToProductCard,\n        getExtras,\n        getStep,\n        getMin,\n        getLimit,\n        getType,\n        product,\n        canDisplayDiscontinued,\n        getTypeProductForStyles,\n        getValueToAdd,\n        getStock,\n        showLots\n    }\n}\n","import {productLogic} from \"./ProductLogic\";\n\nexport const mallProductLogic = (mallProps, baseLogicFunction) => {\n    const getExtras = () => {\n        const extras = {\n            ...mallProps.product.extra,\n            mall: true,\n            landing_id: mallProps.product.landingId,\n            isCosentinoGlobal: false,\n            isCosentinoBrazil: false\n        }\n        if(mallProps.sapLandingId){\n            extras.sap_landing_id = mallProps.sapLandingId\n        }\n        if (mallProps.product.lots || (mallProps.product.productLots && mallProps.product.productLots.lots))\n            extras.lots = true\n        if (mallProps.product.outletQuality)    extras.outlet = mallProps.product.outletQuality\n        if (mallProps.sectionFlag)              extras.sectionFlag = mallProps.sectionFlag\n        if (mallProps.list)                     extras.analyticsTag = mallProps.list\n        if (mallProps.crossType)                extras.crossType = mallProps.crossType\n\n        return extras\n    }\n\n    const getAdditionalInfo = () => {\n        if (mallProps.product.additionalInfo) {\n            try {\n                const transAdditionalInfo = JSON.parse(mallProps.additionalInfo)\n                return transAdditionalInfo[mallProps.intl.locale] ? transAdditionalInfo[mallProps.intl.locale] : transAdditionalInfo[transAdditionalInfo.default]\n            } catch(e) {}\n        }\n        return null\n    }\n\n    mallProps.product.additionalInfo = getAdditionalInfo()\n\n    const minimumOrder = Math.min(mallProps.product.minimumOrder, mallProps.product.realStock)\n    const getMin = () => minimumOrder > 1 ? minimumOrder : 1\n    const getLimit = () => mallProps.product.realStock\n\n    const mallBaseLogicFunction = (props) => {\n        return {\n            ...baseLogicFunction(props),\n            getMin,\n            getExtras,\n            getLimit\n        }\n    }\n\n    const props = productLogic(mallProps, mallBaseLogicFunction)\n    const state = props.state\n\n\n    const addToCart = () => {\n        console.log('MALL ADDTOCART:' ,mallProps.product)\n        if (props.needsSegmentation) {\n            props.addCartLine(\n                mallProps.product.productId,\n                state.qtyToAdd,\n                getExtras(),\n                null,\n                mallProps.product.finish === 'AND' && ['DEKTON', 'DKTN'].includes(mallProps.product.brand),\n                mallProps.product.centerId\n            )\n        } else {\n            props.addCartLineWithouthSeg(mallProps.product.productId, state.qtyToAdd, {\n                type: props.type\n            })\n        }\n\n    }\n\n    const goToProductCard = (_product) => {\n        _product.extra = getExtras()\n\n\n        console.log('EXTRAS', _product.extra)\n        if (props.indexOfList !== undefined) props.clickDetail(_product, props.list, props.indexOfList)\n    }\n\n    const showLots = () => {\n        // if(mallProps.list && mallProps.list === 'MALL')\n        //     return false;\n        if(mallProps.product.productLots){\n            return props.showLots()\n        }\n        return false\n    }\n\n    return {\n        ...props,\n        minimumOrder,\n        addToCart,\n        goToProductCard,\n        showLots,\n        getExtras\n    }\n}\n","export const BaseProductLogic = props => {\n\n    const product = props.result !== undefined ? props.result._source : props.product\n    if (props.product && props.product.extra) product.extra = props.product.extra\n\n    const getExtras = () => {\n        const extras = {...product.extra}\n        if (props.outlet) extras.outlet =  product.outletQuality\n        if (props.sectionFlag) extras.sectionFlag = props.sectionFlag\n        if (props.list) extras.analyticsTag = props.list\n        if (props.crossType) extras.crossType = props.crossType\n        if (props.isComingFromCampaign) extras.comingFromCampaign = true\n        return Object.keys(extras).length > 0 ? extras : null\n    }\n\n    const getMin = () => {\n        return product.min ? product.min : getStep()\n    }\n\n    const getStep = () => {\n        if (props.isIkeaCenter && product.unit === 'M2') return 0.01\n        const shippingMethod = props.naturalStoneViewingPermissions.canViewBrazil ? 'CONTAINER' : props.shippingMethod\n\n        let step = 1\n\n        if (product && (product.typeId === '01' || product.typeId === 'NEWS')) step = 1\n        else if (product.minQty[shippingMethod]) step = product.minQty[shippingMethod]\n\n        return step\n    }\n\n    const getLimit = () => {\n        if (product.discontinued) {\n            if (product.isMktool && getLimitDiscontinued() > getLimitMktool()) return getLimitMktool() < getMin() ? 0 : getLimitMktool()\n            else return getLimitDiscontinued()\n        } else if (product.isMktool) return getLimitMktool() < getMin() ? 0 : getLimitMktool()\n        else if (props.outlet && product.outlet) return getLimitDiscontinued()\n        else return null\n    }\n\n    const getLimitMktool = () => {\n        let result = 0\n        if (product.isMktool) {\n            if (props.isMkToolsUsaCenter && (product.max || product.max === 0)) result = product.max\n            else result = 1000\n        }\n        if (props.qtyProductCart[product.productId]) {\n            result = result - parseInt(props.qtyProductCart[product.productId], 10)\n        }\n        return result\n    }\n\n    const getLimitDiscontinued = () => {\n        let result = 0\n        if (props.outlet) {\n            if (product.stock_outlet) {\n                result = parseInt(product.stock_outlet, 10)\n            }\n        } else {\n            if (product.stock) {\n                result = parseInt(product.stock, 10)\n            }\n        }\n        if (props.qtyProductCart[product.productId]) {\n            result = result - parseInt(props.qtyProductCart[product.productId], 10)\n        }\n        return result\n    }\n\n    const getType = () => {\n        let type = null\n        if (props.isIkeaCenter && product.brand === 'SERVICES') type = 'ikea_service'\n        else if (props.isIkeaCenter) type = 'ikea'\n        else if (props.isMkToolsCenter) type = 'mktools'\n        return type\n    }\n\n    const getTypeProductForStyles = () => {\n        if (props.isIkeaCenter && (product.brand === 'DEKTON' || product.brand === 'SILESTONE' || product.brand === 'XERON')) return 'TABLA'\n        if(product.subtypeId == 'REVESTIMIENTO') return 'TABLA'\n        else return product.type\n    }\n\n    const canDisplayDiscontinued = () => {\n        if (['MK', 'SH', 'WH'].includes(product.webHeading) && product.discontinued === 'DD') return false\n        if (product.discontinued === 'DD' || product.discontinued === 'DF') return false\n        return true\n    }\n\n    const validateOutletPromotions = (allPromotions) => {\n        if (allPromotions == undefined || allPromotions == null || Object.keys(allPromotions).length == 0) return []\n        //remove other outlet types promos.\n        allPromotions = Object.values(allPromotions).filter(promo => {\n            if (promo.outlet && promo.outlet == true && promo.outlet_types != product.outletQuality) {\n                return false\n            }\n            return true\n        })\n\n        return allPromotions\n    }\n\n    const goToProductCard = (_product) => {\n        _product.extra = getExtras()\n        if (props.indexOfList !== undefined) props.clickDetail(_product, props.list, props.indexOfList)\n    }\n\n    const isCosentinoGlobal = product.type === 'TABLA' && props.centerId != 1100 && product.centerId == 1100\n    const isCosentinoBrazil = product.type === 'TABLA' && props.centerId != 7500 && product.centerId == 7500\n\n    return {\n        getMin,\n        getStep,\n        getLimit,\n        getLimitMktool,\n        getLimitDiscontinued,\n        getType,\n        getTypeProductForStyles,\n        canDisplayDiscontinued,\n        validateOutletPromotions,\n        getExtras,\n        goToProductCard,\n        product,\n        isCosentinoGlobal,\n        isCosentinoBrazil\n    }\n\n}\n\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../../global/Translation'\n\nclass DisplayDiscontinued extends React.Component {\n    render() {\n        const { discontinued, inSmallBox = false, isSimplified = false, displayInLine = false } = this.props\n\n        const smallBoxStyles = {\n            fontSize: '8px',\n            lineHeight: '9px',\n            padding: '2px 4px',\n            minHeight: '19px',\n            letterSpacing: '0.5px'\n        }\n\n        const styles = {\n            backgroundColor: '#3C898A',\n            color: '#FFFFFF',\n            fontWeight: '500',\n            fontSize: inSmallBox ? smallBoxStyles.fontSize : '10px',\n            lineHeight: inSmallBox ? smallBoxStyles.lineHeight : '11px',\n            padding: '4px 8px',\n            textTransform: 'uppercase',\n            zIndex: 1,\n            fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n            position: 'relative',\n            display: displayInLine ? 'inline' : 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            flexWrap: 'wrap',\n            minHeight: '21px',\n            textAlign: 'left'\n        }\n\n        if (discontinued) {\n            return (\n                <div className=\"discontinued-indicator\" style={styles}>\n                    <Translation id=\"discontinued\" defaultMessage=\"Discontinued\" />\n                    {' - '}\n                    {this.props.intl.formatMessage({ id: this.props.discontinued + '_SHORT' })}\n                </div>\n            )\n        }\n\n        if (isSimplified) {\n            return (\n                <div className=\"discontinued-indicator\" style={styles}>\n                    <Translation id=\"discontinued\" defaultMessage=\"Discontinued\" />\n                </div>\n            )\n        }\n\n        return null\n    }\n}\nexport default injectIntl(DisplayDiscontinued)\n","import React from 'react'\nimport Translation from '../../../global/Translation'\n\nexport default class DisplayNewIndicator extends React.Component {\n    render() {\n        const styles = {\n            backgroundColor: '#3897DC',\n            color: '#FFFFFF',\n            padding: '4px 8px',\n            fontSize: '10px',\n            fontWeight: '500',\n            zIndex: 1,\n            display: 'inline-block',\n            lineHeight: '16px'\n        }\n\n        return (\n            <div style={styles}>\n                <Translation id=\"new\" defaultMessage=\"New\" />\n            </div>\n        )\n    }\n}\n","import React from 'react'\nimport Translation from '../../../global/Translation'\n\nexport default class DisplayUpcomingIndicator extends React.Component {\n    render() {\n        const { inSmallBox = false } = this.props\n\n        // Styles for small box\n        const smallBoxStyles = {\n            backgroundColor: '#FCD03D',\n            color: '#232323',\n            padding: '3px 6px',\n            fontSize: '9px',\n            fontWeight: '500',\n            zIndex: 1,\n            display: 'inline-block',\n            lineHeight: '11px',\n        }\n\n        // Default styles\n        const defaultStyles = {\n            backgroundColor: '#FCD03D',\n            color: '#232323',\n            padding: '4px 8px',\n            fontSize: '10px',\n            fontWeight: '500',\n            zIndex: 1,\n            display: 'inline-block',\n            lineHeight: '16px',\n        }\n\n        const styles = inSmallBox ? smallBoxStyles : defaultStyles\n\n        return (\n            <div style={styles}>\n                <Translation id=\"coming_soon\" defaultMessage=\"Coming soon\" />\n            </div>\n        )\n    }\n}\n","import React from 'react'\nimport Translation from '../../../global/Translation'\n\nconst DisplayHomeDepotIndicator = () => {\n    const styles = {\n        backgroundColor: '#F53000',\n        color: '#FFFFFF',\n        padding: '4px 8px',\n        fontSize: '10px',\n        fontWeight: '500',\n        zIndex: 1,\n        display: 'inline-block',\n        lineHeight: '13px',\n        maxHeight: '21px',\n    }\n\n    return (\n        <div style={styles}>\n            <Translation id=\"home_depot_exclusive\" defaultMessage=\"Home Depot exclusive\" />\n        </div>\n    )\n}\n\nexport default DisplayHomeDepotIndicator\n","import React from 'react'\nimport DisplayOutletIndicator from '../displays/DisplayOutletIndicator'\nimport DisplayDiscontinued from '../displays/DisplayDiscontinued'\nimport DisplayNewIndicator from '../displays/DisplayNewIndicator'\nimport DisplayUpcomingIndicator from '../displays/DisplayUpcomingIndicator'\nimport { v4 as uuidv4 } from 'uuid'\nimport DisplayHomeDepotIndicator from '../displays/DisplayHomeDepotIndicator'\nimport DisplayBlackIndicator from '../displays/DisplayBlackIndicator'\nimport { isNewIndicator, isUpcomingIndicator } from '../../../../store/products/reducers'\n\nconst ProductIndicators = (props) => {\n\n    const getIndicators = () => {\n        const indicators = props.indicators ? props.indicators : []\n\n        if (props.canDisplayDiscontinued()) indicators.push(\n            <React.Fragment key={uuidv4()}>\n                <DisplayDiscontinued discontinued={props.product.discontinued} />\n            </React.Fragment>\n        )\n        if (props.outlet) indicators.push(\n            <DisplayOutletIndicator\n                key={uuidv4()}\n                outletQuality={props.product.outletQuality}\n                outletDeviated={props.isAdmin || props.impersonatedBy ? props.product.outletDeviated : null}\n            />\n        )\n        if (props.isExclusiveHomeDepot) indicators.push(<DisplayHomeDepotIndicator/>)\n\n        return indicators\n    }\n\n    const getSphereIndicators = () => {\n        const sphereIndicators = props.sphereIndicators ? props.sphereIndicators : []\n\n        if (isNewIndicator(props.product.creationDate)) sphereIndicators.push(<DisplayNewIndicator key={uuidv4()} />)\n        if (isUpcomingIndicator(props.product.creationDate)) sphereIndicators.push(<DisplayUpcomingIndicator key={uuidv4()} />)\n\n        if (props.canViewPricesPhase3 && props.tate && props.state.promotions && props.state.promotions.length > 0) {\n            if (props.state.promotions[0].dealType === 'A') {\n                sphereIndicators.push(<DisplayBlackIndicator key={uuidv4()}\n                                                             value={props.intl.formatMessage({ id: 'new_price' })}\n                                                             productDiscounts={props.productDiscounts} />)\n            }\n            else if (props.state.promotions[0].dealType === 'B') {\n                sphereIndicators.push(<DisplayBlackIndicator key={uuidv4()}\n                                                             value={`-${props.state.promotions[0].value}%`}\n                                                             productDiscounts={props.productDiscounts} />)\n            }\n        }\n\n        return sphereIndicators\n    }\n\n    return props.product ? (\n        <div className=\"indicators\">\n            {[\n                ...getIndicators(),\n                ...getSphereIndicators()\n            ].map((indicator, index) => (\n                <div key={index} style={{ zIndex: 1, lineHeight: 0 }}>\n                    {indicator}\n                </div>\n            ))}\n        </div>\n    ) : null\n}\n\nexport default ProductIndicators\n","import React from 'react'\nimport Translation from '../../../global/Translation'\n\nconst DisplaySoldOut = () => {\n\n    const styles = {\n        backgroundColor: '#f7e671',\n        color: '#000000',\n        padding: '4px 8px',\n        fontSize: '10px',\n        fontWeight: '500',\n        zIndex: 1,\n        display: 'inline-block',\n        lineHeight: '16px'\n    }\n\n    return (\n        <div style={styles}>\n            <Translation id=\"sold_out\" defaultMessage=\"Sold out\" />\n        </div>\n    )\n}\n\nexport default DisplaySoldOut","import React from 'react'\nimport DisplayOutletIndicator from '../displays/DisplayOutletIndicator'\nimport DisplayNewIndicator from '../displays/DisplayNewIndicator'\nimport DisplayUpcomingIndicator from '../displays/DisplayUpcomingIndicator'\nimport Button from '../../../global/Button'\nimport DisplaySoldOut from '../displays/DisplaySoldOut'\nimport DisplayDiscontinued from '../displays/DisplayDiscontinued'\nimport { v4 as uuidv4 } from 'uuid'\nimport { isNewIndicator, isUpcomingIndicator } from '../../../../store/products/reducers'\n\nconst MallProductIndicators = props => {\n    const getIndicators = () => {\n        const indicators = props.indicators ? props.indicators : []\n\n        if (\n            (props.onZoomClick && props.product.detailImage && props.product.detailImage !== 'null') ||\n            (props.onZoomClick && props.product.imgLarge && props.product.imgLarge !== 'null')\n        )\n            indicators.push(<Button className=\"slide-card__zoom\" icon=\"expand\" size=\"medium\" inverted onClick={() => props.onZoomClick(props.product)} />)\n\n        if (props.product.realStock === 0) {\n            indicators.push(<DisplaySoldOut key={`mall-sold-out-ind_${props.product.mallProductId}`} />)\n        } else {\n            if (props.canDisplayDiscontinued()) {\n                indicators.push(\n                    <React.Fragment key={uuidv4()}>\n                        <DisplayDiscontinued discontinued={props.product.discontinued} />\n                    </React.Fragment>\n                )\n            }\n\n            if (props.product.outlet) {\n                indicators.push(\n                    <DisplayOutletIndicator\n                        key={`mall-outlet-ind_${props.product.mallProductId}`}\n                        outletQuality={props.product.outletQuality}\n                        outletDeviated={props.isAdmin || props.impersonatedBy ? props.product.outletDeviated : null}\n                    />\n                )\n            }\n        }\n\n        return indicators\n    }\n\n    const getSphereIndicators = () => {\n        const sphereIndicators = props.sphereIndicators ? props.sphereIndicators : []\n\n        if (isNewIndicator(props.product.creationDate)) sphereIndicators.push(<DisplayNewIndicator key={uuidv4()} />)\n        if (isUpcomingIndicator(props.product.creationDate)) sphereIndicators.push(<DisplayUpcomingIndicator key={uuidv4()} />)\n\n        return sphereIndicators\n    }\n\n    return props.product ? (\n        <div className=\"indicators\" style={{ maxWidth: '100%' }}>\n            {[...getIndicators(), ...getSphereIndicators()].map((indicator, index) => (\n                <div key={index} style={{ zIndex: 1, lineHeight: 0 }}>\n                    {indicator}\n                </div>\n            ))}\n        </div>\n    ) : null\n}\n\nexport default MallProductIndicators\n","import React from 'react'\r\n\r\nexport default class DisplayProductInfo extends React.Component {\r\n    render() {\r\n        return <div className={`product-info ${this.props.mallPromotionSection ? \"mall-promo-info\" :\"\"}`}>{this.props.children}</div>\r\n    }\r\n}\r\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getSelectedCenter } from '../../../../store/centers/reducers'\nimport { capitalizeFirstLetter } from '../../../../helpers'\n\nconst mapStateToProps = (state) => {\n    return {\n        selectedCenter: getSelectedCenter(state),\n    }\n}\n\nclass DisplayBrand extends React.Component {\n    render() {\n        const { brand, span, selectedCenter, style, colorSerieDesc } = this.props\n\n        if (!brand) return ''\n        if (span)\n            return (\n                <span>\n                    {selectedCenter == 7130 && brand == 'DEKTON'\n                        ? 'DKTN'\n                        : capitalizeFirstLetter(brand)}\n                    &reg;\n                    {colorSerieDesc && ` - ${capitalizeFirstLetter(colorSerieDesc)}`}\n                </span>\n            )\n\n        return (\n            <div className=\"product-brand\" style={style}>\n                {selectedCenter == 7130 && brand == 'DEKTON'\n                    ? 'DKTN'\n                    : brand.toLowerCase() == 'services'\n                    ? 'worktop'\n                    : capitalizeFirstLetter(brand)}{' '}\n                &reg;\n                {colorSerieDesc && ` - ${capitalizeFirstLetter(colorSerieDesc)}`}\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(connect(mapStateToProps, null)(DisplayBrand))\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getLanguage } from '../../../../store/ui/reducers'\nimport { getReplaceDotWithComma } from '../../../../helpers'\n\nclass DisplayThickness extends React.Component {\n    render() {\n        const { locale, thickness, string } = this.props\n        if (thickness && string) {\n            return <span>{this.props.replaceDotWithComma(thickness, locale)} cm</span>\n        }\n        else if (thickness) {\n                return (\n                    <div className=\"product_details thickness\">\n                        <div className=\"icon\">\n                            <div style={{ height: `${thickness}px`,overflow: 'auto',minHeight: '1px' }} />\n                        </div>\n                        <div className=\"text\">{this.props.replaceDotWithComma(thickness, locale)} cm</div>\n                    </div>\n                )\n        } else return null\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        locale: getLanguage(state),\n        replaceDotWithComma: (element, locale) => getReplaceDotWithComma(element, locale, state)\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(DisplayThickness)\n)\n","import React from 'react'\n\nexport default class DisplayGroupDtails extends React.Component {\n    render() {\n        return <div className=\"product-info-details\">{this.props.children}</div>\n    }\n}\n","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\n\nclass DisplayDetail extends React.Component {\n    render() {\n        if (this.props.value){\n            let value = null\n            if (this.props.class == 'format') {\n                value = this.props.value.replace('X', 'x')\n            } else if (this.props.class == 'finish' || this.props.class == 'zaddon' || this.props.class == 'subtype') {\n                value = this.props.intl.formatMessage({ id: this.props.value })\n            } else {\n                value = this.props.value\n            }\n            return (\n                <div className={`product_detail ${this.props.class}`}>\n                    {(this.props.icon || this.props.faIconClass) && (\n                        <div className=\"icon\">\n                            {this.props.icon && <img alt=\"\" src={this.props.icon} />}\n                            {this.props.faIconClass && <i className={this.props.faIconClass} />}\n                        </div>\n                    )}\n                    <div className=\"text\">\n                        <span className=\"bold-text\">\n                            {this.props.label && this.props.label}\n                            {this.props.label && ': '}\n                        </span>\n                        {value}\n                    </div>\n                </div>\n            )\n        }\n        else return null\n    }\n}\nexport default injectIntl(DisplayDetail)\n","import React from 'react'\n\nimport iconoTemporalAcabado from '../../../assets/img/acabado.png'\nimport ProductDisplayName from '../../global/ProductDisplayName'\n\n//Displays\nimport DisplayProductInfo from './displays/DisplayProductInfo'\nimport DisplayBrand from './displays/DisplayBrand'\nimport DisplayThickness from './displays/DisplayThickness'\nimport DisplayGroupDtails from './displays/DisplayGroupDtails'\nimport DisplayDetail from './displays/DisplayDetail'\n\nexport default class DetailsIkea extends React.Component {\n    render() {\n        return (\n            <DisplayProductInfo>\n                <DisplayBrand brand={this.props.product.brand} />\n                <div className=\"product-color-name\">\n                    <ProductDisplayName product={this.props.product} />\n                </div>\n                <DisplayGroupDtails>\n                    <DisplayThickness thickness={this.props.product.thickness} />\n                    <DisplayDetail icon={iconoTemporalAcabado} value={this.props.product.finish} />\n                </DisplayGroupDtails>\n                <DisplayGroupDtails>\n                    <DisplayDetail\n                        class=\"subtypeName\"\n                        value={this.props.product.subtypeName && this.props.intl.formatMessage({ id: this.props.product.subtypeName.toLowerCase().replace(' ', '_') })}\n                    />\n                </DisplayGroupDtails>\n                <DisplayGroupDtails>\n                    <DisplayDetail value={this.props.product.bigAccountsErpCode ? '# ' + this.props.product.bigAccountsErpCode : null} />\n                </DisplayGroupDtails>\n            </DisplayProductInfo>\n        )\n    }\n}\n","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\n\nconst mapStateToProps = state => {\n    return { userPreferences: getProfileConfiguration(state) }\n}\nconst LengthMeasureTranslation = ({ userPreferences, intl, square, smaller }) => {\n    const meters = smaller ? 'cm' : 'm'\n    const feets = smaller ? 'in' : 'ft'\n    const lengthUnitTranslationPrefer = userPreferences.lengthUnit === 'M2' ? meters : feets\n    const lengthUnitTranslationDefault = intl.locale === 'en-US' || intl.locale === 'fr-CA' || intl.locale === 'en-CA' ? feets : meters\n    const lengthUnitTranslation = userPreferences.lengthUnit ? lengthUnitTranslationPrefer : lengthUnitTranslationDefault\n    return (\n        <React.Fragment>\n            {lengthUnitTranslation}\n            {square && <sup>2</sup>}\n        </React.Fragment>\n    )\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(LengthMeasureTranslation)\n)\n","import { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\nimport { getLocaleWithft2 } from '../../store/products/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { canViewThresholdMax } from '../../store/ui/reducers'\nimport { getReplaceDotWithComma } from '../../helpers'\n\nconst mapStateToProps = (state, ownProps) => {\n    return {\n        replaceDotWithComma: (element, locale) => getReplaceDotWithComma(element, locale, state),\n        userPreferences: getProfileConfiguration(state),\n        localeWithft2: getLocaleWithft2(),\n        outlet: ownProps.isSellingOutlet === 'X' ? true : ownProps.match.params.outlet,\n        canViewThresholdMax: canViewThresholdMax(state)\n\n    }\n}\nconst LengthMeasure = ({ qty, userPreferences, intl, product, localeWithft2, outlet, canViewThresholdMax, replaceDotWithComma }) => {\n    const defaultStockM2 = outlet ? product.stock_outlet_m2 : product.stock_m2\n    const defaultStockFt2 = outlet ? product.stock_outlet_ft2 : product.stock_ft2\n\n    const stockM2 = defaultStockM2 ? replaceDotWithComma(defaultStockM2, intl.locale) : defaultStockM2\n    const stockFt2 = defaultStockFt2 ? replaceDotWithComma(defaultStockFt2, intl.locale) : defaultStockFt2\n\n    const userLengthPrefer = userPreferences.lengthUnit === 'M2' ? stockM2 : stockFt2\n    const lengthDefault = localeWithft2.includes(intl.locale) ? stockFt2 : stockM2\n    const lengthToShow = userPreferences.lengthUnit ? userLengthPrefer : lengthDefault\n    let result\n    if (outlet) {\n        result = lengthToShow\n    } else {\n        if (product.threshold && product.threshold >= product.stock) {\n            // medida calculada\n            if (product.stock + product.stock_outlet > 0 && lengthToShow) {\n                // parseInt returns NaN if the first character cannot be converted to a number\n                let numericLengthToShow = parseInt(lengthToShow)\n                result = ' < ' + parseInt((numericLengthToShow / (product.stock + product.stock_outlet)) * product.threshold)\n            } \n            // 5 : 54 (medida aproximada de una tabla)\n            else if (userPreferences.lengthUnit) result = userPreferences.lengthUnit === 'M2' ? ' < ' + 5 * product.threshold : ' < ' + 54 * product.threshold\n            // 54 : 5 (medida aproximada de una tabla)\n            else result = localeWithft2.includes(intl.locale) ? ' < ' + 54 * product.threshold : ' < ' + 5 * product.threshold\n        } else if (canViewThresholdMax && product.thresholdMax && product.thresholdMax <= product.stock) {\n            // medida calculada\n            if (product.stock + product.stock_outlet > 0 && lengthToShow) {\n                // parseInt returns NaN if the first character cannot be converted to a number\n                let numericLengthToShow = parseInt(lengthToShow)\n                result = ' > ' + parseInt((numericLengthToShow / (product.stock + product.stock_outlet)) * product.thresholdMax)\n            } \n            // 5 : 54 (medida aproximada de una tabla)\n            else if (userPreferences.lengthUnit) result = userPreferences.lengthUnit === 'M2' ? ' > ' + 5 * product.thresholdMax : ' > ' + 54 * product.thresholdMax\n            // 54 : 5 (medida aproximada de una tabla)\n            else result = localeWithft2.includes(intl.locale) ? ' > ' + 54 * product.thresholdMax : ' > ' + 5 * product.thresholdMax\n        } else {\n            result = lengthToShow\n        }\n    }\n    return result\n}\n\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            null\n        )(LengthMeasure)\n    )\n)\n","import React from 'react'\n\nexport default class DisplayProductInfoTable extends React.Component {\n    render() {\n        return (\n            <div className=\"product-info-table\">\n                <table>\n                    <thead>\n                        <tr>\n                            {this.props.th.map(th => (\n                                <th key={th.datacy + th.value} data-cy={th.datacy}>\n                                    {th.value}\n                                </th>\n                            ))}\n                        </tr>\n                    </thead>\n                    <tbody>\n                        <tr>\n                            {this.props.td.map(td => (\n                                <td key={td.datacy + td.value} data-cy={td.datacy}>\n                                    {td.value}\n                                </td>\n                            ))}\n                        </tr>\n                    </tbody>\n                </table>\n            </div>\n        )\n    }\n}\n","import React from 'react'\n\nimport PropTypes from 'prop-types'\nimport getNumberFormat from \"../../../getNumberFormat\";\nimport {connect} from \"react-redux\";\nimport {getLanguage} from \"../../../../store/ui/reducers\";\nclass DisplayPriceMktools extends React.Component {\n    static propTypes = {\n        className: PropTypes.string,\n        dataCY: PropTypes.string,\n        group: PropTypes.string,\n        prices: PropTypes.object.isRequired,\n        showCoin: PropTypes.bool\n    }\n    render() {\n        const { prices, group, className = '', dataCY = 'display_price', showCoin = true, lang } = this.props\n        if (!prices) return null\n        let groupPrice = prices[group] ? prices[group] : prices.default\n        if (!groupPrice) return null\n\n        let numberFormat = getNumberFormat(lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n\n        if(groupPrice.coin === 'JPY') {\n            numberFormat = getNumberFormat(lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n        }\n\n        return (\n            <span className={className} data-cy={dataCY}>\n                {numberFormat.format(groupPrice.price)} {showCoin && groupPrice.coin}\n            </span>\n        )\n    }\n}\n\n\nconst mapStateToProps = (state, ownProps) => {\n    return {\n        lang: getLanguage(state),\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    null\n)(DisplayPriceMktools)","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport iconoTemporalAcabado from '../../../assets/img/acabado.png'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport LengthMeasureTranslation from '../../global/LengthMeasureTranslation'\nimport LengthMeasure from '../../global/LengthMeasure'\n\n//Displays\nimport DisplayProductInfo from './displays/DisplayProductInfo'\nimport DisplayBrand from './displays/DisplayBrand'\nimport DisplayProductInfoTable from './displays/DisplayProductInfoTable'\nimport DisplayThickness from './displays/DisplayThickness'\nimport DisplayGroupDtails from './displays/DisplayGroupDtails'\nimport DisplayDetail from './displays/DisplayDetail'\nimport DisplayPriceMktools from './displays/DisplayPriceMktools'\n\nexport default class DetailsMktools extends React.Component {\n    isSample() {\n        return this.props.product.typeId === '01' || this.props.product.typeId === 'NEWS'\n    }\n    getUnitBy() {\n        if (this.props.product.isMktool && this.props.product.unitsByLot) return this.props.product.unitsByLot\n        else if (this.props.product.isMktool && this.props.product.unitsByBox) return this.props.product.unitsByBox\n        else if (!this.props.product.isMktool && !this.props.product.unitsByLot && !this.props.product.unitsByBox) return <LengthMeasure product={this.props.product} />\n    }\n\n    render() {\n        const available = this.props.product.type === 'TABLA' ? <Translation id=\"tables\" defaultMessage=\"Slabs\" /> : <Translation id=\"available\" defaultMessage=\"Available\" />\n        let quantity\n        if (this.props.product.type === 'TABLA') {\n            quantity = (\n                <div>\n                    <LengthMeasureTranslation square={true} />\n                </div>\n            )\n        } else if (this.props.product.isMktool) {\n            if (this.isSample()) {\n                quantity = (\n                    <div>\n                        <span>\n                            <Translation defaultMessage=\"u/box\" id=\"u/box\" />\n                        </span>\n                    </div>\n                )\n            } else {\n                quantity = (\n                    <div>\n                        {this.getUnitBy() && (\n                            <span>\n                                <Translation defaultMessage=\"u/lot\" id=\"u/lot\" />\n                            </span>\n                        )}\n                    </div>\n                )\n            }\n        } else {\n            quantity = <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n        }\n\n        const watchingOutlet = this.props.outlet ? true : false\n        const stock = watchingOutlet ? this.props.product.stock_outlet : this.props.product.stock\n\n        let thData = []\n        thData.push({ value: available })\n        if (this.getUnitBy()) thData.push({ datacy: 'product_rectangle_result__surface', value: quantity })\n        thData.push({ value: this.props.intl.formatMessage({ id: 'material_id' }) })\n\n        let tdData = []\n        tdData.push({ value: stock })\n        if (this.getUnitBy()) tdData.push({ datacy: 'product_rectangle_result__surface_value', value: this.getUnitBy() })\n        tdData.push({ value: this.props.product.productId })\n\n        return (\n            <DisplayProductInfo>\n                <DisplayBrand brand={this.props.product.brand} />\n                <div className=\"product-color-name\">\n                    <ProductDisplayName product={this.props.product} />\n                </div>\n\n                <DisplayProductInfoTable th={thData} td={tdData} />\n\n                <DisplayGroupDtails>\n                    <DisplayThickness thickness={this.props.product.thickness} />\n                    <DisplayDetail icon={iconoTemporalAcabado} value={this.props.product.finish} />\n                </DisplayGroupDtails>\n                <DisplayGroupDtails>\n                    {this.props.product && !this.isSample() && this.props.product.channelName && (\n                        <DisplayDetail class=\"channelName\" value={this.props.product.channelName.toLowerCase()} />\n                    )}\n                </DisplayGroupDtails>\n                <DisplayGroupDtails>\n                    {this.props.isMkToolsCenter && this.props.product && (\n                        <div className=\"finish price\">\n                            <div className=\"text\">\n                                <DisplayPriceMktools prices={this.props.product.pricesMktools} group={this.props.priceGroup} />\n                            </div>\n                        </div>\n                    )}\n                </DisplayGroupDtails>\n            </DisplayProductInfo>\n        )\n    }\n}\n","import ReactTooltip from 'react-tooltip'\n\nimport React from 'react'\n\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../../global/Translation'\n\nclass DisplayStock extends React.Component {\n    render() {\n        let noStockTooltip = (\n            <React.Fragment>\n                <i\n                    className=\"fa fa-info-circle\"\n                    style={{ margin: '5px', flex: '0 0 auto', color: '' }}\n                    data-tip={this.props.intl.formatMessage({\n                        id: 'theres_no_stock_available_now',\n                        defaultMessage: 'You can buy this product even if it is out of stock. We will delivery it to you from our supply chain. Delivery time may increase slightly'\n                    })}\n                    data-for={this.props.product.productId}\n                />\n                <ReactTooltip id={this.props.product.productId} effect=\"solid\" place=\"top\" />\n            </React.Fragment>\n        )\n        let stock\n        if (this.props.product.fromMall) {\n            if(this.props.product.realStock){\n                stock = this.props.product.realStock\n            } else {\n                stock = this.props.value\n            }\n        } else if (this.props.watchingOutlet) {\n            stock = this.props.product.stock_outlet\n        } else {\n            if (this.props.product.threshold && this.props.product.threshold >= this.props.product.stock) {\n                stock = ' < ' + this.props.product.threshold\n            } else if (this.props.canViewThresholdMax && this.props.product.thresholdMax && this.props.product.thresholdMax <= this.props.product.stock) {\n                stock = ' > ' + this.props.product.thresholdMax\n            } else {\n                stock = this.props.product.stock\n            }\n        }\n        return (\n            <div className={`product_detail stock`} style={{ color: !this.props.value ? '#232323' : '#36A596' }} key={this.props.product.productId}>\n                {(this.props.icon || this.props.faIconClass) && (\n                    <div className=\"icon\">\n                        {this.props.icon && <img alt=\"\" src={this.props.icon} />}\n                        {this.props.faIconClass && <i className={this.props.faIconClass} />}\n                    </div>\n                )}\n\n                {this.props.product.type === 'TABLA' ? (\n                    <React.Fragment>\n                        <div className=\"text\">\n                            {this.props.value >= 1 && (\n                                <React.Fragment>\n                                    {stock} <Translation id=\"slabs_availables_on_stock\" defaultMessage=\"Slabs availables on stock\" />\n                                </React.Fragment>\n                            )}\n                            {(this.props.value < 1 || !this.props.value) && !this.props.product.fromMall && (\n                                <React.Fragment>\n                                    {0} <Translation id=\"slabs_availables_on_stock\" defaultMessage=\"Slabs availables on stock\" />\n                                    {noStockTooltip}\n                                </React.Fragment>\n                            )}\n                            {(this.props.value < 1 || !this.props.value) && this.props.product.fromMall && (\n                                <div className=\"price-landing-mall\">\n                                    {0} <Translation id=\"slabs_availables_on_stock\" defaultMessage=\"Slabs availables on stock\" />\n                                </div>\n                            )}\n                        </div>\n                        {this.props.value >= 1 && !this.props.hideSurface && (\n                            <div className=\"length\">\n                                <Translation id=\"that_would_cover\" defaultMessage=\"That would cover\" /> {this.props.surface}\n                                {this.props.measure}\n                            </div>\n                        )}\n                    </React.Fragment>\n                ) : (\n                    <div className=\"text\">\n                        {this.props.value} <Translation id=\"units_availables_on_stock\" defaultMessage=\"Units availables on stock\" /> {this.props.value < 1 && noStockTooltip}\n                    </div>\n                )}\n            </div>\n        )\n    }\n}\nexport default injectIntl(DisplayStock)\n","import React from 'react'\nimport Translation from '../../../global/Translation'\n\nimport Modal from '../../../global/Modal'\nimport { connect } from 'react-redux'\nimport { getProfileConfiguration } from '../../../../store/profile-configuration/reducers'\nimport { getPriceList, getUserPriceList, getUserType, getImpersonatedBy, getPriceListAtSelectedCenter, getUserDiscounts, getUserCenter } from '../../../../store/login/reducers'\nimport {\n    getDRIUSACenterId,\n    getFregaderosCenterId,\n    getIKEACenterId,\n    getIsIkeaCenter,\n    getIsLowesCenter,\n    getIsMkToolsCenter,\n    getLowesCenterId,\n    getNaturalStoneSpainCenterId,\n    getSelectedCenter,\n    getShowroomCenterId,\n    getWarehoseCenterId\n} from '../../../../store/centers/reducers'\nimport { canViewPrices, canViewPricesPhase3, discountsByProductId } from '../../../../store/products/reducers'\nimport { getLanguage } from '../../../../store/ui/reducers'\nimport ReactTooltip from 'react-tooltip'\nimport getNumberFormat from \"../../../getNumberFormat\";\nimport ReactDOM from 'react-dom'\n\nconst mapStateToProps = (state, ownProps) => {\n    let productId = ownProps && ownProps.product && ownProps.product.productId\n    let outlet = ownProps && ownProps.outlet\n    return {\n        userPriceList: getUserPriceList(state),\n        priceList: getPriceListAtSelectedCenter(state),\n        centerId: getSelectedCenter(state),\n        canViewPrices: canViewPrices(state),\n        canViewPricesPhase3: canViewPricesPhase3(state),\n        userType: getUserType(state),\n        impersonatedBy: getImpersonatedBy(state),\n        lang: getLanguage(state),\n        userCenter: getUserCenter(state),\n        productDiscounts: discountsByProductId(state, productId, outlet),\n        naturalStoneSpainCenterId: getNaturalStoneSpainCenterId(),\n        iKEACenterId: getIKEACenterId(),\n        warehoseCenterId: getWarehoseCenterId(),\n        showroomCenterId: getShowroomCenterId(),\n        DRIUSACenterId: getDRIUSACenterId(),\n        lowesCenterId: getLowesCenterId(),\n        fregaderosCenterId: getFregaderosCenterId(),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isMkToolsCenter: getIsMkToolsCenter(state),\n        isLowesCenter: getIsLowesCenter(state),\n    }\n}\n\nclass DisplayPrice extends React.Component {\n\n    static defaultProps = {\n        showPriceDiscountDisclaimer: true,\n    }\n\n    state = { showHelp: false, center: null, pricesToShow: false, basePrice: null, baseMeasure: null, discounts: [], appliedDiscounts: [] }\n    componentDidUpdate(prevProps) {\n        //si cambia la lista de precios del usuario, el componente debe recalcular\n        //si cambia los descuentos de fase 1 usuario, el componente debe recalcular\n        //TODO: Magdalena añade aqui lo que consideres que debe actualizar el componente en fase 3\n        //si cambia las promociones de fase 3 usuario, el componente debe recalcular\n        if (prevProps.userPriceList !== this.props.userPriceList || prevProps.priceList !== this.props.priceList || prevProps.productDiscounts !== this.props.productDiscounts) {\n            this.updatePrices()\n        }\n    }\n    componentDidMount() {\n        this.updatePrices()\n    }\n\n    updatePrices() {\n        this.priceCondition = {\n            ZT00: { condition: 'ZT00', operator: '-', description: 'BASE_PRICE' },\n            ZEFP: { condition: 'ZEFP', operator: '+', description: 'FINISH_EXTRA_PERCENT' },\n            ZDPR: { condition: 'ZDPR', operator: '-', description: 'PRODUCT_DISCOUNT' },\n            ZDCU: { condition: 'ZDCU', operator: '-', description: 'CUSTOMER_DISCOUNT' },\n            ZDLO: { condition: 'ZDLO', operator: '-', description: 'LOGISTIC_DISCOUNT' },\n            Z71D: { condition: 'Z71D', operator: '-', description: 'PERCENTUAL_DISCOUNT_PROMOTION' }, //Phase3\n            ZEFN: { condition: 'ZEFN', operator: '+', description: 'FINISH_EXTRA' },\n            Z70D: { condition: 'Z70D', operator: '', description: 'FIXED_PRICE_PROMOTION' }, //Phase3\n            ZDWB: { condition: 'ZDWB', operator: '-', description: 'ECOSENTINO_DISCOUNT' },\n            ZDPP: { condition: 'ZDPP', operator: '-', description: 'PROMT_PAYMENT_DISCOUNT' }\n        }\n        // let productPromo = []\n        // if (this.props.product && this.props.product.promotions) {\n        //     productPromo = this.props.product.promotions\n        // }\n        //\n        // let clientPromo = []\n        //\n        // if (this.props.userDiscounts && this.props.userDiscounts[this.props.product.productId]) {\n        //     let discountsAtThisCenter = this.props.userDiscounts[this.props.product.productId].filter(promotion => {\n        //         return promotion.center == this.props.centerId || !promotion.center\n        //     })\n        //     discountsAtThisCenter.map(validDiscount => {\n        //         clientPromo = [{ ...validDiscount, discountClient: true }]\n        //     })\n        // }\n\n        //current product discounts\n        let allPromotions = []\n\n        // [\n        //     {conditionClass: Z71D,\n        //     value: 10,\n        //     promoId: 50000123\n        //     promoname:promo italia,}\n\n        //     { conditionClass: Z71D,\n        //     value: 10,\n        //     promoId: 50000123\n        //     promoname:promo italia}\n        // ]\n        let sorting = {\n            Z70D: { val: 0 },\n            Z71D: { val: 1 },\n            Z73D: { val: 2 },\n            ZQ00: { val: 3 }\n        }\n        //new user discounts\n        if (this.props.productDiscounts && Object.keys(this.props.productDiscounts).length > 0) {\n            //         this.promotions = this.promotions.concat(this.validateOutletPromotions(this.props.productDiscounts))\n            allPromotions = allPromotions.concat(this.props.productDiscounts)\n        }\n        //Validación OUTLET - NO OUTLET\n\n        //  console.log(\"PROMOCIONES DE PRODUCTO\")\n        //  console.log( allPromotions)\n        if (this.props.outlet) {\n            allPromotions = this.validateOutletPromotions(allPromotions)\n        }\n        this.promotions = allPromotions.sort((a, b) => {\n            if (sorting[b.conditionClass] && sorting[a.conditionClass]) {\n                // console.log(a.conditionClass)\n                // console.log(sorting[a.conditionClass].val)\n                if (a.conditionClass == b.conditionClass) {\n                    if (a.conditionClass == 'Z71D') {\n                        //Discunt higher more favorable.\n                        if (a.value > b.value) {\n                            return -1\n                        }\n                        if (a.value < b.value) {\n                            return 1\n                        }\n                    } else {\n                        if (a.value > b.value) {\n                            return 1\n                        }\n                        if (a.value < b.value) {\n                            return -1\n                        }\n                    }\n                }\n\n                return sorting[a.conditionClass].val - sorting[b.conditionClass].val\n            }\n\n            // a must be equal to b\n            return 1\n        })\n        //console.log(this.promotions)\n        let notDefaultCenter = [\n            this.props.naturalStoneSpainCenterId,\n            this.props.iKEACenterId,\n            this.props.warehoseCenterId,\n            this.props.showroomCenterId,\n            this.props.DRIUSACenterId,\n            this.props.lowesCenterId,\n            this.props.fregaderosCenterId\n        ]\n\n        if (notDefaultCenter.includes(this.props.userCenter)) {\n            this.setState({ pricesToShow: false })\n        }\n        if (this.props.priceList && this.props.priceList[0]) {\n            this.setState(\n                {\n                    //TODO:: PV_REPLACE_CENTERS\n                    center:\n                        this.props.product.centerId === '1070' ||\n                        (this.props.product.centerId === '1000' && (this.props.product.type == 'FREGADERO' || this.props.product.type == 'PPCC'))\n                            ? this.props.userCenter\n                            : this.props.product.centerId\n                },\n                () => {\n                    if (this.getCurrentZT00()) this.setState({ discounts: this.getDiscounts(), appliedConditions: this.getAppliedConditions(), pricesToShow: true })\n                }\n            )\n        }\n    }\n    normalizeDiscount = priceCondition => {\n        let m2toft2Ratio = 10.7639\n\n        if (priceCondition.condition === 'ZT00' || priceCondition.condition === 'ZVFG') {\n            return null\n        }\n\n        if (priceCondition.priceList === this.props.priceList[0].priceList) {\n            if (this.getCurrentZT00().measure === priceCondition.measure || priceCondition.coin === '%') {\n                return priceCondition\n            } else {\n                if (this.getCurrentZT00().measure === 'M2' && priceCondition.measure === 'PI2') {\n                    priceCondition.price = priceCondition.price * m2toft2Ratio\n                    return priceCondition\n                } else if (this.getCurrentZT00().measure === 'PI2' && priceCondition.measure === 'M2') {\n                    priceCondition.price = priceCondition.price / m2toft2Ratio\n                    return priceCondition\n                }\n            }\n        }\n        return null\n    }\n\n    getAppliedConditions = () => {\n        let priceConditionOrder = Object.keys(this.priceCondition)\n        let appliedConditions = this.getDiscounts()\n        let promotion = this.promotions && this.promotions[0]\n\n        if (promotion) {\n            appliedConditions.push({\n                coin: promotion.coin,\n                condition: promotion.conditionClass,\n                price: promotion.value,\n                priceList: null,\n                registerCondition: promotion.promoId,\n                salesOrg: promotion.salesOrg,\n                measure: promotion.measure\n            })\n\n            if (promotion.condition === 'Z70D') {\n                appliedConditions.map(condition => {\n                    if (['ZEFP', 'ZDPR', 'ZDCU', 'ZDLO', 'ZEFN'].includes(condition.condition)) return (condition = { ...condition, annulled: true })\n                })\n            }\n        }\n\n        appliedConditions = appliedConditions.sort((a, b) => {\n            return priceConditionOrder.indexOf(a.condition) - priceConditionOrder.indexOf(b.condition)\n        })\n\n        return appliedConditions\n    }\n    getDiscounts = () => {\n        let priceConditionOrder = Object.keys(this.priceCondition)\n\n        let discounts = []\n\n        //prepara descuentos de material\n\n        this.props.product.price &&\n            this.props.product.price[this.state.center] &&\n            this.props.product.price[this.state.center].forEach(priceCondition => {\n                if (priceCondition.condition !== 'ZT00' && priceCondition.professionalPartner === 'PP') return\n                // let discount = this.normalizeDiscount(priceCondition)\n                // if (discount) discounts.push(discount)\n                if (priceCondition.salesOrg === this.props.priceList[0].salesOrg) {\n                    let discount = this.normalizeDiscount(priceCondition)\n                    if (discount) discounts.push(discount)\n                }\n            })\n\n        //prepara descuentos de cliente\n\n        this.props.userPriceList &&\n            this.props.userPriceList[this.props.product.productId] &&\n            this.props.userPriceList[this.props.product.productId].forEach(priceCondition => {\n                if (priceCondition.condition !== 'ZT00' && priceCondition.professionalPartner === 'PP') return\n\n                if (priceCondition.salesOrg === this.props.priceList[0].salesOrg) {\n                    let discount = this.normalizeDiscount(priceCondition)\n                    if (discount) {\n                        //if theres a discount with same condition , we keep the user condition, cause its more specific\n                        let foundAt = discounts.map(discount => discount.condition).indexOf(discount.condition)\n                        if (foundAt > -1) {\n                            discounts.splice(foundAt, 1, discount)\n                        } else {\n                            if (discount) discounts.push(discount)\n                        }\n                    }\n                }\n            })\n        //prepara promociones de cliente (nueva version FASE III)\n\n        discounts = discounts.sort((a, b) => {\n            return priceConditionOrder.indexOf(a.condition) - priceConditionOrder.indexOf(b.condition)\n        })\n        return discounts\n    }\n    getCurrentZT00 = () => {\n        return (\n            this.props.product.price &&\n            this.props.product.price[this.state.center] &&\n            this.props.product.price[this.state.center].filter(\n                priceCondition => priceCondition.condition === 'ZT00' && priceCondition.priceList === this.props.priceList[0].priceList\n            )[0]\n        )\n    }\n\n    getPromotionMeasure = () => {\n        let promotions = this.promotions\n        let promotion = promotions[0]\n        let result = null\n        if (!this.props.canViewPricesPhase3) return this.getCurrentZT00().measure\n\n        if (promotion && promotion.conditionClass === 'Z70D') {\n            return promotion.measure\n        }\n\n        return this.getCurrentZT00().measure\n    }\n\n    applyDiscount = (discount, priceBefore) => {\n        let priceAfter = priceBefore\n\n        //TODO Remove this when ZDCU discounts are fixed\n        if(discount.condition === 'ZDCU' || discount.condition === 'ZDPR' || discount.condition === 'ZDLO') {\n            return priceAfter\n        }\n\n        //CAUTION: THIS METHOD WORKS BOTH WITH PROMOTION OR PRICECONDITIONS\n        if (discount.condition === 'Z70D') {\n            priceAfter = discount.price\n            return priceAfter\n        }\n        if (discount.condition === 'Z71D') {\n            priceAfter = priceBefore - (priceBefore * discount.price) / 100\n            return priceAfter\n        }\n\n        if (discount.coin === '%') {\n            if (discount.condition === 'ZEFP' || discount.condition === 'ZEFN') {\n                //esto es un extra\n                priceAfter = priceBefore + (priceBefore * discount.price) / 100\n            } else {\n                // esto es un discount\n                priceAfter = priceBefore - (priceBefore * discount.price) / 100\n            }\n        } else {\n            if (discount.condition === 'ZEFP' || discount.condition === 'ZEFN') {\n                //esto es un extra\n                priceAfter = priceBefore + discount.price\n            } else {\n                // esto es un discount\n                priceAfter = priceBefore - discount.price\n            }\n        }\n\n        return priceAfter\n    }\n    getFinalPrice = () => {\n        if (!this.props.product.price && !this.props.userPriceList) return 0\n        let finalPrice = this.getCurrentZT00() ? this.getCurrentZT00().price : 0;\n        let discounts = this.state.discounts\n        discounts.forEach(discount => {\n            finalPrice = this.applyDiscount(discount, finalPrice)\n        })\n        return finalPrice\n    }\n\n    getFinalPriceWithPromotions = () => {\n        let promotions = this.promotions\n        let promotion = promotions[0]\n        let result = null\n        if (!this.props.canViewPricesPhase3) return null\n        if (promotion && promotion.conditionClass === 'Z70D') {\n            result = promotion.value\n            this.state.discounts.map(discount => {\n                if (discount.condition == 'ZDWB') {\n                    result = this.applyDiscount(discount, result)\n                }\n                if (discount.condition == 'ZDPP') {\n                    result = this.applyDiscount(discount, result)\n                }\n            })\n        } else if (promotion && promotion.conditionClass === 'Z71D') {\n            let priceConditionBefore = ['ZT00', 'ZEFP', 'ZDPR', 'ZDCU', 'ZDLO']\n            let priceConditionAfter = ['ZEFN', 'ZDWB', 'ZDPP']\n            result = this.getCurrentZT00().price\n            this.state.discounts.map(discount => {\n                if (priceConditionBefore.includes(discount.condition)) {\n                    result = this.applyDiscount(discount, result)\n                }\n            })\n            result = result - (result * promotion.value) / 100\n            this.state.discounts.map(discount => {\n                if (priceConditionAfter.includes(discount.condition)) {\n                    result = this.applyDiscount(discount, result)\n                }\n            })\n        }\n        return result\n    }\n\n    getPromotionCoin = promotion => {\n        if (promotion && (promotion.condition === 'Z70D' || promotion.conditionClass === 'Z70D') && promotion.coin !== null && promotion.coin !== this.getCurrentZT00().coin) {\n            return promotion.coin\n        }\n\n        return this.getCurrentZT00().coin\n    }\n\n    promoPhase3DifferentCurrencies = () => {\n        let ZTOO = this.getCurrentZT00()\n        let promotion = this.promotions && this.promotions[0]\n        if (promotion && ZTOO && promotion.coin !== ZTOO.coin) return true\n        return false\n    }\n\n    transformMeasure = measure => {\n        if (measure === 'PI2')\n            return (\n                <React.Fragment>\n                    ft<sup>2</sup>\n                </React.Fragment>\n            )\n        if (measure === 'M2')\n            return (\n                <React.Fragment>\n                    m<sup>2</sup>\n                </React.Fragment>\n            )\n        if (measure === 'UN')\n            return (\n                <React.Fragment>\n                    <Translation id=\"unit\" defaultMessage=\"Unit\"></Translation>\n                </React.Fragment>\n            )\n        if (measure === 'ROL')\n            return (\n                <React.Fragment>\n                    <Translation id=\"roll\" defaultMessage=\"Roll\"></Translation>\n                </React.Fragment>\n            )\n        return <React.Fragment>{measure}</React.Fragment>\n    }\n\n    validateOutletPromotions = allPromotions => {\n        if (allPromotions == undefined || allPromotions == null || Object.keys(allPromotions).length == 0) return []\n\n        //remove other outlet types promos.\n        allPromotions = Object.values(allPromotions).filter(promo => {\n            if (promo.outlet && promo.outlet == true && promo.outlet_types != this.props.product.outletQuality) {\n                return false\n            }\n            return true\n        })\n        return allPromotions\n    }\n\n    getCanViewPriceDiscountDisclaimer() {\n        if (!this.props.showPriceDiscountDisclaimer) {\n            return false\n        }\n    \n        return !(this.props.isIkeaCenter || this.props.isMkToolsCenter || this.props.isLowesCenter)\n    }\n    \n    \n    render() {\n        if (!this.props.canViewPrices) return null\n\n        if (this.props.rawPrice) {\n            const currentZT00 = this.getCurrentZT00()\n            const finalPrice = this.getFinalPrice();\n            if (!currentZT00 || !finalPrice) {\n                return null;\n            }\n            return <React.Fragment>{finalPrice.toFixed(2)} <small><span>{currentZT00.coin}</span><span>{`/${currentZT00.measure}`}</span></small></React.Fragment>;\n        }\n\n        if (!this.state.pricesToShow || !this.props.priceList || !this.props.priceList[0] || !this.getCurrentZT00())\n            return (\n                <div className=\"finish price v2\">\n                    <div className=\"text\">\n                        <div className=\"product_detail\">\n                            <span className='text price'>\n                                <Translation id=\"price\" defaultMessage=\"Price\" />: <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                            </span>\n                        </div>\n                    </div>\n                </div>\n            )\n        let partialPrice = this.getCurrentZT00().price\n        let numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n        \n        if(this.getCurrentZT00().coin === 'JPY') {\n            numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n        }\n\n        const priceDiscountDisclaimer = (\n            <div className=\"disclaimer-price-discount\">\n                <div><span><Translation id=\"prices_do_not_include_discounts\" defaultMessage=\"Prices do not include discounts.\" /></span></div>\n                <div><span><Translation id=\"applied_discounts_will_be_shown_in_the_shooping_cart\" defaultMessage=\"Applied discounts will be shown in the shopping cart.\" /></span></div>\n            </div>\n        )\n        \n        return (\n            <div className=\"finish price\">\n                <div className=\"text\">\n                    <div className=\"product_detail\">\n                        {(this.props.userType === 'ADMIN' || this.props.impersonatedBy) && (\n                            <div>\n                                <i\n                                    className=\"fal fa-info-circle\"\n                                    style={{ margin: '5px' }}\n                                    onClick={() => {\n                                        this.setState({ showHelp: !this.state.showHelp })\n                                    }}\n                                />\n                                <span className=\"price-info-display-price\"><Translation id=\"price_info\" defaultMessage=\"Price info\" /></span>\n                            </div>\n                        )}\n                        {this.getFinalPriceWithPromotions() !== null ? (\n                            <React.Fragment>\n                                {((this.getCurrentZT00().measure !== this.getPromotionMeasure() || this.getFinalPriceWithPromotions() < this.getFinalPrice()) || this.promoPhase3DifferentCurrencies()) && (\n                                    <React.Fragment>\n                                        <del>\n                                            {this.state.discounts && numberFormat.format(this.getFinalPrice())}{' '}\n                                            {this.getCurrentZT00().coin} / {this.transformMeasure(this.getCurrentZT00().measure)}{' '}\n                                        </del>\n                                        <br />\n                                    </React.Fragment>\n                                )}\n                                <span className='text price'>\n                                    {numberFormat.format(this.getFinalPriceWithPromotions())}{' '}\n                                    {this.getPromotionCoin(this.promotions[0])} / {this.transformMeasure(this.getPromotionMeasure())}{' '}\n                                </span>\n                                {this.getCanViewPriceDiscountDisclaimer() && (\n                                    priceDiscountDisclaimer\n                                )}\n                            </React.Fragment>\n                        ) : (\n                            <React.Fragment>\n                                <span className='text price'>\n                                    {this.state.discounts && numberFormat.format(this.getFinalPrice())} {this.getCurrentZT00().coin}{' '}\n                                    / {this.transformMeasure(this.getCurrentZT00().measure)}{' '}\n                                </span>\n                                {this.getCanViewPriceDiscountDisclaimer() && (\n                                    priceDiscountDisclaimer\n                                )}\n                            </React.Fragment>\n                        )}\n                    </div>\n                </div>\n\n                {this.state.showHelp && (\n                    ReactDOM.createPortal(\n                        (<Modal\n                        customClass=\"catalog-modal-price\"\n                        id=\"general-modal-comp\"\n                        title={<Translation id=\"pricing_detail\" defaultMessage=\"Pricing detail\" />}\n                        onClose={() => this.setState({ showHelp: false })}\n                    >\n                        <div className={`info ${!this.state.showHelp ? 'info--hidden' : ''}`}>\n                            <h5>\n                                <Translation id=\"applied_conditions\" defaultMessage=\"Applied conditions\" />\n                            </h5>\n                            <table class=\"table info info--promo\">\n                                <thead>\n                                    <tr>\n                                        <th scope=\"col\">\n                                            <Translation id=\"condition_class\" defaultMessage=\"Condition class\" />\n                                        </th>\n                                        <th scope=\"col\">\n                                            <Translation id=\"id_condition\" defaultMessage=\"Id condition\" />\n                                        </th>\n                                        <th scope=\"col\">\n                                            <Translation id=\"price_calculation\" defaultMessage=\"Price calculation\" />\n                                        </th>\n                                    </tr>\n                                </thead>\n                                <tbody>\n                                    <tr>\n                                        <th>\n                                            <span data-tip={this.priceCondition['ZT00'].description}>{this.getCurrentZT00().condition}</span>\n                                        </th>\n                                        <td>\n                                            <span>\n                                                {this.getCurrentZT00().registerCondition}\n                                            </span>\n                                        </td>\n                                        <td>\n                                            <span>\n                                                {this.getCurrentZT00().price} {this.getCurrentZT00().coin}\n                                            </span>\n                                        </td>\n                                    </tr>\n                                    {this.state.appliedConditions.map(discount => {\n                                        partialPrice = this.applyDiscount(discount, partialPrice)\n                                        //TODO Remove this when ZDCU discounts are fixed\n                                        if(discount.condition === 'ZDCU' || discount.condition === 'ZDPR' || discount.condition === 'ZDLO') return null;\n                                        return (\n                                            <tr>\n                                                <th scope=\"row\">\n                                                    <span data-tip={this.priceCondition[discount.condition].description}>\n                                                        {discount.condition} ({discount.salesOrg}) {this.priceCondition[discount.condition].operator}{' '}\n                                                        {numberFormat.format(discount.price)} {discount.condition !== 'Z70D' ? discount.coin : null}\n                                                    </span>\n                                                </th>\n                                                <td>\n                                                    <span>\n                                                        {discount.registerCondition}\n                                                    </span>\n                                                </td>\n\n                                                <td>\n                                                    <span>\n                                                        {numberFormat.format(partialPrice)} {this.getPromotionCoin(discount)}\n                                                    </span>\n                                                </td>\n                                                <ReactTooltip bg-coloreffect=\"solid\" place=\"bottom\" />\n                                            </tr>\n                                        )\n                                    })}\n                                </tbody>\n                            </table>\n                            {/* <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', width: '100%' }}></div> */}\n                            {/* {this.state.appliedConditions.map(discount => {\n                                partialPrice = this.applyDiscount(discount, partialPrice)\n                                return (\n                                    <div\n                                        style={{\n                                            display: 'flex',\n                                            flexDirection: 'row',\n                                            justifyContent: 'space-between',\n                                            width: '100%',\n                                            textDecoration: discount.annulled ? 'line-through' : ''\n                                        }}\n                                    ></div>\n                                )\n                            })} */}\n                        </div>\n                        {this.promotions && this.promotions.length > 0 && (\n                            <div>\n                                <br />\n                                <div className=\"info info--promo\">\n                                    <h5>\n                                        <Translation id=\"available_promos\" defaultMessage=\"Available promotions\" />\n                                    </h5>\n                                    <table class=\"table info info--promo\">\n                                        <thead>\n                                            <tr>\n                                                <th scope=\"col\">\n                                                    <Translation id=\"promo_id\" defaultMessage=\"Promo id\" />\n                                                </th>\n                                                <th scope=\"col\">\n                                                    <Translation id=\"description\" defaultMessage=\"Description\" />\n                                                </th>\n                                                <th scope=\"col\">\n                                                    <Translation id=\"condition_class\" defaultMessage=\"Condition class\" />\n                                                </th>\n                                                <th scope=\"col\">\n                                                    <Translation id=\"value\" defaultMessage=\"Value\" />{' '}\n                                                </th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            {this.promotions.map(promo => (\n                                                <tr>\n                                                    <th scope=\"row\">\n                                                        {' '}\n                                                        {promo.discountClient && <i className=\"fal fa-user\" />}\n                                                        {promo.promoId}\n                                                    </th>\n                                                    <td>{promo.description}</td>\n                                                    <td>{promo.conditionClass}</td>\n                                                    <td>{promo.value}</td>\n                                                </tr>\n                                            ))}\n                                        </tbody>\n                                    </table>\n                                </div>\n                            </div>\n                        )}\n                    </Modal>), (document.getElementById('wrapper-contain'))\n                    )\n                )}\n            </div>\n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    null\n)(DisplayPrice)\n","import React from 'react'\nimport Translation from '../../../global/Translation'\nimport Spinner from '../../../global/Spinner'\nimport { connect } from 'react-redux'\nimport { getPriceListAtSelectedCenter } from '../../../../store/login/reducers'\nimport { getSelectedCenter } from '../../../../store/centers/reducers'\nimport { canViewPricesPhase2 } from '../../../../store/products/reducers'\nimport { phase2priceByProductId } from '../../../../store/cart/reducers'\nimport { checkPricePhase2ByProduct } from '../../../../store/cart/actions'\nimport getNumberFormat from \"../../../getNumberFormat\";\nimport { getLanguage } from '../../../../store/ui/reducers'\n\nconst mapStateToProps = (state, ownProps) => {\n    return {\n        canViewPricesPhase2: canViewPricesPhase2(state),\n        phase2priceByProductId: phase2priceByProductId(state, ownProps.product.productId),\n        fetchingPhase2Price: true,\n        priceList: getPriceListAtSelectedCenter(state),\n        center: getSelectedCenter(state),\n        lang: getLanguage(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        checkPricePhase2ByProduct: (productId, centerId, outletType) => {\n            dispatch(checkPricePhase2ByProduct(productId, centerId, outletType))\n        }\n    }\n}\n\nclass DisplayPricePhase2 extends React.Component {\n    componentDidMount() {\n        this.props.checkPricePhase2ByProduct(this.props.product.productId, this.props.center, this.props.product.outletQuality)\n    }\n    componentDidUpdate(prevProps) {\n        //si cambia la lista de precios del usuario, el componente debe recalcular\n        //si cambiar el center, tambien\n        //si cambia las promociones de fase 3 usuario, el componente debe recalcular\n        // console.log(prevProps.priceList)\n        // console.log(this.props.priceList)\n        // console.log(prevProps.center)\n        // console.log(this.props.center)\n        if (!this.props.phase2priceByProductId || (prevProps.priceList !== this.props.priceList && prevProps.center !== this.props.center)) {\n            // console.log('it has changed!')\n            this.props.checkPricePhase2ByProduct(this.props.product.productId, this.props.center, this.props.product.outletQuality)\n        }\n    }\n    hasZT00Price() {\n        let { line } = this.props\n        let priceZT00 = false\n        if (this.props.phase2priceByProductId) {\n            priceZT00 = this.props.phase2priceByProductId.hasZT00\n        }\n        return priceZT00\n    }\n\n    getNewPrice() {\n        let { line } = this.props\n        let price = null\n        if (this.props.phase2priceByProductId) {\n            let priceYYYY = this.props.phase2priceByProductId.price\n            price = priceYYYY ? priceYYYY : 0\n        }\n\n        let numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n\n        if(this.props.phase2priceByProductId.coin === 'JPY') {\n            numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n        }\n        \n        return price && numberFormat.format(price)\n    }\n    getNewPricePerUnit() {\n        let { line } = this.props\n        let price = null\n        if (this.props.phase2priceByProductId) {\n            let priceYYYY = this.props.phase2priceByProductId.pricePerUnit\n            price = priceYYYY ? priceYYYY : 0\n        }\n        let numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n\n        if(this.props.phase2priceByProductId.coin === 'JPY') {\n            numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n        }\n\n        return price && numberFormat.format(price)\n    }\n    render() {\n        if (!this.props.canViewPricesPhase2) return null\n\n        return (\n            <div className=\"mini_cart_line_info__line\" style={{ display: 'block' }}>\n                {this.props.fetchingPhase2Price && !this.props.phase2priceByProductId ? (\n                    <Spinner isLoading={true} relative small></Spinner>\n                ) : (\n                    <React.Fragment>\n                        {(this.getNewPricePerUnit() && this.getNewPricePerUnit() == 0) || !this.getNewPricePerUnit() ? (\n                            <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                        ) : (\n                            this.getNewPricePerUnit()\n                        )}{' '}\n                        {this.props.phase2priceByProductId && !this.getNewPricePerUnit() == 0 && (\n                            <React.Fragment>\n                                {this.props.phase2priceByProductId.coin} / {this.props.phase2priceByProductId.unit}\n                            </React.Fragment>\n                        )}\n                    </React.Fragment>\n                )}\n            </div>\n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(DisplayPricePhase2)\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 9,\n    height: 11,\n    viewBox: \"0 0 9 11\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M0.304688 0.91723H8.15512L7.16881 3.87982H3.48228V7.19224H8.15512V10.156H0.304688V0.916016V0.91723Z\",\n    fill: \"white\"\n  })));\n};\n\nexport default __webpack_public_path__ + \"static/media/cosentino-global-icon-c.7f3097e7.svg\";\nexport { SvgComponent as ReactComponent };","import React from 'react'\nimport Translation from '../../../global/Translation'\nimport { injectIntl } from 'react-intl'\n\nconst DisplayNaturalStoneOrigin = ({ product, isLotGridView, isLotTableView, intl }) => {\n    /**\n     * Get the country code of the product\n     * @returns {(string|null)} countryCode translated\n     */\n    const getCountryCode = () => {\n        if (product && product.countryCode) {\n            /** @type {object} */\n            const countryCodeTranslations = {\n                AE: 'country_AE',\n                AT: 'country_AT',\n                AU: 'country_AU',\n                BE: 'country_BE',\n                BR: 'country_BR',\n                CA: 'country_CA',\n                CH: 'country_CH',\n                DE: 'country_DE',\n                DK: 'country_DK',\n                DU: 'country_DU',\n                ES: 'country_ES',\n                FI: 'country_FI',\n                FR: 'country_FR',\n                GB: 'country_GB',\n                IE: 'country_IE',\n                IL: 'country_IL',\n                IT: 'country_IT',\n                JP: 'country_JP',\n                LT: 'country_LT',\n                MX: 'country_MX',\n                MY: 'country_MY',\n                NL: 'country_NL',\n                NO: 'country_NO',\n                NZ: 'country_NZ',\n                PL: 'country_PL',\n                PR: 'country_PR',\n                PT: 'country_PT',\n                SE: 'country_SE',\n                SG: 'country_SG',\n                TR: 'country_TR',\n                US: 'country_US',\n                ZA: 'country_ZA',\n                AF: 'country_AF',\n                AO: 'country_AO',\n                CN: 'country_CN',\n                EG: 'country_EG',\n                GR: 'country_GR',\n                IN: 'country_IN',\n                IR: 'country_IR',\n                MU: 'country_MU',\n                MZ: 'country_MZ',\n                PK: 'country_PK',\n                TN: 'country_TN',\n                VN: 'country_VN',\n                ZW: 'country_ZW'\n            }\n\n            /** @type {string} */\n            const countryCode = product.countryCode\n            return intl.formatMessage({ id: countryCodeTranslations[countryCode] })\n        }\n        return null\n    }\n\n    /**\n     * Determines if the product is natural stone\n     * @returns {boolean}\n     */\n    const isNaturalStone = () => {\n        if (product && product.brand) {\n            const naturalStone = ['scalea', 'sensa', 'prexury']\n            if (naturalStone.includes(product.brand.toLowerCase())) return true\n            return false\n        }\n        return false\n    }\n\n    const originString = <Translation id=\"origin\" defaultMessage=\"Origin\" />\n\n    return isNaturalStone() && getCountryCode() ? (\n        isLotGridView ? (\n            <div className=\"row__lot__info\">\n                <div className=\"row__lot__info--key\">\n                    <span>\n                        {originString}\n                    </span>\n                    :\n                </div>\n                <div className=\"row__lot__info--value\">\n                    <span>{getCountryCode()}</span>\n                </div>\n            </div>\n        ) : isLotTableView ? (\n            <td style={{textAlign:'end', position:'relative'}}>\n                {getCountryCode()}\n            </td>\n        ) : (\n            <div className=\"product-info-details\">\n                <div className=\"product_detail pn-origin\">\n                    <span className=\"text\">\n                        <span className=\"bold-text\">{originString}</span>\n                        :&nbsp;\n                        {getCountryCode()}\n                    </span>\n                </div>\n            </div>\n        )\n    ) : null\n}\n\nexport default injectIntl(DisplayNaturalStoneOrigin)\n","import React from 'react'\nimport { ReactComponent as IconCosentinoC } from '../../../assets/img/icons/cosentino-global-icon-c.svg'\nimport { injectIntl } from 'react-intl'\n\nconst NaturalStoneIndicator = ({ idMessage, defaultMessage, intl, inSmallBox = false }) => {\n\n    const smallBoxStyles = {\n        indicatorHeight: '18px',\n        iconSize: '18px',\n        iconBorder: '1px solid #232323',\n        svgWidth: '8px',\n        textFontSize: '8.5px',\n        textPadding: '2px',\n        letterSpacing: '0.2px'\n    }\n\n    const styles = {\n        naturalStoneIndicator: {\n            display: 'flex',\n            alignItems: 'center',\n            height: inSmallBox ? smallBoxStyles.indicatorHeight : '20px',\n        },\n        cosentinoIconC: {\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            width: inSmallBox ? smallBoxStyles.iconSize : '20px',\n            height: inSmallBox ? smallBoxStyles.iconSize : '20px',\n            border: smallBoxStyles.iconBorder,\n            backgroundColor: '#000'\n        },\n        svg: {\n            width: inSmallBox ? smallBoxStyles.svgWidth : '10px',\n        },\n        cosentinoNaturalStoneText: {\n            backgroundColor: '#FFF',\n            height: inSmallBox ? smallBoxStyles.indicatorHeight : '20px',\n            padding: inSmallBox ? smallBoxStyles.textPadding : '2px',\n            display: 'flex',\n            alignItems: 'center',\n            color: '#000',\n            fontSize: inSmallBox ? smallBoxStyles.textFontSize : '8.8px',\n            fontWeight: 500,\n            border: '1px solid #232323',\n            fontFamily: 'Roboto',\n            lineHeight: '16px',\n            borderLeft: 0\n        }\n    }\n\n    return (\n        <div style={styles.naturalStoneIndicator}>\n            <div style={styles.cosentinoIconC}>\n                <IconCosentinoC style={styles.svg} />\n            </div>\n            <div style={styles.cosentinoNaturalStoneText}>\n                <span>\n                    {intl.formatMessage({\n                        id: idMessage,\n                        defaultMessage: defaultMessage\n                    })}\n                </span>\n            </div>\n        </div>\n    )\n}\n\nexport default injectIntl(NaturalStoneIndicator)\n","import React from 'react'\r\nimport Translation from '../../global/Translation'\r\n\r\nimport ProductDisplayName from '../../global/ProductDisplayName'\r\nimport LengthMeasureTranslation from '../../global/LengthMeasureTranslation'\r\nimport LengthMeasure from '../../global/LengthMeasure'\r\nimport mallLarge from '../../../assets/img/logos/mall-large.jpg'\r\n//Displays\r\nimport DisplayProductInfo from './displays/DisplayProductInfo'\r\nimport DisplayBrand from './displays/DisplayBrand'\r\nimport DisplayGroupDtails from './displays/DisplayGroupDtails'\r\nimport DisplayDetail from './displays/DisplayDetail'\r\nimport DisplayStock from './displays/DisplayStock'\r\nimport DisplayPrice from './displays/DisplayPrice'\r\nimport DisplayPricePhase2 from './displays/DisplayPricePhase2'\r\nimport DisplayNaturalStoneOrigin from './displays/DisplayNaturalStoneOrigin'\r\nimport LocalizedLink from '../../global/LocalizedLink'\r\nimport { connect } from 'react-redux'\r\nimport { getAdaptedFormat, getReplaceDotWithComma } from '../../../helpers'\r\nimport NaturalStoneIndicator from '../../cart-line/indicators/NaturalStoneIndicator'\r\nimport { getNaturalStoneViewingPermissions } from '../../../store/login/reducers'\r\n\r\nclass DetailsDefaultV2 extends React.Component {\r\n    state = { showHelp: false }\r\n\r\n    getUnitBy() {\r\n        const { product } = this.props\r\n        if (product.unitsByLot) return product.unitsByLot\r\n        else if (product.unitsByBox) return product.unitsByBox\r\n        else if (!product.unitsByLot && !product.unitsByBox) return <LengthMeasure product={product} />\r\n    }\r\n\r\n    render() {\r\n        const extras = this.props.getExtras()\r\n        const { product, canViewThresholdMax, intl, userType } = this.props\r\n\r\n        let quantity\r\n        if (product.type === 'TABLA') {\r\n            quantity = (\r\n                <div style={{ display: 'inline' }}>\r\n                    <LengthMeasureTranslation square={true} />\r\n                </div>\r\n            )\r\n        } else {\r\n            quantity = <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\r\n        }\r\n        const watchingOutlet = !!(this.props.outlet || (product.fromMall && product.outlet))\r\n        const stock = this.props.getStock()\r\n\r\n        return (\r\n            <DisplayProductInfo mallPromotionSection={this.props.mallPromotionSection}>\r\n                <div className=\"d-flex flex-wrap align-items-center justify-content-between\" style={{ columnGap: '16px', rowGap: 0 }}>\r\n                    <div>\r\n                        <DisplayBrand brand={product.brand} colorSerieDesc={product.colorSerieDesc} />\r\n                    </div>\r\n                    <div className=\"d-flex align-items-center justify-content-between\" style={{ gap: '8px' }}>\r\n                        {product.fromMall && (\r\n                            <div>\r\n                                <img style={{ width: '38px' }} src={mallLarge} alt=\"logo mall\" />\r\n                            </div>\r\n                        )}\r\n                        {extras && extras.isCosentinoGlobal && !(!!this.props.outlet && product.outlet) && this.props.naturalStoneViewingPermissions.canViewHQ && (\r\n                            <NaturalStoneIndicator idMessage={'natural_stone_hq'} defaultMessage=\"Natural stone Spain\" />\r\n                        )}\r\n\r\n                        {extras && extras.isCosentinoBrazil && this.props.naturalStoneViewingPermissions.canViewBrazil && (\r\n                            <NaturalStoneIndicator idMessage={'natural_stone_brazil'} defaultMessage=\"Natural stone Brazil\" />\r\n                        )}\r\n\r\n                        {!!this.props.outlet && product.outlet && extras && extras.isCosentinoGlobal && this.props.naturalStoneViewingPermissions.canViewHQ && (\r\n                            <NaturalStoneIndicator idMessage={'outlet_in_hq'} defaultMessage=\"Outlet Spain\" />\r\n                        )}\r\n                    </div>\r\n                </div>\r\n\r\n                <div className=\"product-color-name\">\r\n                    <ProductDisplayName product={product} />\r\n                </div>\r\n\r\n                {!this.props.mallPromotionSection && (\r\n                    <div className=\"product-info-details_productid\">\r\n                        <div>\r\n                            <DisplayGroupDtails>\r\n                                <DisplayDetail class=\"productId\" value={product.productId} label={<Translation id=\"material_id\" defaultMessage=\"Material ID\" />} />\r\n                            </DisplayGroupDtails>\r\n                        </div>\r\n                    </div>\r\n                )}\r\n\r\n                {!this.props.notDescriptionProduct && !this.props.mallPromotionSection && (\r\n                    <React.Fragment>\r\n                        <div className=\"product-info-details__content\">\r\n                            <DisplayGroupDtails>\r\n                                <DisplayDetail\r\n                                    class=\"measure-unit format\"\r\n                                    value={this.props.adaptedFormat(product.format, { upper: true, showUnits: true })}\r\n                                    label={<Translation id=\"format\" defaultMessage=\"Format\" />}\r\n                                />\r\n                            </DisplayGroupDtails>\r\n                            <DisplayGroupDtails>\r\n                                <DisplayDetail class=\"subtype\" value={product.subtypeName} label={<Translation id=\"subtype\" defaultMessage=\"Subtype\" />} />\r\n                            </DisplayGroupDtails>\r\n                            <DisplayGroupDtails>\r\n                                <DisplayDetail\r\n                                    class=\"thickness\"\r\n                                    value={this.props.replaceDotWithComma(product.thickness, intl.locale)}\r\n                                    label={<Translation id=\"thickness\" defaultMessage=\"Thickness\" />}\r\n                                />\r\n                                {product.thickness && <span className=\"thickness-measure\">cm</span>}\r\n                            </DisplayGroupDtails>\r\n                            <DisplayGroupDtails>\r\n                                <DisplayDetail class=\"finish\" value={product.finish} label={<Translation id=\"finish\" defaultMessage=\"Finish\" />} />\r\n                            </DisplayGroupDtails>\r\n\r\n                            <DisplayGroupDtails>\r\n                                <div className=\"product_detail\">\r\n                                    <div className=\"text\">\r\n                                        <span className=\"bold-text\">\r\n                                            <Translation id=\"MAL\" defaultMessage=\"MAL\" />\r\n                                        </span>\r\n                                        :&nbsp;\r\n                                        {product.zaddon === 'MAL' ? <Translation id=\"yes\" defaultMessage=\"Yes\" /> : <Translation id=\"no\" defaultMessage=\"No\" />}\r\n                                    </div>\r\n                                </div>\r\n                            </DisplayGroupDtails>\r\n\r\n                            <DisplayNaturalStoneOrigin product={product} />\r\n                        </div>\r\n                        <DisplayStock\r\n                            value={stock}\r\n                            measure={quantity}\r\n                            surface={this.getUnitBy()}\r\n                            product={this.props.product}\r\n                            hideSurface={product.fromMall}\r\n                            watchingOutlet={this.props.outlet}\r\n                            canViewThresholdMax={canViewThresholdMax}\r\n                        />\r\n                    </React.Fragment>\r\n                )}\r\n                {product.fromMall ? (\r\n                    <React.Fragment>\r\n                        {this.props.minimumOrder > 0 ? (\r\n                            <DisplayGroupDtails>\r\n                                <DisplayDetail class=\"finish minimum\" value={this.props.minimumOrder} label={<Translation id=\"minimun_order\" defaultMessage=\"Minimun Order\" />} />\r\n                            </DisplayGroupDtails>\r\n                        ) : null}\r\n\r\n                        {this.props.showLots() && !this.props.mallPromotionSection && (\r\n                            <div className=\"box-buttons-lots\">\r\n                                {product.lotViewAvailable === undefined || product.lotViewAvailable ? (\r\n                                    <div className=\"buttons-lots\">\r\n                                        <LocalizedLink\r\n                                            routeId=\"ROUTE_LOTS\"\r\n                                            params={{ id: product.productId, outlet: product.outlet ? 'outlet' : '' }}\r\n                                            onClick={() => {\r\n                                                product.extra = extras\r\n                                                if (this.props.minimumOrder > 1) product.minimumOrder = this.props.minimumOrder\r\n                                                else product.minimumOrder = null\r\n                                                this.props.setLastSelectedProduct(product)\r\n                                            }}\r\n                                        >\r\n                                            <div className=\"lots\">\r\n                                                <Translation id=\"view_lots\" defaultMessage=\"View lots\" /> ({product.realStock})\r\n                                            </div>\r\n                                            {product.fromMall && (\r\n                                                <div>\r\n                                                    <i class=\"fas fa-external-link-alt\"></i>\r\n                                                </div>\r\n                                            )}\r\n                                        </LocalizedLink>\r\n                                    </div>\r\n                                ) : (\r\n                                    <div className=\"buttons-lots\">\r\n                                        <React.Fragment>\r\n                                            <Translation id=\"lots\" defaultMessage=\"Lots\" /> ({product.realStock})\r\n                                        </React.Fragment>\r\n                                    </div>\r\n                                )}\r\n                            </div>\r\n                        )}\r\n                        <DisplayGroupDtails>\r\n                            {product && userType !== 'ADMIN' ? (\r\n                                <DisplayPricePhase2 product={product} />\r\n                            ) : (\r\n                                <span className=\"price-not-available\">\r\n                                    <Translation id=\"price_not_available\" defaultMessage=\"Price not available\" />\r\n                                </span>\r\n                            )}\r\n                        </DisplayGroupDtails>\r\n                    </React.Fragment>\r\n                ) : (\r\n                    <DisplayGroupDtails>\r\n                        <DisplayPrice product={product} outlet={watchingOutlet} />\r\n                    </DisplayGroupDtails>\r\n                )}\r\n\r\n                {/***** SECCIÓN MALL EN LA HOME *****/}\r\n                {this.props.mallPromotionSection && (\r\n                    <React.Fragment>\r\n                        <div className=\"promotion-progress-bar\">\r\n                            {product.realStock > 0 ? (\r\n                                <span\r\n                                    style={{\r\n                                        width: `${(product.stock_mall / product.stock) * 100}%`,\r\n                                        backgroundColor: `rgb(54, 165, 150)`\r\n                                    }}\r\n                                ></span>\r\n                            ) : (\r\n                                <span\r\n                                    style={{\r\n                                        width: '100%',\r\n                                        backgroundColor: 'red'\r\n                                    }}\r\n                                ></span>\r\n                            )}\r\n                        </div>\r\n\r\n                        <DisplayGroupDtails>\r\n                            <DisplayStock value={stock} measure={quantity} surface={this.getUnitBy()} product={product} hideSurface={true} />\r\n                        </DisplayGroupDtails>\r\n                    </React.Fragment>\r\n                )}\r\n                {/***** SECCIÓN MALL EN LA HOME *****/}\r\n            </DisplayProductInfo>\r\n        )\r\n    }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n    return {\r\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\r\n        replaceDotWithComma: (element, locale) => getReplaceDotWithComma(element, locale, state),\r\n        naturalStoneViewingPermissions: getNaturalStoneViewingPermissions(state)\r\n    }\r\n}\r\n\r\nexport default connect(mapStateToProps, null)(DetailsDefaultV2)\r\n","import React from 'react'\nimport DetailsIkea from '../DetailsIkea'\nimport DetailsMktools from '../DetailsMktools'\nimport DetailsDefaultV2 from \"../DetailsDefaultV2\";\n\nexport const ProductDetails = (props) => {\n\n    const getTypeRectangleResult = () => {\n        let type = 'default'\n        if (props.isMkToolsCenter) type = 'mktool'\n        else if (props.isIkeaCenter) type = 'ikea'\n        return type\n    }\n\n    const getDetails = () => {\n        switch (getTypeRectangleResult()) {\n            case 'mktool':\n                return <DetailsMktools {...props} product={props.product} />\n            case 'ikea':\n                return <DetailsIkea {...props} product={props.product} />\n            default:\n                return <DetailsDefaultV2\n                    {...props}\n                    product={props.product}\n                    mallPromotionSection={props.mallPromotionSection}\n                    showImg={props.showImg}\n                />\n        }\n    }\n\n    return getDetails()\n}\n","import React from \"react\";\nimport {productLogic} from \"./logic/ProductLogic\";\nimport {mallProductLogic} from \"./logic/MallProductLogic\";\nimport {BaseProductLogic} from \"./logic/BaseProductLogic\";\nimport ProductIndicators from \"./ProductIndicators\";\nimport MallProductIndicators from \"./MallProductIndicators\";\nimport {ProductDetails} from \"./ProductDetails\";\n\nexport const CatalogProductContext = {\n    logicComponent : (props) => productLogic(props, BaseProductLogic),\n    indicatorsComponent: ProductIndicators,\n    detailsComponent: ProductDetails\n}\n\nexport const MallProductContext = {\n    logicComponent : (props) => mallProductLogic(props, BaseProductLogic),\n    indicatorsComponent: MallProductIndicators,\n    detailsComponent: ProductDetails\n}\n\nconst ProductContext = React.createContext(CatalogProductContext)\n\nexport default ProductContext","import React, { useContext } from 'react'\nimport RectangleResultV2UI from './RectangleResultV2UI'\nimport ProductContext from './contexts/ProductContext'\n\nconst RectangleResult = props => {\n    const context = useContext(ProductContext)\n    const logic = context.logicComponent(props)\n    const Indicators = context.indicatorsComponent\n    const Details = context.detailsComponent\n\n    const productProps = {\n        ...logic,\n        indicators: <Indicators {...logic} />,\n        details: <Details {...logic} />\n    }\n\n    return <RectangleResultV2UI {...productProps} />\n}\n\nexport default RectangleResult\n","import {\n    getPromotionLateralBanner,\n    getPromotionLink,\n    getBannerTitle,\n    getBannerDescription,\n    getPromotionData\n} from './../../../store/promotions/reducers';\nimport {\n    hasPromotionLandingActivated,\n    getPromoBanners,\n    hasPromoActivated,\n    canBuy,\n    canOnlyViewOutlet,\n    getIsIkeaCenter,\n    getIsMkToolsCenter,\n    getIsMktoolsShippingCenterSelected,\n    getIsMktoolsUsaCenter,\n    getNeedsSegmentation,\n    getPricesGroup,\n    getSalesOrg,\n    getSelectedCenter,\n    getShippingMethod,\n    isEuropeOrIberia,\n    productIsInPromo,\n    isLatinaVitoria\n} from './../../../store/centers/reducers';\nimport { connect } from 'react-redux'\nimport { addCartLine, addCartLineWithouthSeg } from '../../../store/cart/actions'\nimport {\n    getImpersonatedBy,\n    getIsAdmin,\n    getPriceListAtSelectedCenter,\n    getTypeClient,\n    getTestAB,\n    getUserPriceList,\n    getUserType,\n    getNaturalStoneViewingPermissions\n} from '../../../store/login/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { defineMessages, injectIntl } from 'react-intl'\nimport { getProfileConfiguration } from '../../../store/profile-configuration/reducers'\nimport { getIsAdding, getQtyProductsCart } from '../../../store/cart/reducers'\nimport {canViewThresholdMax, getHideAllBannerCatalog, getLanguage} from '../../../store/ui/reducers'\nimport { canViewPricesPhase3, discountsByProductId, isExclusiveHomeDepot, getShowLotsInPortfolio } from '../../../store/products/reducers'\nimport { isProductIdInPromotion } from '../../../store/promotions/reducers'\nimport { setLastSelectedProduct} from \"../../../store/selected-objects/actions\";\nimport moment from 'moment/moment'\nimport RectangleResult from \"./RectangleResult\";\n\ndefineMessages({\n    NEW_PRICE: {\n        id: 'new_price',\n        description: 'new_price',\n        defaultMessage: 'New Price'\n    }\n})\nconst mapStateToProps = (state, ownProps) => {\n    const source = ownProps.result !== undefined ? ownProps.result._source : ownProps.product\n    const indexOfList = ownProps.index !== undefined ? ownProps.index : null\n    const list = ownProps.list !== undefined ? ownProps.list : null\n    return {\n        shippingMethod: getShippingMethod(state),\n        outlet: ownProps.outlet || ownProps.match.params.outlet || (ownProps.product && ownProps.product.isStockOutlet),\n        isAdmin: getIsAdmin(state),\n        canBuy: canBuy(state),\n        canOnlyViewOutlet: canOnlyViewOutlet(state),\n        userPreferences: getProfileConfiguration(state),\n        userType: getUserType(state),\n        typeClient: getTypeClient(state),\n        testAB: getTestAB(state),\n        productIsInPromo: productIsInPromo(state, source),\n        isMkToolsCenter: getIsMkToolsCenter(state),\n        isMkToolsUsaCenter: getIsMktoolsUsaCenter(state),\n        impersonatedBy: getImpersonatedBy(state),\n        qtyProductCart: getQtyProductsCart(state),\n        centerId: getSelectedCenter(state),\n        needsSegmentation: getNeedsSegmentation(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isMktoolsShippingCenterSelected: getIsMktoolsShippingCenterSelected(state),\n        priceGroup: getPricesGroup(state),\n        userPriceList: getUserPriceList(state),\n        priceList: getPriceListAtSelectedCenter(state),\n        canViewThresholdMax: canViewThresholdMax(state),\n        canViewPricesPhase3: canViewPricesPhase3(state),\n        indexOfList: indexOfList,\n        isAdding: getIsAdding(state),\n        productDiscounts: discountsByProductId(state, source.productId, ownProps.match.params.outlet),\n        supplierCenterSalesOrg: getSalesOrg(state),\n        isExclusiveHomeDepot: isExclusiveHomeDepot(state, source.colorId),\n        isProductIdInPromo: isProductIdInPromotion(state, source.productId),\n        isHideAllBannerCatalog: getHideAllBannerCatalog(state),\n        showBannerPromo: new moment() < moment('2022-11-18 18:00') && isEuropeOrIberia(state),\n        hasPromoActivated: hasPromoActivated(state),\n        hasPromotionLandingActivated: hasPromotionLandingActivated(state),\n        promotionLateralBanner: getPromotionLateralBanner(state),\n        promotionLink: getPromotionLink(state),\n        promoBanners: getPromoBanners(state),\n        promotionBannerTitle: getBannerTitle(state),\n        promotionBannerDescription: getBannerDescription(state),\n        isLatinaVitoria: isLatinaVitoria(state),\n        showLotsInPortfolio: (product, isOutlet, isCosentinoBrazil) => getShowLotsInPortfolio(state, product, isOutlet, isCosentinoBrazil),\n        naturalStoneViewingPermissions: getNaturalStoneViewingPermissions(state),\n        promotionData: getPromotionData(state),\n        locale: getLanguage(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        addCartLine: (productId, qty, extra, callbackCenter, dektonGripRequested, supplierCenterId) => {\n            dispatch(addCartLine(productId, qty, extra, callbackCenter, dektonGripRequested, supplierCenterId))\n        },\n        addCartLineWithouthSeg: (productId, qty, extra) => {\n            dispatch(addCartLineWithouthSeg(productId, qty, extra))\n        },\n        clickDetail: (product, list, index) => {\n            dispatch(setLastSelectedProduct(product))\n            dispatch({ type: 'PRODUCT_CLICK', product, list, index })\n        },\n        setLastSelectedProduct: (product) => {\n            dispatch(setLastSelectedProduct(product))\n        }\n    }\n}\n\nconst RectangleResultContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(RectangleResult)\n    )\n)\n\nexport default RectangleResultContainer\n","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport Button from '../../global/Button'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport AddFavourite from '../../global/AddFavourite'\nimport DisplayDetail from '../rectangleResult/displays/DisplayDetail'\nimport DisplayBrand from '../rectangleResult/displays/DisplayBrand'\n\nexport default class SampleResult extends React.Component {\n    constructor(props) {\n        super(props)\n        const source = props.result !== undefined ? props.result._source : props.product\n\n        this.product = source\n    }\n    render() {\n        if (this.product.productId === '223277') return null\n        return (\n            <div className=\"sample-result\" data-cy=\"catalog__product_sample_result\" type={this.product.type}>\n                {this.props.cart &&\n                    this.props.cart.map(line => {\n                        if (line.productId === this.product.productId && line.extra && (line.extra.type === 'custom_sample' || line.extra.type === 'brochures'))\n                            return <span className=\"badge badge-pill badge-secondary\"><span>{line.qty}</span></span>\n                        else return null\n                    })}\n                <div className=\"product-image-container\">\n                    <div className=\"product-image\" style={{ backgroundImage: 'url(\"' + this.props.getImageBackground(this.product) + '\")' }} />\n                    <div className=\"product-color-name\">\n                        <ProductDisplayName product={this.product} />\n                        {this.product.subtypeId === 'BROCHURES' ? <DisplayDetail value={'Brochure'} /> : <DisplayDetail value={this.product.finish} />}\n                        <DisplayBrand brand={this.product.brand} />\n                    </div>\n                </div>\n                <AddFavourite productId={this.product.productId} />\n\n                {this.props.canBuyCatalog && (\n                    <div className=\"product-actions\">\n                        <div className=\"bt-row\">\n                            <Button\n                                icon=\"shopping-cart\"\n                                size=\"small\"\n                                customClass=\"bt-add-cart\"\n                                onClick={() => {\n                                    if (this.product.subtypeId === 'CUSTOMER SAMPLES') this.props.addCartLine(this.product.productId, 6, { type: 'custom_sample' })\n                                    else if (this.product.subtypeId === 'BROCHURES') this.props.addCartLine(this.product.productId, 50, { type: 'brochures' })\n                                }}\n                            >\n                                <Translation id=\"add_to_cart\" defaultMessage=\"Add to cart\" />\n                            </Button>\n                        </div>\n                    </div>\n                )}\n            </div>\n        )\n    }\n}\n","import { connect } from 'react-redux'\nimport { addCartLineWithouthSeg } from '../../../store/cart/actions'\nimport SampleResult from './SampleResult'\nimport { getShippingMethod, canOnlyViewOutlet, productIsInPromo, canBuyCatalog } from '../../../store/centers/reducers'\nimport { getIsAdmin, getUserType } from '../../../store/login/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport { getProfileConfiguration } from '../../../store/profile-configuration/reducers'\nimport { getLines } from '../../../store/cart/reducers'\nimport { getImageBackground } from '../../../store/products/actions'\n\nconst mapStateToProps = (state, ownProps) => {\n    const source = ownProps.result !== undefined ? ownProps.result._source : ownProps.product\n\n    return {\n        shippingMethod: getShippingMethod(state),\n        isAdmin: getIsAdmin(state),\n        canBuyCatalog: canBuyCatalog(state),\n        canOnlyViewOutlet: canOnlyViewOutlet(state),\n        userPreferences: getProfileConfiguration(state),\n        userType: getUserType(state),\n        productIsInPromo: productIsInPromo(state, source),\n        cart: getLines(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        addCartLine: (productId, qty, extra) => {\n            dispatch(addCartLineWithouthSeg(productId, qty, extra))\n        },\n        getImageBackground: product => dispatch(getImageBackground(product))\n    }\n}\n\nconst SampleResultContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(SampleResult)\n    )\n)\n\nexport default SampleResultContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nconst initState = {\n    showHelp: false\n}\nclass MoreInfo extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = initState\n    }\n    componentDidMount() {\n        if (this.props.showHelp !== undefined) this.setState({ showHelp: this.props.showHelp })\n        if (this.props.static) this.setState({ showHelp: true })\n    }\n    render() {\n        return (\n            <div>\n                <div className={`catalog_info info ${!this.state.showHelp ? 'catalog_info--hidden' : ''}`}>\n                    {!this.props.static && (\n                        <button\n                            onClick={() => this.setState({ showHelp: !this.state.showHelp })}\n                            className=\"btn btn-cerrar btn_close_lowes_need_help\"\n                            data-role=\"market-selector-switcher\"\n                        />\n                    )}\n                    {this.props.children}\n                </div>\n                {!this.props.static && (\n                    <BtnNeedHelp\n                        showHelp={this.state.showHelp}\n                        moreInfoLowes={this.props.moreInfoLowes}\n                        changeLog={this.props.changeLog}\n                        btnText={this.props.btnText ? this.props.intl.formatMessage({ id: this.props.btnText }) : this.props.btnText}\n                        onClick={() => {\n                            this.setState({ showHelp: !this.state.showHelp })\n                        }}\n                    />\n                )}\n            </div>\n        )\n    }\n}\n\nconst BtnNeedHelp = ({ showHelp, moreInfoLowes, moreInfoOutlet, changeLog, onClick, btnText }) => {\n    if (btnText)\n        return (\n            <div className=\"button_info button_info--left\" onClick={onClick}>\n                <i className=\"fal fa-info-circle\" style={{ margin: '5px' }} />\n                <span>{btnText}</span>\n            </div>\n        )\n    if (moreInfoLowes)\n        return !showHelp ? (\n            <div className=\"button_info\" onClick={onClick}>\n                <i className=\"fal fa-info-circle\" style={{ margin: '5px' }} />\n                <Translation id=\"need_help\" defaultMessage=\"Need help?\" />\n            </div>\n        ) : (\n            <div className=\"button_info\">\n                <a href=\"mailto:lowescustomercare@cosentino.com\">\n                    <i className=\"fal fa-info-circle\" style={{ margin: '5px' }} />\n                    <Translation id=\"need_more_help\" defaultMessage=\"Need more help?\" />\n                </a>\n            </div>\n        )\n    else if (moreInfoOutlet)\n        return !showHelp ? (\n            <div className=\"button_info\" onClick={onClick}>\n                <i className=\"fal fa-info-circle\" style={{ margin: '5px' }} />\n                <Translation id=\"need_help\" defaultMessage=\"Need help?\" />\n            </div>\n        ) : (\n            <div className=\"button_info\">\n                <a href=\"mailto:ProductOutlet@cosentino.com; cmartinez@cosentino.com\">\n                    <i className=\"fal fa-info-circle\" style={{ margin: '5px' }} />\n                    <Translation id=\"need_more_help\" defaultMessage=\"Need more help?\" />\n                </a>\n            </div>\n        )\n    else if (changeLog)\n        return (\n            <div className=\"button_info\" style={{ left: 'initial' }} onClick={onClick}>\n                <i class=\"fal fa-info-circle\" style={{ margin: '5px' }} />\n                <Translation id=\"plus_info\" defaultMessage=\"+ Info\" />\n            </div>\n        )\n    else\n        return (\n            <div className=\"button_info\" onClick={onClick}>\n                <i className=\"fal fa-info-circle\" style={{ margin: '5px' }} />\n                <Translation id=\"need_help\" defaultMessage=\"Need help?\" />\n            </div>\n        )\n}\n\nexport default injectIntl(MoreInfo)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport Modal from './Modal'\nimport Button from './Button'\nimport outlet1 from '../../assets/img/outlet1.png'\nimport outlet2 from '../../assets/img/outlet2.png'\n\nconst OutletModal = props => {\n    return (\n        <Modal\n            footer={\n                <Button inverted size=\"medium\" onClick={props.onClose} datacy=\"outlet_modal__close\">\n                    <Translation id=\"accept\" defaultMessage=\"Accept\" />\n                </Button>\n            }\n            size=\"large\"\n            title={<Translation id=\"outlet_hq\" defaultMessage=\"You are in Outlet HQ!\" />}\n            onClose={props.onClose}\n        >\n            <div className=\"container\" data-cy=\"outlet_modal__container\">\n                <div className=\"col-12\">\n                    <p>\n                        <Translation\n                            id=\"please_dont_forget_indicate_outlet\"\n                            defaultMessage=\"Please do not forget to indicate, in case of formal order of slabs,  OX / OB / OV  as follows below. In case an order is not make correctly, this can lead to problems or delays.\"\n                        />\n                    </p>\n                    <p>\n                        <Translation id=\"more_info_at\" defaultMessage=\"More info at\" />\n                        {props.locale === 'es' ? (\n                            <a href=\"https://news.cosentino.com/news/cosentino-outlet_es/\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                {' '}\n                                https://news.cosentino.com/news/cosentino-outlet_es/\n                            </a>\n                        ) : (\n                            <a href=\"https://news.cosentino.com/news/cosentino-outlet_en/\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                {' '}\n                                https://news.cosentino.com/news/cosentino-outlet_en/\n                            </a>\n                        )}\n                    </p>\n                    <p>\n                        <Translation id=\"contact_product_department_if_needed\" defaultMessage=\"Please do not hesitate to contact to Product Department if needed\" />\n                    </p>\n                    <p>\n                        <Translation id=\"1_customer_sales\" defaultMessage=\"1.-CUSTOMER SALES\" />\n                        <br />\n                        <a href={outlet1} target=\"_blank\" rel=\"noopener noreferrer\">\n                            <img alt=\"\" src={outlet1} className=\"img-fluid\" style={{ width: '300px' }} />\n                        </a>\n                    </p>\n                    <p>\n                        <Translation id=\"2_creation_of_transfer_order_to_hq\" defaultMessage=\"2.-CREATION OF TRANSFER ORDER TO HQ\" />\n                        <br />\n                        <a href={outlet2} target=\"_blank\" rel=\"noopener noreferrer\">\n                            <img alt=\"\" src={outlet2} className=\"img-fluid\" style={{ width: '300px' }} />\n                        </a>\n                    </p>\n                </div>\n            </div>\n        </Modal>\n    )\n}\n\nexport default OutletModal\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nexport const LowesInfoText = () => {\n    return (\n        <p>\n            <h4>\n                <Translation id=\"silestone_customer_ample_rogram_re_ordering\" defaultMessage=\"Silestone Customer Sample Program Re-Ordering\" />\n            </h4>\n            <ul>\n                <li>\n                    <Translation\n                        id=\"to_start_your_order_click_on_the_color_that_you_need_to_re_order\"\n                        defaultMessage=\"To start your order, click on the color that you need to re-order\"\n                    />\n                </li>\n                <li>\n                    <Translation\n                        id=\"samples_are_in_sets_of_6_By_clicking_on_the_needed_color_you_are_ordering_6_individual_samples_of_that_color\"\n                        defaultMessage=\"Samples are in sets of 6. By clicking on the needed color you are ordering 6 individual samples of that color\"\n                    />\n                </li>\n                <li>\n                    <Translation\n                        id=\"you_can_order_no_more_than_1_set_of_6_of_any_color_at_one_time\"\n                        defaultMessage=\"You can order no more than 1 set of 6 of any color at one time\"\n                    />\n                </li>\n                <li>\n                    <Translation\n                        id=\"each_store_is_capped_at_30_samples_per_month_and_will_not_be_able_to_re_order_sample_until_the_following_month_if_you_have_reached_the_cap\"\n                        defaultMessage=\"Each store is capped at 30 samples per month and will not be able to re-order sample until the following month if you have reached the cap\"\n                    />\n                </li>\n                <li>\n                    <Translation\n                        id=\"all_orders_will_be_delivered_within_2_4_weeks_of_order_and_sent_to_the_person_who_placed_the_order\"\n                        defaultMessage=\"All orders will be delivered within 2-4 weeks of order and sent to the person who placed the order\"\n                    />\n                </li>\n                <li>\n                    <Translation id=\"shipment_sent_to_the_assigned_store_only\" defaultMessage=\"Shipment sent to the assigned store only\" />\n                </li>\n                <li>\n                    <Translation id=\"all_silestone_customer_samples_are_4x2\" defaultMessage=\"All Silestone customer samples are 4 inches x 2 inches\" />\n                </li>\n            </ul>\n        </p>\n    )\n}\n","import React from 'react'\n\nconst SimpleModal = props => {\n    const { children, onClose, size, customClass, showCloseButton = true } = props\n\n    let dialogClasses = ''\n\n    if (size === 'small') {\n        dialogClasses += ' modal-sm'\n    } else if (size === 'large') {\n        dialogClasses += ' modal-lg'\n    } else if (size === 'xl') {\n        dialogClasses += ' modal-xl'\n    }\n    if (customClass) {\n        dialogClasses += ' ' + customClass\n    }\n\n    return (\n        <div>\n            <div className=\"full-overlay\" onClick={onClose}>\n                <div className=\"modal fade show\" tabIndex=\"-1\" role=\"dialog\" data-backdrop=\"static\" style={{ display: 'block' }}>\n                    <div className={'modal-dialog' + dialogClasses} data-cy=\"global__modal_dialog\" role=\"document\" onClick={e => e.stopPropagation()}>\n                        <div className=\"modal-content\">\n                            {showCloseButton && (\n                                <button\n                                    type=\"button\"\n                                    className=\"close\"\n                                    aria-label=\"Close\"\n                                    onClick={onClose}\n                                    style={{ cursor: 'pointer', position: 'absolute', fontSize: '1.5em', top: 0, right: 0, width: '32px', height: '32px', zIndex: '100' }}\n                                >\n                                    <i className=\"fal fa-times\" />\n                                </button>\n                            )}\n                            <div className=\"modal-body\">{children}</div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default SimpleModal\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { Player } from 'video-react'\nimport video from '../../assets/video/outlet-offpacksmart.mp4'\nimport videoEs from '../../assets/video/outlet-digital-esp.mp4'\nimport videoEn from '../../assets/video/outlet-digital-en.mp4'\nimport SimpleModal from '../global/SimpleModal'\n\nconst initState = { showModalVideoOffpack: false, showModalVideoOutletDigital: false }\nclass OutletInfoText extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { ...initState, maxWidhtVideo: window.innerHeight * 1.3375 - 150 }\n        window.addEventListener('resize', this.calculateMaxWidthVideo)\n    }\n    calculateMaxWidthVideo = () => {\n        this.setState({ maxWidhtVideo: window.innerHeight * 1.3375 - 150 })\n    }\n    render() {\n        return (\n            <p>\n                <h4>\n                    <Translation id=\"you_can_consult_the_information_in_the_following_links\" defaultMessage=\"You can consult the information in the following links!\" />\n                </h4>\n                <ul>\n                    <li>\n                        <Translation id=\"any_doubts__find_what_you_need_in_offpack_smart\" defaultMessage=\"Any doubts? Find what you need in Offpack Smart\" />.{' '}\n                        <span className=\"text_link\" onClick={() => this.setState({ showModalVideoOffpack: true })}>\n                            <Translation id=\"discover_it_\" defaultMessage=\"Discover it!\" />\n                        </span>\n                    </li>\n                    <li>\n                        <Translation id=\"do_you_want_to_check_how_the_platform_works_\" defaultMessage=\"Do you want to check how the platform works?\" />.{' '}\n                        <span className=\"text_link\" onClick={() => this.setState({ showModalVideoOutletDigital: true })}>\n                            <Translation id=\"click_here_\" defaultMessage=\"Click here!\" />\n                        </span>\n                    </li>\n                </ul>\n                {this.state.showModalVideoOffpack && (\n                    <SimpleModal title={'Video'} onClose={() => this.setState({ showModalVideoOffpack: false })} size=\"large\" footer={null}>\n                        <div style={{ margin: '0 auto', width: '100%', maxWidth: this.state.maxWidhtVideo + 'px' }}>\n                            <Player>\n                                <source src={video} />\n                            </Player>\n                        </div>\n                    </SimpleModal>\n                )}\n                {this.state.showModalVideoOutletDigital && (\n                    <SimpleModal title={'Video'} onClose={() => this.setState({ showModalVideoOutletDigital: false })} size=\"large\" footer={null}>\n                        <div style={{ margin: '0 auto', width: '100%', maxWidth: this.state.maxWidhtVideo + 'px' }}>\n                            <Player>\n                                <source src={this.props.language === 'es' ? videoEs : videoEn} />\n                            </Player>\n                        </div>\n                    </SimpleModal>\n                )}\n            </p>\n        )\n    }\n}\nexport default OutletInfoText\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\nimport { getIsIkeaCenter } from '../../store/centers/reducers'\nimport Modal from './Modal'\nimport Button from './Button'\nimport Translation from './Translation'\n\nconst mapStateToProps = state => {\n    return { userPreferences: getProfileConfiguration(state), isIkeaCenter: getIsIkeaCenter(state) }\n}\nclass FormatCSVModal extends React.Component {\n    state = { selectedCSVFormat: 'xls' }\n    render() {\n        return (\n            <Modal\n                customClass=\"showOverflow\"\n                title={<Translation id=\"please_specify_format\" defaultMessage=\"Please specify format\" />}\n                footer={\n                    <Button\n                        onClick={() => {\n                            this.props.onClose(this.state.selectedCSVFormat)\n                        }}\n                        inverted\n                        size=\"medium\"\n                    >\n                        <Translation id=\"download\" defaultMessage=\"download\" />\n                    </Button>\n                }\n                onClose={() => this.props.onClose()}\n            >\n                <div className=\"container\">\n                    <Translation id=\"please_specify_the_desired_format\" defaultMessage=\"Please specify the desired format\" />\n\n                    <div className=\"col-12\" style={{ marginLeft: '10px', marginTop: '10px' }}>\n                        <span>\n                            <form>\n                                <div class=\"form-check\">\n                                    <input\n                                        class=\"form-check-input\"\n                                        type=\"radio\"\n                                        value=\"xls\"\n                                        checked={this.state.selectedCSVFormat === 'xls'}\n                                        onChange={e =>\n                                            this.setState({\n                                                selectedCSVFormat: e.target.value\n                                            })\n                                        }\n                                    />\n                                    <label class=\"form-check-label\">\n                                        <Translation id=\"csv_optimized_for_excel\" defaultMessage=\"csv optimized for excel\"></Translation>\n                                    </label>\n                                </div>\n                                <div class=\"form-check\">\n                                    <input\n                                        class=\"form-check-input\"\n                                        type=\"radio\"\n                                        value=\"csv\"\n                                        checked={this.state.selectedCSVFormat === 'csv'}\n                                        onChange={e =>\n                                            this.setState({\n                                                selectedCSVFormat: e.target.value\n                                            })\n                                        }\n                                    />\n                                    <label class=\"form-check-label\">csv</label>\n                                </div>\n                            </form>\n                        </span>\n                    </div>\n                </div>\n            </Modal>\n        )\n    }\n}\nexport default connect(\n    mapStateToProps,\n    null\n)(FormatCSVModal)\n","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 16,\n    height: 16,\n    viewBox: \"0 0 16 16\",\n    fill: \"none\"\n  }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    id: \"Icon/Decorative/Truck\"\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    id: \"Vector\",\n    d: \"M1.125 2C0.503906 2 0 2.50391 0 3.125V10.625C0 11.2461 0.503906 11.75 1.125 11.75H1.5C1.5 12.9922 2.50781 14 3.75 14C4.99219 14 6 12.9922 6 11.75H9C9 12.9922 10.0078 14 11.25 14C12.4922 14 13.5 12.9922 13.5 11.75H14.25C14.6648 11.75 15 11.4148 15 11C15 10.5852 14.6648 10.25 14.25 10.25V8.75V8V7.56172C14.25 7.16328 14.093 6.78125 13.8117 6.5L12 4.68828C11.7188 4.40703 11.3367 4.25 10.9383 4.25H9.75V3.125C9.75 2.50391 9.24609 2 8.625 2H1.125ZM9.75 5.75H10.9383L12.75 7.56172V8H9.75V5.75ZM4.875 11.75C4.875 12.3711 4.37109 12.875 3.75 12.875C3.12891 12.875 2.625 12.3711 2.625 11.75C2.625 11.1289 3.12891 10.625 3.75 10.625C4.37109 10.625 4.875 11.1289 4.875 11.75ZM11.25 12.875C10.6289 12.875 10.125 12.3711 10.125 11.75C10.125 11.1289 10.6289 10.625 11.25 10.625C11.8711 10.625 12.375 11.1289 12.375 11.75C12.375 12.3711 11.8711 12.875 11.25 12.875Z\",\n    fill: \"black\"\n  }))));\n};\n\nexport default __webpack_public_path__ + \"static/media/icon-catalog-shipping-truck.401d1838.svg\";\nexport { SvgComponent as ReactComponent };","var _path, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 16,\n    height: 16,\n    viewBox: \"0 0 16 16\",\n    fill: \"none\"\n  }, props), /*#__PURE__*/React.createElement(\"mask\", {\n    id: \"mask0_234_1943\",\n    style: {\n      \"maskType\": \"luminance\"\n    },\n    maskUnits: \"userSpaceOnUse\",\n    x: 2,\n    y: 2,\n    width: 12,\n    height: 12\n  }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M12.6667 4H11.3333V3.33333C11.3333 2.59695 10.7364 2 10 2H3.33333C2.59695 2 2 2.59695 2 3.33333V10.6667C2 11.403 2.59695 12 3.33333 12H4.66667V12.6667C4.66667 13.403 5.26362 14 6 14H12.6667C13.403 14 14 13.403 14 12.6667V5.33333C14 4.59695 13.403 4 12.6667 4ZM3.33333 10.6667V3.33333H10V4H6C5.26362 4 4.66667 4.59695 4.66667 5.33333V10.6667H3.33333ZM6 12.6667H12.6667V5.33333H6V12.6667Z\",\n    fill: \"white\"\n  }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    mask: \"url(#mask0_234_1943)\"\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    width: 16,\n    height: 16,\n    fill: \"black\"\n  }))));\n};\n\nexport default __webpack_public_path__ + \"static/media/icon-catalog-slabs.903e69ec.svg\";\nexport { SvgComponent as ReactComponent };","var _path, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 30,\n    height: 24,\n    viewBox: \"0 0 30 24\",\n    fill: \"none\"\n  }, props), /*#__PURE__*/React.createElement(\"mask\", {\n    id: \"mask0_234_700\",\n    style: {\n      \"maskType\": \"alpha\"\n    },\n    maskUnits: \"userSpaceOnUse\",\n    x: 7,\n    y: 4,\n    width: 16,\n    height: 16\n  }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M8.75 18H21.25C21.9404 18 22.5 18.4477 22.5 19C22.5 19.5523 21.9404 20 21.25 20H8.75C8.05964 20 7.5 19.5523 7.5 19C7.5 18.4477 8.05964 18 8.75 18ZM14.116 15.7071L10.5805 12.8787C10.0923 12.4882 10.0923 11.855 10.5805 11.4645C11.0686 11.0739 11.8601 11.0739 12.3482 11.4645L13.7499 12.5858V5C13.7499 4.44772 14.3095 4 14.9999 4C15.6902 4 16.2499 4.44772 16.2499 5V12.5858L17.6515 11.4645C18.1397 11.0739 18.9312 11.0739 19.4193 11.4645C19.9075 11.855 19.9075 12.4882 19.4193 12.8787L15.8838 15.7071C15.6576 15.8881 15.3451 16 14.9999 16C14.6547 16 14.3422 15.8881 14.116 15.7071Z\",\n    fill: \"white\"\n  }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    mask: \"url(#mask0_234_700)\"\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    width: 30,\n    height: 24,\n    fill: \"#232323\"\n  }))));\n};\n\nexport default __webpack_public_path__ + \"static/media/icon-catalog-download.8278a99a.svg\";\nexport { SvgComponent as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 24,\n    height: 24,\n    viewBox: \"0 0 24 24\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M11.5 16.5H12.5V11H11.5V16.5ZM12 9.575C12.1667 9.575 12.3127 9.51667 12.438 9.4C12.5627 9.28333 12.625 9.13333 12.625 8.95C12.625 8.78333 12.5627 8.64167 12.438 8.525C12.3127 8.40833 12.1667 8.35 12 8.35C11.8333 8.35 11.6873 8.40833 11.562 8.525C11.4373 8.64167 11.375 8.78333 11.375 8.95C11.375 9.13333 11.4373 9.28333 11.562 9.4C11.6873 9.51667 11.8333 9.575 12 9.575ZM12 21C10.75 21 9.57933 20.7627 8.488 20.288C7.396 19.8127 6.446 19.1707 5.638 18.362C4.82933 17.554 4.18733 16.604 3.712 15.512C3.23733 14.4207 3 13.25 3 12C3 10.75 3.23733 9.579 3.712 8.487C4.18733 7.39567 4.82933 6.44567 5.638 5.637C6.446 4.829 7.396 4.18733 8.488 3.712C9.57933 3.23733 10.75 3 12 3C13.25 3 14.421 3.23733 15.513 3.712C16.6043 4.18733 17.5543 4.829 18.363 5.637C19.171 6.44567 19.8127 7.39567 20.288 8.487C20.7627 9.579 21 10.75 21 12C21 13.25 20.7627 14.4207 20.288 15.512C19.8127 16.604 19.171 17.554 18.363 18.362C17.5543 19.1707 16.6043 19.8127 15.513 20.288C14.421 20.7627 13.25 21 12 21ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\",\n    fill: \"#2280C3\"\n  })));\n};\n\nexport default __webpack_public_path__ + \"static/media/icon-catalog-info.d598133a.svg\";\nexport { SvgComponent as ReactComponent };","var _path, _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 18,\n    height: 18,\n    viewBox: \"0 0 18 18\",\n    fill: \"none\"\n  }, props), /*#__PURE__*/React.createElement(\"mask\", {\n    id: \"mask0_120_36667\",\n    style: {\n      \"maskType\": \"luminance\"\n    },\n    maskUnits: \"userSpaceOnUse\",\n    x: 1,\n    y: 1,\n    width: 16,\n    height: 15\n  }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M16.3051 12.3075L10.9083 2.4726C10.7272 2.18287 10.4826 1.93818 10.1928 1.7571C9.13907 1.0985 7.75093 1.41884 7.09233 2.4726L1.69552 12.3075C1.47202 12.6651 1.35352 13.0783 1.35352 13.5C1.35352 14.7426 2.36087 15.75 3.60352 15.75H14.3971C14.8188 15.75 15.232 15.6315 15.5896 15.408C16.6434 14.7494 16.9637 13.3613 16.3051 12.3075ZM9.63633 3.2676C9.57597 3.17102 9.49441 3.08946 9.39783 3.0291C9.04658 2.80956 8.58386 2.91634 8.36433 3.2676L2.96752 13.1025C2.89302 13.2217 2.85352 13.3594 2.85352 13.5C2.85352 13.9142 3.1893 14.25 3.60352 14.25H14.3971C14.5377 14.25 14.6754 14.2105 14.7946 14.136C15.1459 13.9165 15.2527 13.4538 15.0331 13.1025L9.63633 3.2676ZM8.25033 9C8.25033 9.41421 8.58612 9.75 9.00033 9.75C9.41454 9.75 9.75033 9.41421 9.75033 9V6C9.75033 5.58579 9.41454 5.25 9.00033 5.25C8.58612 5.25 8.25033 5.58579 8.25033 6V9ZM9.75033 12C9.75033 11.5858 9.41454 11.25 9.00033 11.25C8.58612 11.25 8.25033 11.5858 8.25033 12C8.25033 12.4142 8.58612 12.75 9.00033 12.75C9.41454 12.75 9.75033 12.4142 9.75033 12Z\",\n    fill: \"white\"\n  }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    mask: \"url(#mask0_120_36667)\"\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    width: 18,\n    height: 18,\n    fill: \"black\"\n  }))));\n};\n\nexport default __webpack_public_path__ + \"static/media/icon-catalog-warning.9c476ed0.svg\";\nexport { SvgComponent as ReactComponent };","export const TooltipStyles = {\n    padding: '24px 16px',\n    borderRadius: 0\n}\n\nexport const TooltipContentStyles = {\n    padding: 0\n}\n\nexport const OptionStyles = {\n    arrowColor: '#ffffff',\n    backgroundColor: '#20367A',\n    beaconSize: 36,\n    primaryColor: '#20367a',\n    overlayColor: 'rgba(0, 0, 0, 0.5)',\n    spotlightShadow: '0 0 15px rgba(0, 0, 0, 0.5)',\n    textColor: '#ffffff',\n    width: 600,\n    zIndex: 100,\n}\n\nexport const SpotlightSyles = {\n    borderRadius: 0\n}\n\nexport const ButtonNextStyles = {\n    color: '#232323;',\n    fontSize: '14px',\n    fontWeight: 500,\n    backgroundColor: '#ffffff',\n    borderRadius: 0\n}\n\nexport const ButtonBackStyles = {\n    color: '#fff',\n    fontSize: '14px',\n    fontWeight: 500\n}\n\nexport const TooltipFooterStyles = {\n    marginTop: '16px',\n    paddingTop: '16px',\n    borderTop: '1px solid #DDE4F6'\n}","import React from 'react'\nimport Joyride, { STATUS } from 'react-joyride'\nimport * as CustomStyles from '../styles/CustomStyles'\nimport { connect } from 'react-redux'\nimport { submitWalkthrough } from '../../../store/ui/actions'\nimport { getHasWalkthrough } from '../../../store/login/reducers'\nimport { fetchHasWalkthrough } from '../../../store/login/actions'\nimport Translation from '../../global/Translation'\nimport { ReactComponent as IconTruck } from '../../../assets/img/icons/icon-catalog-shipping-truck.svg'\nimport { ReactComponent as IconWarning } from '../../../assets/img/icons/icon-catalog-warning.svg'\nimport { getWalkthroughWatched } from '../../../store/ui/reducers'\n\nconst mapStateToProps = (state) => {\n    return {\n        hasWalkthrough: getHasWalkthrough(state, 'OUTLET_PN_FROM_OTHER_CENTERS'),\n        isWalkthroughWatched: getWalkthroughWatched(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onSubmitWalkthrough: (type, noShowMore) => dispatch(submitWalkthrough(type, noShowMore)),\n        refreshData: () => dispatch(fetchHasWalkthrough()),\n        onWatchedWalkthrough: () => dispatch({ type: 'WALTHROUGH_HAS_BEEN_WATCHED' })\n    }\n}\n\nclass OutletPnFromOtherCentersWalkthrough extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            type: 'OUTLET_PN_FROM_OTHER_CENTERS'\n        }\n    }\n\n    /**\n     *  Body content for step one\n     */\n    stepOneContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"walkthrough_buy_directly_from_cosentino_global_by_clicking_on_this_button\" defaultMessage=\"Buy directly from Cosentino Global by clicking on this button.\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span>\n                        <div className=\"walkthrough__tooltip__content__pn-outlet\">\n                            <div className=\"beggining\"><span><Translation id=\"walkthrough_keep_in_mind_that\" defaultMessage=\"Keep in mind that\" />:</span></div>\n                            <div className=\"walkthrough__tooltip__content__pn-outlet--body\">\n                                <div className=\"first-block\">\n                                    <div><IconTruck /></div>\n                                    <div><span><Translation id=\"walkthrough_these_products_are_in_our_cosentino_global_delivery_may_be_longer\" defaultMessage=\"These products are in our Cosentino Global Center. Delivery times may be longer than the delivery times of your usual Center.\" /></span></div>\n                                </div>\n                                <div className=\"second-block\">\n                                    <div><IconWarning /></div>\n                                    <div><span><Translation id=\"walkthrough_limitations_on_natural_stone_products\" defaultMessage=\"Limitations on Natural Stone products\" />:</span>\n                                        <ul>\n                                            <li><Translation id=\"the_total_width_of_all_the_natural_stone_slabs_you_buy_from_HQ\" defaultMessage=\"The TOTAL thickness of all natural stone slabs purchased from the Spanish center must be at least: 12 cm. Example: 4 slabs of 3 cm = 12 cm.\"/></li>\n                                        </ul>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * steps\n     */\n    steps = {\n        steps: [\n            {\n                content: this.stepOneContent(),\n                locale: {\n                    close: <span aria-label=\"close\" onClick={() => this.handleNoShowMoreOnClick()} style={{ fontSize: '14px' }}><Translation id=\"do_not_show_again\" defaultMessage=\"Do not show again\" /></span>\n                },\n                placement: 'auto',\n                disableBeacon: true,\n                target: '#pn_outlet_hq_button'\n            }\n        ]\n    }\n\n    /**\n     * Handle on click to submit the walkthrough data\n     */\n    handleNoShowMoreOnClick = () => {\n        return this.props.onSubmitWalkthrough(this.state.type, true).then(() => this.props.refreshData())\n    }\n\n    /**\n     * Callback function to manipulate the walkthrough logic\n     */\n    handleJoyrideCallback = data => {\n        const { status } = data\n\n        // If the walkthrough is finished (watched) let's update the global state by dispaching an action\n        if ([STATUS.FINISHED, STATUS.SKIPPED].includes(status)) {\n            this.props.onWatchedWalkthrough()\n        }\n    }\n\n    render() {\n        const { steps } = this.steps\n        const { hasWalkthrough, isWalkthroughWatched } = this.props\n\n        return hasWalkthrough && hasWalkthrough.shouldShow && !isWalkthroughWatched ? (\n            <React.Fragment>\n                <Joyride\n                    callback={this.handleJoyrideCallback}\n                    steps={steps}\n                    styles={{\n                        tooltip: CustomStyles.TooltipStyles,\n                        tooltipContent: CustomStyles.TooltipContentStyles,\n                        options: CustomStyles.OptionStyles,\n                        buttonBack: CustomStyles.ButtonBackStyles,\n                        tooltipFooter: CustomStyles.TooltipFooterStyles,\n                        spotlight: CustomStyles.SpotlightSyles\n                    }}\n                    disableScrolling\n                />\n            </React.Fragment>\n        ) : null\n    }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OutletPnFromOtherCentersWalkthrough)","import React from 'react'\nimport customProductIcon from '../../../assets/img/logos/custom-product-icon.svg'\n\nconst CustomProductIndicator = ({ customWidth = '48px', customHeight = 'auto' }) => {\n    // Dynamic styles based on props\n    const defaultStyles = {\n        container: {\n            display: 'inline-block',\n            width: customWidth,\n            height: customHeight,\n        },\n        img: {\n            width: '100%',\n            height: '100%',\n            objectFit: 'contain',\n        },\n    };\n\n    return (\n        <div style={defaultStyles.container}>\n            <img src={customProductIcon} alt=\"Custom\" style={defaultStyles.img} />\n        </div>\n    )\n}\n\nexport default CustomProductIndicator;\n","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport { NoHits, PageSizeSelector, Select, Pagination, SortingSelector } from 'searchkit'\nimport { injectIntl, defineMessages } from 'react-intl'\nimport FormatCSVModal from '../../global/FormatCSVModal'\nimport { ReactComponent as IconTruck } from '../../../assets/img/icons/icon-catalog-shipping-truck.svg'\nimport { ReactComponent as IconSlabs } from '../../../assets/img/icons/icon-catalog-slabs.svg'\nimport { ReactComponent as IconDownload } from '../../../assets/img/icons/icon-catalog-download.svg'\nimport { ReactComponent as IconInfo } from '../../../assets/img/icons/icon-catalog-info.svg'\nimport { ReactComponent as IconWarning } from '../../../assets/img/icons/icon-catalog-warning.svg'\nimport OutletPnFromOtherCentersWalkthrough from '../../walkthroughs/outlet-pn-from-other-centers/OutletPnFromOtherCentersWalkthrough'\nimport Modal from '../../global/Modal'\nimport DisplayNewIndicator from '../rectangleResult/displays/DisplayNewIndicator'\nimport DisplayUpcomingIndicator from '../rectangleResult/displays/DisplayUpcomingIndicator'\nimport DisplayOutletIndicator from '../rectangleResult/displays/DisplayOutletIndicator'\nimport DisplayDiscontinued from '../rectangleResult/displays/DisplayDiscontinued'\nimport DisplayTechnology from '../rectangleResult/displays/DisplayTechnology'\nimport NaturalStoneIndicator from '../../cart-line/indicators/NaturalStoneIndicator'\nimport DisplayBlackIndicator from '../rectangleResult/displays/DisplayBlackIndicator'\nimport axios from 'axios'\nimport CustomProductIndicator from '../../cart-line/indicators/CustomProductIndicator'\nimport DisplayHomeDepotIndicator from '../rectangleResult/displays/DisplayHomeDepotIndicator'\n\ndefineMessages({\n    displayName: {\n        id: 'displayName',\n        description: 'displayName',\n        defaultMessage: 'Product Name'\n    },\n    csv: {\n        id: 'csv',\n        description: 'csv',\n        defaultMessage: 'csv'\n    },\n    subtype_standard: {\n        id: 'subtype_standard',\n        description: 'subtype_standard',\n        defaultMessage: 'Standard'\n    },\n    subtype_raw: {\n        id: 'subtype_raw',\n        description: 'subtype_raw',\n        defaultMessage: 'Raw'\n    },\n    subtype_optimma: {\n        id: 'subtype_optimma',\n        description: 'subtype_optimma',\n        defaultMessage: 'Optimma'\n    },\n    subtype_jumbo: {\n        id: 'subtype_jumbo',\n        description: 'subtype_jumbo',\n        defaultMessage: 'Jumbo'\n    },\n    2.0: {\n        id: '2.0',\n        description: '2.0',\n        defaultMessage: '2.0'\n    },\n    1.2: {\n        id: '1.2',\n        description: '1.2',\n        defaultMessage: '1.2'\n    },\n    3.0: {\n        id: '3.0',\n        description: '3.0',\n        defaultMessage: '3.0'\n    },\n    '306X141': {\n        id: '306X141',\n        description: '306X141',\n        defaultMessage: '306X141'\n    },\n    thank_you_very_much_would_you_like_to_add_anything_else: {\n        id: 'thank_you_very_much_would_you_like_to_add_anything_else',\n        description: 'Thank you very much, would you like to add anything else?',\n        defaultMessage: 'Thank you very much, would you like to add anything else?'\n    },\n    no_results_found_for_: {\n        id: 'no_results_found_for_',\n        description: 'No results found for {query}',\n        defaultMessage: 'No results found for {query}'\n    },\n    collection: {\n        id: 'collection',\n        description: 'Collection',\n        defaultMessage: 'Collection'\n    },\n    tone: {\n        id: 'tone',\n        description: 'Tone',\n        defaultMessage: 'Tone'\n    }\n})\n\nclass ResultsV2 extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            showCSVFormat: false,\n            showLegendOfLabels: false,\n            isExitingLegendOfLabels: false\n        }\n\n        this.modalLegendOfLabelsRef = React.createRef()\n        this.handleModalLegendOfLabelsClick = this.handleModalLegendOfLabelsClick.bind(this)\n    }\n\n    resize = () => {\n        let pageScope = 4\n        if (window.innerWidth < 768) {\n            pageScope = 1\n        }\n        this.setState({ pageScope })\n    }\n\n    componentDidMount() {\n        window.addEventListener('resize', this.resize)\n        this.resize()\n        document.addEventListener('mousedown', this.handleModalLegendOfLabelsClick)\n    }\n\n    componentWillUnmount() {\n        window.removeEventListener('resize', this.resize)\n        document.removeEventListener('mousedown', this.handleModalLegendOfLabelsClick)\n    }\n\n    customSelect = () => {\n        this.setState({ classActiveBool: !this.state.classActiveBool })\n    }\n\n    closeFormatCSVModal(format) {\n        this.setState({ showCSVFormat: false })\n\n        if (!format) {\n            return\n        }\n\n        const { intl } = this.props\n        const fieldsSlabs = [\n            'brand',\n            'subtypeName',\n            'productId',\n            'colorName',\n            'finish',\n            'thickness',\n            'stock_m2',\n            'stock_ft2',\n            'stock',\n            'stock_outlet_m2',\n            'stock_outlet_ft2',\n            'stock_outlet',\n            'outletQuality',\n            'countryName',\n            'zaddon'\n        ]\n        const fieldsMktools = [\n            'productId',\n            'displayName',\n            'brand',\n            'webHeading',\n            'type',\n            'subtypeName',\n            'subtype1Name',\n            'subtype2Name',\n            'colorName',\n            'finishFamily',\n            'thickness',\n            'stock',\n\n            'stock_outlet',\n            'outletQuality'\n        ]\n        const fields = this.props.isMkToolsCenter ? fieldsMktools : fieldsSlabs\n        const header = fields.map(field => {\n            if (field === 'countryName') field = 'origin'\n            if (field === 'zaddon') field = 'MAL'\n            return intl.formatMessage({ id: `${field}` })\n        })\n\n        const FileDownload = require('js-file-download')\n        axios\n            .get(process.env.REACT_APP_API_HOST + `/catalog/csv?format=${format}&fields=${encodeURIComponent(fields.join(','))}&header=${encodeURIComponent(header.join(','))}`, {\n                headers: { Authorization: `Bearer ${this.props.token}` },\n                'Content-Type': 'text/plain',\n                responseType: 'blob'\n            })\n            .then(response => {\n                FileDownload(response.data, `products.${format}`)\n            })\n    }\n\n    handleModalLegendOfLabelsClick(event) {\n        // Verificar si el clic está fuera del modal\n        if (this.modalLegendOfLabelsRef.current && !this.modalLegendOfLabelsRef.current.contains(event.target)) {\n            this.handleCloseLegendOfLabels()\n        }\n    }\n\n    handleOpenLegendOfLabels() {\n        this.setState({ showLegendOfLabels: !this.state.showLegendOfLabels })\n    }\n\n    handleCloseLegendOfLabels() {\n        this.setState({ isExitingLegendOfLabels: true })\n\n        setTimeout(() => {\n            this.setState({ showLegendOfLabels: false, isExitingLegendOfLabels: false })\n        }, 300) // Debe coincidir con la duración de la animación en CSS\n    }\n\n    render() {\n        const sortingSelector = (\n            <SortingSelector\n                options={[\n                    {\n                        label: this.props.intl.formatMessage({\n                            id: 'stock_high_to_low'\n                        }),\n                        field: this.props.outlet ? 'stock_outlet' : 'stock',\n                        order: 'desc',\n                        defaultOption: !this.props.isIkeaCenter\n                    },\n                    {\n                        label: this.props.intl.formatMessage({\n                            id: 'stock_low_to_high'\n                        }),\n                        field: this.props.outlet ? 'stock_outlet' : 'stock',\n                        order: 'asc',\n                        defaultOption: false\n                    },\n                    {\n                        label: this.props.intl.formatMessage({\n                            id: 'newest_arrivals'\n                        }),\n                        field: 'creationDate',\n                        order: 'desc',\n                        defaultOption: this.props.isIkeaCenter\n                    },\n                    {\n                        label: this.props.intl.formatMessage({\n                            id: 'oldest_materials'\n                        }),\n                        field: 'creationDate',\n                        order: 'asc',\n                        defaultOption: false\n                    }\n                ]}\n            />\n        )\n\n        const slabLocation = ['tabla'].includes(this.props.currentLocation.section)\n        const outletLocation = ['outlet'].includes(this.props.currentLocation.section)\n\n        return (\n            <div className=\"results\">\n                <div className={`results__header__options ${slabLocation || outletLocation ? 'justify-content-between' : 'justify-content-end'}`}>\n                    {slabLocation && this.props.naturalStoneViewingPermissions.canViewBrazil && (\n                        <div id=\"pn_outlet_hq_button\" className=\"pn__switch__tabs\">\n                            <button\n                                className={`pn__switch__tabs--current-center ${!this.props.statePnHQ && !this.props.statePnBrazil ? 'active-current-center' : ''}`}\n                                onClick={() => {\n                                    this.props.setPnHQ(false)\n                                    this.props.setPnBrazil(false)\n                                }}\n                            >\n                                <IconSlabs />\n                                <span>{this.props.centerData && this.props.centerData.name}</span>\n                            </button>\n                            <button\n                                className={`pn__switch__tabs--pn ${this.props.statePnHQ && !this.props.statePnBrazil ? 'active-pn' : ''}`}\n                                onClick={() => {\n                                    this.props.setPnHQ(true)\n                                    this.props.setPnBrazil(false)\n                                }}\n                            >\n                                <IconTruck />\n                                <Translation id=\"natural_stone_hq\" defaultMessage=\"Natural stone Spain\" />\n                            </button>\n                            <button\n                                className={`pn__switch__tabs--pn ${this.props.statePnBrazil && !this.props.statePnHQ ? 'active-pn' : ''}`}\n                                onClick={() => {\n                                    this.props.setPnBrazil(true)\n                                    this.props.setPnHQ(false)\n                                }}\n                            >\n                                <IconTruck />\n                                <Translation id=\"natural_stone_brazil\" defaultMessage=\"Natural stone Brazil\" />\n                            </button>\n                        </div>\n                    )}\n\n                    {slabLocation && this.props.naturalStoneViewingPermissions.canViewHQ && !this.props.naturalStoneViewingPermissions.canViewBrazil && (\n                        <div id=\"pn_outlet_hq_button\" className=\"pn__switch__tabs\">\n                            <button\n                                className={`pn__switch__tabs--current-center ${this.props.statePnHQ ? '' : 'active-current-center'}`}\n                                onClick={() => {\n                                    this.props.setPnHQ(false)\n                                }}\n                            >\n                                <IconSlabs />\n                                <span>{this.props.centerData && this.props.centerData.name}</span>\n                            </button>\n                            <button\n                                className={`pn__switch__tabs--pn ${this.props.statePnHQ ? 'active-pn' : ''}`}\n                                onClick={() => {\n                                    this.props.setPnHQ(true)\n                                }}\n                            >\n                                <IconTruck />\n                                <Translation id=\"natural_stone_hq\" defaultMessage=\"Natural stone Spain\" />\n                            </button>\n                        </div>\n                    )}\n\n                    {outletLocation && this.props.naturalStoneViewingPermissions.canViewHQ && (\n                        <div id=\"pn_outlet_hq_button\" className=\"pn__switch__tabs\">\n                            <button className={`pn__switch__tabs--current-center ${this.props.statePnHQ ? '' : 'active-current-center'}`} onClick={() => this.props.setPnHQ(false)}>\n                                <IconSlabs />\n                                <span>{this.props.centerData && this.props.centerData.name}</span>\n                            </button>\n                            <button className={`pn__switch__tabs--pn ${this.props.statePnHQ ? 'active-pn' : ''}`} onClick={() => this.props.setPnHQ(true)}>\n                                <IconTruck />\n                                <Translation id=\"outlet_in_hq\" defaultMessage=\"Outlet Spain\" />\n                            </button>\n                        </div>\n                    )}\n\n                    <OutletPnFromOtherCentersWalkthrough key={this.props.skKey} />\n\n                    <div className=\"options__filters\">\n                        {!this.props.hideOptions && (\n                            <React.Fragment>\n                                <div className=\"options__filters--count\">\n                                    <span className=\"showing\">\n                                        <Translation id=\"showing\" defaultMessage=\"Showing\" />\n                                    </span>\n                                    &nbsp;\n                                    <span className=\"count-text\">{this.props.totalResult}</span>\n                                    <span>\n                                        &nbsp;\n                                        <Translation id=\"results\" defaultMessage=\"Results\" />\n                                    </span>\n                                </div>\n\n                                {this.props.token && !this.props.isLowesCenter && (\n                                    <div onClick={this.customSelect}>\n                                        <div className={this.state.classActiveBool ? 'select-excel-v2 open-excel-v2' : 'select-excel-v2'} gtm-label=\"ec_plp_descarga\">\n                                            <button className=\"options__filters--icon\">\n                                                <IconDownload />\n                                            </button>\n\n                                            <div className=\"custom-options-excel-v2\">\n                                                <button data-value=\"xls\" onClick={() => this.closeFormatCSVModal('xls')}>\n                                                    {this.props.intl.formatMessage({ id: 'excel' })}\n                                                </button>\n                                                <button data-value=\"csv\" onClick={() => this.closeFormatCSVModal('csv')}>\n                                                    {this.props.intl.formatMessage({ id: 'csv' })}\n                                                </button>\n                                            </div>\n                                        </div>\n                                    </div>\n                                )}\n\n                                {!this.props.isLowesCenter && !this.props.isIkeaCenter && (\n                                    <div className=\"catalog__sorting__selector\">\n                                        <div className=\"order-by\">\n                                            <span>\n                                                <Translation id=\"order_by\" defaultMessage=\"Order by\" />\n                                            </span>\n                                        </div>\n                                        <div className=\"order-input\" gtm-label=\"ec_plp_orden_listado\">\n                                            {sortingSelector}\n                                        </div>\n                                    </div>\n                                )}\n                                {!this.props.isLowesCenter && !this.props.isIkeaCenter && !this.props.isMkToolsCenter && (\n                                    <div>\n                                        <button onClick={() => this.handleOpenLegendOfLabels()} className=\"btn-view-labels-info\">\n                                            <Translation id=\"view_labels_info\" defaultMessage=\"View labels info\" />\n                                        </button>\n                                    </div>\n                                )}\n                            </React.Fragment>\n                        )}\n                    </div>\n                </div>\n\n                {this.props.naturalStoneViewingPermissions.canViewHQ && this.props.statePnHQ && (\n                    <div className=\"banner__pn__outlet\">\n                        <div>\n                            <IconInfo />\n                        </div>\n                        <div className=\"banner__pn__outlet--content\">\n                            <div>\n                                <span className=\"main-text\">\n                                    <Translation\n                                        id=\"you_are_viewing_exclusively_natural_stone_materials\"\n                                        defaultMessage=\"You are viewing exclusively natural stone materials from center Spain. Please note the following conditions to add them to your cart:\"\n                                    />\n                                </span>\n                            </div>\n                            <div className=\"content-row\">\n                                <div>\n                                    <IconTruck />\n                                </div>\n                                <div>\n                                    <span>\n                                        <Translation\n                                            id=\"delivery_times_may_be_longer_than_the_delivery\"\n                                            defaultMessage=\"Delivery times may be longer than the delivery times of your usual Center.\"\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                            <div className=\"content-row\">\n                                <div>\n                                    <IconWarning />\n                                </div>\n                                <div>\n                                    <span>\n                                        <Translation\n                                            id=\"the_total_width_of_all_the_natural_stone_slabs_you_buy_from_HQ\"\n                                            defaultMessage=\"The TOTAL thickness of all natural stone slabs purchased from the Spanish center must be at least: 12 cm. Example: 4 slabs of 3 cm = 12 cm.\"\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                )}\n\n                {this.props.naturalStoneViewingPermissions.canViewBrazil && this.props.statePnBrazil && (\n                    <div className=\"banner__pn__outlet\">\n                        <div>\n                            <IconInfo />\n                        </div>\n                        <div className=\"banner__pn__outlet--content\">\n                            <div>\n                                <span className=\"main-text\">\n                                    <Translation\n                                        id=\"you_are_viewing_exclusively_natural_stone_materials_brazil\"\n                                        defaultMessage=\"You are viewing exclusively natural stone materials from Brazil. Please note the following conditions to add them to your cart:\"\n                                    />\n                                </span>\n                            </div>\n                            <div className=\"content-row\">\n                                <div>\n                                    <IconTruck />\n                                </div>\n                                <div>\n                                    <span>\n                                        <Translation\n                                            id=\"delivery_times_may_be_longer_than_the_delivery\"\n                                            defaultMessage=\"Delivery times may be longer than the delivery times of your usual Center.\"\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                            <div className=\"content-row\">\n                                <div>\n                                    <IconWarning />\n                                </div>\n                                <div>\n                                    <span>\n                                        <Translation id=\"the_purchase_is_only_allowed_per_bundle\" defaultMessage=\"The purchase is only allowed per bundle.\" />\n                                    </span>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                )}\n\n                <div className={`results-list text-center text-sm-left ${this.props.isLowesCenter ? 'lowes-list' : ''}`}>\n                    {this.props.hits}\n                    <NoHits\n                        translations={{\n                            'NoHits.NoResultsFound': this.props.intl.formatMessage({ id: 'no_results_found_for_' }),\n                            'NoHits.SearchWithoutFilters': this.props.intl.formatMessage({ id: 'search_for__without_filters' })\n                        }}\n                    />\n                </div>\n                <div\n                    style={{\n                        display: 'flex',\n                        columnGap: '24px',\n                        justifyContent: 'center',\n                        alignItems: 'baseline'\n                    }}\n                >\n                    {!this.props.hidePagination && (\n                        <div className=\"results-pagination\" data-cy=\"catalog__pagination_catalog\" onClick={() => window.scrollTo(0, 160)}>\n                            <Pagination showNumbers={true} pageScope={this.state.pageScope} />\n                        </div>\n                    )}\n                    <div>{!this.props.hideOptions && <PageSizeSelector className=\"sk-select-v2\" options={[24, 50, 100, 500]} listComponent={Select} />}</div>\n                </div>\n\n                {this.state.showCSVFormat && <FormatCSVModal onClose={format => this.closeFormatCSVModal(format)} token={() => this.props.token}></FormatCSVModal>}\n\n                {this.state.showLegendOfLabels && (\n                    <Modal\n                        title={<Translation id=\"legend_of_labels\" defaultMessage=\"Legend of labels\" />}\n                        onClose={() => this.handleCloseLegendOfLabels()}\n                        showFooter={false}\n                        customClass={`modal-legend-of-labels ${this.state.isExitingLegendOfLabels ? 'exit' : 'enter'}`}\n                        ref={this.modalLegendOfLabelsRef}\n                    >\n                        {/* Technology */}\n                        <div className=\"legend__card\">\n                            <h5 className=\"legend__card--title\">\n                                <Translation id=\"technology\" defaultMessage=\"Technology\" />:\n                            </h5>\n                            <div className=\"legend__card--content\">\n                                <div>\n                                    <DisplayTechnology subBrand={'xm'} desktopWidth={'104px'} desktopHeight={'34px'} withBorder={true} />\n                                    <p><Translation id=\"silestone_xm_is_our_designer_mineral_surface_with_a_maximum_content\" defaultMessage=\"Silestone®XM is our designer mineral surface with a maximum content of 10% crystalline silica.\" /></p>\n                                </div>\n                                <div>\n                                    <DisplayTechnology technology={'hybriq'} desktopWidth={'96px'} desktopHeight={'34px'} withBorder={true} />\n                                    <p><Translation id=\"all_products_with_the_hybriq_label_have_a_maximum\" defaultMessage=\"All products with the HYBRIQ® label have a maximum crystalline silica content of 40%.\" /></p>\n                                </div>\n                                <div>\n                                    <DisplayTechnology technology={'ukiyo'} desktopWidth={'82px'} desktopHeight={'34px'} withBorder={true} />\n                                    <p>\n                                        <Translation id=\"silestone_ukiyo_offers_full_continuity_of_veining_throughout_its_thickness_with_vertical_grooving\" defaultMessage=\"Silestone UKIYO offers full continuity of veining throughout its thickness, with vertical grooving that exposes color integration and material depth for advanced design solutions.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <DisplayTechnology technology={'optimma'} desktopWidth={'98px'} desktopHeight={'34px'} withBorder={true} />\n                                    <p>\n                                        <Translation id=\"optimma_2600_x_1000_the_most_versatile_format_for_interior_cladding_in_dekton\" defaultMessage=\"Optimma 2600 X 1000 mm, the most versatile format for interior cladding in Dekton®.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <DisplayTechnology technology={'grip+'} desktopWidth={'96px'} desktopHeight={'34px'} withBorder={true} />\n                                    <p>\n                                        <Translation id=\"dekton_grip_plus_is_the_anti_slip_treatment_for_those_areas_that_by_regulation_require_a_superior_grip\" defaultMessage=\"Dekton® Grip+ is the anti-slip treatment for those areas that by regulation require a superior grip, and is not recommended for areas where it is not necessary.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <DisplayTechnology technology={'nboost'} desktopWidth={'94px'} desktopHeight={'34px'} withBorder={true} />\n                                    <p>\n                                        <Translation id=\"silestone_n_noost_is_an_advanced_silestone_technological_process_that_further_enhances_the_excellent_technical_and_aesthetic_performance_of_the_worktop\" defaultMessage=\"Silestone® N-Boost is an advanced Silestone® technological process that further enhances the excellent technical and aesthetic performance of the worktop.\" />\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n\n                        {/* Discontinued */}\n                        <div className=\"legend__card\">\n                            <h5 className=\"legend__card--title\">\n                                <Translation id=\"discontinued\" defaultMessage=\"Discontinued\" />:\n                            </h5>\n                            <div className=\"legend__card--content\">\n                                <div>\n                                    <DisplayDiscontinued discontinued={'LD'} displayInLine={true} />\n                                    <p>\n                                        <Translation id=\"this_material_has_been_discontinued_and_will_no_longer_be_produced_the_product_will_remain_available_for_purchase_while_supplies_last\" defaultMessage=\"This material has been discontinued and will no longer be produced. The product will remain available for purchase while supplies last.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <DisplayDiscontinued discontinued={'DF'} displayInLine={true} />\n                                    <p>\n                                        <Translation id=\"this_material_is_discontinued_due_to_reformulation_so_it_will_no_longer_be_produced\" defaultMessage=\"This material is discontinued due to reformulation, so it will no longer be produced. It will be available while supplies last and you will be able to find it in another format.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <DisplayDiscontinued discontinued={'DD'} displayInLine={true} />\n                                    <p>\n                                        <Translation id=\"this_material_is_discontinued_by_format_so_it_will_no_longer_be_produced\" defaultMessage=\"This material is discontinued by format, so it will no longer be produced. It will be available while stocks last and you will be able to find it in another format.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <DisplayDiscontinued discontinued={'DA'} displayInLine={true} />\n                                    <p>\n                                        <Translation id=\"this_material_is_discontinued_by_finish_so_it_will_no_longer_be_produced\" defaultMessage=\"This material is discontinued by finish, so it will no longer be produced. It will be available while stocks last and you will be able to find it with another finish.\" />\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n\n                        {/* Outlet */}\n                        <div className=\"legend__card\">\n                        <h5 className=\"legend__card--title\">\n                                <Translation id=\"outlet\" defaultMessage=\"Outlet\" />:\n                            </h5>\n                            <div className=\"legend__card--content\">\n                                <div>\n                                    <DisplayOutletIndicator outletQuality={'X'} displayInLine={true} />\n                                    <p>\n                                        <Translation id=\"discontinued_material_with_the_highest_discount_applied\" defaultMessage=\"Discontinued material with the highest discount applied. Availability limited to current stock.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <DisplayOutletIndicator outletQuality={'O'} displayInLine={true} />\n                                    <p>\n                                        <Translation id=\"discontinued_material_with_intermediate_discount_applied_availability_limited_to_current_stock\" defaultMessage=\"Discontinued material with intermediate discount applied. Availability limited to current stock.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <DisplayOutletIndicator outletQuality={'V'} displayInLine={true} />\n                                    <p>\n                                        <Translation id=\"discontinued_material_with_discount_applied_availability_limited_to_current_stock\" defaultMessage=\"Discontinued material with discount applied. Availability limited to current stock.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <NaturalStoneIndicator idMessage={'outlet_in_hq'} defaultMessage=\"Outlet Spain\" />\n                                    <p><Translation id=\"this_product_is_available_at_our_spain_center\" defaultMessage=\"This product is available at our Spain Center.\" /></p>\n                                </div>\n                            </div>\n                        </div>\n\n                        {/* Price */}\n                        <div className=\"legend__card\">\n                            <h5 className=\"legend__card--title\">\n                                <Translation id=\"price\" defaultMessage=\"Price\" />:\n                            </h5>\n                            <div className=\"legend__card--content\">\n                                <div>\n                                    <DisplayBlackIndicator value={'-10%'} />\n                                    <p>\n                                        <Translation id=\"discount_applied_to_the_final_price_of_the_product\" defaultMessage=\"Discount applied to the final price of the product.\" />\n                                    </p>\n                                </div>\n                                <div>\n                                    <DisplayBlackIndicator value={this.props.intl.formatMessage({ id: 'new_price' })} />\n                                    <p><Translation id=\"displays_the_exclusive_reduced_price_for_this_product\" defaultMessage=\"Displays the exclusive reduced price for this product.\" /></p>\n                                </div>\n                            </div>\n                        </div>\n\n                        {/* Novedades */}\n                        <div className=\"legend__card\">\n                            <h5 className=\"legend__card--title\">\n                                <Translation id=\"NEWS\" defaultMessage=\"News\" />\n                            </h5>\n                            <div className=\"legend__card--content\">\n                                <div>\n                                    <DisplayUpcomingIndicator />\n                                    <p>\n                                        <Translation id=\"this_product_will_be_available_within_15_days\" defaultMessage=\"This product will be available within 15 days. You can add it to your cart and checkout, the product will be shipped when available.\" />\n                                    </p>\n                                </div>\n                                <div>   \n                                    <DisplayNewIndicator />\n                                    <p>\n                                        <Translation id=\"recently_launched_belonging_to_our_latest_collection\" defaultMessage=\"Recently launched, belonging to our latest collection.\" />\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n\n                        {/* Natural stone */}\n                        <div className=\"legend__card\">\n                            <h5 className=\"legend__card--title\">\n                                <Translation id=\"natural_stone\" defaultMessage=\"Natural Stone\" />:\n                            </h5>\n                            <div className=\"legend__card--content\" style={{ gridTemplateColumns: 'repeat(1, 1fr)' }}>\n                                <div>\n                                    <div style={{ display: 'flex', alignItems: 'center', gap: '8px', flexWrap: 'wrap' }}>\n                                        <NaturalStoneIndicator idMessage={'natural_stone_hq'} defaultMessage=\"Natural stone Spain\" inSmallBox={true} />\n                                        <NaturalStoneIndicator idMessage={'natural_stone_brazil'} defaultMessage=\"Natural stone Brazil\" inSmallBox={true} />\n                                    </div>\n                                    <p>\n                                        <Translation id=\"natural_stone_material_that_is_available_from_the_central_warehouse_in_spain_or_brazil\" defaultMessage=\"Natural stone material that is available from the central warehouse in Spain or Brazil.\" />\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n\n                        {/* Others */}\n                        <div className=\"legend__card\">\n                            <h5 className=\"legend__card--title\">\n                                <Translation id=\"OTHERS\" defaultMessage=\"Others\" />:\n                            </h5>\n                            <div className=\"legend__card--content\">\n                                {this.props.isUsaOrCanada && (\n                                    <div>\n                                        <DisplayHomeDepotIndicator />\n                                        <p>\n                                            <Translation id=\"this_product_is_only_available_for_certain_purchases_and_or_customers_with_a_pre_established_relationship_with_home_depot\" defaultMessage=\"This product is only available for certain purchases and/or customers with a pre-established relationship with Home Depot.\" />\n                                        </p>\n                                    </div>\n                                )}\n                                <div>\n                                    <CustomProductIndicator customWidth={\"54px\"}/>\n                                    <p>\n                                        <Translation id=\"tailor_made_product_subject_to_special_conditions\" defaultMessage=\"Tailor-made product. Subject to special conditions.\" />\n                                    </p>\n                                </div>\n                            </div>\n                        </div>\n                    </Modal>\n                )}\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(ResultsV2)\n","import React from 'react'\r\nimport backgroundImage from '../../../assets/img/banner-dekton/dekton_894x470.png'\r\nimport dekton from '../../../assets/img/banner-dekton/dekton.png'\r\nimport { injectIntl } from 'react-intl'\r\nimport { connect } from 'react-redux'\r\nimport { getLanguage } from '../../../store/ui/reducers'\r\nimport Translation from '../../global/Translation'\r\n\r\nconst mapStateToProps = (state, { match }) => {\r\n    return {\r\n        language: getLanguage(state)\r\n    }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n    return {}\r\n}\r\nclass BannerDekton extends React.Component {\r\n    render() {\r\n\r\n\r\n        return (\r\n            <React.Fragment>\r\n                {\r\n                    !this.props.squared &&\r\n                    <div className=\"banner_dekton\">\r\n                        <div className='logo-dekton'>\r\n                            <img src={dekton} alt=\"logo-dekton\" />\r\n                        </div>\r\n\r\n                        <div className='dekton-texts'>\r\n                            <h1><Translation id=\"dekton_title\" defaultMessage=\"New White Colours formulations\" /></h1>\r\n                            <h2><Translation id=\"dekton_desc\" defaultMessage=\"We have improved the Dekton white colours to have better performance in the processing.\" /></h2>\r\n                            <div>\r\n                                <a target={\"_blank\"} href='https://cosentino.app.box.com/s/ff2j2a3bru3rqtc3112y2zks8oum7x1p?utm_campaign=New%20features_CosentinoWe&utm_medium=email&utm_source=diggest&utm_content=Ads'><Translation id=\"see_colors\" defaultMessage=\"See Colours\" /><i className=\"fal fa-chevron-right\" /> </a>\r\n                                <a target={\"_blank\"} href='https://cosentino.app.box.com/s/u0slbxoymyu16ykgic4i4eraxk1lrnhn?utm_campaign=New%20features_CosentinoWe&utm_medium=email&utm_source=diggest&utm_content=Ads'><Translation id=\"watch_video\" defaultMessage=\"Watch Video\" /><i className=\"fal fa-chevron-right\" /> </a>\r\n                            </div>\r\n                        </div>\r\n                        <div className='dekton-img' style={{ backgroundImage: `url(${backgroundImage})` }}>\r\n                            <span><Translation id=\"new_formulation\" defaultMessage=\"New Formulation\" /></span>\r\n                        </div>\r\n                    </div>\r\n\r\n                }\r\n                {\r\n                    this.props.squared &&\r\n                    <div className=\"banner_dekton-responsive\" style={this.props.style ? this.props.style : {}}>\r\n                        <div className='logo-dekton-responsive'>\r\n                            <img src={dekton} alt=\"logo-dekton\" />\r\n                            <span><Translation id=\"new_formulation\" defaultMessage=\"New Formulation\" /></span>\r\n                        </div>\r\n                        <div className='container-dekton-responsive' style={{\r\n                            background: `rgba(255,255,255,0.3) url(${backgroundImage})`\r\n                        }}>\r\n                        </div>\r\n                        <div className='x' style={this.props.style && this.props.style.width ? { width: this.props.style.width } : {}}>\r\n                            <h1><Translation id=\"dekton_title\" defaultMessage=\"New White Colours formulations\" /></h1>\r\n                            <h2><Translation id=\"dekton_desc\" defaultMessage=\"We have improved the Dekton white colours to have better performance in the processing.\" /></h2>\r\n                            <div>\r\n                                <a target={\"_blank\"} href='https://cosentino.app.box.com/s/ff2j2a3bru3rqtc3112y2zks8oum7x1p?utm_campaign=New%20features_CosentinoWe&utm_medium=email&utm_source=diggest&utm_content=Ads'><Translation id=\"see_colors\" defaultMessage=\"See Colours\" /><i className=\"fal fa-chevron-right\" /> </a>\r\n                                <a target={\"_blank\"} href='https://cosentino.app.box.com/s/u0slbxoymyu16ykgic4i4eraxk1lrnhn?utm_campaign=New%20features_CosentinoWe&utm_medium=email&utm_source=diggest&utm_content=Ads'><Translation id=\"watch_video\" defaultMessage=\"Watch Video\" /><i className=\"fal fa-chevron-right\" /> </a>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                }\r\n\r\n\r\n            </React.Fragment>\r\n        )\r\n    }\r\n}\r\n\r\nexport default injectIntl(\r\n    connect(\r\n        mapStateToProps,\r\n        mapDispatchToProps\r\n    )(BannerDekton)\r\n)\r\n","import React from 'react'\nimport imgit from '../../../assets/img/banners-rockmaster/IT/wide.jpg'\nimport imgja from '../../../assets/img/banners-rockmaster/EN/wide.jpg'\nimport imgde from '../../../assets/img/banners-rockmaster/DE/wide.jpg'\nimport imges from '../../../assets/img/banners-rockmaster/ES/wide.jpg'\nimport imghe from '../../../assets/img/banners-rockmaster/EN/wide.jpg'\nimport imgen from '../../../assets/img/banners-rockmaster/EN/wide.jpg'\nimport imgfr from '../../../assets/img/banners-rockmaster/FR/wide.jpg'\nimport imgtr from '../../../assets/img/banners-rockmaster/TR/wide.jpg'\nimport imgno from '../../../assets/img/banners-rockmaster/NO/wide.jpg'\nimport imgnl from '../../../assets/img/banners-rockmaster/EN/wide.jpg'\nimport imgfi from '../../../assets/img/banners-rockmaster/FI/wide.jpg'\nimport imgpt from '../../../assets/img/banners-rockmaster/PT/wide.jpg'\nimport imgitSquared from '../../../assets/img/banners-rockmaster/IT/squared.jpg'\nimport imgjaSquared from '../../../assets/img/banners-rockmaster/EN/squared.jpg'\nimport imgdeSquared from '../../../assets/img/banners-rockmaster/DE/squared.jpg'\nimport imgesSquared from '../../../assets/img/banners-rockmaster/ES/squared.jpg'\nimport imgheSquared from '../../../assets/img/banners-rockmaster/EN/squared.jpg'\nimport imgenSquared from '../../../assets/img/banners-rockmaster/EN/squared.jpg'\nimport imgfrSquared from '../../../assets/img/banners-rockmaster/FR/squared.jpg'\nimport imgtrSquared from '../../../assets/img/banners-rockmaster/TR/squared.jpg'\nimport imgnoSquared from '../../../assets/img/banners-rockmaster/NO/squared.jpg'\nimport imgnlSquared from '../../../assets/img/banners-rockmaster/EN/squared.jpg'\nimport imgfiSquared from '../../../assets/img/banners-rockmaster/FI/squared.jpg'\nimport imgptSquared from '../../../assets/img/banners-rockmaster/PT/squared.jpg'\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getLanguage } from '../../../store/ui/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        language: getLanguage(state)\n    }\n}\n\nclass BannerRockMaster extends React.Component {\n    render() {\n        const responsiveWidth = window.innerWidth <= 768\n\n        const images = {\n            it: responsiveWidth ? imgitSquared : imgit,\n            ja: responsiveWidth ? imgjaSquared : imgja,\n            de: responsiveWidth ? imgdeSquared : imgde,\n            es: responsiveWidth ? imgesSquared : imges,\n            he: responsiveWidth ? imgheSquared : imghe,\n            en: responsiveWidth ? imgenSquared : imgen,\n            fr: responsiveWidth ? imgfrSquared : imgfr,\n            sv: responsiveWidth ? imgenSquared : imgen,\n            tr: responsiveWidth ? imgtrSquared : imgtr,\n            no: responsiveWidth ? imgnoSquared : imgno,\n            da: responsiveWidth ? imgenSquared : imgen,\n            nl: responsiveWidth ? imgnlSquared : imgnl,\n            fi: responsiveWidth ? imgfiSquared : imgfi,\n            pl: responsiveWidth ? imgenSquared : imgen,\n            pt: responsiveWidth ? imgptSquared : imgpt,\n            'en-US': responsiveWidth ? imgenSquared : imgen,\n            'fr-CA': responsiveWidth ? imgfrSquared : imgfr,\n            'en-CA': responsiveWidth ? imgenSquared : imgen\n        }\n        const links = {\n            it: 'https://www.cosentino.com/it-it/rock-masters/',\n            ja: 'https://www.cosentino.com/ja-jp/rock-masters/',\n            de: 'https://www.cosentino.com/de/rock-masters/',\n            es: 'https://www.cosentino.com/es/rock-masters/',\n            he: 'https://www.cosentino.com/rock-masters/',\n            en: 'https://www.cosentino.com/en-gb/rock-masters/',\n            fr: 'https://www.cosentino.com/fr-fr/rock-masters/',\n            sv: 'https://www.cosentino.com/sv-se/rock-masters/',\n            tr: 'https://www.cosentino.com/tr-tr/rock-masters/',\n            no: 'https://www.cosentino.com/no-no/rock-masters/',\n            da: 'https://www.cosentino.com/rock-masters/',\n            nl: 'https://www.cosentino.com/nl-nl/rock-masters/',\n            fi: 'https://www.cosentino.com/fi-fi/rock-masters/',\n            pl: 'https://www.cosentino.com/rock-masters/',\n            pt: 'https://www.cosentino.com/pt-pt/rock-masters/',\n            'en-US': 'https://www.cosentino.com/usa/rock-masters/',\n            'fr-CA': 'https://www.cosentino.com/fr-ca/rock-masters/',\n            'en-CA': 'https://www.cosentino.com/en-ca/rock-masters/'\n        }\n        return (\n            <div className=\"mt-4\">\n                <a href={links[this.props.language]} target=\"_blank\" rel=\"noopener noreferrer\">\n                    <img style={{ maxWidth: '100%' }} src={images[this.props.language]} alt=\"Banner Rock Master\" />\n                </a>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(connect(mapStateToProps, null)(BannerRockMaster))\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport Translation from '../../global/Translation'\nimport { FormattedHTMLMessage } from 'react-intl'\nimport backgroundImage from '../../../assets/img/banner-silestone/banner-silestone-background.png'\nimport { isOnlyUsaSalesOrg } from '../../../store/centers/reducers'\nimport canadaFlayer from './Silestone-Flash-Promo-Flyer-Canada.pdf'\nimport usaFlayer from './Silestone-Flash-Promo-Flyer-USA.pdf'\n\n\nconst mapStateToProps = state => {\n    return {\n        isOnlyUsaSalesOrg: isOnlyUsaSalesOrg(state)\n    }\n}\n\nclass BannerSilestoneContainer extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.discount = '10%'\n    }\n\n    render() {\n        const { className, isCheckoutView, isOnlyUsaSalesOrg } = this.props\n\n        const footerDisclaimer = (\n            <span>\n                <FormattedHTMLMessage\n                    id=\"promotion_includes_all_silestone_colors\"\n                    defaultMessage=\"Promotion includes <b>all Silestone®</b> colors, thicknesses, and finishes. The possibilities are endless.\"\n                />\n            </span>\n        )\n\n        const headerContent = (\n            <div>\n                <h2>\n                    <Translation id=\"silestone_container_flash_promo\" defaultMessage=\"Silestone® Container Flash Promo\" />\n                </h2>\n                <h3>\n                    <Translation id=\"march_19_28_2025\" defaultMessage=\"March 19th - 28th 2025\" />\n                </h3>\n            </div>\n        )\n\n        const discountContent = (\n            <React.Fragment>\n                <div className=\"number-percent\">\n                    <span>{this.discount}</span>\n                </div>\n                <div className=\"text-percent\">\n                    <div>\n                        <span>\n                            <Translation id=\"additional_discount\" defaultMessage=\"additional discount\" />\n                        </span>\n                    </div>\n                    <div>\n                        <span>\n                            <Translation id=\"and_6_month_equal_payment_terms\" defaultMessage=\"and 6-month equal payment terms\" />\n                        </span>\n                    </div>\n                </div>\n            </React.Fragment>\n        )\n\n        const footerContent = (\n            <div className=\"d-flex justify-content-start flex-column\" style={{ gap: '8px' }}>\n                <div>\n                    <span>\n                        <Translation id=\"contact_your_local_cosentino_center_for_support\" defaultMessage=\"Contact your local Cosentino Center for support.\" />\n                    </span>\n                </div>\n                <div>\n                    <a href={isOnlyUsaSalesOrg ? usaFlayer : canadaFlayer} target=\"_blank\" rel=\"noopener noreferrer\" className=\"view-conditions-btn\">\n                        <button>\n                            <Translation id =\"view_conditions\" defaultMessage=\"View conditions\" />\n                        </button>\n                    </a>\n                </div>\n            </div>\n        )\n\n        return (\n            <React.Fragment>\n                {!isCheckoutView ? (\n                    <div\n                        className={`big__banner__silestone ${className}`}\n                        style={{\n                            backgroundImage: `url(${backgroundImage})`,\n                            backgroundRepeat: 'no-repeat',\n                            backgroundSize: 'cover',\n                            backgroundPosition: 'bottom'\n                        }}\n                    >\n                        <div className=\"big__banner__silestone--header\">\n                            <div className=\"left-side\">\n                                {headerContent}\n                                <div className=\"d-none d-md-block\">\n                                    <div className=\"left-side--footer\">{footerDisclaimer}</div>\n                                </div>\n                            </div>\n\n                            <div className=\"right-side\">\n                                <div className=\"right-side--content\">{discountContent}</div>\n                                <div className=\"d-block d-md-none\">\n                                    <div className=\"left-side--footer\">{footerDisclaimer}</div>\n                                </div>\n                                <div className=\"right-side--footer\">{footerContent}</div>\n                            </div>\n                        </div>\n                    </div>\n                ) : (\n                    <div\n                        className=\"small__banner__silestone\"\n                        style={{\n                            backgroundImage: `url(${backgroundImage})`,\n                            backgroundRepeat: 'no-repeat',\n                            backgroundSize: 'cover'\n                        }}\n                    >\n                        <div className=\"small__banner__silestone--title\">{headerContent}</div>\n                        <div className=\"small__banner__silestone--content\">{discountContent}</div>\n                        <div className=\"small__banner__silestone--footer\">{footerDisclaimer}</div>\n                        <div className=\"small__banner__silestone--discount\">{footerContent}</div>\n                    </div>\n                )}\n            </React.Fragment>\n        )\n    }\n}\n\nexport default connect(mapStateToProps, null)(BannerSilestoneContainer)\n","import React from 'react'\nimport rectangle from '../../../assets/img/banners-hybriq/hybriq_1140x200.png'\nimport squared from '../../../assets/img/banners-hybriq/hybriq_210x210.png'\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getLanguage } from '../../../store/ui/reducers'\n\nconst mapStateToProps = (state) => {\n    return {\n        language: getLanguage(state)\n    }\n}\n\nclass BannerHybriq extends React.Component {\n    render() {\n        const img = this.props.squared ? squared : rectangle\n        const links = {\n            it: 'https://www.cosentino.com/it-it/silestone/hybriq-technology/',\n            ja: 'https://www.cosentino.com/ja-jp/silestone/hybriq-technology/',\n            de: 'https://www.cosentino.com/de/silestone/hybriq-technology/',\n            es: 'https://www.cosentino.com/es/silestone/hybriq-technology/',\n            he: 'https://www.cosentino.com/he-il/silestone/hybriq-technology/',\n            en: 'https://www.cosentino.com/en-gb/silestone/hybriq-technology/',\n            fr: 'https://www.cosentino.com/fr-fr/silestone/hybriq-technology/',\n            sv: 'https://www.cosentino.com/sv-se/silestone/hybriq-technology/',\n            tr: 'https://www.cosentino.com/tr-tr/silestone/hybriq-technology/',\n            no: 'https://www.cosentino.com/no-no/silestone/hybriq-technology/',\n            da: 'https://www.cosentino.com/da-dk/silestone/hybriq-technology/',\n            nl: 'https://www.cosentino.com/nl-nl/silestone/hybriq-technology/',\n            fi: 'https://www.cosentino.com/fi-fi/silestone/hybriq-technology/',\n            pl: 'https://www.cosentino.com/pl-pl/silestone/hybriq-technology/',\n            pt: 'https://www.cosentino.com/pt-pt/silestone/hybriq-technology/',\n            'en-US': 'https://www.cosentino.com/usa/silestone/hybriq-technology/',\n            'fr-CA': 'https://www.cosentino.com/fr-ca/silestone/hybriq-technology/',\n            'en-CA': 'https://www.cosentino.com/en-ca/silestone/hybriq-technology/'\n        }\n        return (\n            <div className=\"banner_hybriq\" style={this.props.styles}>\n                <a href={links[this.props.language]} target=\"_blank\" rel=\"noopener noreferrer\">\n                    <img style={{ maxWidth: '100%' }} src={img} alt=\"banner-hybriq\" />\n                </a>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(BannerHybriq)\n)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { getLanguage } from '../../../store/ui/reducers'\n\n//Danes\nimport imgda from '../../../assets/img/banner-earthic/DA/wide.jpg'\nimport imgdaSquared from '../../../assets/img/banner-earthic/DA/squared.jpg'\n//Aleman\nimport imgde from '../../../assets/img/banner-earthic/DE/wide.jpg'\nimport imgdeSquared from '../../../assets/img/banner-earthic/DE/squared.jpg'\n//Ingles\nimport imgen from '../../../assets/img/banner-earthic/EN/wide.jpg'\nimport imgenSquared from '../../../assets/img/banner-earthic/EN/squared.jpg'\n//Español\nimport imges from '../../../assets/img/banner-earthic/ES/wide.jpg'\nimport imgesSquared from '../../../assets/img/banner-earthic/ES/squared.jpg'\n//Suomi\nimport imgfi from '../../../assets/img/banner-earthic/FI/wide.jpg'\nimport imgfiSquared from '../../../assets/img/banner-earthic/FI/squared.jpg'\n//Frances\nimport imgfr from '../../../assets/img/banner-earthic/FR/wide.jpg'\nimport imgfrSquared from '../../../assets/img/banner-earthic/FR/squared.jpg'\n//Hungria (Se usa el ingles)\nimport imghu from '../../../assets/img/banner-earthic/EN/wide.jpg'\nimport imghuSquared from '../../../assets/img/banner-earthic/EN/squared.jpg'\n//Italiano\nimport imgit from '../../../assets/img/banner-earthic/IT/wide.jpg'\nimport imgitSquared from '../../../assets/img/banner-earthic/IT/squared.jpg'\n//Japones\nimport imgja from '../../../assets/img/banner-earthic/JP/wide.jpg'\nimport imgjaSquared from '../../../assets/img/banner-earthic/JP/squared.jpg'\n//Neerlandes\nimport imgnl from '../../../assets/img/banner-earthic/NL/wide.jpg'\nimport imgnlSquared from '../../../assets/img/banner-earthic/NL/squared.jpg'\n//Noruego\nimport imgno from '../../../assets/img/banner-earthic/NO/wide.jpg'\nimport imgnoSquared from '../../../assets/img/banner-earthic/NO/squared.jpg'\n//Polaco (We use EN)\nimport imgpl from '../../../assets/img/banner-earthic/EN/wide.jpg'\nimport imgplSquared from '../../../assets/img/banner-earthic/EN/squared.jpg'\n//Portugues\nimport imgpt from '../../../assets/img/banner-earthic/PT/wide.jpg'\nimport imgptSquared from '../../../assets/img/banner-earthic/PT/squared.jpg'\n//Suecia\nimport imgsv from '../../../assets/img/banner-earthic/SE/wide.jpg'\nimport imgsvSquared from '../../../assets/img/banner-earthic/SE/squared.jpg'\n//Turquia\nimport imgtr from '../../../assets/img/banner-earthic/TR/wide.jpg'\nimport imgtrSquared from '../../../assets/img/banner-earthic/TR/squared.jpg'\n//Hebreo\nimport imghe from '../../../assets/img/banner-earthic/EN/wide.jpg'\nimport imgheSquared from '../../../assets/img/banner-earthic/EN/squared.jpg'\nimport { isAustralianCenter } from '../../../store/centers/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        language: getLanguage(state),\n        isAustralianCenter: isAustralianCenter(state)\n    }\n}\n\nclass BannerEarthic extends React.Component {\n    render() {\n        if (this.props.isAustralianCenter) return ''\n        const { language } = this.props\n        const responsiveWidth = window.innerWidth <= 768\n\n        const images = {\n            da: responsiveWidth ? imgdaSquared : imgda,\n            de: responsiveWidth ? imgdeSquared : imgde,\n            en: responsiveWidth ? imgenSquared : imgen,\n            es: responsiveWidth ? imgesSquared : imges,\n            fi: responsiveWidth ? imgfiSquared : imgfi,\n            fr: responsiveWidth ? imgfrSquared : imgfr,\n            hu: responsiveWidth ? imghuSquared : imghu,\n            it: responsiveWidth ? imgitSquared : imgit,\n            ja: responsiveWidth ? imgjaSquared : imgja,\n            nl: responsiveWidth ? imgnlSquared : imgnl,\n            no: responsiveWidth ? imgnoSquared : imgno,\n            pl: responsiveWidth ? imgplSquared : imgpl,\n            pt: responsiveWidth ? imgptSquared : imgpt,\n            sv: responsiveWidth ? imgsvSquared : imgsv,\n            tr: responsiveWidth ? imgtrSquared : imgtr,\n            he: responsiveWidth ? imgheSquared : imghe,\n            'en-US': responsiveWidth ? imgenSquared : imgen,\n            'fr-CA': responsiveWidth ? imgfrSquared : imgfr,\n            'en-CA': responsiveWidth ? imgenSquared : imgen\n        }\n\n        const links = {\n            da: 'https://www.cosentino.com/da-dk/silestone-xm/earthic/',\n            de: 'https://www.cosentino.com/de/silestone-xm/earthic/',\n            en: 'https://www.cosentino.com/en-gb/silestone-xm/earthic/',\n            es: 'https://www.cosentino.com/es/silestone-xm/earthic/',\n            fi: 'https://www.cosentino.com/fi-fi/silestone-xm/earthic/',\n            fr: 'https://www.cosentino.com/fr-fr/silestone-xm/earthic/',\n            hu: 'https://www.cosentino.com/silestone-xm/earthic/',\n            it: 'https://www.cosentino.com/it-it/silestone-xm/earthic/',\n            ja: 'https://www.cosentino.com/ja-jp/silestone-xm/earthic/',\n            nl: 'https://www.cosentino.com/nl-nl/silestone-xm/earthic/',\n            no: 'https://www.cosentino.com/no-no/silestone-xm/earthic/',\n            pl: 'https://www.cosentino.com/pl-pl/silestone-xm/earthic/',\n            pt: 'https://www.cosentino.com/pt-pt/silestone-xm/earthic/',\n            sv: 'https://www.cosentino.com/sv-se/silestone-xm/earthic/',\n            tr: 'https://www.cosentino.com/tr-tr/silestone-xm/earthic/',\n            he: 'https://www.cosentino.com/silestone-xm/earthic/',\n            'en-US': 'https://www.cosentino.com/silestone-xm/earthic/',\n            'fr-CA': 'https://www.cosentino.com/fr-ca/silestone-xm/earthic/',\n            'en-CA': 'https://www.cosentino.com/en-ca/silestone-xm/earthic/'\n        }\n\n        return (\n            <div className=\"mt-4\">\n                <a href={links[language]} target=\"_blank\" rel=\"noopener noreferrer\">\n                    <img style={{ maxWidth: '100%' }} src={images[language]} alt=\"Banner Earthic\" />\n                </a>\n            </div>\n        )\n    }\n}\n\nexport default connect(mapStateToProps, null)(BannerEarthic)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { getLanguage } from '../../../store/ui/reducers'\n\n//Danes\nimport imgda from '../../../assets/img/banner-suma/DA/wide.jpg'\nimport imgdaSquared from '../../../assets/img/banner-suma/DA/squared.jpg'\n//Aleman\nimport imgde from '../../../assets/img/banner-suma/DE/wide.jpg'\nimport imgdeSquared from '../../../assets/img/banner-suma/DE/squared.jpg'\n//Ingles\nimport imgen from '../../../assets/img/banner-suma/EN/wide.jpg'\nimport imgenSquared from '../../../assets/img/banner-suma/EN/squared.jpg'\n//Español\nimport imges from '../../../assets/img/banner-suma/ES/wide.jpg'\nimport imgesSquared from '../../../assets/img/banner-suma/ES/squared.jpg'\n//Suomi\nimport imgfi from '../../../assets/img/banner-suma/FI/wide.jpg'\nimport imgfiSquared from '../../../assets/img/banner-suma/FI/squared.jpg'\n//Frances\nimport imgfr from '../../../assets/img/banner-suma/FR/wide.jpg'\nimport imgfrSquared from '../../../assets/img/banner-suma/FR/squared.jpg'\n//Hungria (Se usa el ingles)\nimport imghu from '../../../assets/img/banner-suma/EN/wide.jpg'\nimport imghuSquared from '../../../assets/img/banner-suma/EN/squared.jpg'\n//Italiano\nimport imgit from '../../../assets/img/banner-suma/IT/wide.jpg'\nimport imgitSquared from '../../../assets/img/banner-suma/IT/squared.jpg'\n//Japones\nimport imgja from '../../../assets/img/banner-suma/JP/wide.jpg'\nimport imgjaSquared from '../../../assets/img/banner-suma/JP/squared.jpg'\n//Neerlandes\nimport imgnl from '../../../assets/img/banner-suma/NL/wide.jpg'\nimport imgnlSquared from '../../../assets/img/banner-suma/NL/squared.jpg'\n//Noruego\nimport imgno from '../../../assets/img/banner-suma/NO/wide.jpg'\nimport imgnoSquared from '../../../assets/img/banner-suma/NO/squared.jpg'\n//Polaco\nimport imgpl from '../../../assets/img/banner-suma/PO/wide.jpg'\nimport imgplSquared from '../../../assets/img/banner-suma/PO/squared.jpg'\n//Portugues\nimport imgpt from '../../../assets/img/banner-suma/PT/wide.jpg'\nimport imgptSquared from '../../../assets/img/banner-suma/PT/squared.jpg'\n//Suecia\nimport imgsv from '../../../assets/img/banner-suma/SE/wide.jpg'\nimport imgsvSquared from '../../../assets/img/banner-suma/SE/squared.jpg'\n//Turquia\nimport imgtr from '../../../assets/img/banner-suma/TR/wide.jpg'\nimport imgtrSquared from '../../../assets/img/banner-suma/TR/squared.jpg'\n//Hebreo\nimport imghe from '../../../assets/img/banner-suma/EN/wide.jpg'\nimport imgheSquared from '../../../assets/img/banner-suma/EN/squared.jpg'\nimport { isAustralianCenter } from '../../../store/centers/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        language: getLanguage(state),\n        isAustralianCenter: isAustralianCenter(state)\n    }\n}\n\nclass BannerSuma extends React.Component {\n    render() {\n        if (this.props.isAustralianCenter) return null\n        const { language } = this.props\n        const responsiveWidth = window.innerWidth <= 768\n\n        const images = {\n            da: responsiveWidth ? imgdaSquared : imgda,\n            de: responsiveWidth ? imgdeSquared : imgde,\n            en: responsiveWidth ? imgenSquared : imgen,\n            es: responsiveWidth ? imgesSquared : imges,\n            fi: responsiveWidth ? imgfiSquared : imgfi,\n            fr: responsiveWidth ? imgfrSquared : imgfr,\n            hu: responsiveWidth ? imghuSquared : imghu,\n            it: responsiveWidth ? imgitSquared : imgit,\n            ja: responsiveWidth ? imgjaSquared : imgja,\n            nl: responsiveWidth ? imgnlSquared : imgnl,\n            no: responsiveWidth ? imgnoSquared : imgno,\n            pl: responsiveWidth ? imgplSquared : imgpl,\n            pt: responsiveWidth ? imgptSquared : imgpt,\n            sv: responsiveWidth ? imgsvSquared : imgsv,\n            tr: responsiveWidth ? imgtrSquared : imgtr,\n            he: responsiveWidth ? imgheSquared : imghe,\n            'en-US': responsiveWidth ? imgenSquared : imgen,\n            'fr-CA': responsiveWidth ? imgfrSquared : imgfr,\n            'en-CA': responsiveWidth ? imgenSquared : imgen\n        }\n\n        const links = {\n            da: 'https://www.cosentino.com/da-dk/silestone/suma/',\n            de: 'https://www.cosentino.com/de/silestone/suma/',\n            en: 'https://www.cosentino.com/en-gb/silestone/suma/',\n            es: 'https://www.cosentino.com/es/silestone/suma/',\n            fi: 'https://www.cosentino.com/fi-fi/silestone/suma/',\n            fr: 'https://www.cosentino.com/fr-fr/silestone/suma/',\n            hu: 'https://www.cosentino.com/silestone/suma/',\n            it: 'https://www.cosentino.com/it-it/silestone/suma/',\n            ja: 'https://www.cosentino.com/ja-jp/silestone/suma/',\n            nl: 'https://www.cosentino.com/nl-nl/silestone/suma/',\n            no: 'https://www.cosentino.com/no-no/silestone/suma/',\n            pl: 'https://www.cosentino.com/pl-pl/silestone/suma/',\n            pt: 'https://www.cosentino.com/pt-pt/silestone/suma/',\n            sv: 'https://www.cosentino.com/sv-se/silestone/suma/',\n            tr: 'https://www.cosentino.com/tr-tr/silestone/suma/',\n            he: 'https://www.cosentino.com/silestone/suma/',\n            'en-US': 'https://www.cosentino.com/silestone/suma/',\n            'fr-CA': 'https://www.cosentino.com/fr-ca/silestone/suma/',\n            'en-CA': 'https://www.cosentino.com/en-ca/silestone/suma/'\n        }\n\n        return (\n            <div className=\"mt-4\">\n                <a href={links[language]} target=\"_blank\" rel=\"noopener noreferrer\">\n                    <img style={{ maxWidth: '100%' }} src={images[language]} alt=\"Banner Suma\" />\n                </a>\n            </div>\n        )\n    }\n}\n\nexport default connect(mapStateToProps, null)(BannerSuma)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { getLanguage } from '../../../store/ui/reducers'\nimport silestoneXMLogo from '../../../assets/img/banner-silestone-xm/logo-silestone-xm.svg'\nimport hybriqMineralInsideLogo from '../../../assets/img/banner-silestone-xm/logo-hybriq-mineral-inside.png'\nimport silestoneXMBackgroundImg from '../../../assets/img/banner-silestone-xm/silestone-xm-background-img.png'\nimport Button from '../../global/Button'\nimport Translation from '../../global/Translation'\nimport { FormattedHTMLMessage } from 'react-intl'\n\nconst mapStateToProps = state => {\n    return {\n        language: getLanguage(state)\n    }\n}\n\nclass BannerSilestoneXM extends React.Component {\n    render() {\n        const { language } = this.props\n\n        const links = {\n            da: 'https://www.cosentino.com/da-dk/silestone-xm/',\n            de: 'https://www.cosentino.com/de/silestone-xm/',\n            en: 'https://www.cosentino.com/silestone-xm/',\n            es: 'https://www.cosentino.com/es/silestone-xm/',\n            fi: 'https://www.cosentino.com/fi-fi/silestone-xm/',\n            fr: 'https://www.cosentino.com/fr-fr/silestone-xm/',\n            hu: 'https://www.cosentino.com/silestone-xm/',\n            it: 'https://www.cosentino.com/it-it/silestone-xm/',\n            ja: 'https://www.cosentino.com/ja-jp/silestone-xm/',\n            nl: 'https://www.cosentino.com/nl-nl/silestone-xm/',\n            no: 'https://www.cosentino.com/no-no/silestone-xm/',\n            pl: 'https://www.cosentino.com/pl-pl/silestone-xm/',\n            pt: 'https://www.cosentino.com/pt-pt/silestone-xm/',\n            sv: 'https://www.cosentino.com/sv-se/silestone-xm/',\n            tr: 'https://www.cosentino.com/tr-tr/silestone-xm/',\n            he: 'https://www.cosentino.com/silestone-xm/',\n            'en-US': 'https://www.cosentino.com/silestone-xm/',\n            'fr-CA': 'https://www.cosentino.com/fr-ca/silestone-xm/',\n            'en-CA': 'https://www.cosentino.com/en-ca/silestone-xm/'\n        }\n\n        const hybriqMineralLogoBlock = <img src={hybriqMineralInsideLogo} alt=\"Hybriq Mineral Inside\" />\n\n        const backgroundImageStyle = {\n            backgroundImage: `url(${silestoneXMBackgroundImg})`,\n            backgroundSize: 'cover',\n            backgroundPosition: 'center',\n            backgroundRepeat: 'no-repeat'\n        }\n\n        return (\n            <div className=\"banner-silestone-xm-health-safety\" style={backgroundImageStyle}>\n                <div className=\"banner\">\n                    <div className=\"banner__header\">\n                        <div className=\"banner__logo\">\n                            <div className=\"silestone-xm-logo\">\n                                <img src={silestoneXMLogo} alt=\"Silestone XM\" />\n                            </div>\n                            <div className=\"hybriq-mineral-logo\">{hybriqMineralLogoBlock}</div>\n                        </div>\n                        <div className=\"banner__content\">\n                            <div className=\"banner__text\">\n                                <h4>\n                                    <Translation\n                                        id=\"silestonexm_is_our_design_mineral_surface_with_a_maximum_content\"\n                                        defaultMessage=\"Silestone XM is our design mineral surface with a maximum content of 10% crystalline Silica, embracing the entire Q10 range of Silestone.\"\n                                    />\n                                </h4>\n                            </div>\n                            <div className=\"banner__image\">{hybriqMineralLogoBlock}</div>\n                        </div>\n                        <div className=\"banner__button\">\n                            <a href={links[language]} target=\"_blank\" rel=\"noopener noreferrer\">\n                                <Button className=\"cta-silestone-xm\" inline={true} gtmLabel={\"landing_silestone_xm_know_more\"} gtmUsertype={'m'}>\n                                    <Translation id=\"get_to_know_Silestonexm\" defaultMessage=\"Get to know Silestone® XM\" />\n                                </Button>\n                            </a>\n                        </div>\n                    </div>\n                    <div className=\"banner__footer\">\n                        <div className=\"banner__footer-text\">\n                            <p>\n                                <FormattedHTMLMessage\n                                    id=\"access_comprehensive_health_and_safety_information\"\n                                    defaultMessage=\"Access comprehensive <b>Health & Safety information</b> for our Cosentino products to ensure safe and responsible use.\"\n                                />\n                            </p>\n                        </div>\n                        <div className=\"banner__footer-button\">\n                            <a href={'https://osh.cosentino.com/health-safety-documentation/safety-data-sheets-sds/'} target=\"_blank\" rel=\"noopener noreferrer\">\n                                <Button inverted className=\"cta-health-safety-info\" gtmLabel={\"landing_silestone_xm_health_and_safety\"} gtmUsertype={'m'}>\n                                    <Translation id=\"go_to_health_and_safety_information\" defaultMessage=\"Go to Health & Safety information\" />\n                                </Button>\n                            </a>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default connect(mapStateToProps, null)(BannerSilestoneXM)\n","import React, { useState, useEffect } from 'react'\nimport { defineMessages, FormattedHTMLMessage, injectIntl } from 'react-intl'\nimport Translation from '../../global/Translation'\nimport ReactTooltip from 'react-tooltip'\nimport copyToClipboardIcon from '../../../assets/img/components/copy-to-clipboard.svg'\nimport rockMasterImg from '../../../assets/img/banners-rockmaster/rock-master.png'\n\ndefineMessages({\n    MSRP_and_150_day_terms: {\n        id: 'MSRP_and_150_day_terms',\n        description: 'MSRP_and_150_day_terms',\n        defaultMessage: 'MSRP and 150-day terms.'\n    },\n    when_you_purchase_a_minimum_of_30_silestone_and_or_dekton_slabs: {\n        id: 'when_you_purchase_a_minimum_of_30_silestone_and_or_dekton_slabs',\n        description: 'when_you_purchase_a_minimum_of_30_silestone_and_or_dekton_slabs',\n        defaultMessage: 'When you purchase a minimum of 30 Silestone® and/or Dekton® slabs.'\n    },\n    total_discount: {\n        id: 'total_discount',\n        description: 'total_discount',\n        defaultMessage: 'Total discount'\n    },\n    for_any_quantity_of_silestone_and_dekton_slabs: {\n        id: 'for_any_quantity_of_silestone_and_dekton_slabs',\n        description: 'for_any_quantity_of_silestone_and_dekton_slabs',\n        defaultMessage: 'For any quantity of Silestone® and Dekton® slabs.'\n    },\n    additional_discount: {\n        id: 'additional_discount',\n        description: 'additional_discount',\n        defaultMessage: 'Additional discount'\n    },\n})\n\nconst BigBannerRocketV2 = props => {\n    const { intl, market, isOnlyUsaSalesOrg } = props\n    const [isMobile, setIsMobile] = useState(window.innerWidth <= 768)\n\n    useEffect(() => {\n        const handleResize = () => setIsMobile(window.innerWidth <= 768)\n        window.addEventListener('resize', handleResize)\n\n        return () => window.removeEventListener('resize', handleResize)\n    }, [])\n\n    // Data for Card with 35 percent off\n    const _35percentOffData = {\n        percentAmountTitle: intl.formatMessage({ id: 'MSRP_and_150_day_terms', defaultMessage: 'MSRP and 150-day terms.' }),\n        bodyText: intl.formatMessage({ id: 'when_you_purchase_a_minimum_of_30_silestone_and_or_dekton_slabs', defaultMessage: 'When you purchase a minimum of 30 Silestone® and/or Dekton® slabs.' }),\n        smallText: intl.formatMessage({ id: 'total_discount', defaultMessage: 'Total discount' }),\n    }\n\n    //Data for Card with 5 and 10 percent off \n    const commonPercentOffData = {\n        bodyText: intl.formatMessage({ id: 'for_any_quantity_of_silestone_and_dekton_slabs', defaultMessage: 'For any quantity of Silestone® and Dekton® slabs.' }),\n        smallText: intl.formatMessage({ id: 'additional_discount', defaultMessage: 'Additional disccount' }),\n    }\n\n    return (\n        <div className=\"big-banner-rocket-promo-v2\">\n            <div\n                className=\"big-banner-rocket-promo-v2-container container\"\n                style={{\n                    backgroundImage: `url(${rockMasterImg})`,\n                    backgroundSize: 'auto',\n                    backgroundPosition: isMobile ? 'center center' : 'center left',\n                    backgroundRepeat: 'no-repeat'\n                }}\n            >\n                <div className=\"banner-title-content\">\n                    <div>\n                        <h3>\n                            <Translation id=\"rocket_main_title_big_banner\" defaultMessage=\"The one-time Rock[et] Promo is here!\" />\n                        </h3>\n                    </div>\n                    <div>\n                        <p>\n                            <FormattedHTMLMessage\n                                id=\"you_have_been_chosen_for_an_exclusive_promotion_on_all_silestone_and_dekton_slabs\"\n                                defaultMessage=\"You've been chosen for an exclusive promotion on all <b>Silestone</b>® and <b>Dekton</b>® slabs.\"\n                            />\n                        </p>\n                    </div>\n                </div>\n                <div className=\"banner-card-content\">\n                    <div>\n                        <Card\n                            percentAmount={35}\n                            percentAmountTitle={_35percentOffData.percentAmountTitle}\n                            promotionCode={isOnlyUsaSalesOrg ? '100000479' : '100000452'}\n                            bodyText={_35percentOffData.bodyText}\n                            smallText={_35percentOffData.smallText}\n                            intl={intl}\n                        />\n                    </div>\n                    {market === 'USACA10' ? (\n                        <div>\n                            <Card\n                                percentAmount={10}\n                                promotionCode={'100000446'}\n                                bodyText={commonPercentOffData.bodyText}\n                                smallText={commonPercentOffData.smallText}\n                                intl={intl}\n                            />\n                        </div>\n                    ) : market === 'USACA5' ? (\n                        <div>\n                            <Card\n                                percentAmount={5}\n                                promotionCode={'100000431'}\n                                bodyText={commonPercentOffData.bodyText}\n                                smallText={commonPercentOffData.smallText}\n                                intl={intl}\n                            />\n                        </div>\n                    ) : null}\n                </div>\n            </div>\n        </div>\n    )\n}\n\nconst Card = props => {\n    const { percentAmount, percentAmountTitle, promotionCode, bodyText, smallText, intl } = props\n    const [promotionCopied, setPromotionCopied] = useState(false)\n\n    const copyPromotionCodeOnClick = e => {\n        e.preventDefault()\n        navigator.clipboard.writeText(promotionCode).then(() => {\n            setPromotionCopied(true)\n            ReactTooltip.hide()\n            ReactTooltip.show()\n            setTimeout(() => {\n                setPromotionCopied(false)\n                ReactTooltip.hide()\n            }, 3000)\n        })\n    }\n\n    return (\n        <div className=\"rocket-promo-card\">\n            <div className=\"rocket-card-title\">\n                <h5>\n                    {percentAmount}%* <span><Translation id=\"off\" defaultMessage=\"off\" />.&nbsp;{percentAmountTitle}</span>\n                </h5>\n            </div>\n            <div className=\"rocket-card-content\">\n                <div>\n                    <h6><Translation id=\"enter\" defaultMessage=\"Enter\" />: {promotionCode} <Translation id=\"at_checkout\" defaultMessage=\"at checkout.\" /></h6>\n                </div>\n                <div>\n                    <button\n                        onClick={e => copyPromotionCodeOnClick(e)}\n                        data-tip={\n                            promotionCopied\n                                ? intl.formatMessage({ id: 'copied', defaultMessage: 'Copied' })\n                                : intl.formatMessage({ id: 'copy_to_clipboard', defaultMessage: 'Copy to clipboard' })\n                        }\n                        className=\"copy-to-clipboard__btn\"\n                    >\n                        <img src={copyToClipboardIcon} alt=\"copy to clipboard\" />\n                    </button>\n                    <ReactTooltip effect=\"solid\" place=\"top\" />\n                </div>\n            </div>\n            <div className=\"rocket-card-footer\">\n                {bodyText && <p>{bodyText}</p>}\n                {smallText && (\n                    <p className=\"mt-1\">\n                        <small>* {smallText}</small>\n                    </p>\n                )}\n            </div>\n        </div>\n    )\n}\n\nexport default injectIntl(BigBannerRocketV2)\n","import React, { useState } from 'react'\nimport Modal from '../../global/Modal'\nimport ReactDOM from 'react-dom'\nimport { injectIntl, defineMessages } from 'react-intl'\nimport Translation from '../../global/Translation'\n\ndefineMessages({\n    extra_discount_half_trucks: {\n        id: 'extra_discount_half_trucks',\n        description: 'extra_discount_half_trucks',\n        defaultMessage: 'extra discount half trucks'\n    },\n    extra_discount_full_trucks: {\n        id: 'extra_discount_full_trucks',\n        description: 'extra_discount_full_trucks',\n        defaultMessage: 'extra discount full trucks'\n    }\n})\n\nconst BannerSilestoneDektonBlackWeek = ({\n    layout = 'row',\n    backgroundColor,\n    borderColor,\n    textColor,\n    showConditionsButtonCatalog,\n    showConditionsButtonCheckout,\n    titleFontSize,\n    percentFontSize,\n    intl,\n    ...props\n}) => {\n    const [showConditionsModal, setShowConditionsModal] = useState(false)\n\n    const handleOpenConditionsModal = event => {\n        event.preventDefault()\n        setShowConditionsModal(true)\n    }\n\n    const handleCloseConditionsModal = event => {\n        event.preventDefault()\n        setShowConditionsModal(false)\n    }\n\n    const checkConditionsBtn = (\n        <button onClick={event => handleOpenConditionsModal(event)} style={{ color: textColor }}>\n            <Translation id=\"view_conditions\" defaultMessage=\"View conditions\" />\n        </button>\n    )\n\n    const cardMessages = {\n        titleFivePercent: intl.formatMessage({ id: 'extra_discount_half_trucks', defaultMessage: 'extra discount half trucks' }),\n        titleTenPercent: intl.formatMessage({ id: 'extra_discount_full_trucks', defaultMessage: 'extra discount full trucks' })\n    }\n\n    return (\n        <React.Fragment>\n            <div className=\"banner-silestone-dekton-blackweek\" style={{ backgroundColor: backgroundColor }}>\n                <div className=\"container p-0\">\n                    <div className={`banner__container ${layout === 'column' ? 'banner__container--column' : ''}`}>\n                        <div className={`banner__header ${layout === 'row' ? 'width-50' : ''}`}>\n                            <div className=\"banner__title\">\n                                <h2 style={{ color: textColor, fontSize: titleFontSize }}>\n                                    <Translation id=\"silestone_dekton_blackweek_promo\" defaultMessage=\"Silestone+Dekton “Black Week” promo\" />\n                                </h2>\n                                <h3 style={{ color: textColor, fontSize: titleFontSize }}>\n                                    <Translation id=\"from_november_25_to_29\" defaultMessage=\"from November 25 to 29.\" />\n                                </h3>\n                            </div>\n                            {showConditionsButtonCatalog && <div className=\"banner__link\">{checkConditionsBtn}</div>}\n                        </div>\n                        <div className={`banner__content ${layout === 'row' ? 'width-50' : ''}`}>\n                            <div className={`banner__cards ${layout === 'column' ? 'banner__cards--column' : ''}`}>\n                                <Card\n                                    percentAmount={'5'}\n                                    percentText={cardMessages.titleFivePercent}\n                                    className=\"banner__card\"\n                                    textColor={textColor}\n                                    borderColor={borderColor}\n                                    percentFontSize={percentFontSize}\n                                />\n                                <Card\n                                    percentAmount={'10'}\n                                    percentText={cardMessages.titleTenPercent}\n                                    className=\"banner__card\"\n                                    textColor={textColor}\n                                    borderColor={borderColor}\n                                    percentFontSize={percentFontSize}\n                                />\n                            </div>\n                            <div className=\"banner__details\" style={{ color: textColor }}>\n                                <p className=\"banner__detail\">\n                                    <Translation\n                                        id=\"silestone_applies_on_top_of_existing_conditions_collective_deals_individual_deals\"\n                                        defaultMessage=\"Silestone: Applies on top of existing conditions (collective deals, individual deals, builder programs, other promotions, …etc), except one-off project prices.\"\n                                    />\n                                </p>\n                                <p className=\"banner__detail\">\n                                    <Translation\n                                        id=\"dekton_applies_only_over_standard_volume_discounts_so_it_will_not_apply_on_top_of_the_other_conditions\"\n                                        defaultMessage=\"Dekton: Applies only over standard / volume discounts, so it will not apply on top of the other conditions (collective deals, individual deals, builder programs, other promotions, … etc), nor one-off project prices.\"\n                                    />\n                                </p>\n                                <p className=\"banner__detail pt-2\">\n                                    <Translation id=\"for_slab_orders_only\" defaultMessage=\"For slab orders only.\" />\n                                </p>\n                            </div>\n\n                            {showConditionsButtonCatalog && <div className=\"banner__link-mobile\">{checkConditionsBtn}</div>}\n\n                            {showConditionsButtonCheckout && <div className=\"banner__link--row\">{checkConditionsBtn}</div>}\n                        </div>\n                    </div>\n                </div>\n            </div>\n            {showConditionsModal &&\n                ReactDOM.createPortal(\n                    <Modal\n                        title={<Translation id=\"silestone_dekton_blackweek_promo\" defaultMessage=\"Silestone+Dekton “Black Week” promo\" />}\n                        onClose={event => handleCloseConditionsModal(event)}\n                        customClass={'silestone-dekton-blackweek-modal'}\n                    >\n                        <div>\n                            <h3 className=\"modal-subtitle\">\n                                <Translation id=\"conditions\" defaultMessage=\"Conditions\" />\n                            </h3>\n                            <ul style={{ fontWeight: 400 }}>\n                                <li>\n                                    <span style={{ fontWeight: 500 }}>\n                                        <Translation id=\"applicable_discounts\" defaultMessage=\"Applicable discounts\" />\n                                    </span>\n                                    :\n                                    <ul>\n                                        <li>\n                                            <Translation\n                                                id=\"silestone_applies_on_top_of_existing_conditions_collective_deals_individual_deals\"\n                                                defaultMessage=\"Silestone: Applies on top of existing conditions (collective deals, individual deals, builder programs, other promotions, …etc), except one-off project prices.\"\n                                            />\n                                        </li>\n                                        <li>\n                                            <Translation\n                                                id=\"dekton_applies_only_over_standard_volume_discounts_so_it_will_not_apply_on_top_of_the_other_conditions\"\n                                                defaultMessage=\"Dekton: Applies only over standard / volume discounts, so it will not apply on top of the other conditions (collective deals, individual deals, builder programs, other promotions, … etc), nor one-off project prices.\"\n                                            />\n                                        </li>\n                                    </ul>\n                                </li>\n                                <li>\n                                    <span style={{ fontWeight: 500 }}>\n                                        <Translation id=\"minimum_orders\" defaultMessage=\"Minimum orders\" />\n                                    </span>\n                                    :\n                                    <ul>\n                                        <li>\n                                            <Translation\n                                                id=\"only_half_truck_12_tons_full_truck_24_tons_or_full_container_orders_placed\"\n                                                defaultMessage=\"Only half truck (12 tons), full truck (24 tons) or full container orders placed with Cosentino Global Spain are accepted.\"\n                                            />\n                                        </li>\n                                        <li>\n                                            <Translation\n                                                id=\"rule_for_slabs_all_orders_must_contain_at_least_silestone_slabs\"\n                                                defaultMessage=\"1:1 rule for slabs: All orders must contain at least 50% Silestone slabs. 100% Silestone orders are possible.\"\n                                            />\n                                        </li>\n                                    </ul>\n                                </li>\n                                <li>\n                                    <span style={{ fontWeight: 500 }}>\n                                        <Translation id=\"delivery_dates_and_conditions\" defaultMessage=\"Delivery dates and conditions\" />\n                                    </span>\n                                    :\n                                    <ul>\n                                        <li>\n                                            <Translation\n                                                id=\"orders_must_be_received_between_november_25_and_29\"\n                                                defaultMessage=\"Orders must be received between November 25 and 29 (by 5:00 p.m.).\"\n                                            />\n                                        </li>\n                                        <li>\n                                            <Translation id=\"2024_prices_will_apply\" defaultMessage=\"2024 prices will apply.\" />\n                                        </li>\n                                        <li>\n                                            <Translation id=\"delivery_must_be_completed_by_january\" defaultMessage=\"Delivery must be completed by January 31, 2025.\" />\n                                        </li>\n                                    </ul>\n                                </li>\n                                <li>\n                                    <span style={{ fontWeight: 500 }}>\n                                        <Translation id=\"terms_of_payment\" defaultMessage=\"Terms of payment\" />\n                                    </span>\n                                    :\n                                    <ul>\n                                        <li>\n                                            <Translation id=\"payments_at_30_60_90_120_150_and_180_days\" defaultMessage=\"Payments at 30, 60, 90, 120, 150 and 180 days.\" />\n                                        </li>\n                                    </ul>\n                                </li>\n                                <li>\n                                    <span style={{ fontWeight: 500 }}>\n                                        <Translation id=\"bonus_objectives\" defaultMessage=\"Bonus objectives\" />\n                                    </span>\n                                    :\n                                    <ul>\n                                        <li>\n                                            <Translation\n                                                id=\"orders_will_count_towards_the_year_end_rebate_target\"\n                                                defaultMessage=\"Orders will count towards the year-end rebate target if delivered within 2024, but we will be paid a rebate on these orders.\"\n                                            />\n                                        </li>\n                                    </ul>\n                                </li>\n                            </ul>\n                        </div>\n                    </Modal>,\n                    document.getElementById('wrapper-contain')\n                )}\n        </React.Fragment>\n    )\n}\n\nconst Card = ({ percentAmount, percentText, className, textColor, borderColor, percentFontSize }) => (\n    <div className={className}>\n        <div>\n            <h5 style={{ color: textColor, borderColor: borderColor, fontSize: percentFontSize }}>{percentAmount}%</h5>\n        </div>\n        <div>\n            <h6 style={{ color: textColor, borderColor: borderColor }}>{percentText}</h6>\n        </div>\n    </div>\n)\n\nexport default injectIntl(BannerSilestoneDektonBlackWeek)\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport FiltersV2 from './FiltersV2'\nimport CircleResultContainer from './results/CircleResultContainer'\nimport RectangleResultContainer from './rectangleResult/RectangleResultContainer'\nimport SampleResultContainer from './results/SampleResultContainer'\nimport * as analytics from '../../analyticsEvents'\nimport {\n    SearchkitManager,\n    SearchkitProvider,\n    SearchBox,\n    Hits,\n    ResetFilters,\n    BoolShould,\n    TermQuery,\n    InitialLoader,\n    HitsStats,\n    BoolMust, QueryAccessor, TermsQuery\n} from 'searchkit'\nimport { injectIntl } from 'react-intl'\nimport MoreInfo from '../global/MoreInfo'\nimport OutletModal from '../global/OutletModal'\nimport Spinner from '../global/Spinner'\nimport { LowesInfoText } from './LowesInfoText'\nimport OutletInfoText from './OutletInfoText'\nimport Alerts from '../alerts/Alerts'\nimport ResultsV2 from \"./results/ResultsV2\";\nimport BannerDekton from '../banners/banner-dekton/BannerDekton'\nimport BannerRockMaster from \"../banners/banner-rockmaster/BannerRockMaster\";\nimport ProductContext, {CatalogProductContext} from \"./rectangleResult/contexts/ProductContext\";\nimport Slider from 'react-slick'\nimport BannerSilestoneContainer from '../banners/banner-silestone-container/BannerSilestoneContainer';\nimport BannerHybriq from '../banners/banner-hybriq/BannerHybriq'\nimport { v4 as uuidv4 } from 'uuid'\nimport BannerEarthic from '../banners/banner-earthic/BannerEarthic'\nimport BannerSuma from '../banners/banner-suma/BannerSuma'\nimport BannerSilestoneXM from '../banners/banner-silestone-xm/BannerSilestoneXM'\nimport BigBannerRocketV2 from '../banners/banner-rocket/BigBannerRocketV2'\nimport BannerSilestoneDektonBlackWeek from '../banners/banner-silestone-dekton-blackweek/BannerSilestoneDektonBlackWeek'\n\nconst customHitStats = (props) => {\n    const {hitsCount} = props\n    return hitsCount\n}\n\nconst listRef = {\n    value: ''\n}\n\nconst getSk = (\n    token,\n    center,\n    locale,\n    outlet, search, fullView, userType, impersonatedBy, match, priceList, userPriceList, commonParamsAnalytics,\n    HQCenterId,\n    LowesCenterId,\n    sendSearchProduct,\n    isPnHq,\n    isPnBrazil,\n    parent\n) => {\n    let lang = locale === 'fr-CA' || locale === 'en-CA' ? 'en-US' : locale\n    const catalogUri = '/catalog/' + center\n    const uri = catalogUri + '?lang=' + lang\n    const uri2 = outlet ? uri + '&outlet=true' : uri\n    //promo link works fine withouth this since dont knowh what version of react\n    // const uri3 = search.indexOf('promo=true') > -1 ? uri2 + '&promo=true' : uri2\n\n    // const uri3 = token ? uri2 + '&authToken=' + token : uri2\n    const httpHeaders = token ? { Authorization: 'Bearer ' + token } : {}\n\n    let sk = new SearchkitManager(process.env.REACT_APP_API_HOST + uri2, {\n        searchUrlPath: '',\n        timeout: 60000,\n        httpHeaders\n    })\n\n    // Traducciones de cadenas de SearchKit\n    sk.translateFunction = key => {\n        let translations = {\n            'pagination.previous': <Translation id=\"previous\" defaultMessage=\"Previous\" />,\n            'pagination.next': <Translation id=\"next\" defaultMessage=\"Next\" />,\n            'facets.view_more': <Translation id=\"view_more\" defaultMessage=\"View more\" />,\n            'facets.view_less': <Translation id=\"view_less\" defaultMessage=\"View less\" />,\n            'facets.view_all': <Translation id=\"view_all\" defaultMessage=\"View all\" />,\n            'reset.clear_all': <Translation id=\"clear_all\" defaultMessage=\"Clear all\" />,\n            'yes': <Translation id=\"yes\" defaultMessage=\"Yes\" />,\n            'no': <Translation id=\"no\" defaultMessage=\"No\" />,\n            'outlet_o': <Translation id=\"outlet_o\" defaultMessage=\"Outlet Basic\" />,\n            'outlet_v': <Translation id=\"outlet_v\" defaultMessage=\"Outlet Premium\" />,\n            'outlet_x': <Translation id=\"outlet_x\" defaultMessage=\"Outlet Xtreme\" />,\n            'AND': <Translation id=\"AND\" defaultMessage=\"Grip +\" />,\n            'MAT': <Translation id=\"MAT\" defaultMessage=\"Matte\" />,\n            'MTT': <Translation id=\"MTT\" defaultMessage=\"Texturized matte\" />,\n            'PUL': <Translation id=\"PUL\" defaultMessage=\"Polished\" />,\n            'PULMAL': <Translation id=\"PULMAL\" defaultMessage=\"Polished - meshed\" />,\n            'PUA': <Translation id=\"PUA\" defaultMessage=\"Mirage - glase\" />,\n            'PUC': <Translation id=\"PUC\" defaultMessage=\"Mirage - century\" />,\n            'PUN': <Translation id=\"PUN\" defaultMessage=\"Polished - n-boost\" />,\n        }\n        return translations[key]\n    }\n    sk.addResultsListener(results => {\n        parent.setState({ skKey: uuidv4() })\n        if(sk.query.getQueryString()){\n            sendSearchProduct(sk.query.getQueryString())\n        }\n        // analytics.sendCatalogImpressions(results.hits.hits, listRef.value, priceList, userPriceList, commonParamsAnalytics)\n        analytics.sendCatalogImpressions(results.hits.hits, 'CATALOG', priceList, userPriceList, commonParamsAnalytics, null, center)\n    })\n\n    if (isPnHq) {\n        const filter = outlet ? [\n                TermQuery('centerId', '1100')\n            ] : [\n                TermQuery('centerId', '1100'),\n                TermsQuery('brand.raw', ['SENSA', 'PREXURY', 'SCALEA'])\n        ];\n\n        sk.addDefaultQuery(query => {\n            return query.addFilter('centerHQ', BoolMust(filter))\n        })\n    }\n\n    if (isPnBrazil) {\n        const filter = [\n            TermQuery('centerId', '7500'),\n            TermsQuery('brand.raw', ['SENSA', 'PREXURY', 'SCALEA'])\n    ];\n\n    sk.addDefaultQuery(query => {\n        return query.addFilter('centerBrazil', BoolMust(filter))\n    })\n    }\n\n    if (center === LowesCenterId) {\n        if (match.url.includes('customer-sample'))\n            sk.addDefaultQuery(query => {\n                return query.addFilter('type', BoolShould([TermQuery('subtypeId.raw', 'CUSTOMER SAMPLES')]))\n            })\n        else if (match.url.includes('brochures'))\n            sk.addDefaultQuery(query => {\n                return query.addFilter('type', BoolShould([TermQuery('subtypeId.raw', 'BROCHURES')]))\n            })\n    }\n\n    if (!(userType === 'ADMIN' || impersonatedBy) && outlet && center === HQCenterId)\n        sk.addDefaultQuery(query => {\n            return query.addFilter('outletDeviated', BoolShould([TermQuery('outletDeviated.raw', false)]))\n        })\n\n    return sk\n}\n\nconst sectionMapToLangId = {\n    tabla: 'tables',\n    productos_estandar: 'standard_products',\n    ppcc: 'professional_products',\n    outlet: 'outlet'\n}\n\nclass Catalog extends React.Component {\n    constructor(props) {\n        super(props)\n        let initState = {\n            sk: null,\n            showHelp: true,\n            showOutletModal: this.props.outlet === 'outlet' && this.props.isAdmin,\n            countResult: 0\n        }\n        this.state = initState\n    }\n    setSk = () => {\n        const newSk = getSk(\n            this.props.token,\n            this.props.center,\n            this.props.intl.locale,\n            this.props.outlet,\n            this.props.location.search,\n            this.props.fullView,\n            this.props.userType,\n            this.props.impersonatedBy,\n            this.props.match,\n            this.props.priceList,\n            this.props.userPriceList,\n            this.props.commonParamsAnalytics,\n            this.props.HQCenterId,\n            this.props.LowesCenterId,\n            this.props.sendSearchProduct,\n            this.state.pn_hq,\n            this.state.pn_brazil,\n            this\n        )\n\n        //console.log('currentSearchRequest', newSk.currentSearchRequest)\n\n        this.setState({ sk: newSk }\n            // () => {\n            // if (this.props.location.search.indexOf('promo=true') > -1 && this.props.isLogged && this.props.center !== 7500) {\n            //     this.props.changeCenter(7500)\n            // }\n            // }\n        )\n    }\n    componentDidMount() {\n        this.setSk() // en el centro 1060 se pregunta locationf\n        if (this.props.isLogged) {\n            this.props.fetchProductsFavourite()\n        }\n        if (this.props.isMkToolsCenter) this.props.fetchShippingAddresses() // en el centro 1060 se pregunta location\n        if (this.props.center === this.props.HQCenterId) this.props.fetchDeviatedDescriptions()\n        let callbackSalesOrg = null;\n        const search = this.props.location.search;\n        const salesOrgSearch = '&salesorg=';\n        if(search.includes(salesOrgSearch)){\n            callbackSalesOrg = search.substring(\n              search.indexOf(salesOrgSearch) + salesOrgSearch.length,\n              search.indexOf(salesOrgSearch) + salesOrgSearch.length + 4\n            );\n        }\n        if (!this.props.isLogged && this.props.location.search.includes('&lnd=true')) {\n            this.props.loginRequired(callbackSalesOrg)\n        }\n        if(callbackSalesOrg){\n            this.props.changeCenterFromSalesOrg(callbackSalesOrg)\n        }\n    }\n\n    componentDidUpdate(prevProps) {\n\n        const fromCrossSelling = this.props.location.search && this.props.location.search.includes('cross-selling')\n        if (fromCrossSelling) listRef.value = 'crossselling-categoria'\n        else {\n            let catalogPage = 'CATALOG'\n            if (this.props.location.search) {\n                catalogPage = catalogPage + ' - busqueda de' + this.props.location.search\n            }\n            listRef.value = catalogPage\n        }\n\n        // if(this.props.location.search && this.props.location.search.includes('LAVABO')){\n        //     this.props.locations = '?type[0]=BAÑOS&subtype[0]=Washbasin'\n        //     this.state.sk && this.state.sk.runInitialSearch()\n        // }\n        // console.log(this.props)\n\n        if (this.props.location !== prevProps.location) {\n\n            //TODO solo hace la llamada cuando cambiar la url\n            this.state.sk && this.state.sk.runInitialSearch() //TODO :identificar motivo y si se puede borrar, duplica llamada a elastic see on network\n        }\n\n        if (this.props.isLowesCenter && prevProps.location.pathname !== this.props.location.pathname) {\n            this.setState({ sk: null }, () => {\n                this.setSk()\n            })\n        }\n    }\n\n    filterFavourites = () => {\n        this.setState({ sk: null, favouriteFilter: !this.state.favouriteFilter }, () => {\n            this.setSk()\n        })\n    }\n    filterDiscounts = () => {\n        this.setState({ sk: null, discountsFilter: !this.state.discountFilter }, () => {\n            this.setSk()\n        })\n    }\n\n    setPnHQ = (isPnHQ) => {\n        // this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', ''))\n        this.setState({pn_hq: isPnHQ})\n        this.setState({ sk: null }, () => {\n            this.setSk()\n        })\n    }\n\n    setPnBrazil = (isPnBrazil) => {\n        this.setState({ pn_brazil: isPnBrazil })\n        this.setState({ sk: null }, () => {\n            this.setSk()\n        })\n    }\n\n    render() {\n        let LANG_TO_INDEX = {\n            da: 'EN',\n            de: 'DE',\n            'en-US': 'Z2',\n            en: 'EN',\n            es: 'ES',\n            fi: 'EN',\n            'fr-CA': 'Z2',\n            'en-CA': 'Z2',\n            fr: 'FR',\n            it: 'IT',\n            nl: 'NL',\n            no: 'EN',\n            pt: 'PT',\n            pl: 'EN',\n            sv: 'SV',\n            tr: 'TR'\n        }\n        if (this.props.canOnlyViewOutlet && this.props.outlet !== 'outlet') {\n            this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', 'outlet'))\n        }\n        if (!this.props.canViewOutlet && this.props.outlet === 'outlet') {\n            this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', ''))\n        }\n\n        const hitsComponent = this.props.fullView ? (this.props.isLowesCenter ? SampleResultContainer : RectangleResultContainer) : CircleResultContainer\n        const hits = <Hits hitsPerPage={23} itemComponent={hitsComponent} className={!this.props.fullView ? 'v2-circle' : ''} />\n        const ResetSearchbox = ({ hasFilters, resetFilters }) => {\n            return <div onClick={resetFilters} style={{ visibility: hasFilters ? 'visible' : 'hidden' }} className=\"bt-reset-searchbox\" />\n        }\n        const settings = {\n            arrows: false,\n            swipeToSlide: true,\n            dots: false,\n            speed: 300,\n            autoplaySpeed: 10000,\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            infinite: true,\n            autoplay: false,\n            variableWidth: false,\n        }\n        if (!this.state.sk) {\n            return null\n        }\n        let bannerSelector =\n            this.props.center === 7110\n                ? 'BE-' + this.props.intl.locale.toUpperCase()\n                : this.props.center === 7130\n                ? 'CH-' + this.props.intl.locale.toUpperCase()\n                : this.props.intl.locale.toUpperCase()\n        return (\n            <React.Fragment>\n                {(this.props.canViewRocketPromotion || this.props.canViewSilestoneContainerPromotion) ? (\n                    <Slider ref={s => (this.slider = s)} {...settings}>\n                        {this.props.canViewSilestoneContainerPromotion && (\n                            <BannerSilestoneContainer />\n                        )}\n                        {this.props.canViewRocketPromotion && <BigBannerRocketV2 market={this.props.canViewRocketPromotion} isOnlyUsaSalesOrg={this.props.isOnlyUsaSalesOrg} />}\n                    </Slider>\n                ) : null}\n                <SearchkitProvider searchkit={this.state.sk}>\n                    <section id=\"section-catalog\" className={this.props.outlet ? 'outlet' : ''}>\n                        {this.state.showOutletModal && this.props.center === this.props.HQCenterId && !this.props.alreadyClosedOutletModal && (\n                            <OutletModal\n                                locale={this.props.intl.locale}\n                                onClose={() =>\n                                    this.setState({ showOutletModal: false }, () => {\n                                        this.props.dontShowOutletModalAgain()\n                                    })\n                                }\n                            />\n                        )}\n                        {this.props.currentLocation && this.props.currentLocation.section && sectionMapToLangId[this.props.currentLocation.section] && (\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <h2 className=\"catalog-title\">\n                                        <Translation id={sectionMapToLangId[this.props.currentLocation.section]} />\n                                    </h2>\n                                </div>\n                            </div>\n                        )}\n                        {this.props.isIkeaCenter && (\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <h2 className=\"catalog-title\">IKEA</h2>\n                                </div>\n                            </div>\n                        )}\n                        {this.props.isLowesCenter && (\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <h2 className=\"catalog-title\">\n                                        <Translation id=\"customer_samples\" defaultMessage=\"Customer Samples\" />\n                                    </h2>\n                                </div>\n                            </div>\n                        )}\n                        <div className=\"search-container\">\n                            <div className=\"search-overlay\">\n                                <div className=\"container\">\n                                    <div className=\"row\">\n                                        <div className={'w-100'}>\n                                            <div className=\"search-box-container\">\n                                                <div className=\"search-box\">\n                                                    <SearchBox\n                                                        searchThrottleTime={1000}\n                                                        searchOnChange={true}\n                                                        queryFields={[\n                                                            'colorId',\n                                                            'colorName',\n                                                            'description',\n                                                            'brand',\n                                                            'color',\n                                                            'productId',\n                                                            'productName',\n                                                            'subtypeName',\n                                                            'format',\n                                                            'bigAccountsErpCode',\n                                                            `translations.${LANG_TO_INDEX[this.props.intl.locale]}.displayName`,\n                                                            `translations.${LANG_TO_INDEX[this.props.intl.locale]}.colorName`,\n                                                            `translations.${LANG_TO_INDEX[this.props.intl.locale]}.productName`,\n                                                            `translations.${LANG_TO_INDEX[this.props.intl.locale]}.zaddon`,\n                                                            `colorFormulations.colorName`,\n                                                            'technology'\n                                                        ]}\n                                                        queryOptions={{ default_operator: 'AND' }}\n                                                        // placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                                        placeholder=\"calacatta pol 2cm jumbo...\"\n                                                    />\n                                                    <ResetFilters component={ResetSearchbox} options={{ query: true, filter: false, pagination: true }} />\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        {this.props.maintenanceScheduledText && (\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <Alerts status=\"primary\" alert={<div dangerouslySetInnerHTML={{ __html: this.props.maintenanceScheduledText }} />} />\n                                </div>\n                            </div>\n                        )}\n                        <div className=\"filter-and-results-container\">\n                            <div className=\"container\">\n                                <div className={'row f-direction-column filtersv2'}>\n                                    <div className={'filter-container'}>\n                                        <FiltersV2\n                                            {...this.props}\n                                            filterFavourites={this.filterFavourites}\n                                            filterDiscounts={this.filterDiscounts}\n                                            favouriteProducts={this.props.productsIdFavourite}\n                                            userDiscountsProductIds={this.props.promotionsProductIds}\n                                            mktools={this.props.center === 5200 || this.props.center === 5000 || this.props.center === 1060}\n                                            selectedCenter={this.props.center}\n                                        ></FiltersV2>\n                                    </div>\n\n                                    <div className={'filter-container'}>\n                                        {this.props.isLowesCenter && this.props.match.url.includes('customer-samples') && (\n                                            <MoreInfo static>\n                                                <LowesInfoText />\n                                            </MoreInfo>\n                                        )}\n                                        {this.props.isLowesCenter && this.props.match.url.includes('brochures') && (\n                                            <MoreInfo static>\n                                                <h4>\n                                                    <Translation id=\"brochure_re-ordering\" defaultMessage=\"Brochure Re-Ordering\" />\n                                                </h4>\n\n                                                <ul>\n                                                    <li>\n                                                        <Translation\n                                                            id=\"To_start_your_order_click_on_the_brochure_that_you_need_to_re-order\"\n                                                            defaultMessage=\"To start your order, click on the brochure that you need to re-order\"\n                                                        />\n                                                    </li>\n                                                    <li>\n                                                        <Translation\n                                                            id=\"Brochures_are_in_packs_of_50_individual_brochures\"\n                                                            defaultMessage=\"Brochures are in packs of 50 individual brochures\"\n                                                        />\n                                                    </li>\n                                                    <li>\n                                                        <Translation\n                                                            id=\"Each_store_is_capped_at_1_pack_of_brochures_for_each_brand_per_month\"\n                                                            defaultMessage=\"Each store is capped at 1 pack of brochures for each brand, per month. \"\n                                                        />\n                                                    </li>\n                                                    <li>\n                                                        <Translation\n                                                            id=\"All_orders_will_be_delivered_within_2-3_weeks_of_order_and_sent_to_the_person_who_placed_the_order\"\n                                                            defaultMessage=\"All orders will be delivered within 2-3 weeks of order and sent to the person who placed the order\"\n                                                        />\n                                                    </li>\n                                                    <li>\n                                                        <Translation id=\"Shipment_sent_to_the_assigned_store_only\" defaultMessage=\"Shipment sent to the assigned store only\" />\n                                                    </li>\n                                                </ul>\n                                            </MoreInfo>\n                                        )}\n                                        {this.props.outlet && this.props.center === this.props.HQCenterId && (this.props.isAdmin || this.props.impersonatedBy) && (\n                                            <MoreInfo moreInfoOutlet>\n                                                <OutletInfoText language={this.props.language} />\n                                            </MoreInfo>\n                                        )}\n                                        <div>\n                                            <ResultsV2\n                                                totalResult={<HitsStats component={customHitStats} />}\n                                                hits={hits}\n                                                token={this.props.token}\n                                                outlet={this.props.outlet}\n                                                isMkToolsCenter={this.props.isMkToolsCenter}\n                                                isLowesCenter={this.props.isLowesCenter}\n                                                isIkeaCenter={this.props.isIkeaCenter}\n                                                currentLocation={this.props.currentLocation}\n                                                statePnHQ={this.state.pn_hq}\n                                                setPnHQ={this.setPnHQ}\n                                                statePnBrazil={this.state.pn_brazil}\n                                                setPnBrazil={this.setPnBrazil}\n                                                naturalStoneViewingPermissions={this.props.naturalStoneViewingPermissions}\n                                                centerData={this.props.centerData}\n                                                skKey={this.state.skKey}\n                                                isUsaOrCanada={this.props.isUsaOrCanada}\n                                            />\n                                            {this.props.isUsaOrCanada && (\n                                                <React.Fragment>\n                                                    <div className=\"container dekton-banner-desktop\">\n                                                        <BannerDekton />\n                                                    </div>\n                                                    <div className=\"container dekton-banner-squared\">\n                                                        <BannerDekton squared={true} />\n                                                    </div>\n                                                </React.Fragment>\n                                            )}\n                                            \n                                            {/* {this.props.canViewEarthicPromotion && (\n                                                <BannerEarthic />\n                                            )} */}\n\n                                            {this.props.canViewSumaPromotion && (\n                                                <BannerSuma />\n                                            )}\n\n                                            {this.props.canViewRockMasterPromotion && (\n                                                <BannerRockMaster />\n                                            )}\n\n                                            {this.props.canViewSilestonePromotionXM && (\n                                                <BannerSilestoneXM />\n                                            )}\n                                            \n                                            {/* {this.props.canViewHybriqPromotion && (\n                                                <BannerHybriq />\n                                            )} */}\n                                            \n                                        </div>\n\n                                        <InitialLoader component={() => <Spinner isLoading={this.state.sk} relative />} />\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </section>\n                </SearchkitProvider>\n            </React.Fragment>\n        )\n    }\n}\n\nexport default injectIntl(Catalog)\n\n","import { connect } from 'react-redux'\nimport {\n    getSelectedCenter,\n    canOnlyViewOutlet,\n    canViewOutlet,\n    hasPromoActivated,\n    getIsMkToolsCenter,\n    getIsLowesCenter,\n    getMktoolsShippingCenter,\n    getIsIkeaCenter,\n    getPromoBanners,\n    getIsVirtualVisitEnabled,\n    hasPromotionLandingActivated,\n    getHQCenterId,\n    getShowroomCenterId,\n    getLowesCenterId,\n    isEuropeOrIberia,\n    isUsaOrCanada,\n    getCenterData,\n    getWarehoseCenterId,\n    isOnlyUsaSalesOrg\n} from '../../store/centers/reducers'\nimport {changeCenter, changeFirstCenterFromSalesOrg, setMkToolsShippingCenter} from '../../store/centers/actions'\nimport Catalog from './Catalog'\nimport { injectIntl } from 'react-intl'\nimport { fetchProductsFavourite, fetchDeviatedDescriptions } from '../../store/products/actions'\nimport { getProductsIdFavourite, canViewPricesPhase3, getPromotionsProductIds } from '../../store/products/reducers'\nimport {\n    getIsLogged,\n    getToken,\n    getSalesOrg,\n    getUserType,\n    getImpersonatedBy,\n    getIsAdmin,\n    getHaveUserSeenOutletModal,\n    getIsMagazineMk,\n    getCommonParams,\n    getPriceListAtSelectedCenter,\n    getVirtualVisitURL,\n    getUserPriceList,\n    getTypeClient,\n    getTestAB,\n    canViewRocketPromotion,\n    canViewRockMasterPromotion,\n    canViewEarthicPromotion,\n    canViewHybriqPromotion,\n    canViewSilestonePromotionXM,\n    getNaturalStoneViewingPermissions,\n    canViewSilestoneContainerPromotion,\n    canViewSumaPromotion\n} from '../../store/login/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { getShippingAddressesCenters, isLoadingShippingAddress } from '../../store/shipping-addresses/reducers'\nimport { fetchShippingAddresses } from '../../store/shipping-addresses/actions'\nimport {\n    getCurrentLocation,\n    getHideAllBannerCatalog,\n    getLanguage,\n    getMaintenanceScheduledText,\n} from '../../store/ui/reducers'\nimport { loginRequired } from '../../store/login/actions'\nimport { getBannerDescription, getBannerTitle, getPromotionLateralBanner, getPromotionLink } from '../../store/promotions/reducers'\nimport {getAdaptedFormat} from \"../../helpers\";\nimport { dispatchPushURL, setIsXeronBrandVisible, setIsSilestoneBrandVisible } from '../../store/ui/actions'\nimport moment from 'moment'\nconst mapStateToProps = (state, { match }) => {\n    return {\n        token: getToken(state),\n        fullView: getIsLogged(state),\n        center: getSelectedCenter(state) ? getSelectedCenter(state) : 'near',\n        key: getSelectedCenter(state) + '-' + match.params.outlet,\n        outlet: match.params.outlet,\n        canOnlyViewOutlet: canOnlyViewOutlet(state),\n        isLogged: getIsLogged(state),\n        isAdmin: getIsAdmin(state),\n        salesOrg: getSalesOrg(state),\n        productsIdFavourite: getProductsIdFavourite(state),\n        promotionsProductIds: getPromotionsProductIds(state, match.params.outlet),\n        userType: getUserType(state),\n        canViewOutlet: canViewOutlet(state),\n        canViewPricesPhase3: canViewPricesPhase3(state),\n        hasPromoActivated: hasPromoActivated(state),\n        hasPromotionLandingActivated: hasPromotionLandingActivated(state),\n        promotionLateralBanner: getPromotionLateralBanner(state),\n        promotionLink: getPromotionLink(state),\n        promoBanners: getPromoBanners(state),\n        isMkToolsCenter: getIsMkToolsCenter(state),\n        impersonatedBy: getImpersonatedBy(state),\n        isLowesCenter: getIsLowesCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        shippingAddressesCenters: getShippingAddressesCenters(state),\n        isLoadingShippingAddresses: isLoadingShippingAddress(state),\n        mktoolsShippingCenter: getMktoolsShippingCenter(state),\n        alreadyClosedOutletModal: getHaveUserSeenOutletModal(state),\n        isMagazineMk: getIsMagazineMk(state),\n        language: getLanguage(state),\n        virtualVisitiEnabled: getIsVirtualVisitEnabled(state),\n        URLVirtualVisit: getVirtualVisitURL(state),\n        priceList: getPriceListAtSelectedCenter(state),\n        userPriceList: getUserPriceList(state),\n        commonParamsAnalytics: getCommonParams(state),\n        maintenanceScheduledText: getMaintenanceScheduledText(state),\n        promotionBannerTitle: getBannerTitle(state),\n        promotionBannerDescription: getBannerDescription(state),\n        HQCenterId: getHQCenterId(),\n        showroomCenterId: getShowroomCenterId(),\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        LowesCenterId: getLowesCenterId(),\n        typeClient: getTypeClient(state),\n        testAB: getTestAB(state),\n        isHideAllBannerCatalog: getHideAllBannerCatalog(state),\n        isUsaOrCanada: isUsaOrCanada(state),\n        showBannerPromo: new moment() < moment('2022-11-18 18:00') && isEuropeOrIberia(state),\n        canViewRocketPromotion: canViewRocketPromotion(state),\n        currentLocation: getCurrentLocation(state),\n        centerData: getCenterData(state),\n        canViewRockMasterPromotion: canViewRockMasterPromotion(state),\n        canViewEarthicPromotion: canViewEarthicPromotion(state),\n        canViewHybriqPromotion: canViewHybriqPromotion(state),\n        isWarehouse: getSelectedCenter(state) == getWarehoseCenterId(),\n        canViewSilestonePromotionXM: canViewSilestonePromotionXM(state),\n        naturalStoneViewingPermissions: getNaturalStoneViewingPermissions(state),\n        isOnlyUsaSalesOrg: isOnlyUsaSalesOrg(state),\n        canViewSilestoneContainerPromotion: canViewSilestoneContainerPromotion(state),\n        canViewSumaPromotion: canViewSumaPromotion(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        changeCenter: center => {\n            dispatch(changeCenter(center))\n        },\n        changeCenterFromSalesOrg: salesOrg => {\n            dispatch(changeFirstCenterFromSalesOrg(salesOrg))\n        },\n        fetchProductsFavourite: () => {\n            dispatch(fetchProductsFavourite())\n        },\n        fetchShippingAddresses: () => {\n            dispatch(fetchShippingAddresses())\n        },\n        setMkToolsShippingCenter: mktoolsShippingCenter => {\n            dispatch(setMkToolsShippingCenter(mktoolsShippingCenter))\n        },\n        dontShowOutletModalAgain: () => {\n            dispatch({ type: 'DONT_SHOW_OUTLET_MODAL_AGAIN' })\n        },\n        fetchDeviatedDescriptions: () => dispatch(fetchDeviatedDescriptions()),\n        loginRequired: (callbackSalesOrg = null) => {\n            dispatch(loginRequired(null, null, callbackSalesOrg))\n        },\n        sendSearchProduct: (term) => {\n            dispatch({type: 'SEND_SEARCH_PRODUCT', term})\n        },\n        setIsXeronBrandVisible: (isVisible) => {\n            dispatch(setIsXeronBrandVisible(isVisible))\n        },\n        setIsSilestoneBrandVisible: (isVisible) => {\n            dispatch(setIsSilestoneBrandVisible(isVisible))\n        }\n    }\n}\nconst CatalogContainer = withRouter(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(Catalog)\n)\n\nexport default injectIntl(CatalogContainer)\n","import React from 'react'\n\nimport CatalogContainer from '../components/catalog/CatalogContainer'\n\nconst CatalogScreen = props => <CatalogContainer {...props} />\n\nexport default CatalogScreen\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { canViewLotId } from '../../../../store/products/reducers'\nimport Translation from '../../../global/Translation'\n\nconst mapStateToProps = state => {\n    return {\n        canViewLotId: canViewLotId(state)\n    }\n}\nclass DisplayLotId extends React.Component {\n    render() {\n        if (this.props.canViewLotId) {\n            return (\n                <React.Fragment>\n                    {this.props.withDescription && <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />}:&nbsp;\n                    {this.props.lotId}\n                </React.Fragment>\n            )\n        } else {\n            return ''\n        }\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(DisplayLotId)\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { confirmable } from 'react-confirm'\nimport Button from './Button'\n\nconst ExtendedConfirmDialog = ({ show, proceed, dismiss, cancel, confirmation, options }) => {\n    return (\n        <div className={options.isV2 ? 'modal-v2 v2' : 'modal-v2 v2'}>\n            <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} />\n            <div id=\"confirm-container\" className=\"confirm\" style={{ display: show ? 'block' : 'none' }}>\n                <div className=\"container-fluid\">\n                    <div className=\"row\">\n                        <div className=\"col-12 container p-0\">\n                            <header className=\"container-fluid\">\n                                <button className=\"confirm-dialog-close\" onClick={() => cancel('arguments will be passed to the callback')} datacy=\"confirm_dialog__cancel\">\n                                    <i class=\"fas fa-times\"></i>\n                                </button>\n                                <div className=\"row\">\n                                    <div className=\"col-12\">\n                                        <div>\n                                            <h2>{confirmation}</h2>\n                                            {\n                                                options.advise && (\n                                                    <div className=\"confirm-advise\">\n                                                        {options.advise}\n                                                    </div>\n                                                )\n                                            }\n                                            <div className=\"confirm-btn-group\">\n                                                <div>\n                                                    <Button onClick={() => cancel('arguments will be passed to the callback')} datacy=\"confirm_dialog__cancel\">\n                                                        {options.textCancel ? options.textCancel : 'Cancel'}\n                                                    </Button>\n                                                </div>\n                                                <div>\n                                                    <Button className={options.isV2 ? 'bt-inverted' : ''} onClick={() => proceed('same as cancel')} datacy=\"confirm_dialog__ok\">\n                                                        {options.textOk ? options.textOk : 'Ok'}\n                                                    </Button>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </header>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nExtendedConfirmDialog.propTypes = {\n    show: PropTypes.bool, // from confirmable. indicates if theyarn start dialog is shown or not.\n    proceed: PropTypes.func, // from confirmable. call to close the dialog with promise resolved.\n    cancel: PropTypes.func, // from confirmable. call to close the dialog with promise rejected.\n    dismiss: PropTypes.func, // from confirmable. call to only close the dialog.\n    confirmation: PropTypes.string, // arguments of your confirm function\n    options: PropTypes.object // arguments of your confirm function\n}\n\n// confirmable HOC pass props `show`, `dismiss`, `cancel` and `proceed` to your component.\nexport default confirmable(ExtendedConfirmDialog)\n","import { createConfirmation } from 'react-confirm'\nimport ExtendedConfirmDialog from './ExtendedConfirmDialog'\n\n// create confirm function\nconst confirm = createConfirmation(ExtendedConfirmDialog)\n\nexport default function(confirmation, options = {}) {\n    return confirm({ confirmation, options })\n}\n","import React from 'react'\nimport { capitalizeFirstLetter } from '../../../helpers'\n\nexport function addForwardSlash(...args) {\n    // Filter out null or undefined values from the array\n    const filteredArgs = args.filter(arg => arg !== null && arg !== undefined)\n    \n    // Concatenate the remaining values with ' / ' as the separator\n    return filteredArgs && filteredArgs.join(' / ')\n}\n\n\n/**\n * @param {*} props \n * @returns React slick next arrow\n */\nexport function SliderNextArrow(props) {\n    const { style, onClick } = props\n    return (\n        <i\n            className={'fal fa-chevron-right'}\n            style={{ ...style, display: 'block', position: 'absolute', right: 0, top: '42%', fontSize: '26px', cursor: 'pointer', zIndex: '10', color: '#000000' }}\n            onClick={onClick}\n        />\n    )\n}\n\n/**\n * @param {*} props \n * @returns React slick prev arrow\n */\nexport function SliderPrevArrow(props) {\n    const { style, onClick } = props\n    return (\n        <i\n            className={'fal fa-chevron-left'}\n            style={{ ...style, display: 'block', position: 'absolute', top: '42%', fontSize: '26px', cursor: 'pointer', zIndex: '10', color: '#000000' }}\n            onClick={onClick}\n        />\n    )\n}\n\n/**\n * \n * @param {*} props \n * @returns Display the shipping address of the user \n */\nexport function DisplayShippingAddress(props) {\n    let { shippingAddress, shippingAddressId, shippingAddressesByUser } = props\n    if (!shippingAddress) {\n        shippingAddress =\n            shippingAddressesByUser && shippingAddressId\n                ? shippingAddressesByUser.filter(shippingAddress => {\n                      return parseInt(shippingAddress.shippingAddressId) === parseInt(shippingAddressId)\n                  })[0]\n                : null\n    }\n\n    return shippingAddress ? (\n        <span>\n            {shippingAddress.customerName}&nbsp;{shippingAddress.address}&nbsp;{shippingAddress.zipCode}&nbsp;{shippingAddress.city}&nbsp;{shippingAddress.country}\n        </span>\n    ) : (\n        '--'\n    )\n}\n\n/**\n * Cut to size materials id\n */\nexport const CUT_TO_SIZE_MATERIALS = ['80457', '80461', '80451', '80458']\n\nexport function getConfigLineName(config) {\n    const productName = config.product ? capitalizeFirstLetter(config.product) : ''\n    const modelName = config.model ? capitalizeFirstLetter(config.model) : ''\n\n    return `${modelName} ${productName}`;\n}","/**\n * Downloads a PDF from a given URL and saves it with a specified filename.\n * @param {string} url - The URL of the PDF to download.\n * @param {string} model - The model name to include in the filename.\n * @param {string} refcode - The refcode to include in the filename.\n */\nexport const handlePlanPdfDownload = (url, model, refcode) => {\n    if (!url) return\n\n    // Fetch the PDF file from the URL using fetch\n    fetch(url)\n        .then(response => {\n            if (!response.ok) {\n                throw new Error('handlePlanPdfDownload -> Network response was not ok')\n            }\n            return response.blob() // Convert the response into a Blob object\n        })\n        .then(blob => {\n            // Create a URL for the Blob object\n            const downloadUrl = URL.createObjectURL(blob)\n\n            // Create a temporary anchor element to initiate download\n            const link = document.createElement('a')\n            link.href = downloadUrl\n\n            // Set the download filename\n            const fileName = `${model}-${refcode}.pdf`\n            link.setAttribute('download', fileName)\n\n            // Append the link to the body and trigger the download\n            document.body.appendChild(link)\n            link.click()\n\n            // Clean up: remove the link and revoke the object URL\n            document.body.removeChild(link)\n            URL.revokeObjectURL(downloadUrl)\n        })\n        .catch(error => {\n            console.error('handlePlanPdfDownload -> Failed to download the file', error)\n        })\n}\n\n\nexport const getFormatConfigData = (config, isPlanAccepted, locale, units, planDocumentUrl, refcode) => {\n    return {\n        \"config\": {\n            ...config.configuration,\n            isPlanAccepted: isPlanAccepted,\n            planDocumentUrl: planDocumentUrl,\n            refcode: refcode\n        },\n        \"colorId\": config.configuration.material.color,\n        \"finish\": config.configuration.material.finish,\n        \"brand\": config.configuration.material.brand,\n        \"elaboration\": 'CONFIGURABLE_BATH',\n        \"ref\": config.reference,\n        \"lang\": locale,\n        \"units\": units,\n        \"colorName\": config.configuration.material.colorName\n    }\n}\n\nexport const getCheckoutLineId = (checkoutLines, refcode) => {\n    if (!refcode) {\n        return null\n    }\n\n    const matchingLine = checkoutLines && checkoutLines.find(line =>\n        line.cutToSize &&\n        line.cutToSize.config &&\n        line.cutToSize.ref &&\n        line.cutToSize.ref === refcode\n    )\n\n    return matchingLine ? matchingLine.lineId : null\n}\n\nexport const getConfigurablePlanPdfUrl = (configurableDrawingList, refcode) => {\n    const configurableDrawing = configurableDrawingList && refcode && configurableDrawingList[refcode]\n\n    return configurableDrawing && configurableDrawing.documentUrl\n}","var _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 31,\n    height: 18,\n    viewBox: \"0 0 31 18\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12 6.5V7.5H5V6.5H12Z\",\n    fill: \"#20367A\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12 10.5V11.5H0V10.5H12Z\",\n    fill: \"#20367A\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M22.5 16.7134V9.28644L16 5.52294V12.6037C16 12.7064 16.0257 12.8025 16.077 12.8922C16.1282 12.982 16.2051 13.0589 16.3077 13.1229L22.5 16.7134ZM23.5 16.7134L29.6923 13.1229C29.7949 13.0589 29.8718 12.982 29.923 12.8922C29.9743 12.8025 30 12.7064 30 12.6037V5.52294L23.5 9.28644V16.7134ZM22.1923 17.6864L15.8077 14.0077C15.5551 13.8629 15.3573 13.666 15.2145 13.4172C15.0715 13.1685 15 12.8993 15 12.6094V5.39044C15 5.10061 15.0715 4.83136 15.2145 4.58269C15.3573 4.33386 15.5551 4.13703 15.8077 3.99219L22.1923 0.313441C22.4449 0.168608 22.7142 0.0961914 23 0.0961914C23.2858 0.0961914 23.5551 0.168608 23.8077 0.313441L30.1923 3.99219C30.4449 4.13703 30.6427 4.33386 30.7855 4.58269C30.9285 4.83136 31 5.10061 31 5.39044V12.6094C31 12.8993 30.9285 13.1685 30.7855 13.4172C30.6427 13.666 30.4449 13.8629 30.1923 14.0077L23.8077 17.6864C23.5551 17.8313 23.2858 17.9037 23 17.9037C22.7142 17.9037 22.4449 17.8313 22.1923 17.6864ZM26.7115 6.27494L29.425 4.71344L23.3077 1.17294C23.2051 1.10894 23.1025 1.07694 23 1.07694C22.8975 1.07694 22.7949 1.10894 22.6923 1.17294L20.3 2.54794L26.7115 6.27494ZM23 8.42694L25.7 6.85944L19.275 3.14619L16.575 4.71344L23 8.42694Z\",\n    fill: \"#20367A\"\n  })));\n};\n\nexport default __webpack_public_path__ + \"static/media/quickShipIcon.cf8f899e.svg\";\nexport { SvgComponent as ReactComponent };","import React from 'react'\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport Modal from '../../global/Modal'\nimport { capitalizeFirstLetter, getCmOrInches, getMeasureFromMetric } from '../../../helpers'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport { getConfigLineName } from '../../orders/new-order-history/Utils'\nimport Translation from '../../global/Translation'\nimport { handlePlanPdfDownload } from '../utils'\n\nconst mapStateToProps = state => {\n    return {\n        measureFromMetric: (measure, decimals) => getMeasureFromMetric(measure, decimals, state),\n        units: getCmOrInches(state)\n    }\n}\n\nconst IN_DECIMALS = 2\n\nconst ModalConfigurationDetails = props => {\n    const { showBtnEdit, showBtnDownload, config, onClose, intl, refcode, measureFromMetric, units } = props\n\n    const getModalTitle = () => {\n        return (\n            <React.Fragment>\n                <Translation id=\"customization_details\" defaultMessage=\"Customization details\" /> {getConfigLineName(config)}{' '}\n                <Translation id=\"customized\" defaultMessage=\"Custom\" />\n            </React.Fragment>\n        )\n    }\n\n    const getPlanPdfUrl = () => {\n        return config && config.planDocumentUrl ? config.planDocumentUrl : null\n    }\n\n    const getPreparedUrlForDownload = () => {\n        if (getPlanPdfUrl()) {\n            return process.env.REACT_APP_API_HOST + '/helper/view-pdf-url/?url=' + encodeURIComponent(getPlanPdfUrl())\n        }\n\n        return null\n    }\n\n    const onDownloadClick = () => {\n        const model = config && config.model && config.model.toLowerCase().replace(' ', '_')\n        const referenceCode = refcode ? refcode : config && config.refcode\n\n        handlePlanPdfDownload(getPreparedUrlForDownload(), model, referenceCode)\n    }\n\n    return (\n        <Modal title={getModalTitle()} showFooter={false} customClass={'modal--configurable-baths'} onClose={onClose}>\n            <div className=\"model--body-container\">\n                <div className=\"modal--body-content\">\n                    {config && config.material && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"color\" defaultMessage=\"Color\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                <span>{config.material.colorName ? capitalizeFirstLetter(config.material.colorName) + ' - ' : ''}</span>\n                                <span>{config.material.finish ? intl.formatMessage({ id: config.material.finish }) : ''}</span>&nbsp;\n                                <span className=\"material-brand\">{config.material.brand ? capitalizeFirstLetter(config.material.brand) + ' ® ' : ''}</span>\n                            </div>\n                        </div>\n                    )}\n\n                    {/* DATA FOR WASHBASINS */}\n\n                    {config && config.legs && config.legs.position && config.legs.position.length > 0 && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"edge\" defaultMessage=\"Edge\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                {config.legs.position.map((item, index) => (\n                                    <div key={index}>\n                                        {item.left && (\n                                            <div>\n                                                <Translation id=\"position\" defaultMessage=\"Position\" />: {item.left}\n                                            </div>\n                                        )}\n                                    </div>\n                                ))}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.countertop && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"countertop\" defaultMessage=\"Countertop\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                {config.countertop.length && (\n                                    <div>\n                                        <Translation id=\"length\" defaultMessage=\"Length\" />\n                                        :&nbsp;{measureFromMetric(config.countertop.length, IN_DECIMALS) + ' ' + units}\n                                    </div>\n                                )}\n                                {config.countertop.width && (\n                                    <div>\n                                        <Translation id=\"width\" defaultMessage=\"Width\" />\n                                        :&nbsp;{measureFromMetric(config.countertop.width, IN_DECIMALS) + ' ' + units}\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.basins && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"basins_and_taps\" defaultMessage=\"Basins and taps\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                <div>\n                                    <Translation id=\"pieces\" defaultMessage=\"Pieces\" />\n                                    :&nbsp;{config.basins.items && config.basins.items.length}\n                                </div>\n                                <div>\n                                    <Translation id=\"position\" defaultMessage=\"Position\" />:\n                                </div>\n                                {config.basins.centered && (\n                                    <div>\n                                        <Translation id=\"centered_on_the_countertop\" defaultMessage=\"Centered on the countertop\" />\n                                    </div>\n                                )}\n                                {config.basins.left && (\n                                    <div>\n                                        {measureFromMetric(config.basins.left, IN_DECIMALS)}&nbsp;{units}{' '}\n                                        <Translation id=\"from_the_left_edge_of_the_countertop\" defaultMessage=\"from the left edge of the countertop\" />\n                                    </div>\n                                )}\n                                {config.basins.bottom && (\n                                    <div>\n                                        {measureFromMetric(config.basins.bottom, IN_DECIMALS)}&nbsp;{units}{' '}\n                                        <Translation id=\"from_the_lower_edge_of_the_countertop\" defaultMessage=\"from the lower edge of the countertop\" />\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.towelRails && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"towel_rails\" defaultMessage=\"Towel rails\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                <div>\n                                    <Translation id=\"pieces\" defaultMessage=\"Pieces\" />\n                                    :&nbsp;{config.towelRails.items && config.towelRails.items.length}\n                                </div>\n\n                                {config.towelRails.items &&\n                                    config.towelRails.items.map((item, index) => (\n                                        <div key={index}>\n                                            {item.length && (\n                                                <div>\n                                                    <Translation id=\"size\" defaultMessage=\"Size\" />\n                                                    :&nbsp;{measureFromMetric(item.length, IN_DECIMALS)}&nbsp;{units}{' '}\n                                                </div>\n                                            )}\n                                        </div>\n                                    ))}\n\n                                <div className=\"py-1\">\n                                    <span className=\"font-weight-normal\">\n                                        <Translation id=\"positions\" defaultMessage=\"Positions\" />:\n                                    </span>\n                                </div>\n                                <div>\n                                    {config.towelRails.centered ? (\n                                        <Translation id=\"centered\" defaultMessage=\"Centered\" />\n                                    ) : (\n                                        <Translation id=\"no_centered\" defaultMessage=\"No centered\" />\n                                    )}\n                                </div>\n                                {config.towelRails.left && (\n                                    <div>\n                                        {measureFromMetric(config.towelRails.left, IN_DECIMALS)}&nbsp;{units}{' '}\n                                        <Translation id=\"from_the_left_edge_of_the_countertop\" defaultMessage=\"from the left edge of the countertop\" />\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.soapHolders && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"soap_holders\" defaultMessage=\"Soap holders\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                {config.soapHolders.bottom && (\n                                    <div>\n                                        {measureFromMetric(config.soapHolders.bottom, IN_DECIMALS)}&nbsp;{units}{' '}\n                                        <Translation id=\"from_the_lower_of_the_countertop\" defaultMessage=\"from the lower of the countertop\" />\n                                    </div>\n                                )}\n                                <div className=\"py-1\">\n                                    <span className=\"font-weight-normal\">\n                                        <Translation id=\"positions\" defaultMessage=\"Positions\" />:\n                                    </span>\n                                </div>\n                                {config.soapHolders.items &&\n                                    config.soapHolders.items.map((item, index) => (\n                                        <div key={index}>\n                                            {item.left && (\n                                                <div>\n                                                    {measureFromMetric(item.left, IN_DECIMALS)}&nbsp;{units}{' '}\n                                                    <Translation id=\"from_the_left_edge_of_the_countertop\" defaultMessage=\"from the left edge of the countertop\" />\n                                                </div>\n                                            )}\n                                            {item.diameter && (\n                                                <div>\n                                                    <Translation id=\"diameter\" defaultMessage=\"Diameter\" />\n                                                    :&nbsp;{measureFromMetric(item.diameter, IN_DECIMALS)}&nbsp;{units}\n                                                </div>\n                                            )}\n                                        </div>\n                                    ))}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.tissueSlots && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"tissue_slots\" defaultMessage=\"Tissue slots\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                <div className=\"py-1\">\n                                    <span className=\"font-weight-normal\">\n                                        <Translation id=\"positions\" defaultMessage=\"Positions\" />:\n                                    </span>\n                                </div>\n                                {config.tissueSlots.items &&\n                                    config.tissueSlots.items.map((item, index) => (\n                                        <div key={index}>\n                                            {item.left && (\n                                                <div>\n                                                    {measureFromMetric(item.left, IN_DECIMALS)}&nbsp;{units}{' '}\n                                                    <Translation id=\"from_the_left_edge_of_the_countertop\" defaultMessage=\"from the left edge of the countertop\" />\n                                                </div>\n                                            )}\n                                            {item.bottom && (\n                                                <div>\n                                                    {measureFromMetric(item.bottom, IN_DECIMALS)}&nbsp;{units}{' '}\n                                                    <Translation id=\"from_the_lower_edge_of_the_countertop\" defaultMessage=\"from the lower edge of the countertop\" />\n                                                </div>\n                                            )}\n                                        </div>\n                                    ))}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.tapDrills && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"tap_drills\" defaultMessage=\"Tap drills\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                <div>\n                                    <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                    :&nbsp;{config.tapDrills.items && config.tapDrills.items.length}\n                                </div>\n                                <div className=\"py-1\">\n                                    <span className=\"font-weight-normal\">\n                                        <Translation id=\"positions\" defaultMessage=\"Positions\" />:\n                                    </span>\n                                </div>\n                                {config.tapDrills.items &&\n                                    config.tapDrills.items.map((item, index) => (\n                                        <div key={index}>\n                                            {item.left && (\n                                                <div>\n                                                    {measureFromMetric(item.left, IN_DECIMALS)}&nbsp;{units} <Translation id=\"from_left_edge\" defaultMessage=\"from left edge\" />\n                                                </div>\n                                            )}\n                                            {item.top && (\n                                                <div>\n                                                    {measureFromMetric(item.top, IN_DECIMALS)}&nbsp;{units} <Translation id=\"from_top_edge\" defaultMessage=\"from top edge\" />\n                                                </div>\n                                            )}\n                                        </div>\n                                    ))}\n                            </div>\n                        </div>\n                    )}\n\n                    {/* DATA FOR SHOWERTRAYS */}\n\n                    {config && config.showertray && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"showertray\" defaultMessage=\"Showertray\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                {config.showertray.length && (\n                                    <div>\n                                        <Translation id=\"length\" defaultMessage=\"Length\" />\n                                        :&nbsp;{measureFromMetric(config.showertray.length, IN_DECIMALS) + ' ' + units}\n                                    </div>\n                                )}\n                                {config.showertray.width && (\n                                    <div>\n                                        <Translation id=\"width\" defaultMessage=\"Width\" />\n                                        :&nbsp;{measureFromMetric(config.showertray.width, IN_DECIMALS) + ' ' + units}\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.drainDrill && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"drain_drill\" defaultMessage=\"Drain drill\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                {config.drainDrill.diameter && (\n                                    <div>\n                                        <Translation id=\"diameter\" defaultMessage=\"Diameter\" />\n                                        :&nbsp;{measureFromMetric(config.drainDrill.diameter, IN_DECIMALS)}&nbsp;{units}\n                                    </div>\n                                )}\n                                <div className=\"py-1\">\n                                    <span className=\"font-weight-normal\">\n                                        <Translation id=\"positions\" defaultMessage=\"Positions\" />\n                                    </span>\n                                    :\n                                </div>\n                                {config.drainDrill.top && (\n                                    <div>\n                                        {measureFromMetric(config.drainDrill.top, IN_DECIMALS)}&nbsp;{units} <Translation id=\"from_top_edge\" defaultMessage=\"from top edge\" />\n                                    </div>\n                                )}\n                                {config.drainDrill.left && (\n                                    <div>\n                                        {measureFromMetric(config.drainDrill.left, IN_DECIMALS)}&nbsp;{units} <Translation id=\"from_left_edge\" defaultMessage=\"from left edge\" />\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.straightCutOut && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"straight_cut_out\" defaultMessage=\"Straight cut out\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                {config.straightCutOut.size && (\n                                    <div>\n                                        <Translation id=\"size\" defaultMessage=\"Size\" />\n                                        :&nbsp;{measureFromMetric(config.straightCutOut.size, IN_DECIMALS)}\n                                    </div>\n                                )}\n                                {config.straightCutOut.items && config.straightCutOut.items.length > 0 && (\n                                    config.straightCutOut.items.map((item, index) => (\n                                        <div key={index}>\n                                            {item.vertex && (\n                                                <div className=\"py-1\">\n                                                    <span className=\"font-weight-normal\">\n                                                        <Translation id=\"vertex\" defaultMessage=\"Vertex\" />:&nbsp;\n                                                        {item.vertex}\n                                                    </span>\n                                                </div>\n                                            )}\n                                            {item.lengthDistance && (\n                                                <div>\n                                                    <Translation id=\"length\" defaultMessage=\"Length\" />:&nbsp;\n                                                    {measureFromMetric(item.lengthDistance, IN_DECIMALS) + ' ' + units}\n                                                </div>\n                                            )}\n                                            {item.widthDistance && (\n                                                <div>\n                                                    <Translation id=\"width\" defaultMessage=\"Width\" />:&nbsp;\n                                                    {measureFromMetric(item.widthDistance, IN_DECIMALS) + ' ' + units}\n                                                </div>\n                                            )}\n                                        </div>\n                                    ))\n                                )}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.diagonalCut && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"diagonal_cut\" defaultMessage=\"Diagonal cut\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                <div>\n                                    <Translation id=\"size\" defaultMessage=\"Size\" />\n                                    :&nbsp;{measureFromMetric(config.diagonalCut.size, IN_DECIMALS)}\n                                </div>\n                                {config.diagonalCut.items && config.diagonalCut.items.length > 0 && (\n                                    config.diagonalCut.items.map((item, index) => (\n                                        <div key={index}>\n                                            {item.vertex && (\n                                                <div className=\"py-1\">\n                                                    <span className=\"font-weight-normal\">\n                                                        <Translation id=\"vertex\" defaultMessage=\"Vertex\" />:&nbsp;\n                                                        {item.vertex}\n                                                    </span>\n                                                </div>\n                                            )}\n                                            {item.lengthDistance && (\n                                                <div>\n                                                    <Translation id=\"length\" defaultMessage=\"Length\" />:&nbsp;\n                                                    {measureFromMetric(item.lengthDistance, IN_DECIMALS) + ' ' + units}\n                                                </div>\n                                            )}\n                                            {item.widthDistance && (\n                                                <div>\n                                                    <Translation id=\"width\" defaultMessage=\"Width\" />:&nbsp;\n                                                    {measureFromMetric(item.widthDistance, IN_DECIMALS) + ' ' + units}\n                                                </div>\n                                            )}\n                                            {item.diagonalLength && (\n                                                <div>\n                                                    <Translation id=\"diagonal_length\" defaultMessage=\"Diagonal length\" />:&nbsp;\n                                                    {measureFromMetric(item.diagonalLength, IN_DECIMALS) + ' ' + units}\n                                                </div>\n                                            )}\n                                        </div>\n                                    ))\n                                )}\n                            </div>\n                        </div>\n                    )}\n\n\n                    {config && config.showerFrame && config.showerFrame.items && config.showerFrame.items.length > 0 && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"shower_frame\" defaultMessage=\"Shower frame\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                {config.showerFrame.size && (\n                                    <div>\n                                        <Translation id=\"size\" defaultMessage=\"Size\" />:&nbsp;\n                                        {measureFromMetric(config.showerFrame.size, IN_DECIMALS)}\n                                    </div>\n                                )}\n                                <span className=\"font-weight-normal\">\n                                    <Translation id=\"sides\" defaultMessage=\"Sides\" />:\n                                </span>\n                                {config.showerFrame.items.map((item, index) => (\n                                    <div key={index}>\n                                        <div>{item.side}</div>\n                                    </div>\n                                ))}\n                            </div>\n                        </div>\n                    )}\n\n                    {config && config.screenSlot && config.screenSlot.items && config.screenSlot.items.length > 0 && (\n                        <div className=\"body-content__item\">\n                            <div>\n                                <h4>\n                                    <Translation id=\"screen_slot\" defaultMessage=\"Screen slot\" />:\n                                </h4>\n                            </div>\n                            <div className=\"body-content__item--desc\">\n                                {config.screenSlot.items.map((item, index) => (\n                                    <div key={index}>\n                                        <div>\n                                            {item.position && (\n                                                <div>\n                                                    <span className=\"font-weight-normal\">\n                                                        <Translation id=\"position\" defaultMessage=\"Position\" />:&nbsp;\n                                                        {item.position}\n                                                    </span>\n                                                </div>\n                                            )}\n                                            {item.side && (\n                                                <div>\n                                                    <Translation id=\"side\" defaultMessage=\"Side\" />:&nbsp;\n                                                    {item.side}\n                                                </div>\n                                            )}\n                                            {item.length && (\n                                                <div>\n                                                    <Translation id=\"length\" defaultMessage=\"Length\" />:&nbsp;\n                                                    {measureFromMetric(item.length, IN_DECIMALS)}&nbsp;{units}\n                                                </div>\n                                            )}\n                                            {item.width && (\n                                                <div>\n                                                    <Translation id=\"width\" defaultMessage=\"Width\" />:&nbsp;\n                                                    {measureFromMetric(item.width, IN_DECIMALS)}&nbsp;{units}\n                                                </div>\n                                            )}\n                                        </div>\n                                    </div>\n                                ))}\n                            </div>\n                        </div>\n                    )}\n                </div>\n                {showBtnDownload && getPlanPdfUrl() && (\n                    <div className=\"body-action--download\">\n                        <i class=\"fas fa-download\" />\n                        <button onClick={onDownloadClick}>\n                            <Translation id=\"download_map\" defaultMessage=\"Download map\" />\n                        </button>\n                    </div>\n                )}\n            </div>\n\n            {showBtnEdit && (\n                <div className=\"modal--body-footer\">\n                    <div className=\"body-footer--edit\">\n                        <LocalizedLink routeId=\"ROUTE_CONFIG_CUT_TO_SIZE\"\n                                       params={{\n                                           type: config.product,\n                                           model: config.model.toLowerCase().replace(' ', '_'),\n                                           fabricator: !!config.thirdParty ? 'local' : 'global',\n                                           refcode: refcode\n                        }}>\n                            <button>\n                                <Translation id=\"edit_configuration\" defaultMessage=\"Edit configuration\" />\n                                <i class=\"fas fa-pen\"></i>\n                            </button>\n                        </LocalizedLink>\n                    </div>\n                </div>\n            )}\n        </Modal>\n    )\n}\n\nexport default injectIntl(connect(mapStateToProps, null)(ModalConfigurationDetails))\n","import React from 'react'\nimport {ReactComponent as QuickShipIcon} from \"../../../../assets/img/cut-to-size/quickShipIcon.svg\";\nimport { injectIntl } from 'react-intl'\nimport ReactTooltip from 'react-tooltip'\n\nconst DisplayQuickShipIndicator = ({ tooltipId, iconStyle, intl  }) => {\n    return (\n        <span\n            data-tip={intl.formatMessage({\n               id: 'quickship_product',\n                defaultMessage: 'QuickShip Product'\n            })}\n            data-for={tooltipId}\n        >\n            <QuickShipIcon style={iconStyle || { position: \"absolute\", top: \"10%\" }} />\n            <ReactTooltip id={tooltipId} effect=\"solid\" place=\"bottom\" className=\"tooltip__information\" />\n        </span>\n    )\n}\n\nexport default injectIntl(DisplayQuickShipIndicator)","import React, { forwardRef } from 'react'\nimport Translation from '../global/Translation'\nimport { injectIntl, defineMessages } from 'react-intl'\nimport debounce from 'lodash/debounce'\nimport InputNumber from '../global/InputNumber'\nimport LocalizedLink from '../global/LocalizedLink'\nimport Alerts from '../alerts/Alerts'\nimport ProductDisplayName from '../global/ProductDisplayName'\nimport ProductImage from '../catalog/ProductImage'\nimport DisplayBrand from '../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayPrice from '../catalog/rectangleResult/displays/DisplayPrice'\nimport DisplayPriceMktools from '../catalog/rectangleResult/displays/DisplayPriceMktools'\nimport DisplayLotId from '../catalog/rectangleResult/displays/DisplayLotId'\nimport Spinner from '../global/Spinner'\nimport moment from 'moment'\nimport mallLarge from '../../assets/img/logos/mall-large.jpg'\nimport { ElaborationOptionsMap } from '../cut-to-size/CutToSizeMaps'\nimport ReactTooltip from 'react-tooltip'\nimport DatePicker from 'react-datepicker'\nimport 'react-datepicker/dist/react-datepicker-cssmodules.css'\nimport { getNextWorkingDay } from '../../helpers'\nimport LineSegmentationV2 from './LineSegmentationV2'\nimport getNumberFormat from '../getNumberFormat'\nimport confirm from '../global/extendedConfirm'\nimport ModalConfigurationDetails from '../cut-to-size/configurable-baths/ModalConfigurationDetails'\nimport { getConfigLineName } from '../orders/new-order-history/Utils'\nimport { ReactComponent as QuickShipIcon } from '../../assets/img/cut-to-size/quickShipIcon.svg'\nimport {FormattedHTMLMessage} from \"react-intl\"\nimport { isNewIndicator, isUpcomingIndicator, canDisplayDiscontinued } from '../../store/products/reducers'\n\n// Labels\nimport DisplayOutletIndicator from '../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport DisplayUpcomingIndicator from '../catalog/rectangleResult/displays/DisplayUpcomingIndicator'\nimport NaturalStoneIndicator from './indicators/NaturalStoneIndicator'\nimport CustomProductIndicator from './indicators/CustomProductIndicator'\nimport DisplayDiscontinued from '../catalog/rectangleResult/displays/DisplayDiscontinued'\nimport DisplayNewIndicator from '../catalog/rectangleResult/displays/DisplayNewIndicator'\nimport DisplayQuickShipIndicator from '../catalog/rectangleResult/displays/DisplayQuickShipIndicator'\n\ndefineMessages({\n    WALL_SAMPLE: {\n        id: 'wall_sample',\n        description: 'wall_sample',\n        defaultMessage: 'Wall Sample'\n    },\n    CUSTOM_SAMPLE: {\n        id: 'custom_sample',\n        description: 'custom_sample',\n        defaultMessage: 'Customer Sample'\n    },\n    project_expired_prices_not_charged: {\n        id: 'project_expired_prices_not_charged',\n        description: 'project_expired_prices_not_charged',\n        defaultMessage: 'The quoted price has expired. Please contact our commercial team'\n    },\n    for_full_trucks_or_containers_desired_delivery_date_get_affect: {\n        id: 'for_full_trucks_or_containers_desired_delivery_date_get_affect',\n        description: 'for_full_trucks_or_containers_desired_delivery_date_get_affect',\n        defaultMessage:\n            'For full trucks or containers, the desired delivery date affects all items in your order. You can modify the delivery date for all products on the block on the right.'\n    },\n    changing_the_preferred_delivery_date_will_affect_all_custom_products: {\n        id: 'changing_the_preferred_delivery_date_will_affect_all_custom_products',\n        description: 'changing_the_preferred_delivery_date_will_affect_all_custom_products',\n        defaultMessage: 'Changing the preferred delivery date will affect all custom products in your cart.'\n    },\n    showing_quickship: {\n        id: 'showing_quickship',\n        description: 'Showing QuickShip products',\n        defaultMessage: 'Showing QuickShip products'\n    },\n    hiding_quickship: {\n        id: 'hiding_quickship',\n        description: 'Hiding QuickShip products',\n        defaultMessage: 'Hiding QuickShip products'\n    },\n    quick_ship_estimated_time: {\n        id: 'quick_ship_estimated_time',\n        description: 'Fast delivery: Estimated time to deliver is <b>2-4 weeks</b>',\n        defaultMessage: 'Fast delivery: Estimated time to deliver is <b>2-4 weeks</b>'\n    },\n    quick_ship_available_colors: {\n        id: 'quick_ship_available_colors',\n        description: 'Quickship products available on selected colors catalogue',\n        defaultMessage: 'Quickship products available on selected colors catalogue'\n    },\n    no_quick_ship_estimated_time: {\n        id: 'no_quick_ship_estimated_time',\n        description: 'Estimated time to deliver is 12 weeks',\n        defaultMessage: 'Estimated time to deliver is 12 weeks'\n    },\n    configurable_order_finished_header: {\n        id: 'configurable_order_finished_header',\n        description: 'Your order for custom-made products has been finished successfully',\n        defaultMessage: 'Your order for custom-made products has been finished successfully'\n    },\n    quick_ship_configurable_order_finished_header: {\n        id: 'quick_ship_configurable_order_finished_header',\n        description: 'Your order for custom-made products (Quickship) has been finished successfully',\n        defaultMessage: 'Your order for custom-made products (Quickship) has been finished successfully'\n    },\n   /*  estimated_delivery_on_4_weeks: {\n        id: 'estimated_delivery_on_4_weeks',\n        description: 'Estimated delivery on <b>2-4 weeks</b>',\n        defaultMessage: 'Estimated delivery on <b>2-4 weeks</b>'\n    } */\n})\nclass CartLine extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            showHelp: false,\n            showComment: false,\n            showConfigBathModal: false,\n            slaDate: null,\n            hideSlaDateNonCts: false\n        }\n    }\n\n    componentDidMount() {\n        this.setEstimatedDeliveryDate()\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (this.props.linesSlaDate !== prevProps.linesSlaDate) {\n            this.setEstimatedDeliveryDate()\n        }\n    }\n\n    shouldShowSlaDate() {\n        const { line, linesSlaDateVisibility, isLoadingLinesSlaDate, slaDate } = this.props\n        const { hideSlaDateNonCts } = this.state\n\n        // Conditions for displaying the block\n        if (isLoadingLinesSlaDate) return true\n        if (slaDate) return true\n\n        // Conditions to hide the block\n        if (linesSlaDateVisibility && linesSlaDateVisibility[line.lineId]) return false\n        if (!line.cutToSize && hideSlaDateNonCts) return false\n        if (line.cutToSize && this.props.hideSlaDatesForCts) return false\n\n        return true\n    }\n\n    setEstimatedDeliveryDate() {\n        const slaDateData = this.props.linesSlaDate && this.props.linesSlaDate[this.props.line.lineId]\n        let estimatedDeliveryDate\n\n        //If the slaDate is comming with date (yyyy-mm-dd) we use this date\n        if (slaDateData && slaDateData.slaDate) {\n            estimatedDeliveryDate = moment(slaDateData.slaDate)\n        }\n\n        if (slaDateData && slaDateData.naturalDays && !slaDateData.slaDate) {\n            //If the slaDate is comming with only natural days we use only natural days to create the date.\n            estimatedDeliveryDate = moment().add(slaDateData.naturalDays, 'days')\n        }\n\n        if (estimatedDeliveryDate && estimatedDeliveryDate.isValid()) {\n            this.setState({ slaDate: estimatedDeliveryDate })\n        }\n    }\n\n    handleOpenConfigBathModal() {\n        this.setState({ showConfigBathModal: true })\n    }\n\n    getCheckoutType() {\n        if (this.props.isIkeaCenter) return 'ikea'\n        else if (this.props.isMktoolsCenter) return 'mktools'\n        else if (this.props.isLowesCenter) return 'lowes'\n        else if (this.props.userType === 'SHOP') return 'shop'\n        else if (this.props.isEndiCenter) return 'endi'\n        else return 'default'\n    }\n\n    editSegmentation = () => {\n        this.props.loadThisSegmentation(this.props.line.segmentation)\n        this.props.showSegmentationModal('edit', () => this.props.changeCartLineSegmentation(this.props.line), this.props.line.productId)\n    }\n\n    getMin(line) {\n        return line.product.min\n    }\n\n    getLimit(line) {\n        if (line.extra && line.extra.mall) {\n            return this.getLimitMall(line)\n        }\n        if (line.product.discontinued) {\n            if (this.props.isMktoolsUsaCenter && this.getLimitMktool(line) < this.getLimitDiscontinued(line)) return this.getLimitMktool(line)\n            else return this.getLimitDiscontinued(line)\n        } else if (this.props.isMktoolsUsaCenter) return this.getLimitMktool(line)\n        else if (line.product.isMktool) return this.getLimitMktool(line)\n        else if (line.extra && line.extra.outlet) return this.getLimitOutlet(line)\n        else return null\n    }\n\n    getLimitMktool(line) {\n        let result = line.qty\n        if (line.product.isMktool) {\n            if (this.props.isMktoolsUsaCenter && (line.product.max || line.product.max === 0)) result = line.qty + line.product.max\n            else result = result + 1000\n        }\n        if (this.props.qtyProductCart[line.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[line.product.productId], 10)\n        }\n        return result\n    }\n\n    getLimitOutlet(line) {\n        let result = line.qty\n        if (line.product.stock_outlet) {\n            result = result + parseInt(line.product.stock_outlet, 10)\n        }\n        if (this.props.qtyProductCart[line.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[line.product.productId], 10)\n        }\n        return result\n    }\n\n    getLimitDiscontinued(line) {\n        let result = line.qty\n        if (line.product.stock + line.product.stock_outlet) {\n            result = result + parseInt(line.product.stock + line.product.stock_outlet, 10)\n        }\n        if (this.props.qtyProductCart[line.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[line.product.productId], 10)\n        }\n        return result\n    }\n\n    getLimitMall(line) {\n        let result = line.qty\n        if (line.extra && line.extra.mall && line.extra.outlet && line.product.stock_outlet > 0) {\n            result = result + parseInt(line.product.stock_outlet, 10)\n        } else {\n            result = result + parseInt(line.product.stock, 10)\n        }\n        if (this.props.qtyProductCart[line.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[line.product.productId], 10)\n        }\n        return result\n    }\n\n    saveComment = debounce(() => this.props.saveCartLineComment(this.props.line.lineId, this.inputComment.value), 500)\n\n    getNewPrice() {\n        let { line } = this.props\n        let price = null\n        if (this.props.linesPrice[line.lineId]) {\n            let priceYYYY = this.props.linesPrice[line.lineId].price\n            price = priceYYYY ? priceYYYY : 0\n        }\n\n        let numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n\n        if (this.hasZT00Price() && this.props.linesPrice[line.lineId].coin === 'JPY') {\n            numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n        }\n\n        return price && numberFormat.format(price)\n    }\n\n    hasZT00Price() {\n        let { line } = this.props\n        let priceZT00 = false\n        if (this.props.linesPrice[line.lineId]) {\n            priceZT00 = this.props.linesPrice[line.lineId].hasZT00\n        }\n        return priceZT00\n    }\n\n    isOutdated() {\n        const { line } = this.props\n        const linePrice = this.props.linesPrice[line.lineId]\n        return !!linePrice && !!linePrice.outdated\n    }\n\n    getNewPricePerUnit() {\n        let { line } = this.props\n        let price = null\n        if (this.props.linesPrice[line.lineId]) {\n            let priceYYYY = this.props.linesPrice[line.lineId].pricePerUnit\n            price = priceYYYY ? priceYYYY : 0\n        }\n        let numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n\n        if (this.hasZT00Price() && this.props.linesPrice[line.lineId].coin === 'JPY') {\n            numberFormat = getNumberFormat(this.props.lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n        }\n\n        return price && numberFormat.format(price)\n    }\n\n    canViewSLA = () => {\n        return this.props.type === 'checkout' && !this.props.isIkeaCenter && !this.props.isLowesCenter && !this.props.isMktoolsCenter\n    }\n\n    showLongestDeliveryDate = (storedDesiredDate, slaDate) => {\n        let dateToShow = null\n\n        if (storedDesiredDate && slaDate) {\n            // If the preferred delivery date is after the sla service date, show the preferred delivery date\n            if (storedDesiredDate.isAfter(slaDate)) {\n                dateToShow = storedDesiredDate.format('L')\n            }\n\n            // If the preferred delivery date is before or the same as the sla service date, show the sla service date\n            if (storedDesiredDate.isBefore(slaDate) || storedDesiredDate.isSame(slaDate)) {\n                dateToShow = slaDate.format('L')\n            }\n        } else if (slaDate) {\n            // If storedDesiredDate is null, show the sla service date\n            dateToShow = slaDate.format('L')\n        }\n\n        return dateToShow\n    }\n\n    handleShowSlaDateNonCts = (preferredDate, slaDate, line) => {\n        if (!line.cutToSize && preferredDate && slaDate) {\n            if (preferredDate.isAfter(slaDate, 'days')) {\n                this.setState({ hideSlaDateNonCts: true })\n            } else {\n                this.setState({ hideSlaDateNonCts: false })\n            }\n        }\n    }\n\n    handleSetAllLinesDeliveryDatesCts = (date, line, slaDateState) => {\n        if (line.cutToSize) {\n            this.props.setAllLinesDeliveryDatesCts(date, slaDateState)\n        }\n    }\n\n    confirmPreferredDeliveryDateChange = onClick => {\n        confirm(this.props.intl.formatMessage({ id: 'changing_the_preferred_delivery_date_will_affect_all_custom_products' }), {\n            isV2: true,\n            textCancel: this.props.intl.formatMessage({ id: 'cancel' }),\n            textOk: this.props.intl.formatMessage({ id: 'confirm' })\n        }).then(\n            confirm => {\n                onClick()\n            },\n            cancel => {}\n        )\n    }\n    handleShowSlaDate = (preferredDate, slaDate) => {\n        if (preferredDate && slaDate) {\n            if (preferredDate.isAfter(slaDate, 'days')) {\n                this.setState({ showSlaDate: false })\n            } else {\n                this.setState({ showSlaDate: true })\n            }\n        }\n    }\n\n    canViewConfigBath = () => {\n        if (this.props.line.cutToSize && this.props.line.cutToSize.config) {\n            return true\n        }\n\n        return false\n    }\n\n    confirmDeleteCartItem = lineId => {\n        confirm(this.props.intl.formatMessage({ id: 'DELETE_ITEM_LOWES_CONFIRM' }), { \n            isV2: true, \n            textOk: this.props.intl.formatMessage({ id: 'delete' }), \n            textCancel: this.props.intl.formatMessage({ id: 'cancel' })\n         }).then(\n            confirm => {\n                this.props.onDelete(lineId)\n            },\n            cancel => {}\n        )\n    }\n    isQuickShip = () => !!(this.props.line.cutToSize && this.props.line.cutToSize.config && this.props.line.cutToSize.config.thirdParty)\n\n    canShowDatePicker = () => this.isQuickShip() || (!this.props.isCheckoutStepOneButtonNextDisabled && this.state.slaDate && !this.state.slaDate.isSame(moment(), 'day'))\n\n    getMinPreferredDeliveryDate = () => {\n        let additionalDays = 1;\n        if (this.props.selectedCenter == 1100) additionalDays = this.props.minDeliveryDate\n        else if (this.isQuickShip()) additionalDays = 28\n\n        return getNextWorkingDay(additionalDays)\n    }\n\n    isProductFromMall() {\n        if (this.props.line && this.props.line.extra && this.props.line.extra.mall) {\n            return true\n        }\n\n        return false\n    }\n\n    getProductTitle(line) {\n        if (line.cutToSize) {\n            return (\n                <React.Fragment>\n                    {/* Color name (product name) */}\n                    {line.cutToSize.colorName && <span className=\"feature\">{line.cutToSize.colorName}</span>}\n\n                    {/* Elaboration */}\n                    {line.cutToSize.elaboration && <span className=\"feature\">{this.props.intl.formatMessage(ElaborationOptionsMap[line.cutToSize.elaboration].name)}</span>}\n\n                    {/* Dimensions - Format */}\n                    {line.cutToSize.width && line.cutToSize.height && line.cutToSize.thickness && (\n                        <span className=\"feature\">\n                            {this.props.adaptedFormat(line.cutToSize.width + 'X' + line.cutToSize.height, {\n                                upper: true,\n                                spaced: true,\n                                showUnits: true\n                            })}\n                        </span>\n                    )}\n\n                    {/* Finish */}\n                    {line.cutToSize.finish && (\n                        <span className=\"feature\">\n                            <Translation id={line.cutToSize.finish} />\n                        </span>\n                    )}\n\n                    {/* Thickness */}\n                    {line.cutToSize.thickness && <span className=\"feature\">{line.cutToSize.thickness}&nbsp;cm</span>}\n                </React.Fragment>\n            )\n        } else if (line.product) {\n            const product = line.product\n            const isCheckoutStepTwo = this.props.typeLine && this.props.typeLine === 'checkout_v2_summary'\n\n            return (\n                <React.Fragment>\n                    {isCheckoutStepTwo ? (\n                        <ProductDisplayName product={product} style={{ display: 'block', fontSize: '14px' }} />\n                    ) : (\n                        <ProductDisplayName product={product} style={{ marginRight: '4px' }} />\n                    )}\n\n                    {/* Subtype */}\n                    {product.subtypeName &&\n                        <span className={`feature ${isCheckoutStepTwo ? 'feature-in-step-two' : ''}`}>\n                            <Translation id={product.subtypeName} />\n                        </span>\n                    }\n\n                    {/* Dimensions - Format */}\n                    {product.format && (\n                        <span className={`feature ${isCheckoutStepTwo ? 'feature-in-step-two' : ''}`}>\n                            ({this.props.adaptedFormat(product.format, { upper: true, showUnits: true })})\n                        </span>\n                    )}\n\n                    {/* Finish */}\n                    {product.finish && (\n                        <span className={`feature ${isCheckoutStepTwo ? 'feature-in-step-two' : ''}`}>\n                            <Translation id={product.finish} />\n                        </span>\n                    )}\n\n                    {/* Thickness */}\n                    {product.thickness && <span className={`feature ${isCheckoutStepTwo ? 'feature-in-step-two' : ''}`}>{product.thickness + ' cm'}</span>}\n                </React.Fragment>\n            )\n        } else {\n            return null\n        }\n    }\n\n    renderPriceDetails(line) {\n        const isCheckoutStepOne = this.props.typeLine && this.props.typeLine === 'checkout_v2'\n        const isCheckoutStepTwo = this.props.typeLine && this.props.typeLine === 'checkout_v2_summary'\n\n        if ((line && line.product && line.product.pricesMktools) || (line.extra && line.extra.itsFree)) {\n            // Mostrar precio usando DisplayPriceMktools\n            return (\n                <div className={`line-price-info ${isCheckoutStepTwo ? 'line-price-info-in-step-two' : ''}`}>\n                    <div className=\"line-price\">\n                        <DisplayPriceMktools prices={line.product.pricesMktools} group={this.props.priceGroup} />\n                    </div>\n                </div>\n            )\n        }\n\n        if (this.props.canViewPricesPhase2) {\n            if (this.props.calculatingLinesPrice) {\n                // Mostrar spinner mientras se calculan los precios\n                return <Spinner isLoading={true} relative small />\n            }\n\n            return (\n                <div className={`line-price-info ${isCheckoutStepTwo ? 'line-price-info-in-step-two' : ''}`}>\n                    <div className=\"line-price\">\n                        {(this.getNewPricePerUnit() && this.getNewPrice() == 0) || !this.getNewPrice() || !this.hasZT00Price() ? (\n                            <span style={{ fontSize: '16px' }}>\n                                <Translation id=\"total_price\" defaultMessage=\"Total price\" />\n                                :&nbsp;\n                                <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                            </span>\n                        ) : (\n                            this.getNewPrice()\n                        )}{' '}\n                        {this.props.linesPrice && this.props.linesPrice[line.lineId] && !this.getNewPrice() == 0 && this.hasZT00Price() && (\n                            <React.Fragment>{this.props.linesPrice[line.lineId].coin}</React.Fragment>\n                        )}\n                    </div>\n\n                    <div className=\"line-price-sub-info\">\n                        {this.isOutdated() && (\n                            <span\n                                data-tip={this.props.intl.formatMessage({\n                                    id: 'project_expired_prices_not_charged',\n                                    defaultMessage: 'Project is expired. Prices for this line are not charged.'\n                                })}\n                            >\n                                <i className=\"alert-signal far fa-exclamation-triangle\" />\n                                <ReactTooltip bg-coloreffect=\"solid\" place=\"bottom\" />\n                                &nbsp;&nbsp;\n                            </span>\n                        )}\n\n                        {isCheckoutStepOne && (\n                            <React.Fragment>\n                                {(this.getNewPricePerUnit() && this.getNewPricePerUnit() == 0) || !this.getNewPricePerUnit() || !this.hasZT00Price() ? (\n                                    <React.Fragment>\n                                        <Translation id=\"unit_price\" defaultMessage=\"Unit price\" />\n                                        :&nbsp;\n                                        <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                                    </React.Fragment>\n                                ) : (\n                                    this.getNewPricePerUnit()\n                                )}{' '}\n                            </React.Fragment>\n                        )}\n\n                        {isCheckoutStepOne && (\n                            <React.Fragment>\n                                {this.props.linesPrice && this.props.linesPrice[line.lineId] && !this.getNewPricePerUnit() == 0 && this.hasZT00Price() && (\n                                    <React.Fragment>\n                                        {this.props.linesPrice[line.lineId].coin} / {this.props.linesPrice[line.lineId].unit}\n                                    </React.Fragment>\n                                )}\n                            </React.Fragment>\n                        )}\n                    </div>\n                </div>\n            )\n        }\n\n        // Renderizar DisplayPrice para otros casos\n        return (\n            <React.Fragment>\n                <div className={`line-price-info ${isCheckoutStepTwo ? 'line-price-info-in-step-two' : ''}`}>\n                    <div className=\"line-price\">\n                        {!(line.extra && line.extra.outlet) && (\n                            <DisplayPrice\n                                userPreferences={this.props.userPreferences}\n                                priceList={this.props.priceList}\n                                userPriceList={this.props.userPriceList}\n                                product={line.product}\n                                isMktoolsCenter={this.props.isMktoolsCenter}\n                                centerId={this.props.centerId}\n                            />\n                        )}\n                    </div>\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    renderIncrementDecrementBlock(line) {\n        const isCustomSample = line.extra && line.extra.type === 'custom_sample'\n        const isBrochure = line.extra && line.extra.type === 'brochures'\n\n        let qtyToAdd = null\n\n        if (line.product !== undefined) {\n            if (line.extra && line.extra.type === 'custom_sample') {\n                qtyToAdd = 6\n            } else if (line.cutToSize) {\n                qtyToAdd = 1\n            } else if (line.product && (line.product.typeId === '01' || line.product.typeId === 'NEWS')) {\n                qtyToAdd = 1\n            } else {\n                qtyToAdd = line.product.minQty[this.props.shippingMethod]\n            }\n        }\n\n        return (\n            <React.Fragment>\n                {!(line.bundleId || line.lotId) &&\n                    (isCustomSample || isBrochure ? (\n                        <React.Fragment>\n                            {isCustomSample && (\n                                <div className=\"line-actions--plus-less\">\n                                    <Translation id=\"pack_of_qutantity\" defaultMessage=\"{packs} Pack of {quantity}\" values={{ packs: '1', quantity: line.qty }} />\n                                    &nbsp;\n                                    <Translation id=\"samples\" defaultMessage=\"Samples\" />\n                                </div>\n                            )}\n                            {isBrochure && (\n                                <div className=\"line-actions--plus-less\">\n                                    <Translation id=\"pack_of_qutantity\" defaultMessage=\"{packs} Pack of {quantity}\" values={{ packs: '1', quantity: line.qty }} />\n                                    &nbsp;\n                                    <Translation id=\"brochures\" defaultMessage=\"Brochures\" />\n                                </div>\n                            )}\n                        </React.Fragment>\n                    ) : (\n                        <React.Fragment>\n                            {this.props.onlyView ? (\n                                <div className=\"line-actions--plus-less\">\n                                    {line.extra && line.extra.itsFree && (\n                                        <div>\n                                            <span className=\"its_a_gift\" style={{ color: 'darkred' }}>\n                                                <Translation id=\"its_a_gift\" defaultMessage=\"Its a gift!\" />\n                                            </span>\n                                        </div>\n                                    )}\n                                    <span>\n                                        <Translation id=\"qty\" defaultMessage=\"Qty\" />: {line.qty}\n                                    </span>\n                                </div>\n                            ) : (\n                                <div className=\"line-actions--plus-less\">\n                                    <InputNumber\n                                        value={line.qty || ''}\n                                        change={qty => {\n                                           if (qty != line.qty) {\n                                               this.props.changeCartLineQty(line.lineId, qty)\n                                           }\n                                        }}\n                                        size=\"small\"\n                                        step={this.props.isIkeaCenter && line.product.unit === 'M2' ? 0.01 : qtyToAdd}\n                                        limit={this.getLimit(line)}\n                                        min={this.getMin(line)}\n                                        decimals={this.props.isIkeaCenter && line.product.unit === 'M2' ? 2 : 0}\n                                        dataQas=\"checkout_product_quantity-add-remove-input\"\n                                        onDelete={() => this.confirmDeleteCartItem(line.lineId)}\n                                    />\n                                </div>\n                            )}\n                        </React.Fragment>\n                    ))}\n            </React.Fragment>\n        )\n    }\n\n    renderSegmentationAndComment(line, type) {\n        return (\n            <div>\n                {this.getCheckoutType() !== 'ikea' && this.getCheckoutType() !== 'lowes' && (\n                    <React.Fragment>\n                        {/* Segmentation */}\n                        {type === 'checkout' && !this.props.isMktoolsCenter && !this.props.isMktoolsUsaCenter && (\n                            <div className=\"segmentation-box\">\n                                <LineSegmentationV2 editSegmentation={this.editSegmentation} line={line} />\n                            </div>\n                        )}\n\n                        {/* Comments */}\n                        <div className=\"comment-box\">\n                            <span className=\"comment-title\">\n                                <Translation id=\"comment\" defaultMessage=\"Comments\" />:\n                            </span>{' '}\n                            <span className=\"comment-content\">{line.comment ? line.comment.slice(0, 50) + '... ' : ''}</span>\n                            {!this.state.showComment && (\n                                <React.Fragment>\n                                    <span\n                                        className=\"comment-link\"\n                                        onClick={() => {\n                                            this.setState({ showComment: true })\n                                        }}\n                                    >\n                                        <Translation id=\"edit\" defaultMessage=\"Edit\" />\n                                    </span>\n                                </React.Fragment>\n                            )}\n                            {this.state.showComment && (\n                                <span\n                                    className=\"comment-link\"\n                                    onClick={() => {\n                                        this.setState({ showComment: false })\n                                    }}\n                                >\n                                    <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\n                                </span>\n                            )}\n                            {this.state.showComment && (\n                                <div className={`pt-1 ${!this.state.showComment ? 'info--hidden' : ''}`}>\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"text\"\n                                        placeholder={this.props.intl.formatMessage({ id: 'comment' })}\n                                        ref={input => {\n                                            this.inputComment = input\n                                        }}\n                                        onChange={e => {\n                                            this.props.changeCartLineComment(line.lineId, e.target.value)\n                                        }}\n                                        onKeyDown={() => this.saveComment()}\n                                        onPaste={() => this.saveComment()}\n                                        value={line.comment}\n                                        maxLength=\"105\"\n                                    />\n                                </div>\n                            )}\n                        </div>\n                    </React.Fragment>\n                )}\n            </div>\n        )\n    }\n\n    renderDeleteLineItem(line) {\n        return (\n            <div className=\"line-actions--delete\">\n                <button onClick={() => this.confirmDeleteCartItem(line.lineId)}>\n                    <i className=\"fal fa-trash-alt\" />\n                    <Translation id=\"delete\" defaultMessage=\"Delete\" />\n                </button>\n            </div>\n        )\n    }\n\n    renderAddToFavouriteLineItem(line) {\n        return (\n            <div className=\"line-actions--fav\">\n                <button onClick={() => this.props.onToggleFavourite(line.product.productId)}>\n                    {this.props.isFavouriteById(line.productId) ? (\n                        <React.Fragment>\n                            <i style={{ color: '#81889C' }} className=\"fas fa-heart\" />\n                            <Translation id=\"remove_favourite\" defaultMessage=\"Remove from favorites\" />\n                        </React.Fragment>\n                    ) : (\n                        <React.Fragment>\n                            <i className=\"far fa-heart\" />\n                            <Translation id=\"add_favourite\" defaultMessage=\"Add to favorites\" />\n                        </React.Fragment>\n                    )}\n                </button>\n            </div>\n        )\n    }\n\n    renderCts50PercentInitialMsg() {\n        return <Alerts status=\"warning\" alert=\"CTS_50_PERCENT_DEPOSIT_INITIAL_MSG\" cssIcon=\"fas fa-exclamation-triangle\" iconSize=\"16px\" className={'cartline-custom-alert-msg'} />\n    }\n\n    render() {\n        const { line, onOpenBundleContent, type, intl, linesDeliveryDates, typeLine, isDisabledPreferedDeliveryDatePicker, isDefaultDeliveryDate } = this.props\n\n        const DesiredDatePicker = forwardRef(({ value, onClick }, ref) => {\n            const gtmLabel = 'ec_funnel_compra_fecha_entrega_producto_modificar'\n            const tooltipId = line.lineId\n\n            const handleClick = event => {\n                event.preventDefault()\n                if (line.cutToSize && !isDisabledPreferedDeliveryDatePicker) {\n                    this.confirmPreferredDeliveryDateChange(onClick)\n                } else {\n                    onClick()\n                }\n            }\n\n            if (!desiredDate && !slaDate)\n                return (\n                    <div onClick={handleClick} className=\"prefered-date-picker\" gtm-label={gtmLabel}>\n                        <span\n                            data-tip={this.props.intl.formatMessage({\n                                id: 'for_full_trucks_or_containers_desired_delivery_date_get_affect',\n                                defaultMessage:\n                                    'For full trucks or containers, the desired delivery date affects all items in your order. You can modify the delivery date for all products on the block on the left.'\n                            })}\n                            data-for={tooltipId}\n                            style={{ color: isDisabledPreferedDeliveryDatePicker ? '#7D7D7D' : '' }}\n                        >\n                            <Translation id=\"set_preferred_date\" defaultMessage=\"Do you want to set the preferred delivery date?\" />\n                            {isDisabledPreferedDeliveryDatePicker && <ReactTooltip id={tooltipId} effect=\"solid\" place=\"bottom\" className=\"delivery__date__tooltip\" />}\n                        </span>\n                    </div>\n                )\n            else if (desiredDate && desiredDate !== slaDate)\n                return (\n                    <div onClick={handleClick} className=\"prefered-date-picker\" gtm-label={gtmLabel}>\n                        <span\n                            data-tip={this.props.intl.formatMessage({\n                                id: 'for_full_trucks_or_containers_desired_delivery_date_get_affect',\n                                defaultMessage:\n                                    'For full trucks or containers, the desired delivery date affects all items in your order. You can modify the delivery date for all products on the block on the left.'\n                            })}\n                            data-for={tooltipId}\n                            style={{ color: isDisabledPreferedDeliveryDatePicker ? '#7D7D7D' : '' }}\n                        >\n                            <Translation id=\"preferred_delivery_date_at\" defaultMessage=\"Preferred delivery date {date}\" values={{ date: value }} />\n                            {isDisabledPreferedDeliveryDatePicker && <ReactTooltip id={tooltipId} effect=\"solid\" place=\"bottom\" className=\"delivery__date__tooltip\" />}\n                        </span>\n                    </div>\n                )\n            else\n                return (\n                    <div onClick={handleClick} className=\"prefered-date-picker\" gtm-label={gtmLabel}>\n                        <span\n                            data-tip={this.props.intl.formatMessage({\n                                id: 'for_full_trucks_or_containers_desired_delivery_date_get_affect',\n                                defaultMessage:\n                                    'For full trucks or containers, the desired delivery date affects all items in your order. You can modify the delivery date for all products on the block on the left.'\n                            })}\n                            data-for={tooltipId}\n                            style={{ color: isDisabledPreferedDeliveryDatePicker ? '#7D7D7D' : '' }}\n                        >\n                            <Translation id=\"receive_on_another_date\" defaultMessage=\"Do you want to receive it on another date?\" />\n                            {isDisabledPreferedDeliveryDatePicker && <ReactTooltip id={tooltipId} effect=\"solid\" place=\"bottom\" className=\"delivery__date__tooltip\" />}\n                        </span>\n                    </div>\n                )\n        })\n\n        let image = null\n        let todayPlus15Days = new moment().add(15, 'days')\n        let today = new moment()\n        let launchDate = line.product && line.product.creationDate ? moment(line.product.creationDate) : null\n        const isQuickShip = this.isQuickShip()\n        const slaDate = this.state.slaDate ? this.state.slaDate.format('L') : null\n\n        const storedDesiredDate = linesDeliveryDates[line.lineId] ? linesDeliveryDates[line.lineId] : null\n        const desiredDate = storedDesiredDate ? storedDesiredDate.format('L') : null\n\n        if ((line.extra && (line.extra.type === 'wall_sample' || line.extra.type === 'custom_sample')) || (line.extra && line.extra.type === 'brochures')) {\n            image = <img alt=\"\" src={this.props.getImageBackground(line.product)} />\n        } else if (line.cutToSize && line.cutToSize.config && line.cutToSize.thumb) {\n            image = (\n                <div style={{ position: 'relative' }}>\n                    {isQuickShip && <DisplayQuickShipIndicator />}\n                    <img alt=\"\" src={line.cutToSize.thumb} className=\"line-configurable-img\"/>\n                </div>\n            )\n        } else {\n            image = (\n                <LocalizedLink\n                    className=\"cart_line__link_image\"\n                    routeId=\"ROUTE_PRODUCT_DETAIL\"\n                    params={{ id: line.product.productId, outlet: line.extra && !!line.extra.outlet ? 'outlet' : '' }}\n                    onClick={() => this.props.setLastSelectedProduct(line.product, line.extra)}\n                >\n                    <ProductImage product={line.product} customClass=\"recurring_orders_image\" inSmallBox={true} />\n                </LocalizedLink>\n            )\n        }\n        if (!line || !line.lineId) return null\n\n        if (line.extra && line.extra.itsFree && !this.props.canViewPricesPhase3) return null\n\n        //If the line already had a preferred delivery date and the cart has passed the isDisabledPreferredDeliveryDatePicker condition,\n        //we delete the preferred delivery date that already had that position.\n        if (linesDeliveryDates && linesDeliveryDates[line.lineId] && isDisabledPreferedDeliveryDatePicker && !isDefaultDeliveryDate) {\n            this.props.unsetLineDeliveryDate(line.lineId)\n        }\n\n        const viewConfigBathDetailsBlock = (\n            <div className=\"configurable__bath__view__config\">\n                <button onClick={() => this.handleOpenConfigBathModal()}>\n                    <Translation id=\"view_customization_details\" defaultMessage=\"View customization details\" />\n                </button>\n            </div>\n        )\n\n        const isCheckoutStepOne = typeLine && typeLine === 'checkout_v2'\n        const isCheckoutStepTwo = typeLine && typeLine === 'checkout_v2_summary'\n\n        return (\n            <div className=\"line__item__checkout\" key={line.lineId}>\n                {/* Fecha estimada */}\n                {this.canViewSLA() && isCheckoutStepOne && (\n                    <React.Fragment>\n                        <div className=\"line__item__checkout--delivery-date\">\n                            {this.shouldShowSlaDate() && (\n                                <div className=\"delivery-date-info\">\n                                    {this.props.isLoadingLinesSlaDate ? (\n                                        <Spinner isLoading={true} relative small />\n                                    ) : this.props.isCheckoutStepOneButtonNextDisabled ? (\n                                        <span>\n                                            <Translation\n                                                id=\"the_estimated_delivery_date_will_be_available_when_minimum_weight_reached\"\n                                                defaultMessage=\"The estimated delivery date will be available when the minimum weight is reached.\"\n                                            />\n                                        </span>\n                                    ) : (\n                                        isQuickShip || (this.state.slaDate && !this.state.slaDate.isSame(moment(), 'day')) ? (\n                                            isQuickShip ? (\n                                                <span className=\"delivery-date-text\">\n                                                    <FormattedHTMLMessage\n                                                        id=\"estimated_delivery_on_4_weeks\"\n                                                        defaultMessage=\"Estimated delivery on <b>2-4 weeks</b>\"\n                                                    />\n                                                </span>\n                                            ) : this.isProductFromMall() ? (\n                                                <span>\n                                                    <Translation\n                                                        id=\"undefined_delivery_date\"\n                                                        defaultMessage=\"Delivery date pending of review by Cosentino\"\n                                                    />\n                                                </span>\n                                                ) : (\n                                                    <span className=\"delivery-date-text\">\n                                                        <Translation\n                                                            id=\"estimated_delivery_on\"\n                                                            defaultMessage=\"Estimated delivery on {date}\"\n                                                            values={{ date: slaDate }}\n                                                        />\n                                                    </span>\n                                                )\n                                        ) : (\n                                            <span>\n                                                <Translation\n                                                    id=\"undefined_delivery_date\"\n                                                    defaultMessage=\"Delivery date pending of review by Cosentino\"\n                                                />\n                                            </span>\n                                        )\n                                    )}\n                                </div>\n                            )}\n\n                            <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '6px' }}>\n                                {this.canShowDatePicker() && !this.isProductFromMall() && (\n                                    <div className=\"delivery-date-selector\">\n                                        <DatePicker\n                                            selected={storedDesiredDate ? storedDesiredDate : this.state.slaDate}\n                                            onChange={date => {\n                                                this.props.setLineDeliveryDate(line.lineId, date)\n                                                this.handleShowSlaDateNonCts(date, this.state.slaDate, line)\n                                                this.handleSetAllLinesDeliveryDatesCts(date, line, this.state.slaDate)\n                                                this.forceUpdate()\n                                            }}\n                                            minDate={this.getMinPreferredDeliveryDate()}\n                                            className=\"form-control\"\n                                            autoComplete=\"off\"\n                                            onKeyDown={e => e.preventDefault()}\n                                            dropdownMode=\"select\"\n                                            customInput={<DesiredDatePicker />}\n                                            disabled={isDisabledPreferedDeliveryDatePicker}\n                                        />\n                                    </div>\n                                )}\n\n                                {this.state.slaDate && linesDeliveryDates[line.lineId] && this.state.slaDate.isAfter(linesDeliveryDates[line.lineId].endOf('day')) && (\n                                    <div>\n                                        <span\n                                            data-tip={this.props.intl.formatMessage({\n                                                id: 'desired_date_advertisement',\n                                                defaultMessage:\n                                                    'You have chosen a different date than the estimated delivery. We cannot guarantee this delivery date, but we will try to accommodate your request'\n                                            })}\n                                            data-for={line.lineId}\n                                            className=\"prefered-date-warning-icon\"\n                                        >\n                                            <i className=\"far fa-exclamation-triangle\"></i>\n                                        </span>\n                                        <ReactTooltip id={line.lineId} effect=\"solid\" place=\"bottom\" className=\"delivery__date__tooltip\" />\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                    </React.Fragment>\n                )}\n\n                <div className=\"line__item__checkout--content\">\n                    {/* Left */}\n                    <div className=\"content--left\">\n                        {/* Img Block*/}\n                        <div className=\"image-block\">\n                            <div className=\"indicators\" style={{ maxWidth: '100%', padding: '0' }}>\n                                {isNewIndicator(line.product.creationDate) && line.product.stock == 0 && <DisplayUpcomingIndicator />}\n                                {isUpcomingIndicator(line.product.creationDate) && <DisplayNewIndicator />}\n                            </div>\n\n                            {image}\n\n                            <div className=\"d-flex justify-content-start flex-column\" style={{ gap: '2px', paddingTop: '10px' }}>\n                                {line.extra &&\n                                    line.extra.isCosentinoGlobal &&\n                                    this.props.naturalStoneViewingPermissions.canViewHQ &&\n                                    (line.extra.outlet ? (\n                                        <NaturalStoneIndicator idMessage={'outlet_in_hq'} defaultMessage=\"Outlet Spain\" inSmallBox={true} />\n                                    ) : (\n                                        <NaturalStoneIndicator idMessage={'natural_stone_hq'} defaultMessage=\"Natural stone Spain\" inSmallBox={true} />\n                                    ))}\n\n                                {line.extra && line.extra.isCosentinoBrazil && this.props.naturalStoneViewingPermissions.canViewBrazil && (\n                                    <NaturalStoneIndicator idMessage={'natural_stone_brazil'} defaultMessage=\"Natural stone Brazil\" inSmallBox={true} />\n                                )}\n\n                                {this.props.line.cutToSize && <CustomProductIndicator />}\n                            </div>\n                        </div>\n\n                        {/* Text Block*/}\n                        <div className=\"text-block\">\n                            {/* Brand */}\n                            <div style={{ paddingBottom: '6px' }}>\n                                {['SENSA', 'SCALEA', 'PREXURY'].includes(line.brand) ? (\n                                    <React.Fragment>\n                                        <div className=\"d-flex align-items-center\" style={{ gap: '6px' }}>\n                                            <DisplayBrand brand={line.brand} />\n                                            <div className=\"product-brand\">\n                                                <span> ({<Translation id=\"natural_stone\" defaultMessage=\"Natural Stone\" />}*)</span>\n                                            </div>\n                                        </div>\n                                    </React.Fragment>\n                                ) : (\n                                    <DisplayBrand brand={line.brand} />\n                                )}\n                            </div>\n                            {/* Product title */}\n                            <div className=\"product-title-block\">\n                                {this.canViewConfigBath() ? (\n                                    <span className=\"product-title\">\n                                        {getConfigLineName(line.cutToSize.config)}&nbsp;\n                                        <Translation id=\"customized\" defaultMessage=\"Custom\" />\n                                    </span>\n                                ) : (\n                                    <LocalizedLink\n                                        routeId=\"ROUTE_PRODUCT_DETAIL\"\n                                        params={{ id: line.product.productId, outlet: line.extra && !!line.extra.outlet ? 'outlet' : '' }}\n                                        onClick={() => this.props.setLastSelectedProduct(line.product, line.extra)}\n                                    >\n                                        {this.getProductTitle(line)}\n                                    </LocalizedLink>\n                                )}\n                            </div>\n\n                            {/* Product ID */}\n                            {line.productId && (\n                                <div className={`product-id ${isCheckoutStepTwo ? 'product-id-in-step-two' : ''}`}>\n                                    <span>\n                                        <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                    </span>\n                                    :&nbsp;\n                                    <span>{line.productId}</span>\n                                </div>\n                            )}\n\n                            {/* Config bath details block */}\n                            {this.canViewConfigBath() && isCheckoutStepOne && <div className=\"config-bath-details-block\">{viewConfigBathDetailsBlock}</div>}\n\n                            {/* Other features */}\n\n                            {/* LotId or bundleId */}\n                            {line.bundleId ? (\n                                <div className=\"text-feature\">\n                                    <span className=\"bundle-btn\" onClick={() => onOpenBundleContent(line)}>\n                                        <Translation id=\"bundle_id\" defaultMessage=\"bundle_id\" />\n                                        :&nbsp;<span>{line.bundleId}</span>\n                                    </span>\n                                </div>\n                            ) : line.lotId ? (\n                                <div className=\"text-feature\">\n                                    <span>\n                                        <DisplayLotId lotId={line.lotId} withDescription />\n                                    </span>\n                                </div>\n                            ) : null}\n\n                            {line.extra && line.extra.brand && (\n                                <div className=\"text-feature\">\n                                    <span>\n                                        <DisplayBrand brand={line.extra.brand} />\n                                    </span>\n                                </div>\n                            )}\n\n                            {line.extra && line.extra.colorName && (\n                                 <div className=\"text-feature\">\n                                    <span>{line.extra.colorName}</span>\n                                </div>\n                            )}\n\n                            {/* Type */}\n                            {line.extra && line.extra.type && (\n                                <div className=\"text-feature\">\n                                    <span>{intl.formatMessage({ id: line.extra.type })}</span>\n                                </div>\n                            )}\n\n                            {/* Mallado (zaddon) */}\n                            {line.product.zaddon === 'MAL' && (\n                                <div className=\"text-feature\">\n                                    <span>\n                                        <Translation id=\"MAL\" />\n                                    </span>\n                                </div>\n                            )}\n\n                            {/* Mall img */}\n                            {line.extra && line.extra.mall && (\n                                <div>\n                                    <img style={{ width: '40px' }} width=\"40\" src={mallLarge} alt=\"logo mall\" />\n                                </div>\n                            )}\n\n                            {line.extra && line.extra.lot && (\n                                <React.Fragment>\n                                    {line.extra.lot.quarryBlock && (\n                                        <div className=\"text-feature\">\n                                            <span>\n                                                <Translation id=\"quarryBlock\" defaultMessage=\"Quarry Block\" />\n                                            </span>\n                                            :&nbsp;\n                                            <span>{line.extra.lot.quarryBlock}</span>\n                                        </div>\n                                    )}\n                                    {line.extra.lot.quality && (\n                                        <div className=\"text-feature\">\n                                            <Translation id=\"quality\" defaultMessage=\"Quality\" />\n                                            :&nbsp;\n                                            <span>{line.extra.lot.quality}</span>\n                                        </div>\n                                    )}\n                                    {line.extra.lot.shade && (\n                                        <div className=\"text-feature\">\n                                            <Translation id=\"shade\" defaultMessage=\"Shade\" />\n                                            :&nbsp;\n                                            <span>{line.extra.lot.shade}</span>\n                                        </div>\n                                    )}\n                                </React.Fragment>\n                            )}\n\n                            {/* Attached docs CTS */}\n                            {line.cutToSize && line.cutToSize.attachedDoc && (\n                                <div className=\"text-feature\">\n                                    <i className=\"far fa-file\" />\n                                    <span>{line.cutToSize.attachedDoc}</span>\n                                </div>\n                            )}\n\n                            {/* Indicators */}\n                            <div className=\"indicators-block\">\n                                {!line.cutToSize && canDisplayDiscontinued(line.product.webHeading, line.product.discontinued) && (\n                                    <DisplayDiscontinued discontinued={line.product.discontinued} inSmallBox={true} />\n                                )}\n\n                                {!line.cutToSize && line.extra && line.extra.outlet && (\n                                    <DisplayOutletIndicator\n                                        outletQuality={line.extra.outlet}\n                                        outletDeviated={this.props.isAdmin || this.props.impersonatedBy ? this.product.outletDeviated : null}\n                                        inSmallBox={true}\n                                    />\n                                )}\n                            </div>\n\n                            {/* Price for step two */}\n                            {isCheckoutStepTwo && this.renderPriceDetails(line)}\n\n                            {/* Quantity */}\n                            {isCheckoutStepTwo && (\n                                <div className=\"mini_cart_line_quantity\">\n                                    <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                    :&nbsp;{line.qty}\n                                </div>\n                            )}\n\n                            {isCheckoutStepTwo &&\n                                this.canViewSLA() &&\n                                (this.props.isLoadingLinesSlaDate ? (\n                                    <Spinner isLoading={true} relative small />\n                                ) : isQuickShip || (this.state.slaDate && !this.state.slaDate.isSame(moment(), 'day')) ? (\n                                    <div className=\"estimated_date_block\">\n                                        {isQuickShip ? (\n                                            <FormattedHTMLMessage\n                                                id=\"estimated_delivery_on_4_weeks\"\n                                                defaultMessage=\"Estimated delivery on <b>2-4 weeks</b>\"\n                                            />\n                                        ) : this.isProductFromMall() ? (\n                                                <Translation\n                                                    id=\"undefined_delivery_date\"\n                                                    defaultMessage=\"Delivery date pending of review by Cosentino\"\n                                                />\n                                            ) : (\n                                                <Translation\n                                                    id=\"estimated_delivery_on\"\n                                                    defaultMessage=\"Estimated delivery on {date}\"\n                                                    values={{\n                                                        date: this.showLongestDeliveryDate(storedDesiredDate, this.state.slaDate),\n                                                    }}\n                                                />\n                                            )\n                                        }\n                                    </div>\n                                ) : (\n                                    <div className=\"estimated_date_block\">\n                                        <Translation\n                                            id=\"undefined_delivery_date\"\n                                            defaultMessage=\"Delivery date pending of review by Cosentino\"\n                                        />\n                                    </div>\n                                ))}\n\n                            {/* Segmentation and comment - Desktop */}\n                            {isCheckoutStepOne && (\n                                <div className=\"segmentation-comment-desktop\" style={{ padding: '6px 0' }}>\n                                    {this.renderSegmentationAndComment(line, type)}\n                                </div>\n                            )}\n\n                            {/* CTS 50% initial payment message - Desktop */}\n                            {this.canViewConfigBath() && this.props.isUsaOrCanada && isCheckoutStepOne && (\n                                <div className=\"alert-box-desktop\">{this.renderCts50PercentInitialMsg()}</div>\n                            )}\n\n                            {/* Upcoming product alert */}\n                            {launchDate > today && launchDate < todayPlus15Days && isCheckoutStepOne && (\n                                <div className=\"alert-box-desktop\">\n                                    <Alerts\n                                        status=\"warning\"\n                                        alert=\"upcoming_product_alert\"\n                                        cssIcon=\"fas fa-exclamation-triangle\"\n                                        iconSize=\"16px\"\n                                        className={'cartline-custom-alert-msg'}\n                                    />\n                                </div>\n                            )}\n\n                            {isCheckoutStepOne && (\n                                <div className=\"line-actions-desktop\">\n                                    <div className=\"line-actions\">\n                                        {/* Actions - Increment or decrement quantity block */}\n                                        {this.renderIncrementDecrementBlock(line)}\n\n                                        {/* Actions - Delete material block */}\n                                        {this.renderDeleteLineItem(line)}\n\n                                        {/* Actions - Add material to favourite block */}\n                                        {!this.canViewConfigBath() && this.renderAddToFavouriteLineItem(line)}\n                                    </div>\n                                </div>\n                            )}\n                        </div>\n                    </div>\n\n                    {/* Segmentation and comment - Responsive */}\n                    {isCheckoutStepOne && (\n                        <div className=\"segmentation-comment-responsive\" style={{ padding: '12px 0' }}>\n                            {this.renderSegmentationAndComment(line, type)}\n                        </div>\n                    )}\n\n                    {/* CTS 50% initial payment message - Responsive */}\n                    {this.canViewConfigBath() && this.props.isUsaOrCanada && isCheckoutStepOne && <div className=\"alert-box-responsive\">{this.renderCts50PercentInitialMsg()}</div>}\n\n                    {/* Upcoming product alert */}\n                    {launchDate > today && launchDate < todayPlus15Days && isCheckoutStepOne && (\n                        <div className=\"alert-box-responsive\">\n                            <Alerts status=\"warning\" alert=\"upcoming_product_alert\" cssIcon=\"fas fa-exclamation-triangle\" iconSize=\"16px\" className={'cartline-custom-alert-msg'} />\n                        </div>\n                    )}\n\n                    {/* Right */}\n                    {isCheckoutStepOne && (\n                        <div className=\"content--right\">\n                            {/* Price */}\n                            {this.renderPriceDetails(line)}\n\n                            {/* Actions - Increment or decrement quantity block. Responsive */}\n                            <div className=\"increment-decrement-responsive\">{this.renderIncrementDecrementBlock(line)}</div>\n\n                            <div className=\"delete-and-favourite-blocks-responsive\">\n                                {/* Actions - Delete material block. Responsive */}\n                                {this.renderDeleteLineItem(line)}\n\n                                {/* Actions - Add material to favourite block. Responsive */}\n                                {!this.canViewConfigBath() && this.renderAddToFavouriteLineItem(line)}\n                            </div>\n                        </div>\n                    )}\n                </div>\n\n                {/* Cts config modal configuration */}\n                {this.state.showConfigBathModal && isCheckoutStepOne && (\n                    <ModalConfigurationDetails\n                        config={line.cutToSize.config}\n                        refcode={line.cutToSize.ref}\n                        showBtnEdit={true}\n                        showBtnDownload={true}\n                        onClose={() => {\n                            this.setState({ showConfigBathModal: false })\n                        }}\n                    />\n                )}\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(CartLine)\n","import { getMinRequiredDate, getCheckoutStepOneButtonNextDisabled } from './../../store/checkout/reducers';\nimport { connect } from 'react-redux'\nimport CartLine from './CartLine'\nimport {\n    removeCartLine,\n    changeCartLineQty,\n    changeCartLineSegmentation,\n    changeCartLineComment,\n    saveCartLineComment,\n    addCartLineNotSegmentation,\n    unsetLineDeliveryDate,\n    setAllLinesDeliveryDatesCts\n} from '../../store/cart/actions'\nimport {dispatchPushURL, openBundleContent, showSegmentationModal} from '../../store/ui/actions'\nimport { getBusinesSegmentOptions, getUseOptions, getChannelOptionsV3, getTypologyOptionsV3, getHasSegmentationV3 } from '../../store/segmentation/reducers'\nimport { getShippingMethod, getIsMkToolsCenter, getIsIkeaCenter, getIsMktoolsUsaCenter, getPricesGroup, isDisabledPreferedDeliveryDatePicker, getIsEndiCenter, getIsLowesCenter, getSelectedCenter, isUsaOrCanada } from '../../store/centers/reducers'\nimport { loadThisSegmentation } from '../../store/segmentation/actions'\nimport {\n    getQtyProductsCart,\n    getLinesPrice,\n    getCalculatingLinesPrice,\n    getDeliveryDateControlKey,\n    getLinesSlaDate,\n    getIsLoadingLinesSlaDate,\n    getLinesDeliveryDates,\n    isMallCartForContainer,\n    isDefaultDeliveryDate,\n    hideSlaDatesForCts,\n    linesSlaDateVisibility\n} from '../../store/cart/reducers'\nimport { getImageBackground, toogleFavourite } from '../../store/products/actions'\nimport {\n    getUserPriceList,\n    getPriceListAtSelectedCenter,\n    getUserType,\n    getNaturalStoneViewingPermissions\n} from '../../store/login/reducers'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\nimport { canViewPricesPhase2, canViewPricesPhase3, isFavouriteById } from '../../store/products/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport {getAdaptedFormat, getCtsMeasures} from \"../../helpers\";\nimport {setLineDeliveryDate} from \"../../store/cart/actions\";\nimport {getProductMinStock, getSelectedProduct} from \"../../store/landing/reducers\";\nimport {setLastSelectedProduct} from \"../../store/selected-objects/actions\";\nimport { getShippingAddresses } from '../../store/shipping-addresses/reducers';\n\nconst mapStateToProps = state => {\n    return {\n        selectedCenter: getSelectedCenter(state),\n        minDeliveryDate: getMinRequiredDate(state),\n        linesDeliveryDates: getLinesDeliveryDates(state),\n        deliveryDateControlKey: getDeliveryDateControlKey(state),\n        businesSegmentOptions: getBusinesSegmentOptions(state),\n        useOptions: getUseOptions(state),\n        userPreferences: getProfileConfiguration(state),\n        shippingMethod: getShippingMethod(state),\n        segmentationV3: getHasSegmentationV3(state),\n        channelOptionsV3: getChannelOptionsV3(state),\n        typologyOptionsV3: getTypologyOptionsV3(state),\n        qtyProductCart: getQtyProductsCart(state),\n        priceGroup: getPricesGroup(state),\n        isMktoolsCenter: getIsMkToolsCenter(state),\n        isMktoolsUsaCenter: getIsMktoolsUsaCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isLowesCenter: getIsLowesCenter(state),\n        userPriceList: getUserPriceList(state),\n        priceList: getPriceListAtSelectedCenter(state),\n        linesPrice: getLinesPrice(state),\n        calculatingLinesPrice: getCalculatingLinesPrice(state),\n        canViewPricesPhase2: canViewPricesPhase2(state),\n        canViewPricesPhase3: canViewPricesPhase3(state),\n        lang: getLanguage(state),\n        mallMinOrder: (productId) => getProductMinStock(state, productId),\n        selectedProduct: getSelectedProduct(state),\n        getCtsMeasure: (cutToSize) => getCtsMeasures(cutToSize, state),\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        userType: getUserType(state),\n        isEndiCenter: getIsEndiCenter(state),\n        isFavouriteById: (productId) => isFavouriteById(state, productId),\n        linesSlaDate: getLinesSlaDate(state),\n        isLoadingLinesSlaDate: getIsLoadingLinesSlaDate(state),\n        shippingAddresses: getShippingAddresses(state),\n        isMallCartForContainer: isMallCartForContainer(state),\n        isDefaultDeliveryDate: isDefaultDeliveryDate(state),\n        hideSlaDatesForCts: hideSlaDatesForCts(state),\n        linesSlaDateVisibility: linesSlaDateVisibility(state),\n        naturalStoneViewingPermissions: getNaturalStoneViewingPermissions(state),\n        isCheckoutStepOneButtonNextDisabled: getCheckoutStepOneButtonNextDisabled(state),\n        isDisabledPreferedDeliveryDatePicker: isDisabledPreferedDeliveryDatePicker(state),\n        isUsaOrCanada: isUsaOrCanada(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onDelete: lineId => {\n            dispatch(removeCartLine(lineId))\n        },\n        onToggleFavourite: productId => {\n            dispatch(toogleFavourite(productId))\n        },\n        changeCartLineQty: (lineId, qty) => {\n            dispatch(changeCartLineQty(lineId, qty))\n        },\n        openBundleContent: product => {\n            dispatch(openBundleContent(product))\n        },\n        loadThisSegmentation: seg => {\n            dispatch(loadThisSegmentation(seg))\n        },\n        showSegmentationModal: (mode, callback, productId) => {\n            dispatch(showSegmentationModal(mode, callback, productId))\n        },\n        changeCartLineSegmentation: lineId => {\n            dispatch(changeCartLineSegmentation(lineId))\n        },\n        onOpenBundleContent: product => {\n            dispatch(openBundleContent(product))\n        },\n        getImageBackground: product => dispatch(getImageBackground(product)),\n        saveCartLineComment: (lineId, comment) => dispatch(saveCartLineComment(lineId, comment)),\n\n        changeCartLineComment: (lineId, comment) => dispatch(changeCartLineComment(lineId, comment)),\n\n        addCartLine: (productId, qty) => dispatch(addCartLineNotSegmentation(productId, qty)),\n        setLineDeliveryDate: (lineId, date) => dispatch(setLineDeliveryDate(lineId, date)),\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        setSelectedProductId: productId => dispatch({ type: 'SET_SELECTED_MALL_PRODUCT', productId }),\n        setIsCommingFromMall: (isCommingFromMall) => dispatch({type: 'SET_IS_COMMING_FROM_MALL', isCommingFromMall}),\n        setLastSelectedProduct: (product, extra) => {\n            product.extra = {...extra, ...product.extra}\n            dispatch(setLastSelectedProduct(product))\n        },\n        unsetLineDeliveryDate: (lineId) => dispatch(unsetLineDeliveryDate(lineId)),\n        setAllLinesDeliveryDatesCts: (deliveryDateCts, slaDateState) => dispatch(setAllLinesDeliveryDatesCts(deliveryDateCts, slaDateState))\n    }\n}\n\nconst CartLineContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(CartLine)\n\nexport default CartLineContainer\n","import React from 'react'\nimport mallDiscount from '../../assets/img/logos/mall-discount.svg'\nimport Translation from '../global/Translation'\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getGoalMin, getKgPoundRatio, weightSelector } from '../../store/cart/reducers'\nimport { emptyCart } from '../../store/cart/actions'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\n\nconst mapStateToProps = state => {\n    let language = getLanguage(state)\n    let defaultUnit = language === 'en' || language === 'en-US' || language === 'fr-CA' ? 'LB' : 'KG'\n    let unit = getProfileConfiguration(state).weightUnit ? getProfileConfiguration(state).weightUnit : defaultUnit\n\n    return {\n        unit: unit,\n        goalMin: getGoalMin(state),\n        current: unit === 'KG' ? weightSelector(state) : Math.floor(weightSelector(state) * getKgPoundRatio())\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        emptyCart: () => dispatch(emptyCart()),\n        toggleIncompatibleTypesExceptionModal: open => Promise.resolve(dispatch({ type: 'TOGGLE_INCOMPATIBLE_TYPES_EXCEPTION_MODAL', open: open }))\n    }\n}\n\nclass MallIncentives extends React.Component {\n    render() {\n        return (\n            <div className=\"extra-discount-mall\">\n                <div>\n                    <img alt=\"\" src={mallDiscount} className=\"mall-discount-image\" />\n                    <span>\n                        <Translation id=\"you_currently_have\" defaultMessage=\"You currently have\" />{' '}\n                        <b>\n                            {this.props.current} {this.props.unit.toLowerCase()}\n                        </b>{' '}\n                        <Translation id=\"in_your_cart\" defaultMessage=\"in your cart\" />\n                        {'. '}\n                    </span>\n                    <span>\n                        <Translation id=\"you_must_reach\" defaultMessage=\"You must reach\" />{' '}\n                        <b>\n                            {this.props.goalMin} {this.props.unit.toLowerCase()}\n                        </b>{' '}\n                        <Translation id=\"to_get_an_extra_discount_for_full_containers\" defaultMessage=\"to get an extra discount for full containers\" />\n                    </span>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(MallIncentives)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport CartLineContainer from '../cart-line/CartLineContainer'\nimport Spinner from '../global/Spinner'\nimport MallIncentivesContainer from '../incentives/MallIncentivesContainer'\nimport getNumberFormat from \"../getNumberFormat\";\n\nconst CartSummary = ({\n    lines,\n    totalQty,\n    total,\n    onDelete,\n    changeCartLineQty,\n    openBundleContent,\n    segmentation,\n    shippingMethod,\n    use,\n    segmentationV3,\n    coin,\n    isIkeaCenter,\n    calculatingLinesPrice,\n    totalCoin,\n    canViewPricesPhase2,\n    lang,\n    isMallCartForContainer,\n    goalMin,\n    unit,\n    type,\n    showAll=true,\n    isCosentinoGlobal,\n    howManyShouldShow = 5,\n    isCosentinoBrazil\n}) => {\n    if (totalQty <= 0) {\n        return (\n            <div>\n                <h4 className=\"cart-heading heading\">\n                    <Translation id=\"your_cart\" defaultMessage=\"Your Cart\" />\n                </h4>\n                <div className=\"total cart-empty container-fluid\">\n                    <div className=\"row\">\n                        <div className=\"label\">\n                            <Translation id=\"your_cart_is_empty\" defaultMessage=\"Your cart is empty\" />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n    let numberFormat = getNumberFormat(lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n\n    if(totalCoin === 'JPY') {\n        numberFormat = getNumberFormat(lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n    }\n\n    const aProducts = []\n    const aQuantities = []\n\n    let _lines = lines\n\n    // Combinamos las condiciones para evitar la sobreescritura\n    _lines = _lines.filter((line) => {\n        const isGlobal = line.extra && line.extra.isCosentinoGlobal\n        const isBrazil = line.extra && line.extra.isCosentinoBrazil\n\n        // Filtramos basado en ambos flags, considerando los undefined correctamente\n        if (isCosentinoGlobal !== undefined && isCosentinoBrazil !== undefined) {\n            return (\n                (isCosentinoGlobal ? isGlobal : !isGlobal) &&\n                (isCosentinoBrazil ? isBrazil : !isBrazil)\n            )\n        } else if (isCosentinoGlobal !== undefined) {\n            return isCosentinoGlobal ? isGlobal : !isGlobal\n        } else if (isCosentinoBrazil !== undefined) {\n            return isCosentinoBrazil ? isBrazil : !isBrazil\n        }\n        return true // Si ambos son undefined, no filtramos nada.\n    })\n\n    _lines = showAll ? _lines : _lines.slice(0, howManyShouldShow)\n\n    let totalThickness = 0;\n\n    _lines.forEach(line => {\n        aProducts.push(line.productId)\n        aQuantities.push(line.qty)\n        totalThickness += line.product && line.product.thickness ? parseFloat(line.product.thickness) * line.qty : 0\n    })\n\n    const products = aProducts.join(',')\n    const quantities = aQuantities.join(',')\n\n    return (\n        type && type === 'checkout_v2_summary' ? (\n            <React.Fragment>\n                {_lines.map(line => line && <CartLineContainer line={line} key={line.lineId} typeLine={type} type='checkout' onlyView={line.extra && line.extra.itsFree} />)}\n            </React.Fragment>\n        ) : (\n            <div className=\"checkout-table\">\n                {isMallCartForContainer && <MallIncentivesContainer />}\n                <h4 className=\"cart-heading heading\">\n                    <Translation id=\"your_cart\" defaultMessage=\"Your Cart\" />\n                </h4>\n                <div className=\"container p-0\">\n                    <div className=\"row\">\n                        <div className=\"col-12 products item-list\">\n                            {_lines.map((line, index) => line && <CartLineContainer positionLine={index} line={line} key={line.lineId} typeLine={type} type='checkout' onlyView={line.extra && line.extra.itsFree} />)}\n                        </div>\n                    </div>\n                </div>\n                {!isIkeaCenter && (\n                    <div className=\"total container-fluid\">\n                        <div className=\"row\">\n                            <div className=\"col-3 my-auto\">\n                                <div className=\"label\">\n                                    <Translation id=\"total_items\" defaultMessage=\"Total\" />\n                                </div>\n                            </div>\n                            <div className=\"col-2  my-auto\">\n                                <div className=\"quantity\">{totalQty}</div>\n                            </div>\n                            {canViewPricesPhase2 && (\n                                <React.Fragment>\n                                    <div className=\"col-2 col-md-2 my-auto text-right\">\n                                        <div className=\"label\">\n                                            <Translation id=\"total_import\" defaultMessage=\"Total\" />\n                                        </div>\n                                    </div>\n\n                                    <div className=\"col-4 my-auto\">\n                                        <div className=\"quantity\">\n                                            {calculatingLinesPrice ? (\n                                                <Spinner isLoading={true} relative small></Spinner>\n                                            ) : !total || (total && total == 0) ? (\n                                                <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                                            ) : (\n                                                total && (\n                                                    <React.Fragment>\n                                                        {numberFormat.format(total)} {totalCoin}\n                                                    </React.Fragment>\n                                                )\n                                            )}\n                                        </div>\n                                    </div>\n                                </React.Fragment>\n                            )}\n                        </div>\n                    </div>\n                )}\n            </div>\n        )\n    )\n}\n\nexport default CartSummary\n","import { connect } from 'react-redux'\nimport CartSummary from './CartSummary'\nimport { removeCartLine, changeCartLineQty, changeCartLineSegmentation } from '../../store/cart/actions'\nimport { totalSelector, qtySelector, getLines, getCalculatingLinesPrice, totalCoin, isMallCartForContainer, getGoalMin } from '../../store/cart/reducers'\nimport { getShippingMethod, getCoin, getIsIkeaCenter } from '../../store/centers/reducers'\nimport { getBusinesSegmentOptions, getUseOptions } from '../../store/segmentation/reducers'\nimport { openBundleContent, showSegmentationModal } from '../../store/ui/actions'\nimport { loadThisSegmentation } from '../../store/segmentation/actions'\nimport { canViewPricesPhase2 } from '../../store/products/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\n\nconst mapStateToProps = state => {\n    let language = getLanguage(state)\n    let defaultUnit = language === 'en' || language === 'en-US' || language === 'fr-CA' ? 'LB' : 'KG'\n    let unit = getProfileConfiguration(state).weightUnit ? getProfileConfiguration(state).weightUnit : defaultUnit\n    return {\n        lines: getLines(state),\n        total: totalSelector(state),\n        totalQty: qtySelector(state),\n        segmentation: getBusinesSegmentOptions(state),\n        shippingMethod: getShippingMethod(state),\n        use: getUseOptions(state),\n        coin: getCoin(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        calculatingLinesPrice: getCalculatingLinesPrice(state),\n        totalCoin: totalCoin(state),\n        canViewPricesPhase2: canViewPricesPhase2(state),\n        lang: getLanguage(state),\n        isMallCartForContainer: isMallCartForContainer(state),\n        goalMin: getGoalMin(state),\n        unit\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onDelete: lineId => {\n            dispatch(removeCartLine(lineId))\n        },\n        changeCartLineQty: (lineId, qty) => {\n            dispatch(changeCartLineQty(lineId, qty))\n        },\n        openBundleContent: product => {\n            dispatch(openBundleContent(product))\n        },\n        loadThisSegmentation: seg => {\n            dispatch(loadThisSegmentation(seg))\n        },\n        showSegmentationModal: (mode, callback) => {\n            dispatch(showSegmentationModal(mode, callback))\n        },\n        changeCartLineSegmentation: lineId => {\n            dispatch(changeCartLineSegmentation(lineId))\n        }\n    }\n}\n\nconst CartSummaryContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(CartSummary)\n\nexport default CartSummaryContainer\n","import React from 'react'\nimport Translation from '../../global/Translation'\nimport { defineMessages, injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getIsLoadingVoucher, getIsValidVoucher, getVoucher, getVoucherStatusText } from '../../../store/cart/reducers'\nimport { checkVoucher, removeVoucher } from '../../../store/cart/actions'\nimport { canViewPricesPhase3 } from '../../../store/products/reducers'\n\ndefineMessages({\n    ALREADY_USED_VOUCHER: {\n        id: 'ALREADY_USED_VOUCHER',\n        description: 'ALREADY_USED_VOUCHER',\n        defaultMessage: 'Already used voucher'\n    }\n})\n\nconst mapStateToProps = state => {\n    return {\n        isLoading: getIsLoadingVoucher(state),\n        voucher: getVoucher(state),\n        isValidVoucher: getIsValidVoucher(state),\n        voucherStatusText: getVoucherStatusText(state),\n        canViewPricesPhase3: canViewPricesPhase3(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        checkVoucher: voucher => {\n            if (voucher) dispatch(checkVoucher(voucher))\n        },\n        removeVoucher: voucher => dispatch(removeVoucher(voucher)).then(() => dispatch({ type: 'CART_CHECK_VALID_VOUCHER_RESET' })),\n        resetValidVoucher: () => dispatch({ type: 'CART_CHECK_VALID_VOUCHER_RESET' })\n    }\n}\n\nclass GroupInputVoucherV2 extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            voucher: this.props.voucher,\n            isValidVoucher: this.props.voucher !== '' ? true : null\n        }\n    }\n\n    componentDidUpdate(prevProps) {\n        // Check if lines have changed and if the voucher needs to be reset\n        if (prevProps.lines !== this.props.lines) {\n            this.handleVoucherResetIfNeeded()\n        }\n    }\n\n    validateLinesForVoucher() {\n        const { lines } = this.props\n        \n        const matchingLines = lines && lines.filter(line => \n            ((line.product && line.product.brand === 'SILESTONE') || (line.product && line.product.brand === 'DEKTON')) && line.product && line.product.type === 'TABLA'\n        )\n        \n        // Calculate the total quantity for matching lines\n        const totalQty = matchingLines && matchingLines.reduce((sum, line) => sum + line.qty, 0)\n\n        // Return true if total quantity is 30 or more, false otherwise\n        return totalQty >= 30\n    }\n\n    addVoucher() {\n        const { voucher } = this.state\n\n        // Check if the voucher is 100000479 or 100000452 and validate rules. This is for only special promotion.\n        if (voucher && (voucher === '100000479' || voucher === '100000452')) {\n            if (this.validateLinesForVoucher()) {\n                this.props.checkVoucher(voucher)\n            }\n        } else {\n            // Proceed with original flow for other voucher codes\n            this.props.checkVoucher(voucher)\n        }\n    }\n\n    removeVoucher() {\n        this.props.resetValidVoucher()\n        this.props.removeVoucher(this.state.voucher)\n        this.setState({ voucher: '' })\n    }\n\n    validateSpecialVoucherForRocketPromo() {\n        const { voucher } = this.state\n\n        if ((voucher === '100000479' || voucher === '100000452') && !this.validateLinesForVoucher()) {\n            return true\n        }\n\n        return false\n    }\n\n    handleVoucherResetIfNeeded() {\n        const { voucher } = this.state\n\n        // Check if the current voucher no longer meets the criteria\n        if ((voucher === '100000479' || voucher === '100000452') && !this.validateLinesForVoucher()) {\n            this.removeVoucher()\n        }\n    }\n\n    render() {\n        if (!this.props.canViewPricesPhase3) return null\n        return (\n            <div\n                className={`form-group form-group__voucher ${\n                    this.props.isValidVoucher ? 'form-group__voucher--success' : this.props.isValidVoucher === false && !this.props.isLoading ? 'form-group__voucher--failure' : ''\n                }`}\n            >\n                <label htmlFor=\"input-voucher\">\n                    <span className=\"coupon\">\n                        <Translation id=\"insert_voucher\" defaultMessage=\"Do you have a coupon?\" />\n                    </span>\n                </label>\n                <div className=\"input-group mb-3\">\n                    <div className=\"wrapper-input\">\n                        <input\n                            name=\"input-voucher\"\n                            data-cy=\"cart__input_voucher\"\n                            type=\"text\"\n                            className={`form-control input-voucher ${this.props.voucher ? 'disabled' : ''}`}\n                            disabled={this.props.voucher}\n                            value={this.props.voucher ? this.props.voucher : this.state.voucher}\n                            onChange={e => this.setState({ voucher: e.target.value }, this.props.resetValidVoucher)}\n                            onKeyPress={e => {\n                                if (e.key === 'ENTER') this.props.checkVoucher(this.state.voucher)\n                            }}\n                        />\n                        <div className=\"icons-status\">\n                            {this.props.isValidVoucher && <i className=\"far fa-check\" />}\n                            {this.props.isLoading && <i className=\"far fa-spinner fa-pulse\" />}\n                            {this.props.isValidVoucher === false && !this.props.isLoading && (\n                                <button className=\"clean-voucher-btn\" onClick={() => this.removeVoucher()}>\n                                    <i className=\"far fa-times\" />\n                                </button>\n                            )}\n                        </div>\n                    </div>\n                    <div className=\"input-group-append\">\n                        {!this.props.isValidVoucher ? (\n                            <button\n                                className=\"btn btn-outline-secondary\"\n                                type=\"button\"\n                                onClick={() => {\n                                    if (!this.props.isLoading) this.addVoucher()\n                                }}\n                                disabled={this.props.isLoading || this.validateSpecialVoucherForRocketPromo()}\n                            >\n                                <Translation id=\"add\" defaultMessage=\"add\" />\n                            </button>\n                        ) : (\n                            <button\n                                className=\"btn btn-outline-secondary\"\n                                type=\"button\"\n                                onClick={() => {\n                                    if (!this.props.isLoading) this.removeVoucher()\n                                }}\n                                disabled={this.props.isLoading}\n                            >\n                                <Translation id=\"remove\" defaultMessage=\"Remove\" />\n                            </button>\n                        )}\n                    </div>\n                </div>\n                {!this.props.isValidVoucher && this.props.voucherStatusText ? (\n                    <div>\n                        <div className=\"coupon-applied-error\">\n                            <Translation id=\"INVALID_VOUCHER\" defaultMessage=\"Invalid voucher\" />\n                        </div>\n                    </div>\n                ) : this.props.isValidVoucher ? (\n                    <div className=\"coupon-applied-successfully\">\n                        <Translation id=\"the_coupon_has_been_applied_successfully\" defaultMessage=\"The coupon has been applied successfully\" />\n                    </div>\n                ) : null}\n\n                {this.validateSpecialVoucherForRocketPromo() && (\n                    <div className=\"coupon-applied-error\">\n                        <Translation id=\"for_this_coupon_to_be_valid_you_must_have_a_minimum_of_30_slabs_of_silestone_and_or_dekton\" defaultMessage=\"For this coupon to be valid you must have a minimum of 30 slabs of Silestone and/or Dekton.\" />\n                    </div>\n                )}\n            </div>\n        )\n    }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(injectIntl(GroupInputVoucherV2))\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport Button from '../global/Button'\nimport logo from '../../assets/img/e.cosentino.svg'\nimport LocalizedLink from '../global/LocalizedLink'\nimport {defineMessages} from \"react-intl\";\n\ndefineMessages({\n    quote_succesfully_requested: {\n        id: 'quote_successfully_requested',\n        description: 'quote_successfully_requested',\n        defaultMessage: \"Your quote {quote} has been successfully requested\"\n    },\n    quote_finished_header: {\n        id: 'quote_finished_header',\n        description: 'quote_finished_header',\n        defaultMessage: \"Your quote has been finished successfully\"\n    }\n})\n\nclass OrderFinished extends React.Component {\n    render() {\n        const { show, reservationCode, reservationCutToSizeCode, isIkeaCenter, haveOffer } = this.props\n        if (!reservationCode && !reservationCutToSizeCode) {\n            return null\n        }\n        return (\n            <div>\n                <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} />\n                <div id=\"order-finished-container\" className=\"order-finished\" style={{ display: show ? 'block' : 'none' }}>\n                    <div className=\"container-fluid\" data-cy=\"global__modal_thank_you\">\n                        <div className=\"row\">\n                            <div className=\"col-12 col-lg-5 logo-container d-none d-lg-block\">\n                                <img alt=\"\" id=\"logo-img\" className=\"profile-img-card\" src={logo} />\n                            </div>\n                            <div className=\"col-12 col-lg-7 container\">\n                                <header className=\"container-fluid\" />\n                                <div className=\"row\">\n                                    <div className=\"col-12\">\n                                        {reservationCode && (\n                                            <h2>\n                                                <i className=\"fal fa-check-circle check-icon\" />\n                                                {haveOffer ? (\n                                                    <Translation\n                                                    id=\"quote_successfully_requested\"\n                                                    values={{\n                                                        quote: reservationCode\n                                                    }}\n                                                />\n                                                ) : (\n                                                    <div>\n                                                        <Translation id=\"order_finished_header\" defaultMessage=\"Your order has been finished successfully\" />\n                                                        {' '}\n                                                        <span data-cy=\"order_finished__reservation_code\">{reservationCode}</span>\n                                                    </div>                                                \n                                                )}\n                                                \n                                                {/* {haveOffer ? offerText.replace('%quote%', reservationCode) : offerText.replace('%quote%', '')} */}\n                                            </h2>\n                                        )}\n                                        {reservationCutToSizeCode && (\n                                            <h2>\n                                                <i className=\"fal fa-check-circle check-icon\" />\n                                                <Translation\n                                                    id=\"order_finished_header_cut_to_size\"\n                                                    defaultMessage=\"Your order for cut to size has been finished successfully\"\n                                                />{' '}\n                                                <span data-cy=\"order_finished__reservation_code\">{reservationCutToSizeCode}</span>\n                                            </h2>\n                                        )}\n                                        {haveOffer ? (\n                                            <Translation id=\"thank_you_for_your_request\" defaultMessage=\"Thank you for your request\" />\n                                        ) : (\n                                            <Translation id=\"order_finished_body\" defaultMessage=\"Thank you for your order\" />\n                                        )}\n\n                                        <div className=\"col-12 col-md-4 p-1\" />\n                                    </div>\n                                </div>\n                                <footer>\n                                    <div className=\"col-12 col-md-6 offset-md-6\">\n                                        {this.props.isLowesCenter ? (\n                                            <LocalizedLink routeId=\"ROUTE_CATALOG_LOWES\" params={{ filter: 'customer-samples' }}>\n                                                <Button datacy=\"global__keep_buying\" inverted>\n                                                    <Translation id=\"keep_buying\" defaultMessage=\"Keep Buying\" />\n                                                </Button>\n                                            </LocalizedLink>\n                                        ) : (\n                                            <LocalizedLink routeId=\"ROUTE_CATALOG\" params={{ outlet: '' }} onClick={() => this.props.rememberCenter(isIkeaCenter)}>\n                                                <Button datacy=\"global__keep_buying\" inverted>\n                                                    <Translation id=\"keep_buying\" defaultMessage=\"Keep Buying\" />\n                                                </Button>\n                                            </LocalizedLink>\n                                        )}\n                                    </div>\n                                </footer>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default OrderFinished\n","import { connect } from 'react-redux'\nimport { showCheckoutModalSelector, getReservationCode, getReservationCutToSizeCode } from '../../store/cart/reducers'\nimport * as ui from '../../store/ui/actions'\nimport OrderFinished from './OrderFinished'\nimport { getIsIkeaCenter, getIsLowesCenter } from '../../store/centers/reducers'\nimport { getHaveOffer } from '../../store/checkout/reducers'\nimport {injectIntl} from \"react-intl\";\n\nconst mapStateToProps = state => {\n    return {\n        show: showCheckoutModalSelector(state),\n        reservationCode: getReservationCode(state),\n        reservationCutToSizeCode: getReservationCutToSizeCode(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isLowesCenter: getIsLowesCenter(state),\n        haveOffer: getHaveOffer(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closeCheckoutModal())\n        },\n        rememberCenter: isIkeaCenter => {\n            if (isIkeaCenter) dispatch({ type: 'REMEMBER_CENTER' })\n        }\n    }\n}\n\nconst OrderFinishedContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(OrderFinished)\n\nexport default injectIntl(OrderFinishedContainer)\n","import React from 'react'\nimport Translation from '../../global/Translation'\nimport { injectIntl } from 'react-intl'\nimport { getShowSaleConditions } from '../../../store/ui/reducers'\nimport { connect } from 'react-redux'\nimport { toggleSaleConditionsCheck } from '../../../store/checkout/actions'\nimport {getSalesOrg} from \"../../../store/centers/reducers\";\nimport { getLanguage } from '../../../store/ui/reducers'\nimport { getSaleConditionsCheck } from '../../../store/checkout/reducers'\nimport { getUsaCaPrTermsAndConditionsByLang } from '../../../helpers'\n\nconst mapStateToProps = state => {\n    return {\n        showSaleConditions: getShowSaleConditions(state),\n        getSalesOrg: getSalesOrg(state),\n        language: getLanguage(state),\n        hasSaleConditionsCheck: getSaleConditionsCheck(state),\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        toggleSaleConditionsCheck: checked => {\n            dispatch(toggleSaleConditionsCheck(checked))\n        }\n    }\n}\n\nclass CheckboxLinkSaleConditions extends React.Component {\n    render() {\n        if (!this.props.showSaleConditions) return null\n        const usaSalesOrgs = ['2011', '2032', '2037'];\n\n        if(usaSalesOrgs.includes(this.props.getSalesOrg)){\n          return (\n            <React.Fragment>\n              <label className=\"CheckboxLinkSaleConditions\" data-qas=\"checkout_steptwo-general-conditions-checkbox\">\n                <input name=\"sales_conditions_check\" type=\"checkbox\" onClick={input => this.props.toggleSaleConditionsCheck(input.target.checked)} />{' '}\n                <span className='checkmark' />\n                <Translation id=\"i_accept_the\" defaultMessage=\"I accept the\" />{' '}\n                <a href={getUsaCaPrTermsAndConditionsByLang(this.props.language)} target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                  <Translation id=\"general_conditions_of_sale\" defaultMessage=\"General conditions of sale\" />\n                </a>{' '}\n                <Translation id=\"of_cosentino\" defaultMessage=\"of Cosentino\" />\n              </label>         \n            </React.Fragment>\n          )\n        } else {\n          return (\n            <React.Fragment>\n              <label className=\"CheckboxLinkSaleConditions\" data-qas=\"checkout_steptwo-general-conditions-checkbox\">\n                  <input name=\"sales_conditions_check\" type=\"checkbox\" onClick={input => this.props.toggleSaleConditionsCheck(input.target.checked)} />{' '}\n                  <span className='checkmark' />\n                  <Translation id=\"i_accept_the\" defaultMessage=\"I accept the\" />{' '}\n                  <a href=\"https://assetstools.cosentino.com/api/v1/bynder/doc/511A2D40-054A-41D5-89CE81CF6DB105D8/cgv.pdf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                      <Translation id=\"general_conditions_of_sale\" defaultMessage=\"General conditions of sale\" />\n                  </a>{' '}\n                <Translation id=\"of_cosentino\" defaultMessage=\"of Cosentino\" />\n              </label>\n            </React.Fragment>\n          )\n        }\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(injectIntl(CheckboxLinkSaleConditions))\n","import React from 'react'\nimport Translation from '../../global/Translation'\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getShowHealthConditions } from '../../../store/ui/reducers'\nimport { toggleHealthConditionsCheck } from '../../../store/checkout/actions'\nimport { getHealthConditionsCheck } from '../../../store/checkout/reducers'\n\nconst mapStateToProps = state => {\n    return {\n      showHealthConditions: getShowHealthConditions(state),\n      hasHealthConditionsCheck: getHealthConditionsCheck(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        toggleHealthConditionsCheck: checked => {\n          dispatch(toggleHealthConditionsCheck(checked))\n        }\n    }\n}\n\nclass CheckboxLinkHealthConditions extends React.Component {\n  render() {\n      if (!this.props.showHealthConditions) return null\n        return(\n            <label className=\"CheckboxLinkSaleConditions\" data-qas=\"checkout_steptwo-checkbox-health-conditions-checkbox\">\n              <input\n                name=\"health_conditions_check\"\n                type=\"checkbox\"\n                onClick={input => this.props.toggleHealthConditionsCheck(input.target.checked)}/>\n                {' '}\n                <span className='checkmark' />\n              <Translation id=\"through\" defaultMessage=\"Through\" />\n              {' '}\n              <a href=\"https://osh.cosentino.com/health-safety-documentation/safety-data-sheets-sds/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                <Translation id=\"this_link\" defaultMessage=\"this link\" />\n              </a>\n              {' '}\n              <Translation id=\"received_read_safety_data_sheets_products_purchased\" defaultMessage=\"I have received and read the safety data sheets of the products purchased, and I commit to conveying this information to the worker who will process the products\" />\n            </label>\n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(injectIntl(CheckboxLinkHealthConditions))\n","import React, { useState, useRef, useEffect } from 'react'\nimport { connect } from 'react-redux'\nimport Modal from '../../global/Modal'\nimport Translation from '../../global/Translation'\nimport { toggleHealthConditionsCheck } from '../../../store/checkout/actions'\nimport { canSendCheckoutHealthConditions, getHealthConditionsVersion } from '../../../store/checkout/reducers'\nimport Button from '../../global/Button'\nimport { FormattedHTMLMessage } from 'react-intl'\nimport Alerts from '../../alerts/Alerts'\n\nconst mapStateToProps = state => {\n    return {\n        canSendCheckoutHealthConditions: canSendCheckoutHealthConditions(state),\n        healthConditionsVersion: getHealthConditionsVersion(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        toggleHealthConditionsCheck: checked => {\n            dispatch(toggleHealthConditionsCheck(checked))\n        }\n    }\n}\n\nconst ModalLinkHealthConditions = props => {\n    const { onConfirm, onCancel, toggleHealthConditionsCheck, canSendCheckoutHealthConditions, healthConditionsVersion } = props\n\n    const [isScrolledToBottom, setIsScrolledToBottom] = useState(false)\n    const [scrollPercentage, setScrollPercentage] = useState(0.8)\n    const modalContentRef = useRef(null)\n\n     const updateScrollPercentage = () => {\n        if (window.innerWidth <= 991) {\n            setScrollPercentage(0.6)\n        } else {\n            setScrollPercentage(0.8)\n        }\n    }\n\n    const handleScroll = () => {\n        const content = modalContentRef.current\n        const currentScrollPercentage = content.scrollTop / (content.scrollHeight - content.clientHeight)\n\n        // If already set to true, do not change back to false\n        if (currentScrollPercentage >= scrollPercentage && !isScrolledToBottom) {\n            setIsScrolledToBottom(true)\n        }\n    }\n\n    useEffect(() => {\n        updateScrollPercentage()\n        window.addEventListener('resize', updateScrollPercentage)\n\n        const content = modalContentRef.current\n        if (content) {\n            content.addEventListener('scroll', handleScroll)\n        }\n\n        // Cleanup\n        return () => {\n            if (content) {\n                content.removeEventListener('scroll', handleScroll)\n            }\n            window.removeEventListener('resize', updateScrollPercentage)\n        }\n    }, [scrollPercentage])\n\n    return (\n        <div className=\"health-conditions-modal\">\n            <Modal\n                title={\n                    <React.Fragment>\n                        <div>\n                            <Translation id=\"health_and_safety_information\" defaultMessage=\"Health & safety information\" />\n                        </div>\n                        {healthConditionsVersion && (\n                            <div>\n                                <span><Translation id=\"version\" defaultMessage=\"Version\" />: {healthConditionsVersion}</span>\n                            </div>\n                        )}\n                        \n                    </React.Fragment>\n                }\n                onClose={onCancel}\n                showCloseButton={false}\n                subtitle={\n                    <div className=\"mt-3\">\n                        <Alerts\n                            status=\"primary\"\n                            alert={'health_safety_information_scroll_down'}\n                            cssIcon=\"fas fa-exclamation-triangle\"\n                            iconSize=\"16px\"\n                            className={'health-conditions-modal-alert'}\n                        />\n                    </div>\n                }\n                footer={\n                    <div className=\"health-conditions-modal__actions\">\n                        <div>\n                            <label className=\"CheckboxLinkSaleConditions\" data-qas=\"checkout_steptwo-checkbox-health-conditions-checkbox\">\n                                <input\n                                    name=\"health_conditions_check\"\n                                    type=\"checkbox\"\n                                    disabled={!isScrolledToBottom}\n                                    onClick={event => toggleHealthConditionsCheck(event.target.checked)}\n                                />\n                                <span className=\"checkmark\" style={{ borderColor: isScrolledToBottom ? '#000000' : '#7D7D7D' }} />\n                                <span style={{ color: isScrolledToBottom ? '#000000' : '#7D7D7D' }}>\n                                    <FormattedHTMLMessage\n                                        id=\"health_safety_conditions_checkbox_message\"\n                                        defaultMessage=\"I hereby confirm to have read and to agree to the above terms, acknowledging having read also the <a href='https://osh.cosentino.com/health-safety-documentation/safety-data-sheets-sds/' target='_blank' rel='noopener noreferrer'>safety data sheets</a> of the products purchased together with all the related safety information available in the <a href='https://osh.cosentino.com' target='_blank' rel='noopener noreferrer'>Cosentino Safety Space</a>, and I commit to sharing this information with any worker or contractor that will ultimately process these products.\"\n                                    />\n                                </span>\n                            </label>\n                        </div>\n                        <div className=\"modal__actions-btn\">\n                            <Button onClick={onCancel}>\n                                <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\n                            </Button>\n                            <Button onClick={onConfirm} disabled={!canSendCheckoutHealthConditions} inverted>\n                                <Translation id=\"accept\" defaultMessage=\"Accept\" />\n                            </Button>\n                        </div>\n                    </div>\n                }\n                ref={modalContentRef}\n            >\n                <p>\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_title\"\n                        defaultMessage=\"READ THE FOLLOWING CAREFULLY. BY ACCEPTING BELOW, YOU, REFERRED TO HEREIN AS 'COSTUMER', ARE EXPLICITLY AGREEING TO THE TERMS SET OUT HEREIN, TO ANY\n                    DOCUMENTS INCORPORATED HERETO BY REFERENCE, AND TO ANY LINKED DOCUMENTS INCLUDED IF/ WHEN APPLICABLE.\"\n                    />\n                </p>\n                <p>\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_1\"\n                        defaultMessage=\"Cosentino slab products (“Cosentino Products”) contain varying concentrations of crystalline silica. It is crucial for the Customer to understand that cutting, drilling, polishing, or grinding Cosentino Products, especially through uncontrolled dry cutting, emits airborne particles, including respirable crystalline silica. Inhalation of crystalline silica is associated with an increased risk of pneumoconiosis, pulmonary fibrosis (silicosis), lung cancer, chronic obstructive pulmonary disease (COPD), autoimmune diseases, and kidney diseases. Cosentino hereby warns the Customer that processing Cosentino Products must be done using dust-mitigating engineering controls such as wet methods, local exhaust, and general ventilation, or any other proven methods to minimize the generation and inhalation of respirable crystalline silica and dust, in accordance with existing applicable regulations. Cosentino strongly advises the use of personal respiratory equipment with efficient particle filters (type P3, N95, or superior).\"\n                    />\n                </p>\n                <p>\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_2\"\n                        defaultMessage=\"All Cosentino Products come with safety labels indicating the crystalline silica content and the safety warnings. For additional information to ensure the safe handling of Cosentino Products, Customer, their employees, and subcontractors shall refer to the applicable regulations, good practice guides, and material safety data sheets available at Cosentino Safety Space on Cosentino's website: <a href='https://osh.cosentino.com' target='_blank' rel='noopener noreferrer'>https://osh.cosentino.com</a>. It is important that the Customer communicates this information to its employees, subcontractors, and agents who will ultimately process Cosentino Products.\"\n                    />\n                </p>\n                <p>\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_3\"\n                        defaultMessage=\"□ Warnings acknowledgement. Customer represents and warrants that it has received, read and understood at least the following safety documents, available at least under <a href='https://osh.cosentino.com' target='_blank' rel='noopener noreferrer'>https://osh.cosentino.com</a>:\"\n                    />\n                </p>\n                <ul>\n                    <li>\n                        <span>\n                            <FormattedHTMLMessage id=\"health_safety_conditions_message_content_4\" defaultMessage=\"Safety Labels of purchased Cosentino products.\" />\n                        </span>\n                    </li>\n                    <li>\n                        <span>\n                            <FormattedHTMLMessage\n                                id=\"health_safety_conditions_message_content_5\"\n                                defaultMessage=\"Material Safety Data Sheets of purchased Cosentino products.\"\n                            />\n                        </span>\n                    </li>\n                    <li>\n                        <span>\n                            <FormattedHTMLMessage\n                                id=\"health_safety_conditions_message_content_6\"\n                                defaultMessage=\"Good Practices Guide.\"\n                            />\n                        </span>\n                    </li>\n                    <li>\n                        <span>\n                            <FormattedHTMLMessage\n                                id=\"health_safety_conditions_message_content_6_1\"\n                                defaultMessage=\"Health and Safety Guide for Installers\"\n                            />\n                        </span>\n                    </li>\n                    <li>\n                        <span>\n                            <FormattedHTMLMessage\n                                id=\"health_safety_conditions_message_content_7\"\n                                defaultMessage=\"Other guides and manuals posted in the <a href='https://osh.cosentino.com/' target='_blank' rel='noopener noreferrer'>Cosentino Safety Space</a>\"\n                            />\n                        </span>\n                    </li>\n                </ul>\n\n                <p>\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_8\"\n                        defaultMessage=\"Customer agrees that it has reviewed and will follow the requirements set forth in the above documents. The Customer will disseminate these requirements and associated risks to its employees, subcontractors, agents, customers, fabricators, and any other purchasers or users of Cosentino Products.\"\n                    />\n                </p>\n                <p>\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_9\"\n                        defaultMessage=\"The safety documents mentioned above do not substitute the legal obligations applicable to the Customer regarding health and safety under local regulations. The Customer must always seek advice from the relevant authorities and professional industrial hygienists to implement the necessary occupational safety measures to meet regulatory obligations and mitigate dust exposure. The required safety measures depend on the specific conditions of each workplace, and Cosentino’s guidance and recommendations does not make Cosentino liable for such advice. Customer agrees that Cosentino Products contain safety warning labels as required by applicable laws and regulations. If the Customer receives a Cosentino Product without the required warning label, they will immediately notify Cosentino in writing at info@cosentino.com within three (3) days of receipt.\"\n                    />\n                </p>\n                <p>\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_10\"\n                        defaultMessage=\"□ General requirements. Customer has an ongoing obligation to ensure best practices are followed during the handling, storage, fabrication, installation, and disposal of Cosentino Products. This includes informing and training all employees and installers, including third-party subcontracted installers, on these best practices. The Customer will prioritize the safety of Cosentino’s customers and their own personnel at all times, adhering to all applicable safety guidelines, environmental laws, and procedures. These procedures must conform to those required or recommended by federal, state, national, and local governmental or quasi-governmental authorities with jurisdiction over the fabrication activities. This includes, but is not limited to, all applicable guidelines and regulations issued by the federal Occupational Safety and Health Administration (OSHA) and any relevant national and state agencies.\"\n                    />\n                </p>\n                <p>\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_11\"\n                        defaultMessage=\"□ Silica Related Requirements. THE CUSTOMER UNDERSTANDS AND WILL ENSURE THAT ITS EMPLOYEES, SUBCONTRACTORS, AGENTS, CUSTOMERS, AND/OR FABRICATORS UNDERSTAND THAT CHIPPING, DRILLING, POLISHING, OR GRINDING OF COSENTINO PRODUCTS, ESPECIALLY THROUGH DRY CUTTING, EMITS AIRBORNE PARTICLES, INCLUDING CRYSTALLINE SILICA. INHALATION OF THESE PARTICLES MAY CAUSE SILICOSIS OR OTHER OCCUPATIONAL ILLNESSES OR HEALTH CONDITIONS. COSENTINO REQUIRES THAT FABRICATORS OF COSENTINO PRODUCTS UTILIZE WET CUTTING, WET GRINDING, WET MILLING, WET POLISHING, TOGETHER WITH ANY OTHER APPROPRIATE METHODS TO PREVENT THE RISK OF INHALATION OF AIRBORNE PARTICLES AND RESPIRATORY ILLNESSES. FABRICATORS ARE RESPONSIBLE FOR ENSURING THE SAFETY OF THEIR EMPLOYEES AT THE WORKSITE, AND MUST TRAIN THEM AND IMPLEMENT ALL APPROPRIATE SAFETY MEASURES TO PREVENT EXPOSURE TO SILICA DUST OR ANY OTHER HAZARDS.\"\n                    />\n                </p>\n                <p>\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_12\"\n                        defaultMessage=\"□ Installation site. The Customer, along with any fabricator and installer under their direction, must ensure that all necessary mechanical processing, particularly cutting and polishing of the Cosentino Product, is performed at the Fabricator’s site. This should be avoided at the end customer’s site during installation. However, if minor modifications are unavoidable, dust emissions during processing must be minimized, for example, by using wet methods. If wet processing is not feasible at the end customer’s installation site, the Customer, fabricator and installer should use hand tools equipped with efficient local exhaust ventilation (LEV) systems to suppress exposure to airborne particles of dust and respirable crystalline silica. The Customer is advised to review the Health & Safety Guide for installers, available at <a href='https://osh.cosentino.com' target='_blank' rel='noopener noreferrer'>https://osh.cosentino.com</a>.\"\n                    />\n                </p>\n                <p className=\"health-conditions-modal-last-para\">\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_13\"\n                        defaultMessage=\"□ Waste disposal. Waste generated from processing Cosentino Products contains crystalline silica. It needs to be handled, stored and disposed avoiding dust particles getting airborne. All waste that is generated by the fabrication of Cosentino Products or accessory chemicals that are otherwise used by Customer or fabricator, if applicable, must be properly managed, stored, transported, and disposed of in accordance with applicable local, state, and federal laws, rules, and regulations.\"\n                    />\n                </p>\n                {/* <p className=\"health-conditions-modal-last-para\">\n                    <FormattedHTMLMessage\n                        id=\"health_safety_conditions_message_content_14\"\n                        defaultMessage=\"By accepting below, and on behalf of the Customer, I acknowledge that the Customer has read and understood the above information and requirements. The Customer is aware of and complies with all applicable laws and regulations. I also represent and warrant Costumer has recurrently received and been aware of the safety information regarding crystalline silica and other risks associated with processing Cosentino Products, as provided in Cosentino’s safety labels, safety data sheets, and good practice guides that Cosentino updates periodically.\"\n                    />\n                </p> */}\n            </Modal>\n        </div>\n    )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ModalLinkHealthConditions)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport Translation from '../../global/Translation'\nimport { getShowCheckboxAustraliaLegalProcess } from '../../../store/ui/reducers'\nimport { toggleAustraliaLegalProcessConditionsCheck } from '../../../store/checkout/actions'\n\nclass CheckboxAustraliaLegalProcessConditions extends React.Component {\n    render() {\n        const { showCheckboxAustraliaLegalProcess, toggleAustraliaLegalProcessConditionsCheck } = this.props\n        \n        if (!showCheckboxAustraliaLegalProcess) return null\n\n        return(\n            <label className=\"CheckboxLinkSaleConditions\" data-qas=\"checkout_steptwo-checkbox-health-conditions-checkbox\">\n              <input\n                name=\"health_conditions_check\"\n                type=\"checkbox\"\n                onClick={input => toggleAustraliaLegalProcessConditionsCheck(input.target.checked)} />\n                {' '}\n                <span className='checkmark' />\n                <Translation id=\"australia_legal_process_conditions_check\" defaultMessage=\"My acceptance of this order confirms that the products supplied by Cosentino Australia PTY are intended to fulfill a contract established before December 31, 2023.\" />\n            </label>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        showCheckboxAustraliaLegalProcess: getShowCheckboxAustraliaLegalProcess(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        toggleAustraliaLegalProcessConditionsCheck: checked => {\n            dispatch(toggleAustraliaLegalProcessConditionsCheck(checked))\n        }\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(CheckboxAustraliaLegalProcessConditions)","import React from \"react\";\nimport Translation from \"../global/Translation\";\nimport Select from \"react-select\";\nimport {RadioButton} from \"@progress/kendo-react-inputs\";\nimport {injectIntl} from \"react-intl\";\nimport {\n    canSeeVirtualVisitOptions, getVirtualVisitSalesforceIds\n} from \"../../store/checkout/reducers\";\nimport {\n    fetchVirtualVisitSalesforceId, setVirtualVisitData\n} from \"../../store/checkout/actions\";\nimport {connect} from \"react-redux\";\n\nclass SelectVirtualVisitComponent extends React.Component {\n\n    orderOriginOptions = [\n        {\n            value: \"normal_order\",\n            label: <Translation id=\"normal_order\" defaultMessage=\"Normal order\" gtm-label=\"virtual_origin_normal_order\"/>\n        },\n        {\n            value: \"virtual_visit\",\n            label: <Translation id=\"virtual_visit\" defaultMessage=\"Virtual visit\" gtm-label=\"virtual_origin_virtual_visit\"/>\n        },\n        {\n            value: \"brazil_promo\",\n            label: <Translation id=\"brazil_promo\" defaultMessage=\"Brazil Promo\" gtm-label=\"virtual_origin_brazil_promo\"/>\n        },\n        {\n            value: \"brazil_trip\",\n            label: <Translation id=\"brazil_trip\" defaultMessage=\"Brazil trip\" gtm-label=\"virtual_origin_brazil_trip\"/>\n        }\n    ]\n\n    constructor(props) {\n        super(props)\n        this.state = {\n            fromPromo: false,\n            fromVirtualVisit: false,\n            selectedOrderOriginOption: this.orderOriginOptions[0],\n            selectedSalesforceIdOption: null\n        }\n    }\n\n    componentDidUpdate(prevProps, prevState) {\n        if (\n            this.state.selectedSalesforceIdOption !== prevState.selectedSalesforceIdOption\n            || this.state.fromVirtualVisit !== prevState.fromVirtualVisit\n            || this.state.selectedOrderOriginOption.value !== prevState.selectedOrderOriginOption.value\n        ) {\n            this.props.setVirtualVisitData(this.getVirtualVisitData())\n        }\n    }\n\n    componentWillUnmount() {\n        this.props.setVirtualVisitData(null)\n    }\n\n    getVirtualVisitData = () => {\n        if (\n            this.state.selectedOrderOriginOption.value === 'virtual_visit'\n            || this.state.selectedOrderOriginOption.value === 'brazil_promo'\n            || this.state.selectedOrderOriginOption.value === 'brazil_trip'\n        ) {\n            return {\n                type: this.state.selectedOrderOriginOption.value,\n                salesforceId: this.state.selectedSalesforceIdOption ? this.state.selectedSalesforceIdOption.value : null,\n                isVirtualPromo: this.state.fromPromo || this.state.fromVirtualVisit\n            }\n        }\n        return null\n    }\n\n\n    render() {\n        if (!this.props.canSeeVirtualVisitOptions) return <React.Fragment/>\n\n        return (\n            <div className=\"mb-5\">\n                <h1 className=\"shipping_information\">\n                    <Translation id=\"virtual_visit_section_title\" defaultMessage=\"Information about the cause / origin of the order\"/>\n                </h1>\n\n                <div className=\"container mt-4\">\n                    <div className=\"row\">\n                        <div className=\"col-xl-4 p-0 pr-xl-3\">\n                            <label htmlFor=\"select-order-origin\">\n                                <Translation id=\"order_origin\" defaultMessage=\"Order origin\" />\n                            </label>\n                            <Select\n                                key={this.state.selectedOrderOriginOption}\n                                id=\"select-order-origin\"\n                                name=\"select-order-origin\"\n                                value={this.state.selectedOrderOriginOption}\n                                className={'form-control'}\n                                options={this.orderOriginOptions}\n                                onChange={(v) => {\n                                    this.setState({\n                                        selectedOrderOriginOption: v,\n                                        fromPromo: false,\n                                        fromVirtualVisit: false,\n                                        selectedSalesforceIdOption: null\n                                    })\n                                    if (!this.props.virtualVisitSalesforceIds) this.props.fetchVirtualVisitSalesforceId()\n\n                                    this.props.trigVirtualVisitAnalyticsEvent('virtual_visit', 'select', 'order_origin_' + v.value)\n                                }}\n                                searchable={false}\n                                clearable={false}\n                            />\n                        </div>\n                        {\n                            this.state.selectedOrderOriginOption.value === 'brazil_promo' &&\n                            <div className=\"col-xl-3 p-0 pr-xl-3\">\n                                <label htmlFor=\"radio-comes-from-vv\">\n                                    <Translation id=\"comes_from_vv\" defaultMessage=\"Comes from virtual visit?\" />\n                                </label>\n                                <div id=\"radio-comes-from-vv\" style={{display: \"flex\", alignItems: \"center\", height: \"36px\", columnGap: \"24px\"}}>\n                                                    <span>\n                                                        <RadioButton onClick={() => {\n                                                                this.setState({fromVirtualVisit: true})\n                                                                this.props.trigVirtualVisitAnalyticsEvent('virtual_visit', 'click', 'from_virtual_yes')\n                                                            }}\n                                                             label={this.props.intl.formatMessage({ id: 'yes' })}\n                                                             name=\"radio-comes-from-vv-1\"\n                                                             value=\"1\"\n                                                             checked={this.state.fromVirtualVisit}\n                                                             key={'radio-comes-from-vv' + this.state.fromVirtualVisit}\n                                                             gtm-label=\"virtual_visit_yes\"\n                                                        />\n                                                    </span>\n                                    <span>\n                                                        <RadioButton onClick={() => {\n                                                                this.setState({fromVirtualVisit: false, selectedSalesforceIdOption: null})\n                                                                this.props.trigVirtualVisitAnalyticsEvent('virtual_visit', 'click', 'from_virtual_no')\n                                                            }}\n                                                             label={this.props.intl.formatMessage({ id: 'no' })}\n                                                             name=\"radio-comes-from-vv-2\"\n                                                             value=\"2\"\n                                                             checked={!this.state.fromVirtualVisit}\n                                                             key={'radio-comes-from-vv-2' + this.state.fromVirtualVisit}\n                                                             gtm-label=\"virtual_visit_no\"\n                                                        />\n                                                    </span>\n                                </div>\n                            </div>\n                        }\n                        {\n                            (this.state.selectedOrderOriginOption.value === 'virtual_visit' || this.state.fromVirtualVisit) &&\n                            <div className=\"col-xl-4 p-0\">\n                                <label htmlFor=\"select-salesforce-id\">\n                                    <Translation id=\"virtual_visit\" defaultMessage=\"Virtual visit\" />\n                                    {\n                                        !this.state.selectedSalesforceIdOption &&\n                                        <strong style={{color:'red'}}>\n                                            &nbsp;*\n                                        </strong>\n                                    }\n                                </label>\n                                <Select\n                                    key={this.state.selectedSalesforceIdOption}\n                                    id=\"select-salesforce-id\"\n                                    name=\"select-salesforce-id\"\n                                    value={this.state.selectedSalesforceIdOption}\n                                    className={'form-control'}\n                                    options={this.props.virtualVisitSalesforceIds}\n                                    onChange={(v) => this.setState({selectedSalesforceIdOption: v})}\n                                    searchable={false}\n                                    clearable={false}\n                                    isLoading={this.props.loadingVvSalesforceIds}\n                                />\n                            </div>\n                        }\n                        {\n                            this.state.selectedOrderOriginOption.value === 'virtual_visit' &&\n                            <div className=\"col-xl-4 p-0 pl-xl-3\">\n                                <label htmlFor=\"radio-select-promo\">\n                                    <Translation id=\"is_brazil_promo_order\" defaultMessage=\"It's a Brazil Promo order?\" />\n                                </label>\n                                <div id=\"radio-select-promo\" style={{display: \"flex\", alignItems: \"center\", height: \"36px\", columnGap: \"24px\"}}>\n                                    <span>\n                                        <RadioButton onClick={() => {\n                                                this.setState({fromPromo: true})\n                                                this.props.trigVirtualVisitAnalyticsEvent('virtual_visit', 'click', 'promotion_yes')\n                                            }}\n                                            label={this.props.intl.formatMessage({ id: 'yes' })}\n                                            name=\"radio-select-promo-1\"\n                                            value=\"1\"\n                                            checked={this.state.fromPromo}\n                                            key={\"radio-select-promo-1\" + this.state.fromPromo}\n                                            gtm-label=\"virtual_promotion_yes\"\n                                        />\n                                    </span>\n                                    <span>\n                                        <RadioButton onClick={() => {\n                                                this.setState({fromPromo: false})\n                                                this.props.trigVirtualVisitAnalyticsEvent('virtual_visit', 'click', 'promotion_no')\n                                            }}\n                                            label={this.props.intl.formatMessage({ id: 'no' })}\n                                            name=\"radio-select-promo-2\"\n                                            value=\"2\"\n                                            checked={!this.state.fromPromo}\n                                            key={\"radio-select-promo-2\" + this.state.fromPromo}\n                                            gtm-label=\"virtual_promotion_no\"\n                                        />\n                                    </span>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = (state, props) => {\n    return {\n        canSeeVirtualVisitOptions: canSeeVirtualVisitOptions(state),\n        virtualVisitSalesforceIds: getVirtualVisitSalesforceIds(state),\n        loadingVvSalesforceIds: state.checkout.loadingVvSalesforceIds\n    }\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n    return {\n        fetchVirtualVisitSalesforceId: () => dispatch(fetchVirtualVisitSalesforceId(props.intl)),\n        setVirtualVisitData: (vvData) => dispatch(setVirtualVisitData(vvData)),\n        trigVirtualVisitAnalyticsEvent: ((category, action, label) => dispatch({\n            type: 'SELECT_VIRTUAL_VISIT', values: {category, action, label}\n        })),\n    }\n}\n\nexport default injectIntl(connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(SelectVirtualVisitComponent))","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport 'react-datepicker/dist/react-datepicker-cssmodules.css'\n\nimport Alerts from '../../alerts/Alerts'\nimport Button from '../../global/Button'\nimport confirm from '../../global/confirm'\nimport moment from 'moment'\nimport OrderFinishedContainer from '../../order-finished/OrderFinishedContainer'\nimport Select from 'react-select'\nimport Modal from '../../global/Modal'\nimport CheckboxLinkSaleConditions from '../global/CheckboxLinkSaleConditions'\nimport CheckboxLinkHealthConditions from '../global/CheckboxLinkHealthConditions'\nimport ModalLinkHealthConditions from '../global/ModalLinkHealthConditions'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport ProductImage from '../../catalog/ProductImage'\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport DisplayBrand from '../../catalog/rectangleResult/displays/DisplayBrand'\nimport CheckboxAustraliaLegalProcessConditions from '../global/CheckboxAustraliaLegalProcessConditions'\nimport SelectVirtualVisitComponent from \"../SelectVirtualVisitComponent\";\n\n\nclass CheckoutFormCustomer extends React.Component {\n\n    state = {\n        showHealthConditionsModal: false,\n    }\n\n    componentDidMount() {\n        this.props.resetCheckout().then(() => {\n            this.props.setEmployeeId(this.props.employeeId)\n            this.props.fetchShippingAddresses().then(() => {\n                if (this.props.shippingAddresses && this.props.shippingAddresses.length > 0) {\n                    let firstShippingAddres = this.props.shippingAddresses.filter(shippingAddress => {\n                        if (this.props.shippingMethod === 'ENDI_CONTAINER') return shippingAddress.ecosentinoKey === this.props.endiSelectedShippingAddressId\n                        if (this.props.isMallCartForContainer) return shippingAddress.allowedShippingTypes.includes('SINGLE_SLAB')\n                        return shippingAddress.allowedShippingTypes.includes(this.props.shippingMethod)\n                    })[0]\n                    this.props.setCountryOfSend(firstShippingAddres.country)\n                    this.props.setSelectedShippingCenterId(firstShippingAddres.centerId)\n                    this.props.setSelectedShippingAddressId(firstShippingAddres.shippingAddressId)\n                    this.props.setSelectedShippingAddressSalesOrg(firstShippingAddres.salesOrg)\n                    this.props.setSelectedShippingAddressEcosentinoKey(firstShippingAddres.ecosentinoKey)\n\n                    this.props.setSelectedShippingAddress(firstShippingAddres)\n                    this.props.setHasSelectedCenter(false)\n                }\n            })\n            // *** Descomentar si volvemos a activar las ofertas ***\n            // this.props.isOffer && this.props.setOfferMode()\n            // *****************************************************\n        })\n\n        this.props.onLoadCheckout()\n    }\n\n    canSendCheckout = () => {\n        if (!this.props.canSendMinMaxCheckout()) return false\n        if (!this.props.getSelectedShippingAddress) return false\n        if (this.props.isSending) return false\n        if (this.props.totalQty <= 0) return false\n        if (!this.props.canSendNeedDestination()) return false\n        if (!this.props.canSendCheckoutSaleConditions) return false\n        if (!this.props.canSendCheckoutHealthConditions && this.props.useOldHealthConditionsWorkflow) return false\n        if (this.props.transformingSkuToLots) return false\n        if (this.props.isEmserUser && !this.props.po) return false\n        //if (!this.props.canSendCheckoutAustraliaLegalProcessConditions) return false\n\n        return true\n    }\n\n    getOptionsCountryOfSend = filteredShippingAddressesForUsers => {\n        if (filteredShippingAddressesForUsers)\n            return filteredShippingAddressesForUsers.map(shippingAddress => ({\n                value: shippingAddress.ecosentinoKey,\n                label:\n                    shippingAddress.centerName +\n                    ' ' +\n                    shippingAddress.customerName +\n                    ' ' +\n                    shippingAddress.address +\n                    ' ' +\n                    shippingAddress.zipCode +\n                    ' ' +\n                    shippingAddress.city +\n                    ' ' +\n                    shippingAddress.country +\n                    ' ' +\n                    shippingAddress.salesOrg\n            }))\n        else return []\n    }\n\n    prepareCart() {\n        return this.props.isOffer ? this.props.transformSkuToLots() : Promise.resolve()\n    }\n\n    submitCheckout = () => {\n        if (!this.canSendCheckout()) return\n\n        // Flujo antiguo\n        if (this.props.useOldHealthConditionsWorkflow) {\n            this.prepareCart().then(() => {\n                if (this.props.haveSomeProductsBelowThreshold) {\n                    this.showStockThresholdConfirmation().then(() => this.props.submitCheckout())\n                } else {\n                    this.props.submitCheckout()\n                }\n            })\n        }\n        // Flujo nuevo\n        else {\n            if (this.state.showHealthConditionsModal) {\n                return\n            }\n            this.setState({ showHealthConditionsModal: true })\n        }\n    }\n\n    handleConfirmConditions = () => {\n        this.setState({ showHealthConditionsModal: false }, () => {\n            this.prepareCart().then(() => {\n                if (this.props.haveSomeProductsBelowThreshold) {\n                    this.showStockThresholdConfirmation().then(() => this.props.submitCheckout())\n                } else {\n                    this.props.submitCheckout()\n                }\n            })\n        })\n    }\n\n    handleCancelConditions = () => {\n        this.setState({ showHealthConditionsModal: false })\n    }\n\n    showStockThresholdConfirmation = () => {\n        return confirm(\n            <div className=\"confirm-checkout\">\n                <div className=\"confirm-checkout_title\">\n                    {this.props.intl.formatMessage({ id: 'please_confirm_the_order' })}:\n                </div>\n                <div className=\"confirm-checkout_text\">\n                    {this.props.intl.formatMessage({\n                        id: 'there_are_only_a_few_remaining_items_in_stock_in_at_least_one_of_the_chosen_materials_in_the_order_which_may_constrain_the_availability_upon_orden_confirmation',\n                    })}\n                </div>\n            </div>\n        )\n    }\n\n    redirectToCart() {\n        this.props.closeNoStockModal()\n        this.props.onStep(0)\n    }\n\n    render() {\n        const { shippingAddresses, current, shippingMethod, goalMax, showHealthConditions } = this.props\n\n        //allowedShippingTypes for users\n        let filteredShippingAddressesForUsers = shippingAddresses\n            ? shippingAddresses.filter(shippingAddress => {\n                  if (this.props.isMallCartForContainer) return shippingAddress.allowedShippingTypes.includes('SINGLE_SLAB')\n                  return shippingAddress.allowedShippingTypes.includes(shippingMethod)\n              })\n            : []\n\n        const difCurrent = current <= goalMax ? 0 : current - goalMax\n\n        if (this.props.isLoadingShippingAddress) return <Translation id=\"loading_shipping_addresses\" defaultMessage=\"Loading Shipping Addresses\" />\n        let destinationForCustomer = [\n            { value: 'CLIENTE', label: this.props.intl.formatMessage({ id: 'customer' }) },\n            {\n                value: 'HUB_CLIENTE',\n                label: this.props.intl.formatMessage({ id: 'cosentino_hub' })\n            },\n            {\n                value: 'CENTER',\n                label: this.props.intl.formatMessage({ id: 'center' })\n            }\n        ]\n        if (this.props.isMallCartForContainer && this.props.current <= this.props.goalMin) {\n            destinationForCustomer = [\n                {\n                    value: 'HUB_CLIENTE',\n                    label: this.props.intl.formatMessage({ id: 'cosentino_hub' })\n                }\n            ]\n        }\n\n        let alertType = this.props.alert\n        let alertStatus = this.props.status\n        if (this.props.alert === 'NOT_ENOUGH_LOTS' && this.props.isOffer) {\n            alertType = 'NOT_ENOUGH_LOTS_OFFER'\n            alertStatus = 400\n        }\n\n        return (\n            <div className='checkout-address-box'>\n                <SelectVirtualVisitComponent/>\n                <h1 className='shipping_information'>\n                    <Translation id='shipping_information' defaultMessage='Shipping information' />\n                </h1>\n                <hr/>\n                <form>\n                    <Alerts\n                        alert={alertType}\n                        values={{ monthItems: this.props.monthItems, waitTillDate: this.props.waitTillDate ? moment(this.props.waitTillDate).format('L') : null }}\n                        status={alertStatus}\n                    />\n\n                    {this.props.centerSelected == this.props.latinaVitoriaCenterId && !this.props.canSendNaturalStoneContainer() ? (\n                        <Alerts alert={this.props.intl.formatMessage({ id: 'Minimum/maximum weight exceeded, please adjust your order' })} />\n                    ) : (\n                        ''\n                    )}\n                    {(this.props.centerSelected == this.props.naturalStoneSpainCenterId || this.props.centerSelected == this.props.latinaVitoriaCenterId) &&\n                    this.canSendCheckout() ? (\n                        <Translation id=\"natural_stone_may_be_modified_due_to_shipment\" defaultMessage=\"Please bear in mind the order can be modified due to the shipment\" />\n                    ) : (\n                        ''\n                    )}\n\n                    <div className='mb-3'>\n                        {this.props.hasDestination && !this.props.isShippingTypeContainerWhenIreland && (\n                            <div className={`form-group select`}>\n                                <Select\n                                    className={'form-control '}\n                                    placeholder={this.props.intl.formatMessage({ id: 'select_shipping_address' }) + '...'}\n                                    value={this.props.destination}\n                                    onChange={e => {\n                                        e && this.props.setDestination(e.value)\n                                    }}\n                                    options={destinationForCustomer}\n                                />\n                            </div>\n                        )}\n                        {(shippingAddresses || this.props.destination === 'CENTER') && (\n                            <div className=\"form-group select\">\n                                <Select\n                                    id=\"checkout__select_shipping_address-default\"\n                                    className=\"form-control\"\n                                    disabled={this.props.endiSelectedShippingAddressId}\n                                    placeholder={`${this.props.intl.formatMessage({ id: 'select_shipping_address' })}...`}\n                                    value={!this.props.endiSelectedShippingAddressId ? (this.props.selectedShippingAddress ? this.props.selectedShippingAddress.ecosentinoKey : null) : this.props.endiSelectedShippingAddressId}\n                                    onChange={e => {\n                                        e && this.props.changeShippingAddress(e.value)\n                                    }}\n                                    options={!this.props.endiSelectedShippingAddressId ? this.getOptionsCountryOfSend(filteredShippingAddressesForUsers) : this.getOptionsCountryOfSend(filteredShippingAddressesForUsers).filter(e => e.value === this.props.endiSelectedShippingAddressId) }\n                                    clearable={false}\n                                />\n                            </div>\n                        )}\n                    </div>\n                    <hr/>\n                    <div className=\"form-group\">\n                        <label htmlFor=\"input-po\">\n                            <Translation id=\"insert_po\" defaultMessage=\"Insert your PO#\" />\n                            {this.props.isEmserUser && <span style={{ color: 'red' }}> *</span>}\n                        </label>\n                        <input\n                            data-cy=\"checkout__input_po\"\n                            type=\"text\"\n                            className=\"form-control\"\n                            id=\"input-po\"\n                            onChange={e => {\n                                e && this.props.setPo(e.target.value)\n                            }}\n                        />\n                    </div>\n\n                    <div className=\"form-group\">\n                        <label htmlFor=\"input-comments\">\n                            <Translation id=\"comment\" defaultMessage=\"Comments\" />\n                        </label>\n                        <textarea\n                            data-cy=\"checkout__textarea_comment\"\n                            className=\"form-control\"\n                            id=\"input-comments\"\n                            rows=\"3\"\n                            maxLength=\"2499\"\n                            onChange={e => {\n                                e && this.props.setComments(e.target.value)\n                            }}\n                        />\n\n                        {this.props.isEuropeOrIberia ? (\n                            <p style={{ fontSize: '12px', fontWeight: '400', paddingTop: '16px' }}>\n                                <Translation\n                                    id=\"same_batch\"\n                                    defaultMessage=\"Please, indicate if you want the slabs to be the same batch. Check availability with your center. Thank you\"\n                                />\n                            </p>\n                        ) : null}\n                    </div>\n\n                    <div className=\"form-group\">\n                        {/* SALES CONDITIONS CHECKBOX */}\n                        {!this.props.canSendCheckoutSaleConditions && (\n                            <span className='alert_empty'>\n                                <Translation id=\"mandatory_field\" defaultMessage=\"This field is required\" />\n                            </span>\n                        )}\n                        <CheckboxLinkSaleConditions />\n                        {/* SALES CONDITIONS CHECKBOX */}\n\n                        {this.props.useOldHealthConditionsWorkflow ? (\n                            <React.Fragment>\n                                {!this.props.canSendCheckoutHealthConditions && (\n                                    <span className='alert_empty'>\n                                        <Translation id=\"mandatory_field\" defaultMessage=\"This field is required\" />\n                                    </span>\n                                )}\n                                <CheckboxLinkHealthConditions />\n                            </React.Fragment>\n                        ) : (\n                            showHealthConditions && this.state.showHealthConditionsModal && (\n                                <ModalLinkHealthConditions\n                                    onConfirm={this.handleConfirmConditions}\n                                    onCancel={this.handleCancelConditions}\n                                />\n                            )\n                        )}\n\n                        {/* AUSTRALIA CONDITIONS CHECKBOX */}\n                        {/* {!this.props.canSendCheckoutAustraliaLegalProcessConditions && (\n                            <span className='alert_empty'>\n                                <Translation id=\"mandatory_field\" defaultMessage=\"This field is required\" />\n                            </span>\n                        )}\n                        <CheckboxAustraliaLegalProcessConditions /> */}\n                        {/* AUSTRALIA CONDITIONS CHECKBOX */}\n                    </div>\n                </form>\n                <div className=\"row align-items-baseline\">\n                    <div className=\"col-12\" style={{ paddingLeft: '35px', paddingBottom: '10px' }}>\n                        {this.props.transformingSkuToLots && <Alerts alert={'TRANSFORMING_SKU_TO_LOTS'} status=\"warning\" />}\n                    </div>\n                </div>\n\n                {(this.props.reservationCode || this.props.reservationCutToSizeCode) && <OrderFinishedContainer />}\n                {this.props.showModalNoStock && (\n                    <Modal\n                        customClass='modal-no-stock'\n                        title={<Translation id=\"no_stock_checkout_title\" defaultMessage=\"Materials without stock in your order\" />}\n                        onClose={() => this.props.closeNoStockModal()}\n                        size=\"large\"\n                        footer={\n                            <div className='d-flex'>\n                                <Button className='mr-3' onClick={() => this.props.closeNoStockModal()} size=\"large\">\n                                    <Translation id=\"remove_all_items\" defaultMessage='Remove all items' />\n                                </Button>\n                                <Button onClick={() => this.redirectToCart()} inverted size=\"large\">\n                                    <Translation id=\"return_the_cart\" defaultMessage='Return to the cart' />\n                                </Button>\n                            </div>\n                        }\n                    >\n                        <div className=\"row\">\n                            <div className=\"col-12\">\n                                <div className=\"confirm-checkout_text\">\n                                    <Translation\n                                        id=\"no_stock_checkout_desc\"\n                                        defaultMessage=\"There are some materials in your order without enough stock to continue. Please, review the material list below and make the adjustment in the materials units to continue with your order.\"\n                                    />\n                                </div>\n                            </div>\n                        </div>\n                        <div>\n                            {this.props.haveSomeProductsWithoutSapStock.length > 0 && (\n                                <div className='d-flex justify-content-between align-items-center line-item modal-no-stock-title'>\n                                    <div className='d-flex-2'></div>\n                                    <div className='d-flex-1 d-flex justify-content-center'>\n                                        <Translation id=\"requestedQty\" />\n                                    </div>\n                                    <div className='d-flex-1 d-flex justify-content-center'>\n                                        <Translation id=\"available\" />\n                                    </div>\n                                </div>\n                            )}\n                            {this.props.haveSomeProductsWithoutSapStock.map(line => (\n                                <div className='d-flex justify-content-between align-items-center line-item'>\n                                    <div className='d-flex d-flex-2'>\n                                        <div className='mr-4 position-relative' style={{maxHeight: '115px', minWidth: '160px'}}>\n                                            <div className=\"indicators\">\n                                                {line.extra && line.extra.outlet && (\n                                                    <DisplayOutletIndicator\n                                                        outletQuality={line.extra.outlet}\n                                                        outletDeviated={this.props.isAdmin || this.props.impersonatedBy ? this.product.outletDeviated : null}\n                                                    />\n                                                )}\n                                            </div>\n                                            <ProductImage product={line.product} />\n                                        </div>\n                                        <div className='d-flex flex-column'>\n                                            <DisplayBrand brand={line.product.brand} span></DisplayBrand>\n                                            <ProductDisplayName product={line.product} />\n                                            <div className='d-flex'>\n                                                {!line.cutToSize && line.product.finish && (\n                                                    <div className=\"mini_cart_line_info__line\">\n                                                        <Translation id={line.product.finish} />\n                                                    </div>\n                                                )}\n                                                {line.cutToSize && line.cutToSize.finish && (\n                                                    <div className=\"mini_cart_line_info__line\">\n                                                        <div className=\"subtitle\">\n                                                            <Translation id={line.cutToSize.finish} />\n                                                        </div>\n                                                    </div>\n                                                )}\n                                                {line.product.thickness && !line.cutToSize && (\n                                                    <div className=\"mini_cart_line_info__line mini_cart_line_info__line--dimensions\">\n                                                    <span>\n                                                        <i className=\"fas fa-sort-amount-down\" />\n                                                        {line.product.thickness} cm.{' '}\n                                                    </span>\n                                                    </div>\n                                                )}\n                                            </div>\n                                            <div>\n                                                <span className='link' onClick={() => this.props.onDelete(line.lineId)}><i style={{marginRight: '8px'}} className=\"mt-1 fal fa-trash-alt\"></i> Eliminar</span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div className='d-flex-1 d-flex justify-content-center'>\n                                        {line.qty}\n                                    </div>\n                                    <div className='d-flex-1 d-flex justify-content-center'>\n                                        {line.stockOutletAvailable}\n                                    </div>\n                                </div>\n                            ))}\n                        </div>\n                    </Modal>\n                )}\n            </div>\n        )\n    }\n}\n\nexport default CheckoutFormCustomer\n","import { connect } from 'react-redux'\nimport {\n    getShippingMethod,\n    getHasMinWeight,\n    getSelectedCenter,\n    isEuropeOrIberia,\n    canOffer,\n    getNaturalStoneSpainCenterId,\n    getLatinaVitoriaCenterId,\n    isShippingTypeContainerWhenIreland\n} from '../../../store/centers/reducers'\nimport { checkout, transformSkuToLots, setShowModalNoStock, removeCartLine } from '../../../store/cart/actions'\nimport {\n    getAlert,\n    getGoalMax,\n    getGoalMin,\n    getIsCartCutToSize,\n    getHaveSomeProductsBelowThreshold,\n    getHaveSomeProductsWithoutSapStock,\n    getKgPoundRatio,\n    getMonthItems,\n    getReservationCode,\n    getReservationCutToSizeCode,\n    getReservationConfigurableCode,\n    getShowModalNoStock,\n    getStatus,\n    getTransformingSkuToLots,\n    getWaitTillDate,\n    isMallCartForContainer,\n    isSending,\n    qtySelector,\n    weightSelector, getReservationQuickShipConfigurableCode\n} from '../../../store/cart/reducers'\nimport { getLanguage, getShowHealthConditions } from '../../../store/ui/reducers'\nimport { getProfileConfiguration } from '../../../store/profile-configuration/reducers'\nimport { getEndiSelectedShippingAddressId, getShippingAddresses, isLoadingShippingAddress } from '../../../store/shipping-addresses/reducers'\nimport { fetchShippingAddresses } from '../../../store/shipping-addresses/actions'\nimport {\n    canSendMinMaxCheckout,\n    canSendNaturalStoneContainer,\n    canSendNeedDestination,\n    changeShippingAddress,\n    resetCheckout,\n    setComments,\n    setCountryOfSend,\n    setCutToSizeFile,\n    setDeliveryDate,\n    setDestination,\n    setEmployeeId,\n    setHasSelectedCenter,\n    setPo,\n    setSelectedShippingAddress,\n    setSelectedShippingAddressEcosentinoKey,\n    setSelectedShippingAddressId,\n    setSelectedShippingAddressSalesOrg,\n    setSelectedShippingCenterId\n} from '../../../store/checkout/actions'\nimport {\n    getDeliveryDate,\n    getSelectedShippingAddress,\n    getDestination,\n    getMinRequiredDate,\n    canSendCheckoutSaleConditions,\n    canSendCheckoutHealthConditions,\n    getPo,\n    getSaleConditionsCheck,\n    getHealthConditionsCheck,\n    canSendCheckoutAustraliaLegalProcessConditions,\n    getUseOldHealthConditionsWorkflow\n} from '../../../store/checkout/reducers'\nimport { getEmployeeId } from '../../../store/big-account/reducers'\nimport { isEmserUser } from '../../../store/login/reducers'\nimport CheckoutFormCustomerV2 from './CheckoutFormCustomerV2'\nimport React from 'react'\nimport { dispatchPushURL } from '../../../store/ui/actions'\n\nconst mapStateToProps = state => {\n    let language = getLanguage(state)\n    let defaultUnit = language === 'en' || language === 'en-US' || language === 'fr-CA' ? 'LB' : 'KG'\n    let unit = getProfileConfiguration(state).weightUnit ? getProfileConfiguration(state).weightUnit : defaultUnit \n\n    return {\n        current: unit === 'KG' ? weightSelector(state) : Math.floor(weightSelector(state) * getKgPoundRatio()),\n        goalMin: getGoalMin(state, unit),\n        goalMax: getGoalMax(state, unit),\n        shippingAddresses: getShippingAddresses(state),\n        hasDestination: getShippingMethod(state) === 'CONTAINER',\n        shippingMethod: getShippingMethod(state),\n        alert: getAlert(state),\n        status: getStatus(state),\n        monthItems: getMonthItems(state),\n        waitTillDate: getWaitTillDate(state),\n        isSending: isSending(state),\n        reservationCode: getReservationCode(state),\n        totalQty: qtySelector(state),\n        hasMinWeight: getHasMinWeight(state),\n        centerSelected: getSelectedCenter(state),\n        haveCutToSize: getIsCartCutToSize(state),\n        isEuropeOrIberia: isEuropeOrIberia(state),\n        isLoadingShippingAddress: isLoadingShippingAddress(state),\n        deliveryDate: getDeliveryDate(state),\n        minDeliveryDate: getMinRequiredDate(state),\n        selectedShippingAddress: getSelectedShippingAddress(state),\n        destination: getDestination(state),\n        haveSomeProductsBelowThreshold: getHaveSomeProductsBelowThreshold(state),\n        haveSomeProductsWithoutSapStock: getHaveSomeProductsWithoutSapStock(state),\n        canSendCheckoutSaleConditions: canSendCheckoutSaleConditions(state),\n        canSendCheckoutHealthConditions: canSendCheckoutHealthConditions(state),\n        isOffer: canOffer(state),\n        isMallCartForContainer: isMallCartForContainer(state),\n        employeeId: getEmployeeId(state),\n        showModalNoStock: getShowModalNoStock(state),\n        naturalStoneSpainCenterId: getNaturalStoneSpainCenterId(),\n        latinaVitoriaCenterId: getLatinaVitoriaCenterId(),\n        transformingSkuToLots: getTransformingSkuToLots(state),\n        isEmserUser: isEmserUser(state),\n        po: getPo(state),\n        reservationCutToSizeCode: getReservationCutToSizeCode(state),\n        reservationConfigurableCode: getReservationConfigurableCode(state),\n        reservationQuickShipConfigurableCode: getReservationQuickShipConfigurableCode(state),\n        hasSaleConditionsCheck: getSaleConditionsCheck(state),\n        hasHealthConditionsCheck: getHealthConditionsCheck(state),\n        endiSelectedShippingAddressId: getEndiSelectedShippingAddressId(state),\n        getSelectedShippingAddress: getSelectedShippingAddress(state),\n        getDestination: getDestination(state),\n        canSendCheckoutAustraliaLegalProcessConditions: canSendCheckoutAustraliaLegalProcessConditions(state),\n        showHealthConditions: getShowHealthConditions(state),\n        useOldHealthConditionsWorkflow: getUseOldHealthConditionsWorkflow(state),\n        isShippingTypeContainerWhenIreland: isShippingTypeContainerWhenIreland(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchShippingAddresses: () => dispatch(fetchShippingAddresses()),\n        onLoadCheckout: () => dispatch({ type: 'CHECKOUT_VISIT' }),\n        setDeliveryDate: value => dispatch(setDeliveryDate(value)),\n        changeShippingAddress: value => dispatch(changeShippingAddress(value)),\n        canSendMinMaxCheckout: () => dispatch(canSendMinMaxCheckout()),\n        canSendNeedDestination: () => dispatch(canSendNeedDestination()),\n        canSendNaturalStoneContainer: () => dispatch(canSendNaturalStoneContainer()),\n        resetCheckout: () => dispatch(resetCheckout()),\n        setCountryOfSend: value => dispatch(setCountryOfSend(value)),\n        setSelectedShippingCenterId: value => dispatch(setSelectedShippingCenterId(value)),\n        setSelectedShippingAddressId: value => dispatch(setSelectedShippingAddressId(value)),\n        setSelectedShippingAddress: value => dispatch(setSelectedShippingAddress(value)),\n        setSelectedShippingAddressEcosentinoKey: value => dispatch(setSelectedShippingAddressEcosentinoKey(value)),\n        setSelectedShippingAddressSalesOrg: value => dispatch(setSelectedShippingAddressSalesOrg(value)),\n        setDestination: value => dispatch(setDestination(value)),\n        setPo: value => dispatch(setPo(value)),\n        setCutToSizeFile: value => dispatch(setCutToSizeFile(value)),\n        setComments: value => dispatch(setComments(value)),\n        submitCheckout: () => dispatch(checkout(true)),\n        setEmployeeId: value => dispatch(setEmployeeId(value)),\n        setHasSelectedCenter: value => dispatch(setHasSelectedCenter(value)),\n        transformSkuToLots: () => {\n            return dispatch(transformSkuToLots())\n        },\n        setOfferMode: () => dispatch({ type: 'CHECKOUT_HAVE_OFFER' }),\n        closeNoStockModal: () => dispatch(setShowModalNoStock(false)),\n        showNoStockModal: () => dispatch(setShowModalNoStock(true)),\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        onDelete: lineId => {\n            dispatch(removeCartLine(lineId))\n        },\n    }\n}\n\nconst CheckoutFormCustomerDesign = React.forwardRef((props, ref) => <CheckoutFormCustomerV2 ref={ref} {...props} />)\n\nconst CheckoutFormCustomerContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps,\n    null,\n    { forwardRef: true }\n)(CheckoutFormCustomerDesign)\n\nexport default CheckoutFormCustomerContainer\n","import React from \"react\";\nimport Translation from \"../global/Translation\";\nimport DatePicker from \"react-datepicker\";\nimport Select from \"react-select\";\nimport {defineMessages, injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport {setAllLinesDeliveryDates, unsetAllLinesDeliveryDates} from \"../../store/cart/actions\";\n\ndefineMessages({\n    NOT_CHOOSE_ALL_ITEMS_DELIVERY_DATE: {\n        id: 'NOT_CHOOSE_ALL_ITEMS_DELIVERY_DATE',\n        description: 'NOT_CHOOSE_ALL_ITEMS_DELIVERY_DATE',\n        defaultMessage: 'No, I want the products to be delivered according to the estimated delivery date'\n    },\n    CHOOSE_ALL_ITEMS_DELIVERY_DATE: {\n        id: 'CHOOSE_ALL_ITEMS_DELIVERY_DATE',\n        description: 'CHOOSE_ALL_ITEMS_DELIVERY_DATE',\n        defaultMessage: 'Yes, choose the desired delivery date for all products'\n    }\n})\n\n\n\nclass SlaDateSelectV2 extends React.Component {\n\n    DATE_OPTIONS = [\n        {value:0, label:this.props.intl.formatMessage({id:\"NOT_CHOOSE_ALL_ITEMS_DELIVERY_DATE\"})},\n        {value:1, label:this.props.intl.formatMessage({id:\"CHOOSE_ALL_ITEMS_DELIVERY_DATE\"})}\n    ]\n\n    state = {\n        selectedDateOption: 0\n    }\n\n    onChangeOption = (option) => {\n        if (option.value !== this.state.selectedDateOption) {\n            if (option.value === 0) {\n                this.props.selected && this.props.unsetAllLinesDeliveryDates()\n            }\n            else {\n                this.props.selected && this.props.setAllLinesDeliveryDates(this.props.selected, true)\n            }\n            this.setState({selectedDateOption:option.value})\n        }\n    }\n\n    onChangeDate = (date) => {\n        this.props.setAllLinesDeliveryDates(date, true)\n        this.props.onChange(date)\n    }\n\n    render() {\n\n        return (\n            <div className='checkout-cart-date'>\n                <div className='title'>\n                    <Translation id=\"want_to_change_delivery_date\" defaultMessage=\"Do you want to modify the delivery date for all items?\" />\n                </div>\n                {!this.props.isDisabledPreferedDeliveryDatePicker && (\n                    <div className='subtitle'>\n                        {'*'}<Translation id=\"remember_can_change_delivery_date_individually\" defaultMessage=\"Remember that you can modify the delivery dates individually\" />\n                    </div>\n                )}\n\n                <div className='select' gtm-label=\"ec_funnel_compra_fecha_entrega_modificar\">\n                    <Select\n                        style={{fontSize:'14px'}}\n                        id=\"checkout__select_all_items_preferred_delivery_date\"\n                        className=\"form-control\"\n                        value={this.DATE_OPTIONS[this.state.selectedDateOption]}\n                        onChange={this.onChangeOption}\n                        options={this.DATE_OPTIONS}\n                        clearable={false}\n                    />\n                </div>\n\n                {\n                    this.state.selectedDateOption === 1 && (\n                        <div className='date'>\n                            <DatePicker\n                                id=\"all_items_sla_datepicker\"\n                                selected={this.props.selected}\n                                onChange={date => this.onChangeDate(date)}\n                                minDate={this.props.minDate}\n                                className=\"form-control datepicker\"\n                                autoComplete=\"off\"\n                                onKeyDown={e => e.preventDefault()}\n                                dropdownMode=\"select\"\n                            />\n                            <div className='date-text'>\n                                <Translation id=\"this_date_affects_all_items_in_your_order\" defaultMessage=\"This date affects all items in your order.\" /><br/>\n                                {!this.props.isDisabledPreferedDeliveryDatePicker && (\n                                    <Translation id=\"remember_that_you_can_modify_the_delivery_dates_individually\" defaultMessage=\"Remember that you can modify the delivery dates individually\" />\n                                )}\n                            </div>\n                        </div>\n                    )\n                }\n\n            </div>\n        )\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        unsetAllLinesDeliveryDates: () => dispatch(unsetAllLinesDeliveryDates()),\n        setAllLinesDeliveryDates: (deliveryDate, isDefaultDeliveryDate) => dispatch(setAllLinesDeliveryDates(deliveryDate, isDefaultDeliveryDate))\n    }\n}\n\nexport default injectIntl(connect(\n    null,\n    mapDispatchToProps\n)(SlaDateSelectV2))","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport 'react-datepicker/dist/react-datepicker-cssmodules.css'\nimport { injectIntl } from 'react-intl'\n\nimport Alerts from '../../alerts/Alerts'\nimport Button from '../../global/Button'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport moment from 'moment'\nimport OrderFinishedContainer from '../../order-finished/OrderFinishedContainer'\nimport Select from 'react-select'\nimport CheckboxLinkSaleConditions from '../global/CheckboxLinkSaleConditions'\n\nclass CheckoutFormMktoolsV2 extends React.Component {\n\n    constructor(props) {\n        super(props)\n        this.state = {\n            availableSalesOrg: [],\n            validate: {\n                check: false\n            }\n        }\n    }\n\n    componentDidMount() {\n        this.props.resetCheckout().then(() => {\n            this.props.setDeliveryDate(moment().add(1, 'days'))\n            this.props.fetchShippingAddresses().then(() => {\n                if (this.props.shippingAddresses) {\n                    let firstShippingAddress = this.props.shippingAddresses.filter(shippingAddress => {\n                        return shippingAddress.allowedShippingTypes.includes(this.props.shippingMethod)\n                    })[0]\n                    if (this.props.userType === 'CUSTOMER') this.props.setCountryOfSend(firstShippingAddress.country)\n\n                    //antes\n                    let selectedShippingAddres = this.props.mktoolsShippingCenter\n                        ? this.props.mktoolsShippingCenter.toString()\n                        : this.props.shippingAddressesCenters[0].id.toString()\n\n                    //dsps\n                    this.props.setSelectedShippingCenterId(this.props.isAdmin ? selectedShippingAddres : firstShippingAddress.centerId)\n\n                    this.props.setHasSelectedCenter(this.props.isAdmin)\n\n                    this.props.setSelectedShippingAddress(this.props.hasSelectedCenter ? null : firstShippingAddress)\n                    this.props.setSelectedShippingAddressId(this.props.hasSelectedCenter ? null : firstShippingAddress.shippingAddressId)\n\n                    this.props.setProfileConfigurationEmail(this.props.profileConfiguration.email)\n                    this.props.setDestination('CENTER')\n\n                    let availableSalesOrg = []\n                    availableSalesOrg = this.props.shippingAddresses.map(shippingAddress => {\n                        return shippingAddress.salesOrg\n                    })\n\n                    availableSalesOrg = availableSalesOrg.reduce((unique, item) => (unique.includes(item) ? unique : [...unique, item]), [])\n\n                    this.setState({ availableSalesOrg })\n                }\n            })\n        })\n\n        this.props.onLoadCheckout()\n    }\n\n    submitCheckout = () => {\n        if(this.canSendCheckout()) {\n            if (this.props.hasSelectedCenter) this.props.setSelectedShippingAddressId(null)\n            this.props.setDestination(this.props.hasSelectedCenter ? 'CENTER' : 'DISTRIBUIDOR')\n            this.props.submitCheckout()\n        }\n    }\n\n    canSendMktoolLimit = () => {\n        return true\n        // if (this.props.isMkToolsUsaCenter) {\n        //     return this.props.budgetPlusTotal <= this.props.mktoolsBudget\n        // } else return true\n    }\n\n    canSendNeedDestination() {\n        if (this.props.hasDestination || this.props.isAdmin) {\n            return !!this.props.destination\n        } else return true\n    }\n\n    canSendCheckout = () => {\n        const { current, goalMin, goalMax, shippingMethod, hasMinWeight, totalQty } = this.props\n        if(!this.props.canSendCheckoutSaleConditions){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, check: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, check: false}\n            }))\n        }\n        return (\n            ((current >= goalMin && current <= goalMax) || (shippingMethod === 'SINGLE_SLAB' && current <= goalMax) || hasMinWeight || shippingMethod === 'MKTOOLS') &&\n            this.canSendMktoolLimit() &&\n            !this.props.isSending &&\n            totalQty > 0 &&\n            this.canSendNeedDestination() &&\n            this.props.canSendCheckoutSaleConditions\n        )\n    }\n    createShippingAddressLabel = shippingAddress => {\n        return (\n            shippingAddress.centerName +\n            ' ' +\n            shippingAddress.customerName +\n            ' ' +\n            shippingAddress.address +\n            ' ' +\n            shippingAddress.zipCode +\n            ' ' +\n            shippingAddress.city +\n            ' ' +\n            shippingAddress.country\n        )\n    }\n    changeShippingAddress = value => {\n        const { shippingAddresses } = this.props\n        //REVIEW:: PV_REPLACE_CENTERS\n\n        let shippingAddress =\n            shippingAddresses.filter(shippingAddres => {\n                if (this.props.userType === 'CUSTOMER' && this.state.availableSalesOrg && this.state.availableSalesOrg.length > 1) {\n                    // return shippingAddres.shippingAddressId === value && shippingAddres.salesOrg === '1000'\n                    return shippingAddres.shippingAddressId === value && shippingAddres.salesOrg === '1100'\n                } else {\n                    return shippingAddres.shippingAddressId === value\n                }\n            })[0] || null\n        if (this.props.userType === 'CUSTOMER') this.props.setCountryOfSend(shippingAddress.country)\n        if (this.props.userType === 'CUSTOMER') this.props.setSelectedShippingCenterId(shippingAddress.centerId)\n\n        this.props.setHasSelectedCenter(this.props.selectedShippingCenterId === value)\n\n        this.props.setSelectedShippingAddress(shippingAddress)\n\n        this.props.setSelectedShippingAddressId(shippingAddress ? shippingAddress.shippingAddressId : null)\n    }\n\n    getOptionsCountryOfSend = (selectedCenterData, filteredShippingAddressesForUsers) => {\n        let filteredShippingAddressesForAdmins = this.props.selectedShippingCenterId\n            ? this.props.shippingAddresses.filter(center => center.centerId === this.props.selectedShippingCenterId)\n            : this.props.shippingAddresses\n\n        if (this.props.destination === 'CENTER' && this.props.isAdmin && selectedCenterData) {\n            let options = filteredShippingAddressesForAdmins.map(shippingAddress => ({\n                value: shippingAddress.shippingAddressId,\n                label: this.createShippingAddressLabel(shippingAddress)\n            }))\n            options = [{ value: selectedCenterData.id, label: selectedCenterData.name }].concat(options)\n            return options\n        } else if (this.props.userType === 'CUSTOMER' && filteredShippingAddressesForUsers)\n            return filteredShippingAddressesForUsers.map(shippingAddress => ({\n                value: shippingAddress.shippingAddressId,\n                label: this.createShippingAddressLabel(shippingAddress) + ' ' + shippingAddress.salesOrg\n            }))\n        else return []\n    }\n    getOptionsCenterCost() {\n        let filteredCostCenters = this.props.selectedShippingCenterId\n            ? this.props.costCenters.filter(costCenter => costCenter.center === this.props.selectedShippingCenterId)\n            : this.props.costCenters\n        let options =\n            filteredCostCenters &&\n            filteredCostCenters.map(costCenter => {\n                return { value: costCenter.id, label: costCenter.name }\n            })\n        if (options && options.length > 0 && !options.find(item => item.value === this.props.selectedCostCenter)) {\n            this.props.setSelectedCostCenter(options[0] ? options[0].value : null)\n        }\n        return options\n    }\n    getOptionsShippingAddressesCenters() {\n        if (this.props.mktoolsShippingCenter && !this.props.isMkToolsUsaCenter) {\n            return this.props.shippingAddressesCenters\n                .filter(center => center.id === this.props.mktoolsShippingCenter.toString())\n                .map(center => {\n                    return { value: center.id, label: center.name }\n                })\n        } else {\n            return this.props.shippingAddressesCenters.map(center => {\n                return { value: center.id, label: center.name }\n            })\n        }\n    }\n    render() {\n        const { shippingAddresses, shippingAddressesCenters, current, shippingMethod, goalMax, centerSelected } = this.props\n        //allowedShippingAddresses for admins\n\n        //allowedShippingTypes for users\n\n        let filteredShippingAddressesForUsers = shippingAddresses\n            ? shippingAddresses.filter(shippingAddress => {\n                  if (this.props.userType === 'CUSTOMER' && this.state.availableSalesOrg && this.state.availableSalesOrg.length > 1) {\n                      return shippingAddress.allowedShippingTypes.includes(shippingMethod) && shippingAddress.salesOrg === '1100'\n                  } else {\n                      return shippingAddress.allowedShippingTypes.includes(shippingMethod)\n                  }\n              })\n            : []\n\n        let selectedCenterData = shippingAddressesCenters\n            ? shippingAddressesCenters.find(center => {\n                  return center.id === this.props.selectedShippingCenterId\n              })\n            : null\n        const sendText = <Translation id=\"checkout\" defaultMessage=\"Checkout\" />\n\n        const difCurrent = current <= goalMax ? 0 : current - goalMax\n        const errorMessage = difCurrent !== 0 ? 'MAX_WEIGHT_EXCEEDED' : null\n        // const submit = this.canSendCheckout() ? (\n        //     <Button className='bt bt-inverted next w-100' inverted datacy=\"checkout__send_checkout\" onClick={() => this.submitCheckout()}>\n        //         {sendText}\n        //     </Button>\n        // ) : (\n        //     <Button className='bt bt-inverted next w-100' inverted disabled>\n        //         {sendText}\n        //     </Button>\n        // )\n        const submit = <Button className='bt bt-inverted next w-100' inverted datacy=\"checkout__send_checkout\" onClick={() => this.submitCheckout()}>\n                {sendText}\n            </Button>\n        if (this.props.isLoadingShippingAddress) return <Translation id=\"loading_shipping_addresses\" defaultMessage=\"Loading Shipping Addresses\" />\n        const destinationForAdmin = [{ value: 'CENTER', label: this.props.intl.formatMessage({ id: 'center' }) }]\n        const destinationForCustomer = [\n            { value: 'CLIENTE', label: this.props.intl.formatMessage({ id: 'customer' }) },\n            {\n                value: 'HUB_CLIENTE',\n                label: this.props.intl.formatMessage({ id: 'cosentino_hub' })\n            },\n            {\n                value: 'CENTER',\n                label: this.props.intl.formatMessage({ id: 'center' })\n            }\n        ]\n\n        return (\n            <div className='checkout-address-box'>\n                <h1 className='shipping_information'>\n                    <Translation id='shipping_information' defaultMessage='Shipping information' />\n                </h1>\n                <hr/>\n                <form>\n                    <Alerts\n                        alert={this.props.alert}\n                        values={{ monthItems: this.props.monthItems, waitTillDate: this.props.waitTillDate ? moment(this.props.waitTillDate).format('L') : null }}\n                        status={this.props.status}\n                    />\n\n                    {(this.props.hasDestination || this.props.isAdmin) && (\n                        <div className={`form-group select`}>\n                            <label className={'displayNone '} htmlFor=\"input-date\">\n                                {this.props.shippingMethod === 'CONTAINER' ? (\n                                    <Translation id=\"destination_for_container\" defaultMessage=\"Container unloading location\" />\n                                ) : (\n                                    <Translation id=\"destination\" defaultMessage=\"Destination\" />\n                                )}\n                            </label>\n                            <Select\n                                className={'form-control displayNone '}\n                                placeholder={`${this.props.intl.formatMessage({ id: 'select_shipping_address' })}...`}\n                                value={this.props.destination}\n                                onChange={e => {\n                                    e && this.props.setDestination(e.value)\n                                }}\n                                options={this.props.isAdmin ? destinationForAdmin : destinationForCustomer}\n                                clearable={false}\n                            />\n                        </div>\n                    )}\n                    {this.props.isAdmin && shippingAddressesCenters && (\n                        <div className=\"form-group select\">\n                            <label htmlFor=\"input-date\">\n                                <Translation id=\"Center\" defaultMessage=\"Center\" />\n                                {centerSelected === this.props.showroomCenterId && (\n                                    <div className=\"tip\">\n                                        <Translation\n                                            id=\"Your_shipping_center_has_been_selected_based_on_portfolio_chosen\"\n                                            defaultMessage=\"Your shipping center has been selected based on portfolio chosen, you can change it back on catalog\"\n                                        />\n                                    </div>\n                                )}\n                            </label>\n                            <Select\n                                className=\"form-control\"\n                                placeholder={`${this.props.intl.formatMessage({ id: 'select_shipping_address' })}...`}\n                                value={this.props.selectedShippingCenterId}\n                                onChange={e => {\n                                    if (e) {\n                                        this.props.setSelectedShippingCenterId(e.value)\n                                        this.props.setMkToolsShippingCenter(e.value)\n                                    }\n                                }}\n                                options={this.getOptionsShippingAddressesCenters()}\n                                clearable={false}\n                            />\n                        </div>\n                    )}\n                    {(shippingAddresses || this.props.destination === 'CENTER') && (\n                        <div className=\"form-group select\">\n                            <label htmlFor=\"input-date\">\n                                {this.props.shippingMethod === 'CONTAINER' ? (\n                                    <Translation id=\"shipping_address_for_container\" defaultMessage=\"Final Destination\" />\n                                ) : (\n                                    <React.Fragment>\n                                        <Translation id=\"shipping_address\" defaultMessage=\"Shipping Address\" /> <span style={{ color: 'red' }}>*</span>\n                                    </React.Fragment>\n                                )}\n                            </label>\n                            <Select\n                                className=\"form-control\"\n                                value={\n                                    this.props.hasSelectedCenter\n                                        ? this.props.selectedShippingCenterId\n                                        : this.props.selectedShippingAddress\n                                        ? this.props.selectedShippingAddress.shippingAddressId\n                                        : null\n                                }\n                                onChange={e => {\n                                    e && this.changeShippingAddress(e.value)\n                                }}\n                                options={this.getOptionsCountryOfSend(selectedCenterData, filteredShippingAddressesForUsers)}\n                                clearable={false}\n                            />\n                        </div>\n                    )}\n                    {this.props.isAdmin && this.getOptionsCenterCost() && (\n                        <div className=\"form-group select\">\n                            <label htmlFor=\"input-date\">\n                                <Translation id=\"cost_center\" defaultMessage=\"Cost center\" />\n                            </label>\n                            <Select\n                                className=\"form-control\"\n                                placeholder={`${this.props.intl.formatMessage({ id: 'select_shipping_address' })}...`}\n                                value={this.props.selectedCostCenter}\n                                onChange={e => {\n                                    e && this.props.setSelectedCostCenter(e.value)\n                                }}\n                                options={this.getOptionsCenterCost()}\n                                clearable={false}\n                            />\n                        </div>\n                    )}\n\n                    <div className=\"form-group\">\n                        <label htmlFor=\"input-po\">\n                            <Translation id=\"insert_po\" defaultMessage=\"Insert your PO#\" />\n                        </label>\n                        <input\n                            data-cy=\"checkout__input_po\"\n                            type=\"text\"\n                            className=\"form-control\"\n                            id=\"input-po\"\n                            onChange={e => {\n                                e && this.props.setPo(e.target.value)\n                            }}\n                        />\n                    </div>\n\n                    <div className=\"form-group\">\n                        <label htmlFor=\"input-comments\">\n                            <Translation id=\"comment\" defaultMessage=\"Comments\" />\n                        </label>\n                        <textarea\n                            data-cy=\"checkout__textarea_comment\"\n                            className=\"form-control\"\n                            id=\"input-comments\"\n                            rows=\"3\"\n                            maxlength=\"2500\"\n                            onChange={e => {\n                                e && this.props.setComments(e.target.value)\n                            }}\n                        />\n                    </div>\n                    {this.props.profileConfigurationEmail && !this.props.profileConfigurationEmail.length > 0 && (\n                        <div className=\"tip red-tip\">\n                            <LocalizedLink routeId={'ROUTE_PROFILE'} params={{ filter: 'configuration', open: '' }}>\n                                <Translation\n                                    id=\"please_add_your_email_address_in_your_personal_area_if_you_want_to_receive_an_order_confirmation_email\"\n                                    defaultMessage=\"Please add your email address in your personal area if you want to receive an order confirmation email\"\n                                />\n                            </LocalizedLink>\n                        </div>\n                    )}\n                    <div className=\"form-group\">\n                        <CheckboxLinkSaleConditions />\n                        {this.state.validate['check'] && (\n                            <span className='alert_empty'>Este campo es requerido</span>\n                        )}\n                    </div>\n                </form>\n                <div className=\"row align-items-baseline\">\n                    <div className=\"col-12\" style={{ paddingLeft: '35px', paddingBottom: '10px' }}>\n                        {errorMessage && (\n                            <Translation\n                                id=\"MAX_WEIGHT_EXCEEDED\"\n                                values={{\n                                    shippingMethod: this.props.intl.formatMessage({ id: shippingMethod }).toLowerCase()\n                                }}\n                            />\n                        )}\n                    </div>\n                    {/*<div className=\"col-12\">\n                        <div className=\"d-flex justify-content-end\">{submit}</div>\n                    </div>\n                    */}\n                </div>\n                {this.props.reservationCode && <OrderFinishedContainer />}\n            </div>\n        )\n    }\n}\n\nexport default CheckoutFormMktoolsV2\n","import { connect } from 'react-redux'\nimport {\n    getShippingMethod,\n    getHasMinWeight,\n    getSelectedCenter,\n    getMktoolsShippingCenter,\n    getMktoolsBudget,\n    getIsMktoolsUsaCenter,\n    getShowroomCenterId\n} from '../../../store/centers/reducers'\nimport { checkout } from '../../../store/cart/actions'\nimport {\n    getAlert,\n    isSending,\n    weightSelector,\n    getGoalMin,\n    getGoalMax,\n    getKgPoundRatio,\n    getReservationCode,\n    qtySelector,\n    getMonthItems,\n    getBudgetPlusTotal,\n    getWaitTillDate,\n    getStatus,\n    getIsCartCutToSize\n} from '../../../store/cart/reducers'\nimport { getIsAdmin, getUserType } from '../../../store/login/reducers'\nimport { getLanguage } from '../../../store/ui/reducers'\nimport { getProfileConfiguration } from '../../../store/profile-configuration/reducers'\nimport { getShippingAddresses, getShippingAddressesCenters, isLoadingShippingAddress, getCostCenters } from '../../../store/shipping-addresses/reducers'\nimport { fetchShippingAddresses } from '../../../store/shipping-addresses/actions'\nimport { setMkToolsShippingCenter } from '../../../store/centers/actions'\nimport {\n    resetCheckout,\n    setDeliveryDate,\n    setPo,\n    setComments,\n    setCountryOfSend,\n    setSelectedShippingAddress,\n    setProfileConfigurationEmail,\n    setHasSelectedCenter,\n    setDestination,\n    setSelectedShippingCenterId,\n    setSelectedShippingAddressId,\n    setSelectedCostCenter\n} from '../../../store/checkout/actions'\nimport {\n    getHasSelectedCenter,\n    getSelectedShippingCenterId,\n    getSelectedShippingAddress,\n    getSelectedCostCenter,\n    getDestination,\n    canSendCheckoutSaleConditions\n} from '../../../store/checkout/reducers'\nimport { dispatchPushURL } from '../../../store/ui/actions'\nimport React from 'react'\nimport CheckoutFormMktoolsV2 from './CheckoutFormMktoolsV2'\n\nconst mapStateToProps = state => {\n    let language = getLanguage(state)\n    let defaultUnit = language === 'en' || language === 'en-US' || language === 'fr-CA' ? 'LB' : 'KG'\n    let unit = getProfileConfiguration(state).weightUnit ? getProfileConfiguration(state).weightUnit : defaultUnit\n\n    return {\n        current: unit === 'KG' ? weightSelector(state) : Math.floor(weightSelector(state) * getKgPoundRatio()),\n        goalMin: getGoalMin(state, unit),\n        goalMax: getGoalMax(state, unit),\n        shippingAddresses: getShippingAddresses(state),\n        shippingAddressesCenters: getShippingAddressesCenters(state),\n        hasDestination: getShippingMethod(state) === 'CONTAINER',\n        costCenters: getCostCenters(state),\n        shippingMethod: getShippingMethod(state),\n        isAdmin: getIsAdmin(state),\n        alert: getAlert(state),\n        status: getStatus(state),\n        monthItems: getMonthItems(state),\n        waitTillDate: getWaitTillDate(state),\n        userType: getUserType(state),\n        isSending: isSending(state),\n        reservationCode: getReservationCode(state),\n        totalQty: qtySelector(state),\n        hasMinWeight: getHasMinWeight(state),\n        centerSelected: getSelectedCenter(state),\n        haveCutToSize: getIsCartCutToSize(state),\n        isMkToolsUsaCenter: getIsMktoolsUsaCenter(state),\n        isLoadingShippingAddress: isLoadingShippingAddress(state),\n        mktoolsShippingCenter: getMktoolsShippingCenter(state),\n        budgetPlusTotal: getBudgetPlusTotal(state),\n        mktoolsBudget: getMktoolsBudget(state),\n        destination: getDestination(state),\n        profileConfiguration: getProfileConfiguration(state),\n        hasSelectedCenter: getHasSelectedCenter(state),\n        selectedShippingCenterId: getSelectedShippingCenterId(state),\n        selectedShippingAddress: getSelectedShippingAddress(state),\n        selectedCostCenter: getSelectedCostCenter(state),\n        canSendCheckoutSaleConditions: canSendCheckoutSaleConditions(state),\n        showroomCenterId: getShowroomCenterId(),\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchShippingAddresses: () => dispatch(fetchShippingAddresses()),\n        submitCheckout: () => dispatch(checkout()),\n        onLoadCheckout: () => dispatch({ type: 'CHECKOUT_VISIT' }),\n        setMkToolsShippingCenter: mktoolsShippingCenter => dispatch(setMkToolsShippingCenter(mktoolsShippingCenter)),\n        goCatalog: intl => {\n            dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', '')))\n            dispatch({ type: 'REMEMBER_CENTER' })\n        },\n        resetCheckout: () => dispatch(resetCheckout()),\n        setDeliveryDate: value => dispatch(setDeliveryDate(value)),\n        setCountryOfSend: value => dispatch(setCountryOfSend(value)),\n        setSelectedShippingAddress: value => dispatch(setSelectedShippingAddress(value)),\n        setProfileConfigurationEmail: value => dispatch(setProfileConfigurationEmail(value)),\n        setHasSelectedCenter: value => dispatch(setHasSelectedCenter(value)),\n        setDestination: value => dispatch(setDestination(value)),\n        setSelectedShippingCenterId: value => dispatch(setSelectedShippingCenterId(value)),\n        setPo: value => dispatch(setPo(value)),\n        setComments: value => dispatch(setComments(value)),\n        setSelectedShippingAddressId: value => dispatch(setSelectedShippingAddressId(value)),\n        setSelectedCostCenter: value => dispatch(setSelectedCostCenter(value))\n    }\n}\n\nconst CheckoutFormMktoolsContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps,\n    null,\n    { forwardRef: true }\n)(React.forwardRef((props, ref) => <CheckoutFormMktoolsV2 ref={ref} {...props} />))\n\nexport default CheckoutFormMktoolsContainer\n","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport 'react-datepicker/dist/react-datepicker-cssmodules.css'\nimport { injectIntl, FormattedMessage } from 'react-intl'\n\nimport Alerts from '../../alerts/Alerts'\nimport Button from '../../global/Button'\nimport confirm from '../../global/confirm'\nimport DatePicker from 'react-datepicker'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport moment from 'moment'\nimport OrderFinishedContainer from '../../order-finished/OrderFinishedContainer'\nimport Select from 'react-select'\nimport { RadioButton } from '@progress/kendo-react-inputs'\n\nclass CheckoutFormIkeaV2 extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectBoolean: true,\n            validate: {\n                installationDataName: false,\n                installationDataAddress: false,\n                installationDataTown: false,\n                installationDataProvince: false,\n                installationDataZipCode: false,\n                installationDataPhone: false\n            }\n        }\n    }\n\n    componentDidMount() {\n        this.props.resetCheckout().then(() => {\n            this.props.setDeliveryDate(moment().add(1, 'days'))\n            this.props.fetchShippingAddresses().then(() => {\n                let shippingAddress = this.props.shippingAddresses.filter(shippingAddres => {\n                    return shippingAddres.shippingAddressId === this.props.ikeaSelectedShippingAddress\n                })[0]\n                this.props.setSelectedShippingAddress(shippingAddress)\n                this.props.setShippingAddressesEmails(this.props.profileConfiguration.shippingAddressesEmails)\n                this.props.setEmployeeId(this.props.employeeId)\n                this.props.setStoreId(this.props.storeId)\n                this.props.setSelectedShippingAddressId(shippingAddress.shippingAddressId)\n                this.props.setSelectedShippingCenterId(shippingAddress.centerId)\n                this.props.setInstallationDataName('')\n                this.props.setInstallationDataAddress('')\n                this.props.setInstallationDataTown('')\n                this.props.setInstallationDataProvince('')\n                this.props.setInstallationDataZipCode('')\n                this.props.setInstallationDataPhone('')\n                this.props.setComments('')\n            })\n        })\n        this.props.onLoadCheckout()\n    }\n\n    confirmSubmitCheckout = () => {\n        if(this.canSendCheckout()){\n            let shippingAddress = this.props.shippingAddresses.find(item => item.shippingAddressId === this.props.ikeaSelectedShippingAddress)\n            confirm(\n                <div className=\"confirm-checkout\">\n                    <div className=\"confirm-checkout_title\">\n                        <FormattedMessage id=\"please_confirm_the_order\" defaultMessage=\"Please confirm the order\" />:\n                    </div>\n                    <div className=\"confirm-checkout_sub-title\">\n                        <FormattedMessage id=\"ikea_store_store_name\" defaultMessage=\"IKEA store: {storeName}\" values={{ storeName: shippingAddress.customerName }} />\n                    </div>\n                    <div className=\"confirm-checkout_text\">\n                        <FormattedMessage\n                            id=\"shipping_address_ikea\"\n                            defaultMessage=\"Shipping address: {shippingAddress}\"\n                            values={{ shippingAddress: shippingAddress.address + ', ' + shippingAddress.city }}\n                        />\n                    </div>\n                </div>\n            ).then(\n                confirm => {\n                    this.submitCheckout()\n                },\n                cancel => {\n                    this.props.goCatalog(this.props.intl)\n                }\n            )\n        }\n    }\n    submitCheckout = () => {\n        let realComments =\n            'Name: ' +\n            this.props.installationDataName +\n            ' // ' +\n            'Address: ' +\n            this.props.installationDataAddress +\n            ' // ' +\n            'Town: ' +\n            this.props.installationDataTown +\n            ' // ' +\n            'Province: ' +\n            this.props.installationDataProvince +\n            ' // ' +\n            'Zip Code: ' +\n            this.props.installationDataZipCode +\n            ' // ' +\n            'Phone: ' +\n            this.props.installationDataPhone +\n            ' // ' +\n            'Comments: ' +\n            this.props.comments\n        this.props.setComments(realComments)\n\n        this.props.submitCheckout()\n    }\n\n    canSendIkea = () => {\n        if(!this.props.installationDataName){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataName: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataName: false}\n            }))\n        }\n        if(!this.props.installationDataAddress){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataAddress: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataAddress: false}\n            }))\n        }\n        if(!this.props.installationDataTown){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataTown: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataTown: false}\n            }))\n        }\n        if(!this.props.installationDataProvince){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataProvince: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataProvince: false}\n            }))\n        }\n        if(!this.props.installationDataZipCode){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataZipCode: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataZipCode: false}\n            }))\n        }\n        if(!this.props.installationDataPhone){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataPhone: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, installationDataPhone: false}\n            }))\n        }\n        return (\n            this.props.employeeId &&\n            this.props.employeeId !== '' &&\n            (this.props.ikeaTransportArea || this.props.userName !== '0000121085')\n        )\n    }\n    canSendInstallationData = () => {\n        let validateName = this.props.installationDataName && this.props.installationDataName !== ''\n        let validateAddress = this.props.installationDataAddress && this.props.installationDataAddress !== ''\n        let validateTown = this.props.installationDataTown && this.props.installationDataTown !== ''\n        let validateProvince = this.props.installationDataProvince && this.props.installationDataProvince !== ''\n        let validateZipCode = this.props.installationDataZipCode && this.props.installationDataZipCode !== ''\n        let validatePhone = this.props.installationDataPhone && this.props.installationDataPhone !== ''\n\n        return validateName && validateAddress && validateTown && validateProvince && validateZipCode && validatePhone\n    }\n    canSendCheckout = () => {\n        const { totalQty } = this.props\n        return this.canSendIkea() && this.canSendInstallationData() && !this.props.isSending && totalQty > 0\n    }\n    changeIkeaShippingAddress = value => {\n        let shippingAddress = this.props.shippingAddresses.filter(shippingAddres => {\n            return shippingAddres.shippingAddressId === value\n        })[0]\n        this.props.setSelectedShippingAddress(shippingAddress)\n        this.props.changeIkeaShippingAddress(value)\n    }\n    getOptionsIkea = () => {\n        let ikeaOptions = [\n            { value: 'Y001', label: 'Canarias (Tenerife / G.Canaria)' },\n            { value: 'Y002', label: 'Palma de Mallorca' },\n            { value: 'Y003', label: 'Outside Palma de Mallorca' },\n            { value: 'Y004', label: 'Menorca / Ibiza' }\n        ]\n        return ikeaOptions\n    }\n    getOptionsCountryOfSend = (selectedCenterData, filteredShippingAddressesForUsers) => {\n        if (this.props.userType === 'CUSTOMER' && filteredShippingAddressesForUsers)\n            return filteredShippingAddressesForUsers.map(shippingAddress => ({\n                value: shippingAddress.shippingAddressId,\n                label:\n                    shippingAddress.centerName +\n                    ' ' +\n                    shippingAddress.customerName +\n                    ' ' +\n                    shippingAddress.address +\n                    ' ' +\n                    shippingAddress.zipCode +\n                    ' ' +\n                    shippingAddress.city +\n                    ' ' +\n                    shippingAddress.country\n            }))\n        else return []\n    }\n\n    render() {\n        const { shippingAddresses, shippingAddressesCenters, shippingMethod } = this.props\n        const {selectBoolean} = this.state\n\n        //allowedShippingTypes for users\n        let filteredShippingAddressesForUsers = shippingAddresses\n            ? shippingAddresses.filter(shippingAddress => {\n                  return shippingAddress.allowedShippingTypes.includes(shippingMethod)\n              })\n            : []\n\n        let selectedCenterData = shippingAddressesCenters\n            ? shippingAddressesCenters.find(center => {\n                  return center.id === this.props.selectedShippingCenterId\n              })\n            : null\n        const sendText = <Translation id=\"checkout\" defaultMessage=\"Checkout\" />\n\n        // const submit = this.canSendCheckout() ? (\n        //     <Button className='bt bt-inverted next w-100' inverted datacy=\"checkout__send_checkout\" onClick={() => this.confirmSubmitCheckout()}>\n        //         {sendText}\n        //     </Button>\n        // ) : (\n        //     <Button className='bt bt-inverted next w-100' inverted disabled>\n        //         {sendText}\n        //     </Button>\n        // )\n        const submit = <Button className='bt bt-inverted next w-100' inverted datacy=\"checkout__send_checkout\" onClick={() => this.confirmSubmitCheckout()}>\n                {sendText}\n            </Button>\n        if (this.props.isLoadingShippingAddress) return <Translation id=\"loading_shipping_addresses\" defaultMessage=\"Loading Shipping Addresses\" />\n\n        return (\n            <div className=\"checkout-form--ikea checkout-address-box\">\n                <h1 className='shipping_information'>\n                    <Translation id='shipping_information' defaultMessage='Shipping information' />\n                </h1>\n                <hr/>\n                <form>\n                    <Alerts alert={this.props.alert} status={this.props.status} />\n\n                    <RadioButton onClick={() => this.setState({selectBoolean: true})} label={this.props.intl.formatMessage({ id: 'my_default_addresses' })} name=\"my_addresses\" value=\"1\" checked={selectBoolean} />\n                    {selectBoolean && (\n                        <div className=\"form-group select\">\n                        {/*<label htmlFor=\"input-date\">*/}\n                        {/*    {this.props.shippingMethod === 'CONTAINER' ? (*/}\n                        {/*        <Translation id=\"shipping_address_for_container\" defaultMessage=\"Final Destination\" />*/}\n                        {/*    ) : (*/}\n                        {/*        <React.Fragment>*/}\n                        {/*            <Translation id=\"shipping_address\" defaultMessage=\"Shipping Address\" /> <span style={{ color: 'red' }}>*</span>*/}\n                        {/*        </React.Fragment>*/}\n                        {/*    )}*/}\n                        {/*</label>*/}\n                        <Select\n                            id=\"checkout__select_shipping_address-ikea\"\n                            className=\"form-control\"\n                            disabled\n                            placeholder={`${this.props.intl.formatMessage({ id: 'select_shipping_address' })}...`}\n                            value={this.props.ikeaSelectedShippingAddress}\n                            onChange={e => {\n                                e && this.changeIkeaShippingAddress(e.value)\n                            }}\n                            options={this.getOptionsCountryOfSend(selectedCenterData, filteredShippingAddressesForUsers)}\n                            clearable={false}\n                        />\n\n                        {this.props.shippingAddressesEmails && !this.props.shippingAddressesEmails[this.props.ikeaSelectedShippingAddress] && (\n                            <div className=\"tip red-tip\">\n                                <LocalizedLink routeId={'ROUTE_PROFILE'} params={{ filter: 'configuration', open: '' }}>\n                                    <Translation\n                                        id=\"this_IKEA_store_doesnt_have_email_please_configure_it\"\n                                        defaultMessage=\"This IKEA store does not have an email address, please add it on your personal area\"\n                                    />\n                                </LocalizedLink>\n                            </div>\n                        )}\n                    </div>\n                    )}\n\n                    {/*<div className=\"form-group select_date\">*/}\n                    {/*    <label htmlFor=\"input-date\">*/}\n                    {/*        <Translation id=\"required_delivery_date\" defaultMessage=\"Required delivery date\" />*/}\n                    {/*    </label>*/}\n                    {/*    <DatePicker*/}\n                    {/*        selected={this.props.deliveryDate}*/}\n                    {/*        onChange={this.props.setDeliveryDate}*/}\n                    {/*        minDate={moment().add(1, 'days')}*/}\n                    {/*        className=\"form-control\"*/}\n                    {/*        autoComplete=\"off\"*/}\n                    {/*        onKeyDown={e => e.preventDefault()}*/}\n                    {/*    />*/}\n                    {/*</div>*/}\n\n                    <div className=\"form-group\">\n                        {/*<label htmlFor=\"input-employee-id\">*/}\n                        {/*    <Translation id=\"insert_employee_id\" defaultMessage=\"Insert your employee ID\" /> <span style={{ color: 'red' }}>*</span>*/}\n                        {/*</label>*/}\n                        <input\n                            id=\"input-employee-id\"\n                            className=\"form-control is-disabled\"\n                            disabled\n                            value={this.props.employeeId}\n                            type=\"hidden\"\n                            maxLength=\"8\"\n                            onKeyPress={e => {\n                                if (!/[0-9]/.test(e.key)) e.preventDefault()\n                            }}\n                        />\n                    </div>\n\n                    {this.props.userName === '0000121085' && (\n                        <div className=\"form-group\">\n                            <label htmlFor=\"input-date\">\n                                <Translation id=\"transport_area\" defaultMessage=\"Transport Area\" /> <span style={{ color: 'red' }}>*</span>\n                            </label>\n                            <Select\n                                className=\"form-control\"\n                                placeholder={`${this.props.intl.formatMessage({ id: 'select_transport_area' })}...`}\n                                value={this.props.ikeaTransportArea}\n                                onChange={e => {\n                                    e && this.props.setIkeaTransportArea(e.value)\n                                }}\n                                options={this.getOptionsIkea()}\n                                clearable={false}\n                            />\n                        </div>\n                    )}\n                    <h1 className='shipping_information mt-3'>\n                        <Translation id=\"installation_data\" defaultMessage=\"Installation Data\" />\n                    </h1>\n                    <hr/>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-installation-data-name-id\">\n                                    <Translation id=\"first_name_last_name\" defaultMessage=\"First name and last name\" /> <span style={{ color: 'red' }}>*</span>\n                                </label>\n                                <input\n                                    name=\"name\"\n                                    required\n                                    id=\"input-installation-data-name-id\"\n                                    className=\"form-control\"\n                                    value={this.props.installationDataName}\n                                    type=\"text\"\n                                    onChange={e => {\n                                        e && this.props.setInstallationDataName(e.target.value)\n                                    }}\n                                />\n                                {this.state.validate['installationDataName'] && (\n                                    <span className='alert_empty'><Translation id='alert_input_empty' defaultMessage='This field is required' /></span>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-installation-data-address-id\">\n                                    <Translation id=\"address\" defaultMessage=\"Address\" /> <span style={{ color: 'red' }}>*</span>\n                                </label>\n                                <input\n                                    name=\"address\"\n                                    required\n                                    id=\"input-installation-data-address-id\"\n                                    className=\"form-control\"\n                                    value={this.props.installationDataAddress}\n                                    type=\"text\"\n                                    onChange={e => {\n                                        e && this.props.setInstallationDataAddress(e.target.value)\n                                    }}\n                                />\n                                {this.state.validate['installationDataAddress'] && (\n                                    <span className='alert_empty'><Translation id='alert_input_empty' defaultMessage='This field is required' /></span>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-6\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-installation-data-town-id\">\n                                    <Translation id=\"town\" defaultMessage=\"Town\" /> <span style={{ color: 'red' }}>*</span>\n                                </label>\n                                <input\n                                    name=\"town\"\n                                    required\n                                    id=\"input-installation-data-town-id\"\n                                    className=\"form-control\"\n                                    value={this.props.installationDataTown}\n                                    type=\"text\"\n                                    onChange={e => {\n                                        e && this.props.setInstallationDataTown(e.target.value)\n                                    }}\n                                />\n                                {this.state.validate['installationDataTown'] && (\n                                    <span className='alert_empty'><Translation id='alert_input_empty' defaultMessage='This field is required' /></span>\n                                )}\n                            </div>\n                        </div>\n                        <div className=\"col-12 col-md-6\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-installation-data-province-id\">\n                                    <Translation id=\"province\" defaultMessage=\"Province\" /> <span style={{ color: 'red' }}>*</span>\n                                </label>\n                                <input\n                                    name=\"province\"\n                                    required\n                                    id=\"input-installation-data-province-id\"\n                                    className=\"form-control\"\n                                    value={this.props.installationDataProvince}\n                                    type=\"text\"\n                                    onChange={e => {\n                                        e && this.props.setInstallationDataProvince(e.target.value)\n                                    }}\n                                />\n                                {this.state.validate['installationDataProvince'] && (\n                                    <span className='alert_empty'><Translation id='alert_input_empty' defaultMessage='This field is required' /></span>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-6\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-installation-data-zip-code-id\">\n                                    <Translation id=\"zipcode\" defaultMessage=\"Zip Code\" /> <span style={{ color: 'red' }}>*</span>\n                                </label>\n                                <input\n                                    name=\"zip-code\"\n                                    required\n                                    id=\"input-installation-data-zip-code-id\"\n                                    className=\"form-control\"\n                                    value={this.props.installationDataZipCode}\n                                    type=\"text\"\n                                    onChange={e => {\n                                        e && this.props.setInstallationDataZipCode(e.target.value)\n                                    }}\n                                />\n                                {this.state.validate['installationDataZipCode'] && (\n                                    <span className='alert_empty'><Translation id='alert_input_empty' defaultMessage='This field is required' /></span>\n                                )}\n                            </div>\n                        </div>\n                        <div className=\"col-12 col-md-6\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-installation-data-phone-id\">\n                                    <Translation id=\"phone\" defaultMessage=\"Phone\" /> <span style={{ color: 'red' }}>*</span>\n                                </label>\n                                <input\n                                    name=\"phone\"\n                                    required\n                                    id=\"input-installation-data-phone-id\"\n                                    className=\"form-control\"\n                                    value={this.props.installationDataPhone}\n                                    type=\"text\"\n                                    onChange={e => {\n                                        e && this.props.setInstallationDataPhone(e.target.value)\n                                    }}\n                                />\n                                {this.state.validate['installationDataPhone'] && (\n                                    <span className='alert_empty'><Translation id='alert_input_empty' defaultMessage='This field is required' /></span>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n\n                    <hr/>\n\n                    <div className=\"form-group\">\n                        <label htmlFor=\"input-po\">\n                            <Translation id=\"insert_po\" defaultMessage=\"Insert your PO#\" />\n                        </label>\n                        <input\n                            data-cy=\"checkout__input_po\"\n                            type=\"text\"\n                            className=\"form-control\"\n                            id=\"input-po\"\n                            onChange={e => {\n                                e && this.props.setPo(e.target.value)\n                            }}\n                        />\n                    </div>\n\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-comments\">\n                                    <Translation id=\"comment\" defaultMessage=\"Comments\" />\n                                </label>\n                                <textarea\n                                    data-cy=\"checkout__textarea_comment\"\n                                    className=\"form-control\"\n                                    // value={this.props.comments} //prevent show merge the values of the installation data\n                                    id=\"input-comments\"\n                                    rows=\"3\"\n                                    maxlength=\"2500\"\n                                    onChange={e => {\n                                        e && this.props.setComments(e.target.value)\n                                    }}\n                                />\n                            </div>\n                        </div>\n                    </div>\n                </form>\n                <div className=\"row align-items-baseline\">\n                    <div className=\"col-12\" style={{ paddingLeft: '35px', paddingBottom: '10px' }} />\n                    {/*\n                        <div className=\"col-12\">\n                            <div className=\"d-flex justify-content-end\">{submit}</div>\n                        </div>*/\n                    }\n                </div>\n                {this.props.reservationCode && <OrderFinishedContainer />}\n            </div>\n        )\n    }\n}\n\nexport default CheckoutFormIkeaV2\n","import { connect } from 'react-redux'\nimport { getShippingMethod } from '../../../store/centers/reducers'\nimport { checkout } from '../../../store/cart/actions'\nimport { getAlert, isSending, getReservationCode, qtySelector, getStatus, getIsCartCutToSize } from '../../../store/cart/reducers'\nimport { getUserType, getUserName } from '../../../store/login/reducers'\nimport { getProfileConfiguration } from '../../../store/profile-configuration/reducers'\nimport { getShippingAddresses, getShippingAddressesCenters, isLoadingShippingAddress, getSelectedShippingAddressForIkea } from '../../../store/shipping-addresses/reducers'\nimport { fetchShippingAddresses, changeIkeaShippingAddress } from '../../../store/shipping-addresses/actions'\nimport { getEmployeeId } from '../../../store/big-account/reducers'\nimport {\n    resetCheckout,\n    setDeliveryDate,\n    setSelectedShippingAddress,\n    setShippingAddressesEmails,\n    setStoreId,\n    setEmployeeId,\n    setSelectedShippingAddressId,\n    setSelectedShippingCenterId,\n    setIkeaTransportArea,\n    setPo,\n    setComments,\n    setInstallationDataName,\n    setInstallationDataAddress,\n    setInstallationDataTown,\n    setInstallationDataProvince,\n    setInstallationDataZipCode,\n    setInstallationDataPhone\n} from '../../../store/checkout/actions'\nimport {\n    getDeliveryDate,\n    getIkeaTransportArea,\n    getSelectedShippingCenterId,\n    getInstallationDataName,\n    getInstallationDataAddress,\n    getInstallationDataTown,\n    getInstallationDataProvince,\n    getInstallationDataZipCode,\n    getInstallationDataPhone,\n    getComments\n} from '../../../store/checkout/reducers'\nimport { dispatchPushURL } from '../../../store/ui/actions'\nimport React from 'react'\nimport CheckoutFormIkeaV2 from './CheckoutFormIkeaV2'\n\nconst mapStateToProps = state => {\n    return {\n        shippingAddresses: getShippingAddresses(state),\n        shippingAddressesCenters: getShippingAddressesCenters(state),\n        alert: getAlert(state),\n        status: getStatus(state),\n        userType: getUserType(state),\n        userName: getUserName(state),\n        isSending: isSending(state),\n        reservationCode: getReservationCode(state),\n        totalQty: qtySelector(state),\n        isLoadingShippingAddress: isLoadingShippingAddress(state),\n        ikeaSelectedShippingAddress: getSelectedShippingAddressForIkea(state),\n        profileConfiguration: getProfileConfiguration(state),\n        employeeId: getEmployeeId(state),\n        comments: getComments(state),\n        storeId: getSelectedShippingAddressForIkea(state),\n\n        deliveryDate: getDeliveryDate(state),\n\n        //installation Data\n        installationDataName: getInstallationDataName(state),\n        installationDataAddress: getInstallationDataAddress(state),\n        installationDataTown: getInstallationDataTown(state),\n        installationDataProvince: getInstallationDataProvince(state),\n        installationDataZipCode: getInstallationDataZipCode(state),\n        installationDataPhone: getInstallationDataPhone(state),\n\n        //posible abstracción\n        shippingMethod: getShippingMethod(state),\n        haveCutToSize: getIsCartCutToSize(state),\n        ikeaTransportArea: getIkeaTransportArea(state),\n        selectedShippingCenterId: getSelectedShippingCenterId(state),\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchShippingAddresses: () => dispatch(fetchShippingAddresses()),\n        submitCheckout: () => dispatch(checkout()),\n        onLoadCheckout: () => dispatch({ type: 'CHECKOUT_VISIT' }),\n        changeIkeaShippingAddress: ikeaSelectedShippingAddress => dispatch(changeIkeaShippingAddress(ikeaSelectedShippingAddress)),\n        goCatalog: intl => {\n            dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', '')))\n            dispatch({ type: 'REMEMBER_CENTER' })\n        },\n        resetCheckout: () => dispatch(resetCheckout()),\n        setDeliveryDate: value => dispatch(setDeliveryDate(value)),\n        setSelectedShippingAddress: value => dispatch(setSelectedShippingAddress(value)),\n        setShippingAddressesEmails: value => dispatch(setShippingAddressesEmails(value)),\n        setStoreId: value => dispatch(setStoreId(value)),\n        setEmployeeId: value => dispatch(setEmployeeId(value)),\n        setSelectedShippingAddressId: value => dispatch(setSelectedShippingAddressId(value)),\n        setSelectedShippingCenterId: value => dispatch(setSelectedShippingCenterId(value)),\n        setIkeaTransportArea: value => dispatch(setIkeaTransportArea(value)),\n        setPo: value => dispatch(setPo(value)),\n\n        setInstallationDataName: value => dispatch(setInstallationDataName(value)),\n        setInstallationDataAddress: value => dispatch(setInstallationDataAddress(value)),\n        setInstallationDataTown: value => dispatch(setInstallationDataTown(value)),\n        setInstallationDataProvince: value => dispatch(setInstallationDataProvince(value)),\n        setInstallationDataZipCode: value => dispatch(setInstallationDataZipCode(value)),\n        setInstallationDataPhone: value => dispatch(setInstallationDataPhone(value)),\n\n        setComments: value => dispatch(setComments(value))\n    }\n}\n\nconst CheckoutFormIkeaContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps,\n    null,\n    { forwardRef: true }\n)(React.forwardRef((props, ref) => <CheckoutFormIkeaV2 ref={ref} {...props} /> ))\n\nexport default CheckoutFormIkeaContainer\n","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport { injectIntl, FormattedMessage } from 'react-intl'\n\nimport Alerts from '../../alerts/Alerts'\nimport Button from '../../global/Button'\nimport confirm from '../../global/confirm'\nimport moment from 'moment'\nimport OrderFinishedContainer from '../../order-finished/OrderFinishedContainer'\nimport { validateInputEmail } from '../../../helpers'\n\nclass CheckoutFormLowesV2 extends React.Component {\n\n    constructor(props) {\n        super(props)\n        this.state = {\n            validate: {\n                lowesDataFirstName: false,\n                lowesDataLastName: false,\n                lowesDataEmail: false,\n            },\n            invalidEmail: false\n        }\n    }\n\n    componentDidMount() {\n        this.props.resetCheckout().then(() => {\n            this.props.setDeliveryDate(moment().add(1, 'days'))\n            this.props.setLowesDataFirstName('')\n            this.props.setLowesDataLastName('')\n            this.props.setLowesDataEmail('')\n            this.props.setLowesDataTitle('')\n        })\n        this.props.onLoadCheckout()\n    }\n\n    confirmSubmitCheckout = e => {\n        e.preventDefault()\n        let storeNumber = this.props.userName\n        confirm(\n            <div className=\"confirm-checkout confirm-checkout--lowes\">\n                <div className=\"confirm-checkout_title\">\n                    <FormattedMessage id=\"please_confirm_the_order\" defaultMessage=\"Please confirm the order\" />:\n                </div>\n                <div className=\"confirm-checkout_sub-title\">\n                    <FormattedMessage id=\"lowes_store_number\" defaultMessage=\"Lowes store: {storeNumber}\" values={{ storeNumber: storeNumber }} />\n                </div>\n                <div className=\"confirm-checkout_text\">\n                    <FormattedMessage id=\"firt_name\" defaultMessage=\"First Name\" />: {this.props.lowesDataFirstName}\n                </div>\n                <div className=\"confirm-checkout_text\">\n                    <FormattedMessage id=\"last_name\" defaultMessage=\"Last Name\" />: {this.props.lowesDataLastName}\n                </div>\n                <div className=\"confirm-checkout_text\">\n                    <FormattedMessage id=\"email\" defaultMessage=\"Email\" />: {this.props.lowesDataEmail}\n                </div>\n                {this.props.lowesDataTitle && (\n                    <div className=\"confirm-checkout_text\">\n                        <FormattedMessage id=\"title\" defaultMessage=\"Title\" />: {this.props.lowesDataTitle}\n                    </div>\n                )}\n            </div>\n        ).then(\n            confirm => {\n                this.submitCheckout()\n            },\n            cancel => {}\n        )\n    }\n\n    canSendCheckout = () => {\n        if(!this.props.lowesDataFirstName){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, lowesDataFirstName: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, lowesDataFirstName: false}\n            }))\n        }\n        if(!this.props.lowesDataLastName){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, lowesDataLastName: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, lowesDataLastName: false}\n            }))\n        }\n        if(!this.props.lowesDataEmail){\n            this.setState(prevState => ({\n                validate: {...prevState.validate, lowesDataEmail: true}\n            }))\n        }else{\n            this.setState(prevState => ({\n                validate: {...prevState.validate, lowesDataEmail: false}\n            }))\n        }\n        return this.props.canSendLowesData() && this.props.canSendMinMaxCheckout() && !this.props.isSending && this.props.totalQty > 0 && this.props.canSendNeedDestination()\n    }\n    submitCheckout = () => {\n        if(this.canSendCheckout()) {\n            let realComments = {\n                firstName: this.props.lowesDataFirstName,\n                lastName: this.props.lowesDataLastName,\n                email: this.props.lowesDataEmail,\n                title: this.props.lowesDataTitle\n            }\n            this.props.setComments(JSON.stringify(realComments))\n\n            if (!this.state.invalidEmail) {\n                this.props.submitCheckout()\n            }\n\n        }\n    }\n\n    handleEmailChange = (e) => {\n        const email = e.target.value\n        this.props.setLowesDataEmail(email)\n\n        if (!validateInputEmail(email)) {\n            this.setState({ invalidEmail: true })\n        } else {\n            this.setState({ invalidEmail: false })\n        }\n    }\n\n    render() {\n        const { current, shippingMethod, goalMax } = this.props\n        \n        const sendText = <Translation id=\"checkout\" defaultMessage=\"Checkout\" />\n\n        const difCurrent = current <= goalMax ? 0 : current - goalMax\n        const errorMessage = difCurrent !== 0 ? 'MAX_WEIGHT_EXCEEDED' : null\n        // const submit = this.canSendCheckout() ? (\n        //     <input style={{ width: '100%' }} type=\"submit\" datacy=\"checkout__send_checkout\" className=\"bt bt-inverted  next w-100\" value={this.props.intl.formatMessage({ id: 'checkout' })} />\n        // ) : (\n        //     <Button className='bt bt-inverted next w-100' inverted disabled>\n        //         {sendText}\n        //     </Button>\n        // )\n        // const submit = <input style={{ width: '100%' }} type=\"submit\" datacy=\"checkout__send_checkout\" className=\"bt bt-inverted  next w-100\" value={this.props.intl.formatMessage({ id: 'checkout' })} />\n        const submit = <Button className='bt bt-inverted next w-100' inverted datacy=\"checkout__send_checkout\" onClick={() => this.submitCheckout()} disabled={this.state.invalidEmail}>\n            {sendText}\n        </Button>\n        return (\n            <div className=\"checkout-form checkout-form--lowes checkout-address-box\">\n                <h1 className='shipping_information'>\n                    <Translation id='shipping_information' defaultMessage='Shipping information' />\n                </h1>\n                <hr/>\n                <form onSubmit={e => this.confirmSubmitCheckout(e)}>\n                    <Alerts\n                        alert={this.props.alert}\n                        values={{ monthItems: this.props.monthItems, waitTillDate: this.props.waitTillDate ? moment(this.props.waitTillDate).format('L') : null }}\n                        status={this.props.status}\n                    />\n\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-lowes-data-first-name\">\n                                    <Translation id=\"first_name\" defaultMessage=\"First name\" /> <span style={{ color: 'red' }}>*</span>\n                                </label>\n                                <input\n                                    name=\"name\"\n                                    required\n                                    id=\"input-lowes-data-first-name\"\n                                    className=\"form-control\"\n                                    value={this.props.lowesDataFirstName}\n                                    type=\"text\"\n                                    onChange={e => {\n                                        e && this.props.setLowesDataFirstName(e.target.value)\n                                    }}\n                                />\n                                {this.state.validate['lowesDataFirstName'] && (\n                                    <span className='alert_empty'><Translation id='alert_input_empty' defaultMessage='This field is required' /></span>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-lowes-data-last-name\">\n                                    <Translation id=\"last_name\" defaultMessage=\"Last Name\" /> <span style={{ color: 'red' }}>*</span>\n                                </label>\n                                <input\n                                    name=\"name\"\n                                    required\n                                    id=\"input-lowes-data-last-name\"\n                                    className=\"form-control\"\n                                    value={this.props.lowesDataLastName}\n                                    type=\"text\"\n                                    onChange={e => {\n                                        e && this.props.setLowesDataLastName(e.target.value)\n                                    }}\n                                />\n                                {this.state.validate['lowesDataLastName'] && (\n                                    <span className='alert_empty'><Translation id='alert_input_empty' defaultMessage='This field is required' /></span>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-lowes-data-email\">\n                                    <Translation id=\"email\" defaultMessage=\"Email\" /> <span style={{ color: 'red' }}>*</span>\n                                </label>\n                                <input\n                                    name=\"email\"\n                                    required\n                                    id=\"input-lowes-data-email\"\n                                    className=\"form-control\"\n                                    value={this.props.lowesDataEmail}\n                                    type=\"email\"\n                                    onChange={e => this.handleEmailChange(e)}\n                                />\n\n                                {this.state.validate['lowesDataEmail'] && (\n                                    <div>\n                                        <span className='alert_empty'><Translation id='alert_input_empty' defaultMessage='This field is required' /></span>\n                                    </div>\n                                )}\n\n                                {this.state.invalidEmail && (\n                                    <div>\n                                        <span className=\"alert_empty\">\n                                            <Translation\n                                                id=\"MUST_BE_A_VALID_EMAIL\"\n                                                defaultMessage=\"Must be a valid email\"\n                                            />\n                                        </span>\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input-lowes-data-title\">\n                                    <Translation id=\"title\" defaultMessage=\"Title\" />\n                                </label>\n                                <input\n                                    name=\"title\"\n                                    id=\"input-lowes-data-title\"\n                                    className=\"form-control\"\n                                    value={this.props.lowesDataTitle}\n                                    type=\"text\"\n                                    onChange={e => {\n                                        e && this.props.setLowesDataTitle(e.target.value)\n                                    }}\n                                />\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"row align-items-baseline\">\n                        <div className=\"col-12\" style={{ paddingLeft: '35px', paddingBottom: '10px' }}>\n                            {errorMessage && (\n                                <Translation\n                                    id=\"MAX_WEIGHT_EXCEEDED\"\n                                    values={{\n                                        shippingMethod: this.props.intl.formatMessage({ id: shippingMethod }).toLowerCase()\n                                    }}\n                                />\n                            )}\n                            {this.props.isEuropeOrIberia ? (\n                                <Translation\n                                    id=\"same_batch\"\n                                    defaultMessage=\"Please, indicate if you want the slabs to be the same batch. Check availability with your center. Thank you\"\n                                />\n                            ) : null}\n                        </div>\n                        <div className=\"col-12\">\n                            <div className=\"d-flex justify-content-end\">{submit}</div>\n                        </div>\n                    </div>\n                </form>\n\n                {this.props.reservationCode && <OrderFinishedContainer />}\n            </div>\n        )\n    }\n}\n\nexport default CheckoutFormLowesV2\n","import { connect } from 'react-redux'\nimport { getShippingMethod, isEuropeOrIberia } from '../../../store/centers/reducers'\nimport { checkout } from '../../../store/cart/actions'\nimport {\n    getAlert,\n    isSending,\n    weightSelector,\n    getGoalMax,\n    getKgPoundRatio,\n    getReservationCode,\n    qtySelector,\n    getMonthItems,\n    getWaitTillDate,\n    getStatus\n} from '../../../store/cart/reducers'\nimport { getLanguage } from '../../../store/ui/reducers'\nimport { getProfileConfiguration } from '../../../store/profile-configuration/reducers'\n\nimport { fetchShippingAddresses } from '../../../store/shipping-addresses/actions'\n\nimport {\n    canSendMinMaxCheckout,\n    canSendNeedDestination,\n    resetCheckout,\n    setDeliveryDate,\n    setComments,\n    setLowesDataFirstName,\n    setLowesDataLastName,\n    setLowesDataEmail,\n    setLowesDataTitle,\n    canSendLowesData\n} from '../../../store/checkout/actions'\nimport { getDeliveryDate, getLowesDataFirstName, getLowesDataLastName, getLowesDataEmail, getLowesDataTitle } from '../../../store/checkout/reducers'\nimport { getUserName } from '../../../store/login/reducers'\nimport React from 'react'\nimport CheckoutFormLowesV2 from './CheckoutFormLowesV2'\n\nconst mapStateToProps = state => {\n    let language = getLanguage(state)\n    let defaultUnit = language === 'en' || language === 'en-US' || language === 'fr-CA' ? 'LB' : 'KG'\n    let unit = getProfileConfiguration(state).weightUnit ? getProfileConfiguration(state).weightUnit : defaultUnit\n\n    return {\n        current: unit === 'KG' ? weightSelector(state) : Math.floor(weightSelector(state) * getKgPoundRatio()),\n        goalMax: getGoalMax(state, unit),\n        shippingMethod: getShippingMethod(state),\n        alert: getAlert(state),\n        status: getStatus(state),\n        monthItems: getMonthItems(state),\n        waitTillDate: getWaitTillDate(state),\n        isSending: isSending(state),\n        reservationCode: getReservationCode(state),\n        totalQty: qtySelector(state),\n        isEuropeOrIberia: isEuropeOrIberia(state),\n        deliveryDate: getDeliveryDate(state),\n        lowesDataFirstName: getLowesDataFirstName(state),\n        lowesDataLastName: getLowesDataLastName(state),\n        lowesDataEmail: getLowesDataEmail(state),\n        lowesDataTitle: getLowesDataTitle(state),\n        userName: getUserName(state),\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchShippingAddresses: () => dispatch(fetchShippingAddresses()),\n        submitCheckout: () => dispatch(checkout()),\n        onLoadCheckout: () => dispatch({ type: 'CHECKOUT_VISIT' }),\n        canSendMinMaxCheckout: () => dispatch(canSendMinMaxCheckout()),\n        canSendNeedDestination: () => dispatch(canSendNeedDestination()),\n        resetCheckout: () => dispatch(resetCheckout()),\n        setDeliveryDate: value => dispatch(setDeliveryDate(value)),\n        setLowesDataFirstName: value => dispatch(setLowesDataFirstName(value)),\n        setLowesDataLastName: value => dispatch(setLowesDataLastName(value)),\n        setLowesDataEmail: value => dispatch(setLowesDataEmail(value)),\n        setLowesDataTitle: value => dispatch(setLowesDataTitle(value)),\n        canSendLowesData: () => dispatch(canSendLowesData()),\n        setComments: value => dispatch(setComments(value))\n    }\n}\n\nconst CheckoutFormLowesContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps,\n    null,\n    { forwardRef: true }\n)(React.forwardRef((props, ref) => <CheckoutFormLowesV2 ref={ref} {...props} /> ))\n\nexport default CheckoutFormLowesContainer\n","import React from 'react'\nimport Slider from 'react-slick'\nimport { v4 as uuidv4 } from 'uuid'\nimport RectangleResultContainer from '../catalog/rectangleResult/RectangleResultContainer'\nimport {connect} from \"react-redux\";\nimport {\n    getIsLogged\n} from \"../../store/login/reducers\";\nimport { withRouter } from 'react-router'\n\nfunction SampleNextArrow(props) {\n    const { style, onClick } = props\n    return (\n        <i\n            className={'fal fa-chevron-right'}\n            style={{ ...style, display: 'block', position: 'absolute', right: '-12px', top: '40%', fontSize: '24px', cursor: 'pointer', zIndex: '10' }}\n            onClick={onClick}\n        />\n    )\n}\n\nfunction SamplePrevArrow(props) {\n    const { style, onClick } = props\n    return (\n        <i\n            className={'fal fa-chevron-left'}\n            style={{ ...style, display: 'block', position: 'absolute', left: '-12px', top: '40%', fontSize: '24px', cursor: 'pointer', zIndex: '10' }}\n            onClick={onClick}\n        />\n    )\n}\n\n\nclass ProductsSlider extends React.Component {\n    state = {slidesToShow: 1, slideIndex: 0, hasObserver: false, shouldSendMetrics: true}\n    id = uuidv4()\n\n    componentDidMount() {\n        if(this.props.isLogged){\n            this.props.fetch()\n        }\n        if (!this.props.hide && this.props.products) {\n            this.resize()\n        }\n        window.addEventListener(\"resize\", this.resize.bind(this));\n    }\n\n    resize() {\n        if (this.props.products) {\n            this.setState({slidesToShow: this.getSlidesToShow()});\n        }\n    }\n    \n    componentWillUnmount() {\n        window.removeEventListener(\"resize\", this.resize.bind(this));\n    }\n\n    componentDidUpdate(prevProps) {\n        if (this.props.currentCenter && this.props.currentCenter != prevProps.currentCenter) {\n            this.props.fetch()\n            return\n        }\n\n        if (!this.props.hide && this.props.products && this.props.products[0]) {\n            const currentFirstProductId = this.props.products[0].product.productId\n            const prevFirstProductId = prevProps.products && prevProps.products[0] && prevProps.products[0].product && prevProps.products[0].product.productId\n\n            if (currentFirstProductId !== prevFirstProductId) {\n                this.slider.slickGoTo(0)\n            }\n\n            const prevProductsLength = prevProps.products ? prevProps.products.length : 0\n            if (this.props.products.length !== prevProductsLength) {\n                this.resize()\n            }\n        }\n\n        // Update the state shouldSendMetrics everytime pathname is different\n        if (this.props.location.key !== prevProps.location.key) {\n            this.setState({ shouldSendMetrics: true })\n        }\n\n        !this.state.hasObserver && this.createObserver()\n    }\n\n    getSlidesToShow = () => {\n        const maxSlidesToShow = 15\n        const minGap = 12\n        const minWidth = 235\n        const minCardWidth = this.props.minWidth ? this.props.minWidth : minWidth\n        const el = document.getElementById(this.id)\n        if (!el) return 1\n        let maxSlides = Math.floor(el.offsetWidth / minCardWidth) //250 Card width\n        const gap = (el.offsetWidth - minCardWidth * maxSlides) / (1 + maxSlides)\n        if (gap < minGap) --maxSlides\n        const slidesCount = this.props.products.length > maxSlides ? maxSlides : this.props.products.length\n        // console.log('SLIDER : ' , this.props.title.props.defaultMessage)\n        // console.log('SLIDERs COUNT : ', slidesCount)\n        // console.log('SLIDERs width : ', el.offsetWidth)\n        // console.log('SLIDERs card width : ', minCardWidth)\n        // console.log('SLIDERs gap : ', gap)\n        return Math.min(maxSlidesToShow, slidesCount)\n    }\n\n    /**\n     * Creates a new observer instance and handles the callback funcion\n     */\n    createObserver = () => {\n        let options = {\n            root: null, // Means browser viewport reference\n            rootMargin: \"0px\", // Means 100% of the viewport\n            threshold: 1 // Means 100% of the element\n        }\n\n        const el = document.getElementById(this.id)\n        const observer = new IntersectionObserver(this.handleIntersect, options)\n\n        if (el) {\n            this.setState({ hasObserver: true })\n            observer.observe(el)\n        }\n    }\n\n    /**\n     * Callback function for executing events when observe isIntersecting is true\n     * @param {object} entries \n     */\n    handleIntersect = (entries) => {\n        entries.forEach((entry) => {\n            if (entry.isIntersecting && this.state.shouldSendMetrics) {\n                if (this.props.analyticsTag) {\n                    //console.log('SLIDER SEND METRICS ' , this.props.products);\n                    this.props.sendMetrics(this.props.products, this.props.analyticsTag)\n                    this.setState({ shouldSendMetrics: false })\n                }\n            }\n        })\n    }\n\n    render() {\n        if (this.props.hide) return <React.Fragment></React.Fragment>\n        const settings = {\n            arrows: true,\n            nextArrow: <SampleNextArrow />,\n            prevArrow: <SamplePrevArrow />,\n            swipeToSlide: true,\n            dots: true,\n            speed: 300,\n            slidesToShow: this.state.slidesToShow,\n            slidesToScroll: 1,\n            infinite: false,\n            variableWidth: false\n        }\n\n        if (!this.props.products) {\n            return null\n        }\n\n        const productsObject = {}\n\n        this.props.products.forEach((product, index) => {\n            try {\n            } catch (e) {\n                console.log('PROCUT', product)\n            }\n            product.product.index = index\n            product.product.showOutlet = !!product.outlet\n            product.product.quantity = product.quantity\n            product.product.crossType = !!product.fromRecommendation ? 'dinamico' : 'estatico'\n            productsObject[index] = product.product\n        });\n\n        const productsArray = Object.values(productsObject).sort((a, b) => a.index - b.index)\n        const slideClass = this.props.customClass ? this.props.customClass : \"results-list\"\n\n        return (\n            this.props.products.length > 0 && (\n                <section id=\"section-products-slider\">\n                <div className=\"container\">\n                    <div className=\"row\">\n                        <div className=\"col-12 p-0\">\n                            <div gtm-label={this.props.gtmLabel}>                            \n                                <div className={`general-results-list ${slideClass}`}>\n                                    {this.props.title &&\n                                        <h2>\n                                            {this.props.title}\n                                        </h2>\n                                    }\n                                    <div id={this.id}>\n                                        <Slider ref={s => (this.slider = s)} {...settings}>\n                                            {productsArray.map((product, index) => product && (\n                                                    <div className=\"slider-cards\" key={`pindex-${index}`}>\n                                                        <RectangleResultContainer\n                                                            outlet={product.showOutlet}\n                                                            product={product}\n                                                            key={product.productId}\n                                                            index={index}\n                                                            list={this.props.analyticsTag}\n                                                            sectionFlag={this.props.sectionFlag}\n                                                            crossType={product.crossType}\n\n                                                        />\n                                                    </div>\n                                                )\n                                            )}\n                                        </Slider>\n                                    </div>\n                                </div>                                                               \n                            </div>\n                        </div>\n                    </div>\n                </div>\n                </section>\n            )\n        )\n\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        sendMetrics: (products, tag) => dispatch({type: 'SHOW_CROSS_SELLING_SLIDER', products, tag})\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        isLogged: getIsLogged(state),\n    }\n}\n\nexport default withRouter(connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductsSlider))","import { connect } from 'react-redux'\nimport { getIsLogged } from '../../store/login/reducers'\nimport Translation from \"../global/Translation\";\nimport React from \"react\";\nimport ProductsSlider from \"./ProductsSlider\";\nimport {canViewMktools} from \"../../store/centers/reducers\";\nimport {fetchCrossSellingCheckOut} from \"../../store/crossSelling/actions\";\nimport {getCurrentCrossSellingCheckout} from \"../../store/crossSelling/reducers\";\n\nconst mapStateToProps = state => {\n    return {\n        products: getCurrentCrossSellingCheckout(state),\n        hide: !getIsLogged(state) || canViewMktools(state),\n        title: <Translation id=\"products_for_you\" defaultMessage=\"Products for you\" />,\n        analyticsTag: 'discover_products_cross',\n        gtmLabel: 'ec_carrusel_products_for_you'\n    }\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n\n    const productIds = props.lines.map(l => l.productId).join(',')\n\n    return {\n        fetch: () => {\n            return dispatch(fetchCrossSellingCheckOut(productIds))\n        }\n    }\n}\n\nconst DiscoverProductsContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductsSlider)\n\n\nexport default DiscoverProductsContainer\n","import { connect } from 'react-redux'\nimport { getIsLogged } from '../../store/login/reducers'\nimport Translation from \"../global/Translation\";\nimport React from \"react\";\nimport ProductsSlider from \"./ProductsSlider\";\nimport {canViewMktools} from \"../../store/centers/reducers\";\nimport {fetchCartSimilarProducts} from \"../../store/crossSelling/actions\";\nimport {getCartComplementaryProducts} from \"../../store/crossSelling/reducers\";\n\nconst mapStateToProps = state => {\n    return {\n        products: getCartComplementaryProducts(state),\n        hide: !getIsLogged(state) || canViewMktools(state),\n        title: <Translation id=\"bought_together\" defaultMessage=\"Bought together\" />,\n        analyticsTag: 'usually_purchased_cross',\n        gtmLabel: 'ec_cart_usually_bought_together'\n    }\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n    return {\n        fetch: () => {\n            return dispatch(fetchCartSimilarProducts(props.productIds, props.quantities))\n        }\n    }\n}\n\nconst CartBoughtToguetherContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductsSlider)\n\n\nexport default CartBoughtToguetherContainer\n","import { connect } from 'react-redux'\nimport { getIsLogged } from '../../store/login/reducers'\nimport Translation from \"../global/Translation\";\nimport React from \"react\";\nimport ProductsSlider from \"./ProductsSlider\";\nimport {canViewMktools} from \"../../store/centers/reducers\";\nimport {fetchCartComplementaryProducts} from \"../../store/crossSelling/actions\";\nimport {getCartSimilarProducts} from \"../../store/crossSelling/reducers\";\n\nconst mapStateToProps = state => {\n    return {\n        products: getCartSimilarProducts(state),\n        hide: !getIsLogged(state) || canViewMktools(state),\n        title: <Translation id=\"other_products\" defaultMessage=\"Other products\" />,\n        analyticsTag: 'other_products'\n    }\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n    return {\n        fetch: () => {\n            return dispatch(fetchCartComplementaryProducts(props.productIds, props.quantities))\n        }\n    }\n}\n\nconst CartOtherProductsContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductsSlider)\n\n\nexport default CartOtherProductsContainer\n","import React, { useState } from 'react'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../global/Translation'\nimport ReactTooltip from 'react-tooltip'\nimport copyToClipboardIcon from '../../../assets/img/components/copy-to-clipboard.svg'\n\nconst SmallBannerRocketV2 = props => {\n    const { intl, market, isOnlyUsaSalesOrg } = props\n\n    // Data for Card with 35 percent off\n    const _35percentOffData = {\n        percentAmountTitle: intl.formatMessage({ id: 'MSRP_and_150_day_terms', defaultMessage: 'MSRP and 150-day terms.' }),\n        bodyText: intl.formatMessage({ id: 'when_you_purchase_a_minimum_of_30_silestone_and_or_dekton_slabs', defaultMessage: 'When you purchase a minimum of 30 Silestone® and/or Dekton® slabs.' }),\n        smallText: intl.formatMessage({ id: 'total_discount', defaultMessage: 'Total discount' }),\n    }\n\n    //Data for Card with 5 and 10 percent off \n    const commonPercentOffData = {\n        bodyText: intl.formatMessage({ id: 'for_any_quantity_of_silestone_and_dekton_slabs', defaultMessage: 'For any quantity of Silestone® and Dekton® slabs.' }),\n        smallText: intl.formatMessage({ id: 'additional_discount', defaultMessage: 'Additional discount' }),\n    }\n\n    return (\n        <div className=\"small-banner-rocket-promo-v2\">\n            <div className=\"banner-title-content\">\n                <h3>\n                    <Translation id=\"rocket_promo_choose_your_discount\" defaultMessage=\"Rock[et] Promo: Choose Your Discount!\" />\n                </h3>\n            </div>\n            <div className=\"banner-card-content\">\n                <Card\n                    percentAmount={35}\n                    percentAmountTitle={_35percentOffData.percentAmountTitle}\n                    promotionCode={isOnlyUsaSalesOrg ? '100000479' : '100000452'}\n                    bodyText={_35percentOffData.bodyText}\n                    smallText={_35percentOffData.smallText}\n                    intl={intl}\n                />\n                {market === 'USACA10' ? (\n                    <Card\n                        percentAmount={10}\n                        promotionCode={'100000446'}\n                        bodyText={commonPercentOffData.bodyText}\n                        smallText={commonPercentOffData.smallText}\n                        intl={intl}\n                    />\n                ) : market === 'USACA5' ? (\n                    <Card\n                        percentAmount={5}\n                        promotionCode={'100000431'}\n                        bodyText={commonPercentOffData.bodyText}\n                        smallText={commonPercentOffData.smallText}\n                        intl={intl}\n                    />\n                ) : null}\n            </div>\n        </div>\n    )\n}\n\nconst Card = props => {\n    const { percentAmount, percentAmountTitle, promotionCode, bodyText, smallText, intl } = props\n    const [promotionCopied, setPromotionCopied] = useState(false)\n\n    const copyPromotionCodeOnClick = e => {\n        e.preventDefault()\n        navigator.clipboard.writeText(promotionCode).then(() => {\n            setPromotionCopied(true)\n            ReactTooltip.hide()\n            ReactTooltip.show()\n            setTimeout(() => {\n                setPromotionCopied(false)\n                ReactTooltip.hide()\n            }, 3000)\n        })\n    }\n\n    return (\n        <div className=\"rocket-promo-card\">\n            <div>\n                <div>\n                    <h5>\n                        {percentAmount}%* <Translation id=\"off\" defaultMessage=\"off\" />. {percentAmountTitle}\n                    </h5>\n                </div>\n                <div className=\"enter-promotion-code\">\n                    <span>\n                        <Translation id=\"enter\" defaultMessage=\"Enter\" />: {promotionCode}\n                        <button\n                            onClick={copyPromotionCodeOnClick}\n                            data-tip={promotionCopied ? intl.formatMessage({ id: 'copied', defaultMessage: 'Copied' }) : intl.formatMessage({ id: 'copy_to_clipboard', defaultMessage: 'Copy to clipboard' })}\n                            className=\"copy-to-clipboard__btn\"\n                        >\n                            <img src={copyToClipboardIcon} alt=\"copy to clipboard\" />\n                        </button>\n                        <ReactTooltip\n                            effect=\"solid\"\n                            place=\"top\"\n                        />\n                    </span>\n                </div>\n            </div>\n            {bodyText && (\n                <div>\n                    <p>{bodyText}</p>\n                </div>\n            )}\n\n            {smallText && (\n                <div>\n                    <p className=\"mt-1\">\n                        <small>* {smallText}</small>\n                    </p>\n                </div>\n            )}\n        </div>\n    )\n}\n\nexport default injectIntl(SmallBannerRocketV2)\n","import React from 'react'\n\nconst ProgressBarWeights = ({\n    startPoint,\n    endPoint,\n    middlePoint,\n    currentPoint,\n    unit,\n    startPointText,\n    endPointText,\n    middlePointText,\n    startPointUnits = true,\n    endPointUnits = true,\n    languageDir,\n    numberFormat\n}) => {\n    const percentageCurrentNumber = (currentPoint - startPoint) / (endPoint - startPoint) * 100;\n    const percentageCurrentString = percentageCurrentNumber > 100 ? 100 : percentageCurrentNumber.toFixed(2)\n    const percentageMiddle = middlePoint ? ((middlePoint - startPoint) / (endPoint - startPoint) * 100).toFixed(2) : 0\n    const middlePointPositionStyle = languageDir === 'rtl' ?\n        {\n            right: percentageMiddle + '%'\n        } : {\n            left: percentageMiddle + '%'\n        }\n\n    const formattedStartPoint = startPointUnits ?\n        numberFormat.format(startPoint) + ' ' + unit :\n        numberFormat.format(startPoint);\n    const formattedEndPoint = endPointUnits ?\n        numberFormat.format(endPoint) + ' ' + unit :\n        numberFormat.format(endPoint);\n    const formattedCurrentPoint = numberFormat.format(currentPoint) + ' ' + unit;\n    const formattedMiddlePoint = numberFormat.format(middlePoint ? middlePoint : 0) + ' ' + unit;\n\n    return (\n        <div className=\"progress-bar-weights__container\">\n            <div className=\"d-flex align-items-center\">\n                <div className=\"progress-bar-weights__label\">\n                    <p>{formattedStartPoint}</p>\n                    {startPointText && <p>({startPointText})</p>}\n                </div>\n                <div className=\"progress-bar-weights\">\n                    {!!middlePoint && (\n                        <div className=\"middle\" style={middlePointPositionStyle}>\n                            <div className=\"progress-bar-weights__label\" >\n                                {middlePointText && <p>{middlePointText}</p>}\n                                {middlePointText ? <p>({formattedMiddlePoint})</p> : <p>{formattedMiddlePoint}</p>}\n                            </div>\n                        </div>\n                    )}\n                    <div className=\"progress-bar-weights__bar\" style={{width: 'calc(' + percentageCurrentString + '% + 3px)'}}>\n                        <div className=\"progress-bar-weights__ball\">\n                            <div className=\"progress-bar-weights__current\">\n                                {formattedCurrentPoint}\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div className=\"progress-bar-weights__label\">\n                    <p>{formattedEndPoint}</p>\n                    {endPointText && <p className=\"progress-bar-weights__label-small\">({endPointText})</p>}\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default ProgressBarWeights;\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport truck from '../../assets/img/weights/truck.svg'\nimport container from '../../assets/img/weights/container.svg'\n\nimport {injectIntl} from \"react-intl\";\nimport ProgressBarWeights from \"./ProgressBarWeights\";\nimport LocalizedLink from \"../global/LocalizedLink\";\n\n\n/**\n *\n * @param intl\n * @param unit\n * @param isMktoolCenter\n * @param shippingMethod\n * @param languageDir\n * @param numberFormat\n * @param selectedCenter\n * @param {{units,\n * isValid,\n * qtyForNextUnit,\n * currentQtyWeight,\n * currentMinWeight,\n * currentMaxWeight}} fullUnits\n * @param spentBudget\n * @param newSpentBudgetWithCartContents\n * @param maxBudget\n * @param coin\n * @returns {JSX.Element}\n */\nconst Weights = ({\n    intl,\n    unit,\n    isMktoolCenter,\n    shippingMethod,\n    languageDir,\n    numberFormat,\n    selectedCenter,\n    fullUnits,\n    spentBudget,\n    newSpentBudgetWithCartContents,\n    maxBudget,\n    coin,\n    isLatinaVitoria\n}) => {\n\n    if (isLatinaVitoria){\n        unit = intl.formatMessage({ id: 'tables'})\n    } else {\n        unit = unit.toLowerCase() + '.'\n    }\n\n    const formattedCurrentQtyWeight = numberFormat.format(fullUnits.currentQtyWeight) + ' ' + unit;\n    const formattedCurrentMinWeight = numberFormat.format(fullUnits.currentMinWeight) + ' ' + unit;\n    const formattedCurrentMaxWeight = numberFormat.format(fullUnits.currentMaxWeight) + ' ' + unit;\n    const formattedQtyForNextUnit = numberFormat.format(fullUnits.qtyForNextUnit) + ' ' + unit;\n\n    const currentUnit = fullUnits.currentQtyWeight < fullUnits.currentMinWeight ?\n        fullUnits.units + 1 :\n        fullUnits.units\n\n    let mainText;\n    let subText;\n    let isMainTextBold = true;\n\n    let middlePointText;\n    let endPointText;\n\n    let shouldShowMiddlePoint = true;\n\n    const translationWeightInYourCart =\n        (isLatinaVitoria) ?\n            <Translation\n                id=\"slabs_in_your_cart\"\n                defaultMessage=\"Slabs in your cart: {varWeight}\"\n                values={{varWeight: formattedCurrentQtyWeight}}\n            /> :\n            <Translation\n                id=\"weight_in_your_cart\"\n                defaultMessage=\"Weight in your cart: {varWeight}\"\n                values={{varWeight: formattedCurrentQtyWeight}}\n            />\n\n    const translationDiscount =\n        <Translation\n            id=\"weight_needed_for_extra_discount\"\n            defaultMessage=\"You need {varWeight} more to get an extra discount on your order\"\n            values={{varWeight: formattedQtyForNextUnit}}\n        />\n\n    const translationWeightNeeded =\n        (isLatinaVitoria) ?\n            <Translation\n                id=\"weight_needed_for_order_latina\"\n                defaultMessage=\"You need {varWeight} more to fill a container.\"\n                values={{varWeight: formattedQtyForNextUnit}}\n            />\n            :\n            <Translation\n                id=\"weight_needed_for_order\"\n                defaultMessage=\"You need {varWeight} more to place your order.\"\n                values={{varWeight: formattedQtyForNextUnit}}\n            />\n\n    const translationMinNeeded =\n        (isLatinaVitoria) ?\n            <Translation\n                id=\"must_reach_min_slabs_latina\"\n                defaultMessage=\"The container will be shipped when completed, otherwise delivery time may be longer than usual.\"\n            />\n             :\n            <Translation\n                id=\"must_reach_min_weight\"\n                defaultMessage=\"You must reach, at least, the minimum weight indicated.\"\n            />\n\n    const translationMinOrMaxNeeded =\n        (isLatinaVitoria) ?\n            <Translation\n                id=\"must_reach_min_slabs_or_previous_max_latina\"\n                defaultMessage=\"You must reach the minimum number of slabs indicated, or not exceed the previous maximum of {varWeight}, otherwise delivery time may be longer than usual.\"\n                values={{varWeight: (numberFormat.format(fullUnits.currentMaxWeight - fullUnits.currentMaxWeight / currentUnit) + ' ' + unit.toLowerCase())}}\n            /> :\n            <Translation\n                id=\"must_reach_min_weight_or_previous_max\"\n                defaultMessage=\"You must reach the minimum weight indicated, or not exceed the previous maximum weight {varWeight}\"\n                values={{varWeight: (numberFormat.format(fullUnits.currentMaxWeight - fullUnits.currentMaxWeight / currentUnit) + ' ' + unit.toLowerCase())}}\n            />\n\n    switch (shippingMethod) {\n        case 'SINGLE_SLAB':\n        case 'ENDI_TRUCK':\n        case 'ENDI_CONTAINER':\n            if(shippingMethod !== 'ENDI_CONTAINER' && (shippingMethod === 'ENDI_TRUCK' || selectedCenter == 1100)){\n                mainText = currentUnit > 1 ? translationWeightInYourCart : translationDiscount;\n                isMainTextBold = currentUnit > 1;\n                currentUnit === 1 && (fullUnits.currentQtyWeight < fullUnits.currentMinWeight ?\n                    middlePointText = <Translation id=\"discount\" defaultMessage=\"Discount\" /> :\n                    endPointText = <Translation id=\"discount\" defaultMessage=\"Discount\" />);\n                shouldShowMiddlePoint = currentUnit === 1\n            } else {\n                mainText = translationWeightInYourCart;\n                shouldShowMiddlePoint = false;\n            }\n            break;\n        case 'FULL_TRUCK':\n        case 'DIRECT_TRUCK':\n        case 'CONTAINER':\n            mainText = fullUnits.currentQtyWeight < fullUnits.currentMinWeight ?\n                translationWeightNeeded :\n                translationWeightInYourCart;\n            subText = currentUnit === 1 ? (fullUnits.currentQtyWeight < fullUnits.currentMinWeight ?\n                    translationMinNeeded :\n                    null)\n                :\n                fullUnits.currentQtyWeight < fullUnits.currentMinWeight ?\n                    translationMinOrMaxNeeded :\n                    null;\n\n            middlePointText = (isLatinaVitoria) ?\n                <Translation id=\"min\" defaultMessage=\"Minimum\" /> :\n                <Translation id=\"min_weight\" defaultMessage=\"Minimum weight\" />\n            //endPointText = <Translation id=\"min_weight\" defaultMessage=\"Minimum weight\" />\n            break;\n        case 'MKTOOLS':\n            if(newSpentBudgetWithCartContents <= maxBudget)\n                mainText =\n                    <React.Fragment>\n                        <Translation id=\"remaining_budget\" defaultMessage=\"Remaining budget\" /> : {numberFormat.format(maxBudget - newSpentBudgetWithCartContents)} {coin}\n                    </React.Fragment>\n            else\n                subText = <Translation id=\"out_of_budget\" defaultMessage=\"You are out of budget\" />\n    }\n    const isValid = isMktoolCenter && newSpentBudgetWithCartContents <= maxBudget || !isMktoolCenter && fullUnits.isValid\n\n    return (\n        <div className={isValid ? 'weights-container' : 'weights-container weights-container__error'}>\n            <div className=\"container\">\n                <div className=\"d-flex flex-wrap justify-content-between align-middle\">\n                    <div className=\"k-d-flex-col col-12 col-xl-5 justify-content-center align-items-start\">\n                        <p className={'weights__text' + (isMainTextBold ? ' weights__text--bold' : '')}>{mainText}</p>\n                        {subText && <p className=\"weights__text\">{subText}</p>}\n                        {!isMktoolCenter && (\n                            <div className='weights__button d-flex'>\n                                <LocalizedLink style={{ cursor: 'pointer' }} routeId=\"ROUTE_CATALOG\" queryString=\"?type[0]=TABLA\" params={{ outlet: '' }}>\n                                    <Translation id={'add_more_items'} defaultMessage={'Add more items'} />\n                                </LocalizedLink>\n                            </div>\n                        )}\n                    </div>\n                    <div className=\"weights-container__progress-bar d-flex align-items-center col-12 col-xl-7\">\n                        {!isMktoolCenter && (\n                            <div>\n                                <div className=\"weights__unit-counter\">\n                                    <div className=\"weights__inner-circle\"></div>\n                                    <img\n                                        src={shippingMethod === 'CONTAINER' || shippingMethod === 'ENDI_CONTAINER' ? container : truck}\n                                        alt={shippingMethod === 'CONTAINER' || shippingMethod === 'ENDI_CONTAINER' ? 'Container' : 'Truck'}\n                                    />\n                                    {currentUnit > 1 && <p className=\"weights__text weights__text--bold\">x{currentUnit}</p>}\n                                </div>\n                            </div>\n                        )}\n                        <div className=\"flex-grow-1\">\n                            {\n                                isMktoolCenter ? (\n                                    <ProgressBarWeights\n                                        startPoint={0}\n                                        endPoint={maxBudget}\n                                        middlePoint={null}\n                                        currentPoint={newSpentBudgetWithCartContents}\n                                        middlePointText={null}\n                                        endPointText={null}\n                                        unit={coin}\n                                        languageDir={languageDir}\n                                        numberFormat={numberFormat}\n                                    />\n                                ) : (\n                                    <ProgressBarWeights\n                                        startPoint={fullUnits.currentMaxWeight - fullUnits.currentMaxWeight / currentUnit}\n                                        endPoint={fullUnits.currentMaxWeight}\n                                        middlePoint={shouldShowMiddlePoint ? fullUnits.currentMinWeight : null}\n                                        currentPoint={fullUnits.currentQtyWeight}\n                                        middlePointText={middlePointText}\n                                        endPointText={endPointText}\n                                        unit={unit}\n                                        languageDir={languageDir}\n                                        numberFormat={numberFormat}\n                                    />\n                                )\n                            }\n\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default injectIntl(Weights)\n","import { connect } from 'react-redux'\nimport Weights from \"./Weights\";\nimport {\n    getCoin,\n    getIsMkToolsCenter, getMktoolsBudget,\n    getMktoolsBudgetWasted,\n    getSelectedCenter,\n    getShippingMethodWithoutWeights, isLatinaVitoria, getShippingMethod\n} from '../../store/centers/reducers'\nimport { getBudgetPlusTotal, getFullUnits } from '../../store/cart/reducers'\nimport {getProfileConfiguration} from \"../../store/profile-configuration/reducers\";\nimport {getLanguage, getLanguageDir} from \"../../store/ui/reducers\";\nimport getNumberFormat from \"../getNumberFormat\";\nimport { injectIntl } from 'react-intl'\n\nconst mapStateToProps = state => {\n    let language = getLanguage(state)\n    let defaultUnit = language === 'en' || language === 'en-US' || language === 'fr-CA' ? 'LB' : 'KG'\n    let unit = getProfileConfiguration(state).weightUnit ? getProfileConfiguration(state).weightUnit : defaultUnit\n\n    return {\n        unit,\n        isMktoolCenter: getIsMkToolsCenter(state),\n        shippingMethod: getShippingMethodWithoutWeights(state),\n        languageDir: getLanguageDir(state),\n        numberFormat: getNumberFormat(language),\n        fullUnits: getFullUnits(state),\n        selectedCenter: getSelectedCenter(state),\n        spentBudget: getMktoolsBudgetWasted(state),\n        newSpentBudgetWithCartContents: getBudgetPlusTotal(state),\n        maxBudget: getMktoolsBudget(state),\n        coin: getCoin(state),\n        isLatinaVitoria: isLatinaVitoria(state)\n    }\n}\n\nconst WeightsContainer = injectIntl(connect(mapStateToProps, null)(Weights))\n\nexport default WeightsContainer\n","import React from 'react'\nimport Translation from './Translation'\n\nclass QuickGuides extends React.Component {\n    quickGuidesData = () => {\n        return [\n            {\n                title: 'Guía rápida lavabos',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/FC7C6628-D235-4317-A46F6C28B0C8C4DC/guia-rapida-lavabos.pdf',\n                subtype: 'LAVABO',\n                type: null,\n                language: 'es'\n            },\n            {\n                title: 'Guía rápida platos de ducha de obra',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/4994C85D-8D25-4A55-A95F3A13BCA16F66/guia-rapida-dk-platos-ducha-obra.pdf',\n                type: null,\n                subtype: 'PLATO DUCHA',\n                language: 'es'\n            },\n            {\n                title: 'Guía rápida solería Dekton®',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/CAB033B4-F9B4-4D62-ABE78DB755A62113/guia-rapida-soleria-dekton.pdf',\n                type: null,\n                subtype: 'SOLERIA',\n                language: 'es'\n            },\n            {\n                title: 'Guía rápida aplacado Dekton®',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/EEF914F1-BE4A-4E58-AD0D1D38FBDA8797/guia-rapida-aplacado-dekton.pdf',\n                type: null,\n                subtype: 'OPTIMMA',\n                language: 'es'\n            },\n            {\n                title: 'Guía rápida platos de ducha',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/713ECE1C-C432-4FC3-85D731D3AEE9EB9D/guia-rapida-platos-ducha.pdf',\n                type: null,\n                subtype: 'PLATO DUCHA',\n                language: 'es'\n            },\n            {\n                title: 'Shower trays Quick guide',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/24E824DA-F8D9-4604-84FE1D1C9506A51D/shower-trays-quick-guide.pdf',\n                type: null,\n                subtype: 'PLATO DUCHA',\n                language: 'en'\n            },\n            {\n                title: 'Dekton® flooring Quick guide',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/117C53B6-2928-40A7-B552459002BFAD29/dk-flooring-quick-guide.pdf',\n                type: null,\n                subtype: 'SOLERIA',\n                language: 'en'\n            },\n            {\n                title: 'Shower floors Quick guide',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/5B9E3D71-91C2-42F7-825D326A748EC183/dk-shower-floors-quick-guide.pdf',\n                type: null,\n                subtype: 'PLATO DUCHA',\n                language: 'en'\n            },\n            {\n                title: 'Dekton® wall cladding Quick guide',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/8420A11F-74CA-4E84-9A55643061E8A9B9/wall-cladding-dk-quick-guide.pdf',\n                type: null,\n                subtype: 'OPTIMMA',\n                language: 'en'\n            },\n            {\n                title: 'Washbasins Quick guide',\n                link: 'https://assetstools.cosentino.com/api/v1/bynder/doc/34DE8526-1D68-4D12-873AEAECB1AD6322/whasbasin-quick-guide.pdf',\n                subtype: 'LAVABO',\n                type: null,\n                language: 'en'\n            },\n        ]\n    }\n\n    /**\n     * Filters quick guides by subtype(s) and language.\n     * \n     * @param {string|string[]} subtypeId - The subtype or an array of subtypes to filter by.\n     * @param {string} lang - The language to filter by.\n     * @returns {Object[]} - The filtered list of quick guides.\n     */\n    filterQuickGuidesByLanguage(subtypeId, lang) {\n        const englishGuides = []\n        const spanishGuides = []\n\n        const isSubtypeArray = Array.isArray(subtypeId)\n\n        this.quickGuidesData().forEach(guide => {\n            if (isSubtypeArray ? subtypeId.includes(guide.subtype) : guide.subtype === subtypeId) {\n                if (guide.language === 'es') {\n                    spanishGuides.push(guide)\n                } else if (guide.language === 'en') {\n                    englishGuides.push(guide)\n                }\n            }\n        })\n\n        return lang === 'es' ? spanishGuides : englishGuides\n    }\n\n    render() {\n        const { subtypeId, lang } = this.props\n        const quickGuides = this.filterQuickGuidesByLanguage(subtypeId, lang)\n\n        const displayQuickGuides = (\n            <div\n                className=\"product-quick-guides p-3 mb-3 mt-3\"\n                style={{ background: 'white', display: 'flex', alignItems: 'flex-start', flexDirection: 'column', textAlign: 'left', fontWeight: '400' }}\n            >\n                <Translation id=\"technical_documentation_related_to_this_product\" defaultMessage=\"Technical documentation related to this product\" />\n\n                {quickGuides.map(guide => (\n                    <div key={guide.title} className=\"mt-3\" style={{ display: 'flex', flexDirection: 'row' }}>\n                        <a href={guide.link} className=\"brand-new-blue\" target=\"_blank\" rel=\"noopener noreferrer\" gtm-label=\"ec_producto_doc_tecnica\">\n                            <div style={{ display: 'inline-flex', marginRight: '8px' }}>\n                                <i className=\"fas fa-external-link-alt\"></i>\n                            </div>\n                            {guide.title}\n                        </a>\n                    </div>\n                ))}\n            </div>\n        )\n\n        return quickGuides.length > 0 ? displayQuickGuides : null\n    }\n}\n\nexport default QuickGuides","import React from 'react'\nimport { FormattedHTMLMessage, injectIntl } from 'react-intl'\nimport Translation from '../global/Translation'\nimport 'react-datepicker/dist/react-datepicker-cssmodules.css'\nimport Stepper from 'react-stepper-horizontal'\nimport CartSummaryContainer from './CartSummaryContainer'\nimport Spinner from '../global/Spinner'\nimport iconCheckmark from '../../assets/img/icons/checkmark.svg'\nimport { defineMessages } from 'react-intl'\nimport Outlet_V2 from '../../assets/img/banners-v2/Outlet_V2.png'\nimport Button from '../global/Button'\nimport LocalizedLink from '../global/LocalizedLink'\nimport GroupInputVoucherV2 from './global/GroupInputVoucherV2'\nimport CheckoutFormCustomerContainer from './customer/CheckoutFormCustomerContainer'\nimport { getNextWorkingDay } from '../../helpers'\nimport SlaDateSelectV2 from './SlaDateSelectV2'\nimport CheckoutFormMktoolsContainer from './mktools/CheckoutFormMktoolsContainer'\nimport CheckoutFormIkeaContainer from './ikea/CheckoutFormIkeaContainer'\nimport CheckoutFormLowesContainer from './lowes/CheckoutFormLowesContainer'\nimport DiscoverProductsContainer from '../products/DiscoverProductsContainer'\nimport CartBoughtToguetherContainer from '../products/CartBoughtToguetherContainer'\nimport CartOtherProductsContainer from '../products/CartOtherProductsContainer'\nimport confirm from '../global/extendedConfirm'\nimport getNumberFormat from '../getNumberFormat'\nimport SmallBannerRocketV2 from '../banners/banner-rocket/SmallBannerRocketV2'\nimport Alerts from '../alerts/Alerts'\nimport WeightsContainer from '../weights/WeightsContainer'\nimport WarningIcon from '../../assets/img/icons/warning-triangle.svg'\nimport BannerSilestoneContainer from '../banners/banner-silestone-container/BannerSilestoneContainer'\nimport Slider from 'react-slick'\nimport QuickGuides from '../global/QuickGuides';\n\nconst MESSAGES = defineMessages({\n    my_default_addresses: {\n        id: 'my_default_addresses',\n        description: 'my_default_addresses',\n        defaultMessage: 'My default addresses'\n    },\n    new_address: {\n        id: 'new_address',\n        description: 'new_address',\n        defaultMessage: 'New address'\n    },\n    select: {\n        id: 'select',\n        description: 'select',\n        defaultMessage: 'Select...'\n    },\n    destination_name_placeholder: {\n        id: 'destination_name_placeholder',\n        description: 'destination_name_placeholder',\n        defaultMessage: 'Destination name'\n    },\n    street_and_number_placeholder: {\n        id: 'street_and_number_placeholder',\n        description: 'street_and_number_placeholder',\n        defaultMessage: 'Street and number'\n    },\n    pc_placeholder: {\n        id: 'pc_placeholder',\n        description: 'pc_placeholder',\n        defaultMessage: 'PC'\n    },\n    city_placeholder: {\n        id: 'city_placeholder',\n        description: 'city_placeholder',\n        defaultMessage: 'City'\n    },\n    order_id: {\n        id: 'order_id',\n        description: 'order_id',\n        defaultMessage: 'New address'\n    },\n    comments_placeholder: {\n        id: 'comments_placeholder',\n        description: 'comments_placeholder',\n        defaultMessage: 'Comments'\n    },\n    alert_empty: {\n        id: 'alert_empty',\n        description: 'alert_empty',\n        defaultMessage: 'This field is required'\n    },\n    products_for_you: {\n        id: 'products_for_you',\n        description: 'products_for_you',\n        defaultMessage: 'Products for you'\n    },\n    bought_together: {\n        id: 'bought_together',\n        description: 'bought_together',\n        defaultMessage: 'Bought together'\n    },\n    other_products: {\n        id: 'other_products',\n        description: 'other_products',\n        defaultMessage: 'Other products'\n    }\n})\n\nclass CheckoutV2 extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            steps: [],\n            coupon: null,\n            couponText: '',\n            selectDateOptions: [\n                {\n                    label: <Translation id=\"no_keep_the_delivery_dates_for_each_item\" defaultMessage=\"No, keep the delivery dates for each item\" />,\n                    value: 1\n                },\n                {\n                    label: <Translation id=\"yes_choose_the_delivery_date_for_all_items\" defaultMessage=\"Yes, choose the delivery date for all items\" />,\n                    value: 2\n                }\n            ],\n            selectDate: {\n                label: <Translation id=\"no_keep_the_delivery_dates_for_each_item\" defaultMessage=\"No, keep the delivery dates for each item\" />,\n                value: 1\n            },\n            dateText: '',\n            selectAddressOptions: [\n                {\n                    label: 'TEST 1',\n                    value: 1\n                },\n                {\n                    label: 'TEST 2',\n                    value: 2\n                }\n            ],\n            selectAddress: null,\n            selectBoolean: true,\n            destination_name: null,\n            street: null,\n            pc: null,\n            city: null,\n            order_id: null,\n            comments: null,\n            pressConfirm: false,\n            lines: null,\n            form: null,\n            canSendCheckout: false,\n            submitCheckout: () => {},\n            el: this,\n            props: props,\n            validate: [],\n            showAll: false,\n            showAllHQ: false,\n            showAllCenter: false,\n            isNextButtonDisabled: false,\n            showAllBrazil: false\n        }\n        this.childCustomer = React.createRef()\n        this.childMktools = React.createRef()\n        this.childIkea = React.createRef()\n        this.childLowes = React.createRef()\n        this.cartSubtypes = []\n        this.props.lines.map(line => {\n            this.cartSubtypes.push(line.product.subtypeId)}\n        )\n    }\n\n    getCheckoutType() {\n        if (this.props.isIkeaCenter) return 'ikea'\n        else if (this.props.isMktoolsCenter) return 'mktools'\n        else if (this.props.isLowesCenter) return 'lowes'\n        else if (this.props.userType === 'SHOP') return 'shop'\n        else if (this.props.isEndiCenter) return 'endi'\n        else return 'default'\n    }\n\n    componentDidMount() {\n        //This callback fn update a global state that is used in sla-dates endpoint\n        this.props.setIsCheckoutPage(true)\n        this.props.setStep(0)\n        this.setState({\n            steps: [\n                {\n                    title: <Translation id=\"your_cart\" defaultMessage=\"Your cart\" />,\n                    onClick: () => this.props.setStep(0)\n                },\n                {\n                    title: <Translation id=\"shipping_address\" defaultMessage=\"Shipping address\" />,\n                    onClick: () => this.props.setStep(1)\n                },\n                {\n                    title: <Translation id=\"confirmation\" defaultMessage=\"Confirmation\" />,\n                    onClick: () => this.props.setStep(2)\n                }\n            ]\n        })\n        switch (this.getCheckoutType()) {\n            case 'mktools':\n                this.setState({\n                    form: <CheckoutFormMktoolsContainer ref={ref => (this.childMktools = ref)} intl={this.props.intl} />,\n                    submitCheckout: this.submitCheckoutFormMktools\n                })\n                break\n            case 'ikea':\n                this.setState({\n                    form: <CheckoutFormIkeaContainer ref={ref => (this.childIkea = ref)} intl={this.props.intl} />,\n                    submitCheckout: this.submitCheckoutFormIkea\n                })\n                break\n            case 'lowes':\n                this.setState({\n                    form: <CheckoutFormLowesContainer ref={ref => (this.childLowes = ref)} intl={this.props.intl} />,\n                    submitCheckout: this.submitCheckoutFormLowes\n                })\n                break\n            default:\n                this.setState({\n                    form: <CheckoutFormCustomerContainer onStep={this.props.setStep} ref={ref => (this.childCustomer = ref)} intl={this.props.intl} />,\n                    submitCheckout: this.submitCheckoutFormCustomer\n                })\n\n            // case 'shop':\n            //     return <CheckoutFormShopContainer />\n            // case 'endi':\n            //     return <CheckoutFormEndiContainer />\n        }\n\n        this.setCosentinoGlobalCount()\n    }\n\n    componentWillUnmount() {\n        //This callback fn update a global state that is used in sla-dates endpoint\n        this.props.setIsCheckoutPage(false)\n    }\n\n    componentDidUpdate(prevProps) {\n        if (this.props.currentStep !== prevProps.currentStep) {\n            this.props.history.replace(this.props.extendedPath(this.getPath()))\n        }\n\n        if (this.childCustomer && this.childCustomer.canSendCheckout && this.state.canSendCheckout !== this.childCustomer.canSendCheckout()) {\n            this.setState({ canSendCheckout: this.childCustomer.canSendCheckout() })\n        }\n        \n        if (prevProps.totalQty !== this.props.totalQty) {\n            this.setCosentinoGlobalCount()\n        }\n        \n        if (prevProps.totalQty !== this.props.totalQty) {\n            this.setCosentinoGlobalCount()\n        }\n        \n        const hasPermissionsChanged = prevProps.naturalStoneViewingPermissions.canViewHQ !== this.props.naturalStoneViewingPermissions.canViewHQ || prevProps.naturalStoneViewingPermissions.canViewBrazil !== this.props.naturalStoneViewingPermissions.canViewBrazil\n\n        if (\n            prevProps.canSendMinMaxCheckout() !== this.props.canSendMinMaxCheckout() || hasPermissionsChanged\n        ) {\n            this.updateNextButtonState()\n        }\n    }\n\n    setCosentinoGlobalCount = () => {\n        let totalThickness = 0;\n        let totalThicknessBrazil = 0\n\n        const cosentinoGlobalLinesNumber = this.props.lines.filter((line) => {\n            if(line.extra && line.extra.isCosentinoGlobal){\n                totalThickness += line.product && line.product.thickness && ['SENSA', 'SCALEA', 'PREXURY'].includes(line.brand) ? parseFloat(line.product.thickness) * line.qty : 0\n            }\n            return line.extra && line.extra.isCosentinoGlobal\n        }).length\n\n        const cosentinoBrazilLinesNumber = this.props.lines.filter(line => {\n            if (line.extra && line.extra.isCosentinoBrazil) {\n                totalThicknessBrazil += line.product && line.product.thickness && ['SENSA', 'SCALEA', 'PREXURY'].includes(line.brand) ? parseFloat(line.product.thickness) * line.qty : 0\n            }\n            return line.extra && line.extra.isCosentinoBrazil\n        }).length\n\n        this.setState({totalThickness, totalThicknessBrazil, cosentinoGlobalLinesNumber, cosentinoBrazilLinesNumber}, this.updateNextButtonState)\n    }\n\n    updateNextButtonState = () => {\n        const { totalQty, canSendMinMaxCheckout, naturalStoneViewingPermissions, setCheckoutStepOneButtonNextDisabled } = this.props\n        const isNextButtonDisabled = totalQty === 0 || !canSendMinMaxCheckout() || (naturalStoneViewingPermissions && naturalStoneViewingPermissions.canViewBrazil && this.state.totalThicknessBrazil > 0 && this.state.totalThicknessBrazil < 18) || (naturalStoneViewingPermissions && naturalStoneViewingPermissions.canViewHQ && this.state.totalThickness > 0 && this.state.totalThickness < 12)\n    \n        this.setState({ isNextButtonDisabled }, () => {\n            setCheckoutStepOneButtonNextDisabled(this.state.isNextButtonDisabled)\n        })\n\n    }\n    \n    submitCheckoutFormCustomer = () => {\n        this.childCustomer.submitCheckout()\n    }\n\n    submitCheckoutFormLowes = () => {\n        this.childLowes.submitCheckout()\n    }\n\n    submitCheckoutFormIkea = () => {\n        this.childIkea.confirmSubmitCheckout()\n    }\n\n    submitCheckoutFormMktools = () => {\n        this.childMktools.submitCheckout()\n    }\n\n    validate(elements) {\n        for (let i = 0; i < elements.length; i++) {\n            let input = document.getElementById(elements[i])\n            if (input) {\n                if (!this.state[elements[i]]) {\n                    let span = document.createElement('span')\n                    if (!input.parentNode.querySelector('.alert_empty')) {\n                        span.textContent = this.props.intl.formatMessage({ id: 'alert_empty' })\n                        span.classList.add('alert_empty')\n                        input.parentNode.insertBefore(span, input.nextSibling)\n                        input.classList.add('alert_empty')\n                    }\n                } else {\n                    input.classList.remove('alert_empty')\n                    if (input.parentNode.querySelector('.alert_empty')) {\n                        input.parentNode.querySelector('.alert_empty').remove()\n                    }\n                }\n            }\n        }\n    }\n\n    next() {\n        const { steps } = this.state\n        this.props.setStep(steps.length === this.props.currentStep ? this.props.currentStep : this.props.currentStep + 1)\n    }\n\n    getPath() {\n        if (this.props.currentStep == 1) return 'address'\n        else if (this.props.currentStep == 2) return 'thankyou'\n        return ''\n    }\n\n    redirectToCatalog() {\n        this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', ''))\n    }\n\n    showAll() {\n        this.setState({ showAll: !this.state.showAll })\n    }\n\n    showAllHQ() {\n        this.setState({ showAllHQ: !this.state.showAllHQ })\n    }\n\n    showAllBrazil() {\n        this.setState({ showAllBrazil: !this.state.showAllBrazil })\n    }\n\n    showAllCenter() {\n        this.setState({ showAllCenter: !this.state.showAllCenter })\n    }\n\n    confirmEmptyCart = () => {\n        confirm(this.props.intl.formatMessage({ id: 'mall_cart_type_incompatible_exception_body' }), { isV2: true }).then(\n            confirm => {\n                this.props.emptyCart()\n            },\n            cancel => {}\n        )\n    }\n\n    isSubmitDisabled = () => {\n        //ikea\n        if (this.props.isIkeaCenter || this.props.isLowesCenter) return false\n        //lowes y mktools\n        if (this.props.isMktoolsCenter) return !this.props.hasSaleConditionsCheck\n\n        if (this.props.isMandatorySfId) return true\n\n        return !this.state.canSendCheckout\n    }\n\n    getLinesConditions = lines => {\n        const isGlobal = lines && lines.some(line => line.extra && line.extra.isCosentinoGlobal)\n        const isBrazil = lines && lines.some(line => line.extra && line.extra.isCosentinoBrazil)\n\n        return { isGlobal, isBrazil }\n    }\n\n    render() {\n        let { steps, totalThickness, totalThicknessBrazil, selectBoolean, cosentinoGlobalLinesNumber, cosentinoBrazilLinesNumber } = this.state\n        let { total, lang, calculatingLinesPrice, totalQty, coin, totalMktools, coinMktools, isDisabledPreferedDeliveryDatePicker } = this.props\n        let numberFormat = getNumberFormat(lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n        const { isGlobal, isBrazil } = this.getLinesConditions(this.props.lines)\n\n        if(coin === 'JPY') {\n            numberFormat = getNumberFormat(lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n        }\n\n        const thicknessFormat = getNumberFormat(lang);\n\n        const centerLinesNumber = this.props.lines.filter(line => {\n            return !line.extra || (!line.extra.isCosentinoGlobal && !line.extra.isCosentinoBrazil)\n        }).length\n\n        const thicknessErrorElement = (thickness, totalThickness = '12 cm') => {\n            return (\n                <React.Fragment>\n                    <div className=\"alert-danger__main-text\">\n                        <FormattedHTMLMessage\n                            id=\"checkout_total_thickness_HQ\"\n                            defaultMessage=\"Currently, you have a <b>total thickness in Natural Stone* slabs from Cosentino Global of {varThickness}</b>. You must add slabs until the TOTAL width of all the Natural Stone* slabs you purchase from HQ is at least: {varTotalThickness}. \"\n                            values={{ varThickness: thickness, varTotalThickness: totalThickness }}\n                        />\n                    </div>\n                    <div className=\"alert-danger__sub-text\">\n                        <FormattedHTMLMessage id=\"checkout_total_thickness_HQ_example\" defaultMessage=\"Example: 4 slabs of 3 cm = 12 cm\" />\n                    </div>\n                </React.Fragment>\n            )\n        }\n\n        const thicknessErrorElementBrazil = (thickness, totalThicknessBrazil = '18 cm') => {\n            return (\n                <React.Fragment>\n                    <div className=\"alert-danger__main-text\">\n                        <FormattedHTMLMessage\n                            id=\"checkout_total_thickness_brazil\"\n                            defaultMessage=\"Currently, you have a <b>total thickness in natural stone* slabs from Cosentino Brazil of {varThickness}</b>. You must add slabs until the total width of all the natural stone* slabs you purchase from Brazil is at least: {varTotalThickness}. \"\n                            values={{ varThickness: thickness, varTotalThickness: totalThicknessBrazil }}\n                        />\n                    </div>\n                    <div className=\"alert-danger__sub-text\">\n                        <FormattedHTMLMessage id=\"checkout_total_thickness_brazil_example\" defaultMessage=\"Example: 6 slabs of 3 cm = 18 cm\" />\n                    </div>\n                </React.Fragment>\n            )\n        }\n\n        const submit = (\n            <React.Fragment>\n                <Button\n                    className=\"bt bt-inverted next w-100\"\n                    disabled={this.isSubmitDisabled()}\n                    inverted\n                    datacy=\"checkout__send_checkout\"\n                    onClick={() => this.state.submitCheckout()}\n                    dataQas=\"checkout_steptwo-checkout-button-desktop\"\n                    gtmLabel=\"ec_funnel_compra_de_siguiente\"\n                >\n                    <Translation id=\"checkout\" defaultMessage=\"Checkout\" />\n                </Button>\n                <Button\n                    className=\"bt bt-inverted next-floating w-100\"\n                    disabled={this.isSubmitDisabled()}\n                    inverted\n                    datacy=\"checkout__send_checkout\"\n                    onClick={() => this.state.submitCheckout()}\n                    dataQas=\"checkout_steptwo-checkout-button-responsive\"\n                    gtmLabel=\"ec_funnel_compra_de_siguiente\"\n                >\n                    <Translation id=\"checkout\" defaultMessage=\"Checkout\" />\n                </Button>\n            </React.Fragment>\n        )\n\n        const next =\n            this.state.isNextButtonDisabled || this.props.isLoading || this.props.isChangingCartQty ?  (\n                <React.Fragment>\n                    <Button className=\"bt bt-inverted next w-100\" inverted disabled dataQas=\"checkout_stepone-next-button-responsive\" gtmLabel=\"ec_funnel_compra_carrito_siguiente\">\n                        <Translation id=\"next\" defaultMessage=\"Next\" />\n                    </Button>\n                    <Button className=\"bt bt-inverted next-floating w-100\" inverted disabled dataQas=\"checkout_stepone-next-button-desktop\" gtmLabel=\"ec_funnel_compra_carrito_siguiente\">\n                        <Translation id=\"next\" defaultMessage=\"Next\" />\n                    </Button>\n                </React.Fragment>\n            ) : (\n                <React.Fragment>\n                    <Button inverted className=\"bt bt-inverted next\" onClick={() => this.next()} dataQas=\"checkout_stepone-next-button-desktop\" gtmLabel=\"ec_funnel_compra_carrito_siguiente\">\n                        <Translation id=\"next\" defaultMessage=\"Next\" />\n                    </Button>\n                    <Button inverted className=\"bt bt-inverted next-floating\" onClick={() => this.next()} dataQas=\"checkout_stepone-next-button-responsive\" gtmLabel=\"ec_funnel_compra_carrito_siguiente\">\n                        <Translation id=\"next\" defaultMessage=\"Next\" />\n                    </Button>\n                </React.Fragment>\n            )\n\n        const sliderSettings = {\n            arrows: false,\n            swipeToSlide: true,\n            dots: false,\n            speed: 300,\n            autoplaySpeed: 5000,\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            infinite: true,\n            autoplay: true,\n            variableWidth: false,\n            adaptiveHeight: true\n        }\n\n        const checkoutCartTotal = (\n            <div className=\"checkout-cart-total\">\n                <div className=\"d-flex justify-content-between align-items-center\">\n                    <div>\n                        <h1 className=\"resume\">\n                            <Translation id=\"resume\" defaultMessage=\"Resume\" />\n                        </h1>\n                    </div>\n                    <div>\n                        <span className=\"total_qty\">\n                            <Translation id=\"articles\" defaultMessage=\"Articles\" /> ({totalQty})\n                        </span>\n                    </div>\n                </div>\n                <hr className={'checkout-hr'} />\n                <div className=\"d-flex justify-content-between align-items-center\">\n                    <div className=\"total\">\n                        <p>\n                            <Translation id=\"total\" defaultMessage=\"Total\" />\n                        </p>\n                    </div>\n                    <div className=\"total-price\">\n                        {this.props.isMktoolsCenter ? (\n                            <React.Fragment>\n                                {numberFormat.format(totalMktools)} {coinMktools}\n                            </React.Fragment>\n                        ) : calculatingLinesPrice ? (\n                            <Spinner isLoading={true} relative small></Spinner>\n                        ) : !total || (total && total == 0) ? (\n                            <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                        ) : (\n                            total && (\n                                <React.Fragment>\n                                    {numberFormat.format(total)} {coin}\n                                </React.Fragment>\n                            )\n                        )}\n                    </div>\n                </div>\n                <hr />\n\n                {this.getCheckoutType() !== 'lowes' && <GroupInputVoucherV2 lines={this.props.lines}/>}\n\n                {(this.props.canViewRocketPromotion || this.props.canViewSilestoneContainerPromotion) && (\n                    <Slider ref={s => (this.slider = s)} {...sliderSettings}>\n                         {this.props.canViewSilestoneContainerPromotion && (\n                            <BannerSilestoneContainer isCheckoutView={true}/>\n                        )}\n                        {this.props.canViewRocketPromotion && (\n                            <SmallBannerRocketV2 market={this.props.canViewRocketPromotion} isOnlyUsaSalesOrg={this.props.isOnlyUsaSalesOrg}/>\n                        )}\n                    </Slider>\n                )} \n                {next}\n            </div>\n        )\n\n        const checkoutCartBox = (\n            <div className=\"checkout-cart-box\">\n                {checkoutCartTotal}\n                {!this.props.isValidVoucher && this.getCheckoutType() !== 'ikea' && this.getCheckoutType() !== 'lowes' && this.getCheckoutType() !== 'mktools' && (\n                    <SlaDateSelectV2\n                        selected={this.props.deliveryDate}\n                        onChange={this.props.setDeliveryDate}\n                        minDate={this.props.centerSelected == 1100 ? getNextWorkingDay(this.props.minDeliveryDate) : getNextWorkingDay(1)}\n                        isDisabledPreferedDeliveryDatePicker={isDisabledPreferedDeliveryDatePicker}\n                    />\n                )}\n            </div>\n        )\n\n        const aProducts = []\n        const aQuantities = []\n\n        this.props.lines.forEach(l => {\n            aProducts.push(l.productId)\n            aQuantities.push(l.qty)\n        })\n\n        const products = aProducts.join(',')\n        const quantities = aQuantities.join(',')\n\n        return this.props.currentStep === 2 || (this.props.lines && this.props.lines.length > 0) ? (\n            <div style={{ backgroundColor: '#F9F9F9' }}>\n                <div className=\"stepper-checkout\">\n                    <Stepper\n                        steps={steps}\n                        activeStep={this.props.currentStep}\n                        activeColor=\"#232323\"\n                        activeTitleColor=\"#232323\"\n                        completeColor=\"#232323\"\n                        completeTitleColor=\"#232323\"\n                        defaultColor=\"#F9F9F9\"\n                        defaultTitleColor=\"#9B9B9B\"\n                        defaultBorderColor=\"#D8D8D8\"\n                        defaultBorderStyle=\"solid\"\n                        // defaultBorderWidth=\"1px\"\n                        defaultBorderWidth={1}\n                        defaultBarColor=\"#D8D8D8\"\n                        completeBarColor=\"#232323\"\n                        circleFontColor=\"#D8D8D8\"\n                        lineMarginOffset={0}\n                    />\n                </div>\n\n                {this.props.currentStep === 0 && (\n                    <div className={'container'} style={{ paddingLeft: '0', paddingRight: '0' }}>\n                        <div className=\"checkout-cart-details\">\n                            <div>\n                                {this.props.naturalStoneViewingPermissions.canViewHQ || this.props.naturalStoneViewingPermissions.canViewBrazil ? (\n                                    <React.Fragment>\n                                        <div className=\"checkout-cart checkout-cart__weights\" style={{ marginBottom: '8px' }}>\n                                            {/* Sección común */}\n                                            <div className=\"checkout-cart-details__cart-content\">\n                                                <div className=\"checkout-cart-details__total-qty\">\n                                                    <div>\n                                                        <h1 className=\"your_cart\">\n                                                            <Translation id=\"your_cart\" defaultMessage=\"Your cart\" />\n                                                        </h1>\n                                                    </div>\n                                                    <div>\n                                                        <span className=\"total_qty\">\n                                                            {totalQty} <Translation id=\"articles\" defaultMessage=\"Articles\" />\n                                                        </span>\n                                                    </div>\n                                                </div>\n                                                <div className=\"checkout-cart-details__empty-cart\">\n                                                    <span onClick={() => this.confirmEmptyCart()}>\n                                                        <i className=\"mt-1 fal fa-trash-alt\" style={{ marginRight: '8px' }}></i>\n                                                        <Translation id={'empty_cart'} defaultMessage={'Empty cart'} />\n                                                    </span>\n                                                </div>\n                                            </div>\n                                            {this.getCheckoutType() !== 'ikea' && this.getCheckoutType() !== 'lowes' && (\n                                                <div className=\"banner\">\n                                                    <WeightsContainer />\n                                                </div>\n                                            )}\n                                        </div>\n\n                                        {/* Sección para artículos de Cosentino HQ */}\n                                        {isGlobal && (\n                                            <div className=\"checkout-cart checkout-cart__hq\" style={{ marginBottom: '8px' }}>\n                                                <div className=\"checkout-cart-details__cart-content separator-line-bottom d-block\">\n                                                    <div className=\"checkout-cart-details__total-qty\">\n                                                        <div style={{ marginInlineEnd: '8px' }}>\n                                                            <h1 className=\"center_items_title\">\n                                                                <Translation id=\"cosentino_hq_articles\" defaultMessage=\"Articles from Center Spain\" />\n                                                            </h1>\n                                                        </div>\n                                                        <div>\n                                                            <span className=\"center_items_total_qty\">\n                                                                <div>{cosentinoGlobalLinesNumber}</div>\n                                                                <div>\n                                                                    <Translation id=\"articles\" defaultMessage=\"Articles\" />\n                                                                </div>\n                                                            </span>\n                                                        </div>\n                                                    </div>\n                                                    <div className=\"info-text__container\">\n                                                        <img src={WarningIcon} alt=\"Warning\" />\n                                                        <p className=\"info-text__orange\">\n                                                            <Translation\n                                                                id=\"info_items_from_HQ\"\n                                                                defaultMessage=\"These products are in our Cosentino Global warehouse. Delivery times may be longer than the delivery times of your usual center\"\n                                                            />\n                                                        </p>\n                                                    </div>\n                                                    {totalThickness > 0 && totalThickness < 12 && (\n                                                        <div>\n                                                            <Alerts element={thicknessErrorElement(thicknessFormat.format(totalThickness) + ' cm')} status={300} />\n                                                        </div>\n                                                    )}\n                                                </div>\n                                                {/* Contenedor de resumen del carrito */}\n                                                <CartSummaryContainer\n                                                    isCosentinoGlobal={true}\n                                                    isCosentinoBrazil={false}\n                                                    type=\"checkout_v2\"\n                                                    showAll={this.state.showAllHQ}\n                                                    howManyShouldShow={centerLinesNumber > 0 ? 3 : 5}\n                                                />\n                                                {/* Mostrar más/menos artículos */}\n                                                {cosentinoGlobalLinesNumber > (centerLinesNumber > 0 ? 3 : 5) && (\n                                                    <React.Fragment>\n                                                        {!this.state.showAllHQ ? (\n                                                            <Button onClick={() => this.showAllHQ()} className={\"checkout-show-more-less-btn\"}>\n                                                                <Translation id=\"view_all_articles\" defaultMessage=\"View all articles\" />\n                                                            </Button>\n                                                        ) : (\n                                                            <Button\n                                                                id=\"ver_menos\"\n                                                                onClick={() => this.showAllHQ()}\n                                                                className={\"checkout-show-more-less-btn\"}\n                                                            >\n                                                                <Translation id=\"view_less\" defaultMessage=\"View less\" />\n                                                            </Button>\n                                                        )}\n                                                    </React.Fragment>\n                                                )}\n                                            </div>\n                                        )}\n\n                                        {/* Sección para artículos de Cosentino Brazil */}\n                                        {isBrazil && (\n                                            <div className=\"checkout-cart checkout-cart__brazil\" style={{ marginBottom: '8px' }}>\n                                                <div className=\"checkout-cart-details__cart-content separator-line-bottom d-block\">\n                                                    <div className=\"checkout-cart-details__total-qty\">\n                                                        <div style={{ marginInlineEnd: '8px' }}>\n                                                            <h1 className=\"center_items_title\">\n                                                                <Translation id=\"cosentino_brazil_articles\" defaultMessage=\"Articles from Center Brazil\" />\n                                                            </h1>\n                                                        </div>\n                                                        <div>\n                                                            <span className=\"center_items_total_qty\">\n                                                                <div>{cosentinoBrazilLinesNumber}</div>\n                                                                <div>\n                                                                    <Translation id=\"articles\" defaultMessage=\"Articles\" />\n                                                                </div>\n                                                            </span>\n                                                        </div>\n                                                    </div>\n                                                    <div className=\"info-text__container\">\n                                                        <img src={WarningIcon} alt=\"Warning\" />\n                                                        <p className=\"info-text__orange\">\n                                                            <Translation\n                                                                id=\"info_items_from_Brazil\"\n                                                                defaultMessage=\"These products are in our Cosentino Brazil warehouse. Delivery times may be longer than the delivery times of your usual center\"\n                                                            />\n                                                        </p>\n                                                    </div>\n                                                    {totalThicknessBrazil > 0 && totalThicknessBrazil < 18 && (\n                                                        <div>\n                                                            <Alerts element={thicknessErrorElementBrazil(thicknessFormat.format(totalThicknessBrazil) + ' cm')} status={300} />\n                                                        </div>\n                                                    )}\n                                                </div>\n                                                {/* Contenedor de resumen del carrito */}\n                                                <CartSummaryContainer\n                                                    isCosentinoGlobal={false}\n                                                    isCosentinoBrazil={true}\n                                                    type=\"checkout_v2\"\n                                                    showAll={this.state.showAllBrazil}\n                                                    howManyShouldShow={centerLinesNumber > 0 ? 3 : 5}\n                                                />\n                                                {/* Mostrar más/menos artículos */}\n                                                {cosentinoBrazilLinesNumber > (centerLinesNumber > 0 ? 3 : 5) && (\n                                                    <React.Fragment>\n                                                        {!this.state.showAllBrazil ? (\n                                                            <Button onClick={() => this.showAllBrazil()} className={\"checkout-show-more-less-btn\"}>\n                                                                <Translation id=\"view_all_articles\" defaultMessage=\"View all articles\" />\n                                                            </Button>\n                                                        ) : (\n                                                            <Button\n                                                                id=\"ver_menos_brazil\"\n                                                                onClick={() => this.showAllBrazil()}\n                                                                className={\"checkout-show-more-less-btn\"}\n                                                            >\n                                                                <Translation id=\"view_less\" defaultMessage=\"View less\" />\n                                                            </Button>\n                                                        )}\n                                                    </React.Fragment>\n                                                )}\n                                            </div>\n                                        )}\n\n                                        {/* Sección para artículos de otros centros */}\n                                        {centerLinesNumber > 0 && (\n                                            <div className=\"checkout-cart checkout-cart__center\">\n                                                <div className=\"checkout-cart-details__cart-content separator-line-bottom d-block\">\n                                                    <div className=\"checkout-cart-details__total-qty\">\n                                                        <div style={{ marginInlineEnd: '8px' }}>\n                                                            <h1 className=\"center_items_title\">\n                                                                <Translation id=\"your_centers_articles\" defaultMessage=\"Articles from your centers\" />\n                                                            </h1>\n                                                        </div>\n                                                        <div>\n                                                            <span className=\"center_items_total_qty\">\n                                                                <div>{centerLinesNumber}</div>\n                                                                <div>\n                                                                    <Translation id=\"articles\" defaultMessage=\"Articles\" />\n                                                                </div>\n                                                            </span>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                                <CartSummaryContainer\n                                                    isCosentinoGlobal={false}\n                                                    isCosentinoBrazil={false}\n                                                    type=\"checkout_v2\"\n                                                    showAll={this.state.showAllCenter}\n                                                    // Ajuste de howManyShouldShow para considerar ambas variables\n                                                    howManyShouldShow={cosentinoGlobalLinesNumber > 0 || cosentinoBrazilLinesNumber > 0 ? 3 : 5}\n                                                />\n                                                {/* Ajuste de la lógica para mostrar más/menos artículos */}\n                                                {centerLinesNumber > (cosentinoGlobalLinesNumber > 0 || cosentinoBrazilLinesNumber > 0 ? 3 : 5) && (\n                                                    <React.Fragment>\n                                                        {!this.state.showAllCenter ? (\n                                                            <Button onClick={() => this.showAllCenter()} className={\"checkout-show-more-less-btn\"}>\n                                                                <Translation id=\"view_all_articles\" defaultMessage=\"View all articles\" />\n                                                            </Button>\n                                                        ) : (\n                                                            <Button onClick={() => this.showAllCenter()} className={\"checkout-show-more-less-btn\"}>\n                                                                <Translation id=\"view_less\" defaultMessage=\"View less\" />\n                                                            </Button>\n                                                        )}\n                                                    </React.Fragment>\n                                                )}\n                                            </div>\n                                        )}\n                                    </React.Fragment>\n                                ) : (\n                                    <React.Fragment>\n                                        <div className=\"checkout-cart\">\n                                            {this.getCheckoutType() !== 'ikea' && this.getCheckoutType() !== 'lowes' && (\n                                                <div className=\"banner\">\n                                                    <WeightsContainer />\n                                                </div>\n                                            )}\n                                            <div className=\"checkout-cart-details__cart-content\">\n                                                <div className=\"checkout-cart-details__total-qty\">\n                                                    <div>\n                                                        <h1 className=\"your_cart\">\n                                                            <Translation id=\"your_cart\" defaultMessage=\"Your cart\" />\n                                                        </h1>{' '}\n                                                    </div>\n                                                    <div>\n                                                        <span className=\"total_qty\">\n                                                            {totalQty} <Translation id=\"articles\" defaultMessage=\"Articles\" />\n                                                        </span>\n                                                    </div>\n                                                </div>\n                                                <div className=\"checkout-cart-details__empty-cart\">\n                                                    <span onClick={() => this.confirmEmptyCart()}>\n                                                        <i className=\"mt-1 fal fa-trash-alt\" style={{ marginRight: '8px' }}></i>\n                                                        <Translation id={'empty_cart'} defaultMessage={'Empty cart'} />\n                                                    </span>\n                                                </div>\n                                            </div>\n                                            <div>\n                                                <CartSummaryContainer\n                                                    type=\"checkout_v2\"\n                                                    showAll={this.state.showAll}\n                                                />\n                                            </div>\n                                            <div>\n                                                {this.props.lines && this.props.lines.length > 5 && (\n                                                    <React.Fragment>\n                                                        {!this.state.showAll ? (\n                                                            <Button onClick={() => this.showAll()} className={\"checkout-show-more-less-btn\"}>\n                                                                <Translation id=\"view_all_articles\" defaultMessage=\"View all articles\" />\n                                                            </Button>\n                                                        ) : (\n                                                            <Button id=\"ver_menos\" onClick={() => this.showAll()} className={\"checkout-show-more-less-btn\"}>\n                                                                <Translation id=\"view_less\" defaultMessage=\"View less\" />\n                                                            </Button>\n                                                        )}\n                                                    </React.Fragment>\n                                                )}\n                                            </div>\n                                        </div>\n                                    </React.Fragment>\n                                )}\n\n                                <div className=\"checkout-cart-box-mobile\">{checkoutCartBox}</div>\n                                {this.getCheckoutType() !== 'ikea' &&\n                                    this.getCheckoutType() !== 'lowes' &&\n                                    this.getCheckoutType() !== 'mktools' &&\n                                    this.props.lines &&\n                                    this.props.lines.length > 0 && (\n                                        <div className={'cross-selling-checkout'}>\n                                            <CartBoughtToguetherContainer productIds={products} quantities={quantities} sectionFlag=\"CJ\" />\n                                            <CartOtherProductsContainer productIds={products} quantities={quantities} sectionFlag=\"CO\" />\n                                        </div>\n                                    )}\n                            </div>\n                            {/* Desktop screens */}\n                            <div className=\"checkout-cart-box-desktop\">{checkoutCartBox}</div>\n                        </div>\n                    </div>\n                )}\n                {this.props.currentStep === 1 && (\n                    <div className={'container p-0'}>\n                        <span\n                            style={{ cursor: 'pointer', fontSize: '14px', fontWeight: '500', paddingLeft: '24px' }}\n                            onClick={() => this.props.setStep(0)}\n                            gtm-label=\"ec_funnel_compra_de_volver_carrito\"\n                        >\n                            <i style={{ marginRight: '8px' }} className=\"fal fa-chevron-left\" />\n                            <Translation id=\"back\" defaultMessage=\"Back to cart\" />\n                        </span>\n                        <div className=\"checkout-address\">\n                            {this.state.form}\n                            <div className=\"checkout-address-cart\">\n                                <div className=\"d-flex justify-content-between align-items-center\">\n                                    <div>\n                                        <h1 className=\"resume\">\n                                            <Translation id=\"resume\" defaultMessage=\"Resume\" />\n                                        </h1>\n                                    </div>\n                                    <div>\n                                        <span className=\"total_qty\">\n                                            <Translation id=\"articles\" defaultMessage=\"Articles\" /> ({totalQty})\n                                        </span>\n                                    </div>\n                                </div>\n                                <hr className={'checkout-hr'} />\n                                <div className=\"d-flex justify-content-between align-items-center\">\n                                    <div className=\"total\">\n                                        <p>\n                                            <Translation id=\"total\" defaultMessage=\"Total\" />\n                                        </p>\n                                    </div>\n                                    <div className=\"total-price\">\n                                        {this.props.isMktoolsCenter ? (\n                                            <React.Fragment>\n                                                {numberFormat.format(totalMktools)} {coinMktools}\n                                            </React.Fragment>\n                                        ) : calculatingLinesPrice ? (\n                                            <Spinner isLoading={true} relative small></Spinner>\n                                        ) : !total || (total && total == 0) ? (\n                                            <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                                        ) : (\n                                            total && (\n                                                <React.Fragment>\n                                                    {numberFormat.format(total)} {coin}\n                                                </React.Fragment>\n                                            )\n                                        )}\n                                    </div>\n                                </div>\n                                <hr className={'my-3'} />\n                                <div className=\"confirm__order__btn\">{submit}</div>\n\n                                <div>\n                                    <CartSummaryContainer type=\"checkout_v2_summary\" showAll={true} />\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                )}\n                {this.props.currentStep === 2 && (\n                    <div className={'container'}>\n                        <div className=\"checkout-confirmation\">\n                            <div className=\"checkout-confirmation-box\">\n                                <div className=\"d-flex flex-column\">\n                                    <div className=\"title mb-4\">\n                                        <div>\n                                            <img alt=\"Finished successfully\" className=\"icon\" src={iconCheckmark} />\n                                        </div>\n                                        <Translation id=\"thank_you_you_have_placed_your_order\" defaultMessage=\"Thank you, you have placed your order\" />\n                                    </div>\n                                    <div className=\"subtitle mb-2\">\n                                        <Translation id=\"confirmation_will_be_sent_to_your_email\" defaultMessage=\"Confirmation will be sent to your email\" />\n                                    </div>\n                                    {this.props.reservationCode && (\n                                        <div className=\"reservation-msg-box\">\n                                            <div className=\"subtitle\">\n                                                <Translation id=\"reservation_id\" defaultMessage=\"Reservation ID\" />\n                                                <span className=\"subtitle-bold\">:&nbsp;{this.props.reservationCode}</span>\n                                            </div>\n                                            <div className=\"divider-vertical\"></div>\n                                            <div>\n                                                {!this.props.isMktoolsCenter &&\n                                                    (this.props.canViewNewOrderHistory ? (\n                                                        <LocalizedLink routeId={'ROUTE_PROFILE'} params={{ filter: 'new-orders', open: '' }} gtmLabel=\"ec_funnel_compra_cp_revisar\">\n                                                            <button className=\"review-my-order-btn\">\n                                                                <Translation id=\"review_my_order\" defaultMessage=\"Review my order\" />\n                                                            </button>\n                                                        </LocalizedLink>\n                                                    ) : (\n                                                        <LocalizedLink routeId={'ROUTE_PROFILE'} params={{ filter: 'orders', open: '' }} gtmLabel=\"ec_funnel_compra_cp_revisar\">\n                                                            <button className=\"review-my-order-btn\">\n                                                                <Translation id=\"review_my_order\" defaultMessage=\"Review my order\" />\n                                                            </button>\n                                                        </LocalizedLink>\n                                                    ))}\n                                            </div>\n                                        </div>\n                                    )}\n\n                                    {this.props.reservationCutToSizeCode && (\n                                        <div className=\"cts-reservation-msg-box\">\n                                            <div className=\"subtitle mb-2\">\n                                                <Translation\n                                                    id=\"order_finished_header_cut_to_size\"\n                                                    defaultMessage=\"Your order for cut to size has been finished successfully\"\n                                                />\n                                            </div>\n                                            <div className=\"cts-reservation-msg-content\">\n                                                <div>\n                                                    <span className=\"subtitle\"><Translation id=\"reservation_id\" defaultMessage=\"Reservation ID\" /></span>\n                                                    <span className=\"subtitle-bold\">:&nbsp;{this.props.reservationCutToSizeCode}</span>\n                                                </div>\n                                                <div className=\"divider-vertical\"></div>\n                                                <div>\n                                                    <LocalizedLink routeId={'ROUTE_PROFILE'} params={{ filter: 'orders', open: '' }}>\n                                                        <button className=\"cts-review-my-order-btn\">\n                                                            <Translation id=\"review_my_order\" defaultMessage=\"Review my order\" />\n                                                        </button>\n                                                    </LocalizedLink>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    )}\n\n                                    {(this.props.reservationConfigurableCode || this.props.reservationQuickShipConfigurableCode) && (\n                                        <React.Fragment>\n                                            {this.props.reservationConfigurableCode &&\n                                                <div className=\"cts-reservation-msg-box\">\n                                                    <div className=\"subtitle mb-2\">\n                                                        <Translation\n                                                            id=\"configurable_order_finished_header\"\n                                                            defaultMessage=\"Your order for custom-made products has been finished successfully\"\n                                                        />\n                                                    </div>\n                                                    <div className=\"cts-reservation-msg-content\">\n                                                        <div>\n                                                            <span className=\"subtitle\"><Translation id=\"reservation_id\" defaultMessage=\"Reservation ID\" /></span>\n                                                            <span className=\"subtitle-bold\">:&nbsp;{this.props.reservationConfigurableCode}</span>\n                                                        </div>\n                                                        <div className=\"divider-vertical\"></div>\n                                                        <div>\n                                                            <LocalizedLink routeId={'ROUTE_PROFILE'} params={{ filter: 'orders', open: '' }}>\n                                                                <button className=\"cts-review-my-order-btn\">\n                                                                    <Translation id=\"review_my_order\" defaultMessage=\"Review my order\" />\n                                                                </button>\n                                                            </LocalizedLink>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            }\n\n                                            {this.props.reservationQuickShipConfigurableCode &&\n                                                <div className=\"cts-reservation-msg-box\">\n                                                    <div className=\"subtitle mb-2\">\n                                                        <Translation\n                                                            id=\"quick_ship_configurable_order_finished_header\"\n                                                            defaultMessage=\"Your order for custom-made products (Quickship) has been finished successfully\"\n                                                        />\n                                                    </div>\n                                                    <div className=\"cts-reservation-msg-content\">\n                                                        <div>\n                                                            <span className=\"subtitle\"><Translation id=\"reservation_id\" defaultMessage=\"Reservation ID\" /></span>\n                                                            <span className=\"subtitle-bold\">:&nbsp;{this.props.reservationQuickShipConfigurableCode}</span>\n                                                        </div>\n                                                        <div className=\"divider-vertical\"></div>\n                                                        <div>\n                                                            <LocalizedLink routeId={'ROUTE_PROFILE'} params={{ filter: 'orders', open: '' }}>\n                                                                <button className=\"cts-review-my-order-btn\">\n                                                                    <Translation id=\"review_my_order\" defaultMessage=\"Review my order\" />\n                                                                </button>\n                                                            </LocalizedLink>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            }\n\n                                            {this.props.isUsaOrCanada && (\n                                                <Alerts status=\"warning\"\n                                                    alert=\"CTS_50_PERCENT_DEPOSIT_FINAL_MSG\"\n                                                    cssIcon='fas fa-exclamation-triangle'\n                                                    iconSize='16px'\n                                                    className={\"cts-configurable-half-deposit-alert mt-3\"}\n                                                />\n                                            )}\n                                        </React.Fragment>\n                                    )}\n\n                                    <div className=\"subtitle mb-4 mt-3\">\n                                        <span className=\"bold\">\n                                            <Translation id=\"shipping_address\" defaultMessage=\"Shipping address\" />\n                                            {': '}\n                                        </span>\n                                        {selectBoolean ? (\n                                            this.props.hasDestination ? (\n                                                this.props.destination\n                                            ) : !this.props.selectedShippingAddress ? (\n                                                ''\n                                            ) : (\n                                                this.props.selectedShippingAddress.centerName +\n                                                ' ' +\n                                                this.props.selectedShippingAddress.customerName +\n                                                ' ' +\n                                                this.props.selectedShippingAddress.address +\n                                                ' ' +\n                                                this.props.selectedShippingAddress.zipCode +\n                                                ' ' +\n                                                this.props.selectedShippingAddress.city +\n                                                ' ' +\n                                                this.props.selectedShippingAddress.country +\n                                                ' ' +\n                                                this.props.selectedShippingAddress.salesOrg\n                                            )\n                                        ) : (\n                                            <div></div>\n                                        )}\n                                    </div>\n                                    <div className=\"keep-buying-btn\">\n                                        <div>\n                                            <LocalizedLink routeId={'ROUTE_HOME'}>\n                                                <button gtm-label=\"ec_funnel_compra_cp_continuar\">\n                                                    <Translation id=\"keep_buying\" defaultMessage=\"Keep buying\" />\n                                                </button>\n                                            </LocalizedLink>\n                                        </div>\n                                    </div>\n                                </div>\n                                {!this.props.isIkeaCenter && (\n                                    <LocalizedLink routeId=\"ROUTE_CATALOG\" queryString=\"?type[0]=TABLA\" params={{ outlet: 'outlet' }} className=\"image-slide-item\">\n                                        <div className=\"image-outlet\" style={{ backgroundImage: `linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('${Outlet_V2}')` }}>\n                                            <div className=\"slide-title\">\n                                                <div className=\"subtitle\" style={{ color: 'white' }}>\n                                                    <Translation id=\"cosentino_outlet\" defaultMessage=\"Cosentino Outlet\" />\n                                                </div>\n                                                <h2 className=\"title\" style={{ color: 'white' }}>\n                                                    <Translation id=\"OUTLET_V2_TXT\" defaultMessage=\"Cosentino Outlet\" />\n                                                </h2>\n                                            </div>\n                                            <div className=\"slide-bt\">\n                                                <Button inline gentle size=\"medium\" style={{ color: 'white', borderColor: 'white' }} gtmLabel=\"ec_funnel_compra_cp_promocion\">\n                                                    <Translation id=\"view_promotion\" default Message=\"Buy here\" />\n                                                </Button>\n                                            </div>\n                                        </div>\n                                    </LocalizedLink>\n                                )}\n                            </div>\n\n                            <QuickGuides subtypeId={this.cartSubtypes} lang={lang} />\n\n                            <DiscoverProductsContainer lines={this.props.lines} sectionFlag=\"OD\" />\n                        </div>\n                    </div>\n                )}\n            </div>\n        ) : (\n            <div className={'container'}>\n                <div className={'checkout-empty-cart-container'}>\n                    <h2 className={'cart-is-empty-text'}>\n                        {this.props.isLoading ? <Spinner isLoading={true} relative></Spinner> : <Translation id={'your_cart_is_empty'} defaultMessage={'Your cart is empty'} />}\n                    </h2>\n                    <Button className={'bt-inverted cart-is-empty-bt'} onClick={() => this.props.setStep(0)}>\n                        <LocalizedLink routeId=\"ROUTE_HOME\">\n                            <Translation id=\"keep_buying\" default Message=\"Keep buying\" />\n                        </LocalizedLink>\n                    </Button>\n                </div>\n                <DiscoverProductsContainer lines={this.props.lines} sectionFlag=\"OD\" />\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(CheckoutV2)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport {\n    getUserType,\n    getImpersonatedBy,\n    isEmserUser,\n    getIsAdmin,\n    getUserName,\n    canViewRocketPromotion,\n    getNaturalStoneViewingPermissions,\n    canViewSilestoneContainerPromotion\n} from '../store/login/reducers'\nimport {\n    getIsLowesCenter,\n    getIsMkToolsCenter,\n    getIsIkeaCenter,\n    getIsEndiCenter,\n    canOffer,\n    getShippingMethod,\n    getSelectedCenter,\n    getHasMinWeight,\n    getCoin,\n    isLatinaVitoria,\n    isDisabledPreferedDeliveryDatePicker,\n    isUsaOrCanada,\n    isOnlyUsaSalesOrg\n} from '../store/centers/reducers'\nimport CheckoutV2 from '../components/checkout/CheckoutV2'\nimport {getLanguage, getLanguageDir, getCheckoutStep, getLocalizedUrl} from '../store/ui/reducers'\nimport {\n    getCalculatingLinesPrice,\n    getFinishStep,\n    getGoalMax,\n    getGoalMin,\n    getIsValidVoucher,\n    getKgPoundRatio,\n    getLines,\n    getReservationCode,\n    getTransformingSkuToLots,\n    isSending,\n    qtySelector,\n    totalCoin,\n    totalSelector,\n    weightSelector,\n    getIsLoading,\n    getReservationCutToSizeCode,\n    getReservationConfigurableCode,\n    totalSelectorMktools, getReservationQuickShipConfigurableCode\n} from '../store/cart/reducers'\nimport {\n    canSendCheckoutSaleConditions,\n    canSendCheckoutHealthConditions,\n    getComments,\n    getDeliveryDate,\n    getDestination,\n    getIkeaTransportArea,\n    getInstallationDataAddress,\n    getInstallationDataName,\n    getInstallationDataPhone,\n    getInstallationDataProvince,\n    getInstallationDataTown,\n    getInstallationDataZipCode,\n    getLowesDataEmail,\n    getLowesDataFirstName,\n    getLowesDataLastName,\n    getLowesDataTitle,\n    getMinRequiredDate,\n    getPo,\n    getSaleConditionsCheck,\n    getHealthConditionsCheck,\n    getSelectedShippingAddress,\n    getIsVirtualVisitMandatorySfId\n} from '../store/checkout/reducers'\nimport { getCurrentCrossSelling, getCurrentCrossSellingCheckout } from '../store/crossSelling/reducers'\nimport { addCartLine, checkout, emptyCart, transformSkuToLots, isCheckoutPageScreen } from '../store/cart/actions'\nimport { fetchCrossSellingCheckOut } from '../store/crossSelling/actions'\nimport {\n    canSendLowesData,\n    canSendMinMaxCheckout,\n    canSendNeedDestination,\n    setComments,\n    setDeliveryDate, setDestination,\n    setHasSelectedCenter, setSelectedShippingAddressId,\n    setStep,\n    setCheckoutStepOneButtonNextDisabled\n} from '../store/checkout/actions'\nimport { getProfileConfiguration } from '../store/profile-configuration/reducers'\nimport { getEmployeeId } from '../store/big-account/reducers'\nimport { dispatchPushURL } from '../store/ui/actions'\nimport { getSelectedShippingAddressForIkea, getShippingAddresses } from '../store/shipping-addresses/reducers'\nimport {injectIntl} from \"react-intl\";\nimport {withRouter} from \"react-router-dom\";\n\nconst mapStateToProps = (state, props) => {\n    let language = getLanguage(state)\n    let defaultUnit = language === 'en' || language === 'en-US' || language === 'fr-CA' ? 'LB' : 'KG'\n    let unit = getProfileConfiguration(state).weightUnit ? getProfileConfiguration(state).weightUnit : defaultUnit\n\n    return {\n        languageDir: getLanguageDir(state),\n        isEndiCenter: getIsEndiCenter(state),\n        isOffer: canOffer(state),\n        total: totalSelector(state),\n        totalMktools: totalSelectorMktools(state),\n        coinMktools: getCoin(state),\n        coin: totalCoin(state),\n        lang: getLanguage(state),\n        calculatingLinesPrice: getCalculatingLinesPrice(state),\n        totalQty: qtySelector(state),\n        hasSaleConditionsCheck: getSaleConditionsCheck(state),\n        hasHealthConditionsCheck: getHealthConditionsCheck(state),\n        crossSelling: getCurrentCrossSelling(state),\n        crossSellingCheckout: getCurrentCrossSellingCheckout(state),\n        shippingMethod: getShippingMethod(state),\n        lines: getLines(state),\n        userType: getUserType(state),\n        impersonatedBy: getImpersonatedBy(state),\n        isLowesCenter: getIsLowesCenter(state),\n        isMktoolsCenter: getIsMkToolsCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isValidVoucher: getIsValidVoucher(state),\n        isSending: isSending(state),\n        canSendCheckoutSaleConditions: canSendCheckoutSaleConditions(state),\n        canSendCheckoutHealthConditions: canSendCheckoutHealthConditions(state),\n        transformingSkuToLots: getTransformingSkuToLots(state),\n        isEmserUser: isEmserUser(state),\n        po: getPo(state),\n        finishStep: getFinishStep(state),\n        reservationCode: getReservationCode(state),\n        reservationCutToSizeCode: getReservationCutToSizeCode(state),\n        reservationConfigurableCode: getReservationConfigurableCode(state),\n        reservationQuickShipConfigurableCode: getReservationQuickShipConfigurableCode(state),\n        hasDestination: getShippingMethod(state) === 'CONTAINER',\n        destination: getDestination(state),\n        selectedShippingAddress: getSelectedShippingAddress(state),\n        deliveryDate: getDeliveryDate(state),\n        minDeliveryDate: getMinRequiredDate(state),\n        centerSelected: getSelectedCenter(state),\n        current: unit === 'KG' ? weightSelector(state) : Math.floor(weightSelector(state) * getKgPoundRatio()),\n        goalMin: getGoalMin(state, unit),\n        goalMax: getGoalMax(state, unit),\n        hasMinWeight: getHasMinWeight(state),\n        isAdmin: getIsAdmin(state),\n        employeeId: getEmployeeId(state),\n        ikeaTransportArea: getIkeaTransportArea(state),\n        userName: getUserName(state),\n        installationDataName: getInstallationDataName(state),\n        installationDataAddress: getInstallationDataAddress(state),\n        installationDataTown: getInstallationDataTown(state),\n        installationDataProvince: getInstallationDataProvince(state),\n        installationDataZipCode: getInstallationDataZipCode(state),\n        installationDataPhone: getInstallationDataPhone(state),\n        comments: getComments(state),\n        shippingAddresses: getShippingAddresses(state),\n        ikeaSelectedShippingAddress: getSelectedShippingAddressForIkea(state),\n        lowesDataFirstName: getLowesDataFirstName(state),\n        lowesDataLastName: getLowesDataLastName(state),\n        lowesDataEmail: getLowesDataEmail(state),\n        lowesDataTitle: getLowesDataTitle(state),\n        currentStep: getCheckoutStep(state),\n        isLoading: getIsLoading(state),\n        canViewRocketPromotion: canViewRocketPromotion(state),\n        extendedPath: (filter) => getLocalizedUrl(state, props.intl, 'ROUTE_CHECKOUT') + '/' + filter,\n        history: props.history,\n        isLatinaVitoria: isLatinaVitoria(state),\n        isDisabledPreferedDeliveryDatePicker: isDisabledPreferedDeliveryDatePicker(state),\n        naturalStoneViewingPermissions: getNaturalStoneViewingPermissions(state),\n        isChangingCartQty: state.cart.isChangingCartQty,\n        isUsaOrCanada: isUsaOrCanada(state),\n        isOnlyUsaSalesOrg: isOnlyUsaSalesOrg(state),\n        isMandatorySfId: getIsVirtualVisitMandatorySfId(state),\n        canViewSilestoneContainerPromotion: canViewSilestoneContainerPromotion(state)\n    }\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n    return {\n        addCartLine: (product, qty, extra, callbackCenter, dektonGripRequested) => {\n            dispatch(addCartLine(product, qty, extra, callbackCenter, dektonGripRequested))\n        },\n        fetchCrossSelling: productIds => {\n            return dispatch(fetchCrossSellingCheckOut(productIds))\n        },\n        canSendMinMaxCheckout: () => dispatch(canSendMinMaxCheckout()),\n        canSendNeedDestination: () => dispatch(canSendNeedDestination()),\n        submitCheckoutFormCustomer: () => dispatch(checkout(true)),\n        submitCheckoutFormMktools: () => dispatch(checkout()),\n        submitCheckoutFormIkea: () => dispatch(checkout()),\n        submitCheckout: () => dispatch(checkout()),\n        transformSkuToLots: () => {\n            return dispatch(transformSkuToLots())\n        },\n        setDeliveryDate: value => dispatch(setDeliveryDate(value)),\n        setHasSelectedCenter: value => dispatch(setHasSelectedCenter(value)),\n        setSelectedShippingAddressId: value => dispatch(setSelectedShippingAddressId(value)),\n        setDestination: value => dispatch(setDestination(value)),\n        setComments: value => dispatch(setComments(value)),\n        setStep: value => dispatch(setStep(value)),\n        goCatalog: intl => {\n            dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', '')))\n            dispatch({ type: 'REMEMBER_CENTER' })\n        },\n        canSendLowesData: () => dispatch(canSendLowesData()),\n        emptyCart: () => {\n            dispatch({ type: 'EMPTY_CART_BY_USER' })\n            dispatch(emptyCart())\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        setIsCheckoutPage: (isCheckoutPage) => dispatch(isCheckoutPageScreen(isCheckoutPage)),\n        setCheckoutStepOneButtonNextDisabled: (checkoutStepOneButtonNextDisabled) => dispatch(setCheckoutStepOneButtonNextDisabled(checkoutStepOneButtonNextDisabled))\n    }\n}\n\nexport default withRouter(injectIntl(connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(CheckoutV2)))\n","import React from 'react'\n\nimport Select from 'react-select'\nimport { injectIntl } from 'react-intl'\n\nconst ShippingMethods = ({ shippingMethods, intl, onChangeShippingMethod, selectedShippingMethod, selectedEndiShippingMethod, v2 }) => {\n    let input = ''\n    switch (shippingMethods.length) {\n        case 0:\n            input = !v2 ? <input type=\"text\" readOnly /> : null\n            break\n        case 1:\n            input = !v2 ? intl.formatMessage({ id: selectedShippingMethod }) : null\n            break\n        default:\n            if (selectedEndiShippingMethod) {\n                input = !v2 ? intl.formatMessage({ id: selectedShippingMethod }) : null\n            } else {\n                if (selectedShippingMethod === 'FULL_TRUCK' && !shippingMethods.includes('FULL_TRUCK')) shippingMethods.push('FULL_TRUCK')\n                let options = shippingMethods.map(shippingMethod => {\n                    return { value: shippingMethod, label: intl.formatMessage({ id: shippingMethod }) }\n                })\n                input = (\n                    <Select\n                        className=\"select__shipping_method\"\n                        onChange={selected => onChangeShippingMethod(selected.value)}\n                        value={selectedShippingMethod}\n                        options={options}\n                        clearable={false}\n                        searchable={false}\n                        optionClassName={'select__shipping_method--option'}\n                    />\n                )\n            }\n    }\n    return input\n}\n\nexport default injectIntl(ShippingMethods)\n","import { connect } from 'react-redux'\nimport { getCenterData, getShippingMethod } from '../../store/centers/reducers'\nimport { changeShippingMethod } from '../../store/centers/actions'\nimport ShippingMethods from './ShippingMethods'\nimport { getEndiShippingTypeByShippingAddress } from '../../store/shipping-addresses/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        shippingMethods: getCenterData(state).shippingTypes,\n        selectedShippingMethod: getShippingMethod(state),\n        selectedEndiShippingMethod: getEndiShippingTypeByShippingAddress(state)\n    }\n}\n\nconst ShippingMethodsContainer = connect(\n    mapStateToProps,\n    { onChangeShippingMethod: changeShippingMethod }\n)(ShippingMethods)\n\nexport default ShippingMethodsContainer\n","import React from 'react'\n\nconst ProgressBar = ({ config, value, showLabels = false, coin, difCurrent, showWeigthLabel, showMktoolsLabels }) => {\n    const max = parseFloat(config[config.length - 1])\n    const labels = config.filter((val, i, array) => {\n        // Only even elements\n        return i % 2 === 0\n    })\n    const percentages = labels.map((val, i, array) => {\n        return ((100 * parseFloat(val)) / max).toFixed(2)\n    })\n    const segmentColors = config.filter((val, i, array) => {\n        // Only odd elements\n        return i % 2 !== 0\n    })\n    if (value > max) value = max\n    const progress = ((100 * parseFloat(value)) / max).toFixed(2)\n\n    return (\n        <div className=\"progress-bar-container small\" >\n            <div className=\"bar\">\n                <div className=\"segments\">\n                    {(() => {\n                        let result = []\n                        for (let i = 0; i < percentages.length - 1; i++) {\n                            result.push(\n                                <div\n                                    className=\"segment\"\n                                    key={percentages[i]}\n                                    style={{ maxWidth: \"100%\", left: `${percentages[i]}%`, width: `${percentages[i + 1] - percentages[i]}%`, background: segmentColors[i] }}\n                                />\n                            )\n                        }\n                        return result\n                    })()}\n                </div>\n                <div className=\"progress-fill\" style={{ left: `${progress}%` }} >\n                    <div className='custom-progress-circle' style={{backgroundColor: difCurrent !== 0 ? '#FF5F6D' : '#4AA297'}}></div>\n                </div>\n                <div className=\"progress-fill-child\">\n                    <div className=\"progress-fill-child-container\">\n                        <span style={{left: `${progress}%`}} className=\"progress-fill-indicator\">\n                        {\n                            showWeigthLabel &&\n                            <span style={{ position: difCurrent !== 0 ? \"absolute\" : \"\", right: difCurrent !== 0 ? \"-40px\" : \"\", top: '14px' }}>{showWeigthLabel}</span>\n                        }\n                        {\n                            showMktoolsLabels &&\n                            <span style={{ position: showMktoolsLabels[1] < showMktoolsLabels[2] ? \"absolute\" : \"\", right: showMktoolsLabels[1] < showMktoolsLabels[2] ? \"-40px\" : \"\", top: '30px' }}>{(value + showMktoolsLabels[2]).toFixed(2) + \" \" +coin}</span>\n                        }\n                        </span>\n                    </div>\n                </div>\n            </div>\n            {showLabels && (\n                <div className=\"labels\">\n                    {labels.map((label, i) => {\n                        let left, right\n                        if (coin !== null && i === 1) left = '15%'\n                        else if (coin !== null && i === 2) right = '0%'\n                        else left = i === labels.length - 1 ? '' : `${percentages[i]}%`\n\n                        if (i === 0 || labels.length - 1 === i) return <div className=\"label\" style={{ left }} />\n                        return (\n                            <div className=\"label\" style={{ left, right }}>\n                                {label} {coin !== null ? ' ' + coin : ''}\n                            </div>\n                        )\n                    })}\n                </div>\n            )}\n            {\n                showMktoolsLabels &&\n                <div className=\"labels\">\n                    {showMktoolsLabels.map((label, i) => {\n                        let left, right\n                        if(i==0) {\n                            left=\"0%\"\n                        }\n                        if(i==1){\n                            right=\"0%\"\n                        }\n                        if(i==2) return\n                        return(\n                            <div className=\"label\" style={{ left, right }}>\n                                {label} {coin !== null ? ' ' + coin : ' '} {i == 1 ? \"max.\" : \"\"}\n                            </div>\n                        )\n                    })}\n                </div>\n            }\n        </div>\n    )\n}\n\nexport default ProgressBar\n","import React from 'react'\nimport ProgressBar from \"../global/ProgressBar\";\nimport Translation from \"../global/Translation\";\nimport {injectIntl} from \"react-intl\";\n\nconst IncentivesMktools = ({ mktoolsBudgetWasted, maxBudget, difCurrentForBudget, total, coin, difCurrent}) => {\n\n  return (\n    <React.Fragment>\n      <div className=\"mktools-bar\">\n        <ProgressBar\n          config={['0', 'lightgray', `${mktoolsBudgetWasted}`, 'green', `${maxBudget}`, 'red', `${maxBudget + difCurrentForBudget}`]}\n          //showLabels={true}\n          value={total}\n          coin={coin}\n          difCurrent={difCurrent}\n          showMktoolsLabels={[0, maxBudget, mktoolsBudgetWasted]}\n        />\n      </div>\n      <div className=\"mktools-info\">\n        <Translation\n          id=\"gray_Budget_consumed_green_budget_to_consume_red_out_of_budget\"\n          defaultMessage=\"(Grey) Consumed budget / (Green) Remain budget / (Red) Out of budget\"\n        />\n      </div>\n    </React.Fragment>\n  )\n}\n\nexport default injectIntl(IncentivesMktools)\n","import React from 'react'\nimport ProgressBar from \"../global/ProgressBar\";\nimport Translation from \"../global/Translation\";\nimport {injectIntl} from \"react-intl\";\nimport iconTabla from '../../assets/img/icons/tabla.svg'\nimport iconMedioCamion from '../../assets/img/icons/medio_camion.svg'\nimport iconCamionCompleto from '../../assets/img/icons/camion_completo.svg'\nimport iconTriangle from '../../assets/img/icons/triangle.svg'\nimport ShippingMethodsContainer from \"../shipping-method-selector/ShippingMethodsContainer\";\n\nconst IncentivesWeights = ({ shippingMethod, goalMax, goalMin, unit, haveWeights, isIkeaCenter, isMktoolCenter, difCurrent, current, isMobile }) => {\n\n  return (\n    <div className={'incentives-weights ' + (isMobile ? 'incentives-weights-mobile' : 'incentives-weights-desktop')}>\n\n      <div className='d-flex justify-content-between align-items-center' style={{position: \"relative\"}}>\n        {\n\n          shippingMethod.toLowerCase().includes(\"container\")\n            ?\n            <React.Fragment>\n              <div></div>\n              <div className='d-flex flex-column align-items-center justify-self-end'>\n                <i className=\"fal fa-ship\"></i>\n                <span><Translation\n                  id=\"ENDI_CONTAINER\"\n                  defaultMessage=\"Container\"\n                />*</span>\n\n                <span>{`${goalMax} ${unit.toLowerCase()}`}</span>\n                <img src={iconTriangle} alt='' />\n              </div>\n            </React.Fragment>\n\n            :\n            <React.Fragment>\n              <div className={'d-flex justify-content-start'} style={{flex: '1 1 0px'}}>\n                <div className='d-flex flex-column align-items-center'>\n                  <img src={iconTabla} alt='' />\n                  <Translation id={'SINGLE_SLAB'} defaultMessage={'Single slab'} />\n                  <img src={iconTriangle} alt='' />\n                </div>\n              </div>\n              <div className={'d-flex justify-content-center'} style={{flex: '1 1 0px'}}>\n                <div className='d-flex flex-column align-items-center'>\n                  <img src={iconMedioCamion} alt='' />\n                  <span><Translation id={'HALF_TRUCK'} defaultMessage={'Half truck'} />*</span>\n                  <span>{`${goalMin} ${unit.toLowerCase()}`}</span>\n                  <img src={iconTriangle} alt='' />\n                </div>\n              </div>\n              <div className={'d-flex justify-content-end'} style={{flex: '1 1 0px'}}>\n                <div className='d-flex flex-column align-items-center'>\n                  <img src={iconCamionCompleto} alt='' />\n                  <span><Translation\n                    id=\"FULL_TRUCK\"\n                    defaultMessage=\"Full Truck\"\n                  />*</span>\n\n                  <span>{`${goalMax} ${unit.toLowerCase()}`}</span>\n                  <img src={iconTriangle} alt='' />\n                </div>\n              </div>\n\n            </React.Fragment>\n        }\n\n      </div>\n\n      {haveWeights.includes(shippingMethod) && !isIkeaCenter && !isMktoolCenter ? (\n        <div style={{height: '40px'}}>\n          <ProgressBar\n            config={[\n              '0 kg.',\n              '#9BC2C7',\n              `${goalMin} ${unit.toLowerCase()}`,\n              '#9BC2C7',\n              `${goalMax} ${unit.toLowerCase()}`,\n              '#FF5F6D',\n              `${goalMax + difCurrent}${unit.toLowerCase()}`\n            ]}\n            difCurrent={difCurrent}\n            value={current}\n            showWeigthLabel={`${current} ${unit.toLowerCase()}`}\n          />\n        </div>\n      ) : null}\n\n\n\n    </div>\n  )\n}\n\nexport default injectIntl(IncentivesWeights)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport ShippingMethodsContainer from '../shipping-method-selector/ShippingMethodsContainer'\nimport Alerts from '../alerts/Alerts'\nimport LocalizedLink from '../global/LocalizedLink'\nimport IncentivesMktools from \"./IncentivesMktools\";\nimport IncentivesWeights from \"./IncentivesWeights\";\n\nconst Incentives = ({\n    current,\n    goalMin,\n    goalMax,\n    unit,\n    shippingMethod,\n    intl,\n    isLowesCenter,\n    isMktoolCenter,\n    total,\n    maxBudget,\n    mktoolsBudgetWasted,\n    coin,\n    isIkeaCenter,\n    center,\n    isCartMallOnly,\n    salesOrg,\n}) => {\n    const message = shippingMethod === 'SINGLE_SLAB' ? 'for_full_truck' : 'min_to_checkout'\n    const difCurrent = current <= goalMax ? 0 : current - goalMax\n    const difCurrentForBudget = maxBudget * 0.15 // total <= maxBudget + 20000 ? 20000 : total - maxBudget\n\n    const errorMessage = difCurrent !== 0 ? 'MAX_WEIGHT_EXCEEDED' : null\n    const haveWeights = ['FULL_TRUCK', 'DIRECT_TRUCK', 'CONTAINER', 'SINGLE_SLAB', 'ENDI_CONTAINER', 'ENDI_TRUCK']\n\n    if (shippingMethod === 'CONTAINER' && center == 7500) {\n        return null\n    }\n    return (\n        <div className=\"incentive-container\">\n            <div className=\"container\">\n                <div className={shippingMethod === 'CONTAINER' ? 'incentive mini row full-container' : 'incentive mini row'}>\n                    <div style={{display: 'flex'}}>\n                        {haveWeights.includes(shippingMethod) && !isIkeaCenter && !(isCartMallOnly && ['2011', '2032'].includes(salesOrg)) ? (\n                            <div className=\"incentive-container__checkout\" style={{display: \"flex\", flexDirection: \"column\"}}>\n                                <div className={'incentive-info-text'}>\n                                    {errorMessage ? (\n                                        <Alerts\n                                            alert={errorMessage}\n                                            values={{\n                                                shippingMethod: intl.formatMessage({ id: shippingMethod }).toLowerCase()\n                                            }}\n                                            status={404}\n                                        />\n                                    ) : current >= goalMin ? (\n                                        <span className=\"current\">\n                                            <Translation id=\"you_currently_have\" defaultMessage=\"You currently have\" />{' '}\n                                            <b>\n                                                {current} {unit.toLowerCase()}\n                                            </b>{' '}\n                                            <Translation id=\"in_your_cart\" defaultMessage=\"in your cart\" />\n                                        </span>\n                                    ) : (\n                                        <div>\n                                            {' '}\n                                            <span className=\"current\">\n                                                <Translation id=\"you_currently_have\" defaultMessage=\"You currently have\" />{' '}\n                                                <b>\n                                                    {current} {unit.toLowerCase()}\n                                                </b>{' '}\n                                                <Translation id=\"in_your_cart\" defaultMessage=\"in your cart\" />\n                                            </span>{' '}\n                                            .{' '}\n                                            <span>\n                                                <Translation id=\"you_must_reach\" defaultMessage=\"You must reach\" />{' '}\n                                                    <b>\n                                                        {goalMin} {unit.toLowerCase()}\n                                                    </b>{' '}\n                                                <Translation id={errorMessage ? errorMessage : message} />\n                                            </span>\n                                        </div>\n                                    )}\n                                </div>\n                                <div style={{flex: 1}}/>\n                                {!isMktoolCenter &&\n                                    <React.Fragment>\n                                        <IncentivesWeights isMobile={true} shippingMethod={shippingMethod} goalMax={goalMax} goalMin={goalMin} unit={unit} haveWeights={haveWeights} isLowesCenter={isLowesCenter} isIkeaCenter={isIkeaCenter} isMktoolCenter={isMktoolCenter} difCurrent={difCurrent} current={current}/>\n                                        <div className={'incentive-buttons'} style={{display: \"flex\", flexWrap: \"wrap\", gap: \"1em\"}}>\n                                            <div className='d-flex'>\n                                                <LocalizedLink style={{ border: '1px solid black', padding: '0.5rem 1rem', cursor: 'pointer' }} routeId=\"ROUTE_CATALOG\" queryString=\"?type[0]=TABLA\" params={{ outlet: '' }} gtmLabel=\"ec_funnel_compra_carrito_añadir\">\n                                                    <Translation id={'add_more_items'} defaultMessage={'Add more items'} />\n                                                </LocalizedLink>\n                                            </div>\n                                            {!isLowesCenter && (\n                                                <div className=\"incentive-select-shipping\"><ShippingMethodsContainer v2={true}/></div>\n                                            )}\n                                        </div>\n                                    </React.Fragment>\n                                }\n                            </div>\n                        ) : null}\n\n                        {!isMktoolCenter &&\n                            <IncentivesWeights shippingMethod={shippingMethod}\n                                               goalMax={goalMax}\n                                               goalMin={goalMin}\n                                               unit={unit}\n                                               haveWeights={haveWeights}\n                                               isLowesCenter={isLowesCenter}\n                                               isIkeaCenter={isIkeaCenter}\n                                               isMktoolCenter={isMktoolCenter}\n                                               difCurrent={difCurrent} current={current}\n                            />\n                        }\n\n                        {isMktoolCenter && (\n                            <IncentivesMktools mktoolsBudgetWasted={mktoolsBudgetWasted}\n                                               maxBudget={maxBudget}\n                                               difCurrentForBudget={difCurrentForBudget}\n                                               total={total} coin={coin}\n                            />\n                        )}\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default injectIntl(Incentives)\n","import { connect } from 'react-redux'\nimport Incentives from './Incentives'\nimport { weightSelector, getKgPoundRatio, getGoalMin, getGoalMax, getBudgetPlusTotal, isMallCartOnly } from '../../store/cart/reducers'\nimport {\n    getShippingMethod,\n    hasIncentives,\n    getIsLowesCenter,\n    getIsMkToolsCenter,\n    getMktoolsBudget,\n    getMktoolsBudgetWasted,\n    getCoin,\n    getIsIkeaCenter,\n    getSelectedCenter,\n    getSalesOrg,\n} from '../../store/centers/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\n\nconst mapStateToProps = state => {\n    let language = getLanguage(state)\n    let defaultUnit = language === 'en' || language === 'en-US' || language === 'fr-CA' ? 'LB' : 'KG'\n    let unit = getProfileConfiguration(state).weightUnit ? getProfileConfiguration(state).weightUnit : defaultUnit\n\n    return {\n        unit,\n        shippingMethod: getShippingMethod(state),\n        current: unit === 'KG' ? weightSelector(state) : Math.floor(weightSelector(state) * getKgPoundRatio()),\n        goalMin: getGoalMin(state, unit),\n        goalMax: getGoalMax(state, unit),\n        hasIncentives: hasIncentives(state),\n        isLowesCenter: getIsLowesCenter(state),\n        isMktoolCenter: getIsMkToolsCenter(state),\n        mktoolsBudgetWasted: getMktoolsBudgetWasted(state),\n        total: getBudgetPlusTotal(state),\n        maxBudget: getMktoolsBudget(state),\n        coin: getCoin(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        center: getSelectedCenter(state),\n        isCartMallOnly: isMallCartOnly(state),\n        salesOrg: getSalesOrg(state),\n    }\n}\n\nconst IncentivesContainer = connect(\n    mapStateToProps,\n    null\n)(Incentives)\n\nexport default IncentivesContainer\n","// Note: This is not used maybe?\n\nimport React from 'react'\n\nimport { connect } from 'react-redux'\nimport { getUserType, getImpersonatedBy } from '../store/login/reducers'\nimport { getIsLowesCenter, getIsMkToolsCenter, getIsIkeaCenter } from '../store/centers/reducers'\nimport CartSummaryContainer from '../components/checkout/CartSummaryContainer';\nimport Translation from '../components/global/Translation'\nimport LocalizedLink from '../components/global/LocalizedLink'\nimport Button from '../components/global/Button'\nimport IncentivesContainer from '../components/incentives/IncentivesContainer';\nconst mapStateToProps = state => {\n    return {\n        userType: getUserType(state),\n        impersonatedBy: getImpersonatedBy(state),\n        isLowesCenter: getIsLowesCenter(state),\n        isMktoolsCenter: getIsMkToolsCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state)\n    }\n}\n\nfunction canViewIncentives (props) {\n        if (props.isIkeaCenter) return false\n        else if (props.isMktoolsCenter && props.userType === 'CUSTOMER') return false\n        else return true\n}\nconst CartSummaryScreen = props => (\n    <div>\n        <div className=\"container-heading\">\n            <div className=\"container\">\n                <div className=\"row checkout-heading-row\">\n                    <div className=\"col-12\">\n                        <h2 className=\"heading checkout-heading\">\n                            <Translation id=\"checkout\" defaultMessage=\"Checkout\" />\n                        </h2>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div className=\"container checkout\">\n            <div className=\"row\">\n                <div className=\"col-12\">\n                    {canViewIncentives(props) && <IncentivesContainer />}\n\n                    <CartSummaryContainer {...props} />\n                </div>\n            </div>\n        </div>\n        <footer className=\"container -fluid\" style={{paddingTop:'20px'}}>\n            <div className=\"row\">\n                <div className=\"col-12 col-md-3\">\n                    <LocalizedLink routeId=\"ROUTE_CHECKOUT\">\n                        <Button inverted datacy=\"modal_minicarrito__go_checkout\">\n                            <Translation id=\"checkout\" defaultMessage=\"Checkout\" />\n                        </Button>\n                    </LocalizedLink>\n                </div>\n            </div>\n        </footer>\n    </div>\n)\n    \n\nexport default connect(\n    mapStateToProps,\n    null\n)(CartSummaryScreen)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport Slider from 'react-slick'\nimport DisplayBrand from '../catalog/rectangleResult/displays/DisplayBrand'\nimport * as analytics from '../../analyticsEvents'\n\nfunction SampleNextArrow(props) {\n    const { style, onClick } = props\n    return (\n        <i\n            className={'fal fa-chevron-right'}\n            style={{ ...style, display: 'block', position: 'absolute', top: '50px', right: '-5px', fontSize: '30px', cursor: 'pointer', zIndex: '10' }}\n            onClick={onClick}\n        />\n    )\n}\n\nfunction SamplePrevArrow(props) {\n    const { style, onClick } = props\n    return (\n        <i\n            className={'fal fa-chevron-left'}\n            style={{ ...style, display: 'block', position: 'absolute', top: '50px', fontSize: '30px', cursor: 'pointer', zIndex: '10' }}\n            onClick={onClick}\n        />\n    )\n}\n\nclass SimilarProducts extends React.Component {\n    constructor(props) {\n        super(props)\n        this.myWrapper = React.createRef()\n    }\n    componentDidMount() {\n        if (this.props.products) analytics.sendCatalogImpressions(this.props.lastProductsbought, 'SIMILAR_PRODUCTS')\n    }\n    render() {\n        let { products } = this.props\n\n        if (products.length === 0) {\n            return ''\n        }\n\n        let maxSlidesToShow = products.length\n        let breakpoints = [468, 768, 992, 1200, 1280]\n        let shouldBeVariable = false\n        if (window.innerWidth < breakpoints[0]) {\n            shouldBeVariable = maxSlidesToShow <= 1\n        } else if (breakpoints[0] <= window.innerWidth && window.innerWidth < breakpoints[1]) {\n            shouldBeVariable = maxSlidesToShow <= 2\n        } else if (breakpoints[1] <= window.innerWidth && window.innerWidth < breakpoints[3]) {\n            shouldBeVariable = maxSlidesToShow <= 3\n        } else if (breakpoints[2] <= window.innerWidth && window.innerWidth < breakpoints[4]) {\n            shouldBeVariable = maxSlidesToShow <= 4\n        } else if (breakpoints[4] <= window.innerWidth) {\n            shouldBeVariable = maxSlidesToShow <= 5\n        }\n        let settings = {\n            arrows: true,\n            nextArrow: <SampleNextArrow />,\n            prevArrow: <SamplePrevArrow />,\n            swipeToSlide: true,\n            dots: false,\n            speed: 300,\n            slidesToShow: products.length > 5 ? 5 : products.length,\n            slidesToScroll: 1,\n            infinite: false,\n            variableWidth: shouldBeVariable,\n            responsive: [\n                { breakpoint: breakpoints[0], settings: { slidesToShow: maxSlidesToShow > 1 ? 1 : maxSlidesToShow } },\n                { breakpoint: breakpoints[1], settings: { slidesToShow: maxSlidesToShow > 2 ? 2 : maxSlidesToShow } },\n                { breakpoint: breakpoints[2], settings: { slidesToShow: maxSlidesToShow > 3 ? 3 : maxSlidesToShow } },\n                { breakpoint: breakpoints[3], settings: { slidesToShow: maxSlidesToShow > 4 ? 4 : maxSlidesToShow } },\n                { breakpoint: breakpoints[4], settings: { slidesToShow: maxSlidesToShow > 5 ? 5 : maxSlidesToShow } }\n            ]\n        }\n        return (\n            <div className=\"similar_colors\">\n                <h4>\n                    <Translation id=\"similar_colors\" defaultMessage=\"Similar colors\" />\n                </h4>\n                <div className=\"similar_colors__results-list\">\n                    <Slider {...settings}>\n                        {products.map((similar, index) => (\n                            <div ref={this.myWrapper} className=\"similar_colors__result\" key={index} style={{ width: '180px' }}>\n                                <LocalizedLink routeId=\"ROUTE_PRODUCT_DETAIL\" params={{ id: similar.productId }} onClick={() => this.props.clickDetail(this.product, index)}>\n                                    <div className=\"product-image-container\">\n                                        <div className=\"product-image\" style={{ backgroundImage: 'url(\"' + similar.thumb + '\")' }} />\n                                    </div>\n                                </LocalizedLink>\n                                <div className=\"product-info\">\n                                    <DisplayBrand brand={similar.brand} />\n\n                                    <div className=\"product-color-name\">{similar.displayName.toLowerCase()}</div>\n                                </div>\n                            </div>\n                        ))}\n                    </Slider>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default SimilarProducts\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport { defineMessages } from 'react-intl'\n\nimport Button from '../global/Button'\ndefineMessages({\n    BACKEND_SERVICE_NOT_AVAILABLE: {\n        id: 'BACKEND_SERVICE_NOT_AVAILABLE',\n        description: 'BACKEND_SERVICE_NOT_AVAILABLE',\n        defaultMessage: 'Internal Server Error'\n    },\n    CENTER_NOT_FOUND: {\n        id: 'CENTER_NOT_FOUND',\n        description: 'CENTER_NOT_FOUND',\n        defaultMessage: 'Center not found'\n    },\n    RESERVATION_NOT_FOuND: {\n        id: 'RESERVATION_NOT_FOuND',\n        description: 'RESERVATION_NOT_FOuND',\n        defaultMessage: 'Reservation not found'\n    },\n    NETWORK_ERROR: {\n        id: 'NETWORK_ERROR',\n        description: 'NETWORK_ERROR',\n        defaultMessage: 'Network Error'\n    },\n    PRODUCT_NOT_FOUND: {\n        id: 'PRODUCT_NOT_FOUND',\n        description: 'Product not found',\n        defaultMessage: 'Product not found'\n    }\n})\nclass Error extends React.Component {\n    render() {\n        const error = this.props.alert != null ? <Translation id={this.props.alert} /> : '404 Not Found'\n\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-md-12\">\n                        <div className=\"error-template\">\n                            <div>\n                                <h1>Oops!</h1>\n                                <h2>{error}</h2>\n                                <div className=\"error-details\">\n                                    <Translation id=\"SORRY_PAGE_NOT_FOUND\" defaultMessage=\"Sorry, an error has occured, Requested page not found!\" />\n                                </div>\n                                <div className=\"error-actions\">\n                                    <div className=\"row\">\n                                        <div className=\"col-10 offset-1\">\n                                            <LocalizedLink routeId=\"ROUTE_HOME\">\n                                                <Button>\n                                                    <Translation id=\"take_me_home\" defaultMessage=\"Take me home\" />\n                                                </Button>\n                                            </LocalizedLink>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default Error\n","import React from 'react'\r\n\r\nimport { connect } from 'react-redux'\r\nimport { goBack } from 'react-router-redux'\r\nimport { getLanguageDir } from '../../store/ui/reducers'\r\n\r\nconst mapStateToProps = (state, ownProps) => {\r\n    return {\r\n        languageDir: getLanguageDir(state),\r\n        newView: ownProps.newView\r\n    }\r\n}\r\nconst mapDispatchToProps = (dispatch, ownProps) => {\r\n    const action = ownProps.goBack ? ownProps.goBack : goBack()\r\n    return {\r\n        goBack: () => {\r\n            dispatch(action)\r\n        }\r\n    }\r\n}\r\nconst GoBack = ({ goBack, text = 'back', datacy = 'go_back', languageDir,href, newView }) => {\r\n    let arrow = 'fal fa-chevron-'\r\n    let style = {fontSize: '24px'}\r\n    let buttonStyle = {}\r\n\r\n    if (newView) {\r\n        arrow = 'fal fa-chevron-'\r\n        buttonStyle = { marginBottom: \"1em\", marginLeft: \"-15px\", marginTop: \"1em\" }\r\n    }\r\n    if (href) {\r\n        return (\r\n            <a className=\"go-back\" href={href} data-cy={datacy} style={buttonStyle}>\r\n                <i style={style} className={arrow + (languageDir === 'rtl' ? 'right' : 'left')} />\r\n                <span className=\"label\">\r\n                    {text}\r\n                </span>\r\n            </a>\r\n        )\r\n    }\r\n\r\n    return (\r\n        <div className=\"go-back\" onClick={goBack} data-cy={datacy} style={buttonStyle}>\r\n            <i style={style} className={arrow + (languageDir === 'rtl' ? 'right' : 'left')} />\r\n            <span className=\"label label-v2\">\r\n                {text}\r\n            </span>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default connect(\r\n    mapStateToProps,\r\n    mapDispatchToProps\r\n)(GoBack)\r\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport Select from 'react-select'\nimport { dispatchPushURL } from '../store/ui/actions'\nimport { connect } from 'react-redux'\nimport { byProductId } from '../store/products/reducers'\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        }\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        byProductId: productId => byProductId(state, productId)\n    }\n}\n\nclass FiltersProduct extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            classActiveBool: false\n        }\n    }\n\n    customSelect = () => {\n        this.setState({ classActiveBool: !this.state.classActiveBool })\n    }\n\n    render() {\n        const { alternatives, outlet, productId, redirect, intl, selectHeading } = this.props\n\n        if (!alternatives) return null\n        if (alternatives.length === 0) return null\n\n        let alternativesRemoveBlank = Object.fromEntries(Object.entries(alternatives).filter(([i, v]) => i !== ''))\n\n        let selected = null\n        if (this.props.value && this.props.alternatives[this.props.value]) {\n            selected = {\n                value: this.props.alternatives[this.props.value],\n                label: this.props.translateValue ? this.props.intl.formatMessage({ id: this.props.value }) : this.props.value\n            }\n        }\n\n        if (!selected) {\n            selected = Object.entries(alternativesRemoveBlank).flatMap(alternative => {\n                return alternative[1] === productId\n                    ? {\n                          value: alternative[1],\n                          label: this.props.translateValue ? this.props.intl.formatMessage({ id: alternative[0] }) : alternative[0]\n                      }\n                    : []\n            })\n            selected = selected[0]\n        }\n\n        let options = Object.entries(alternativesRemoveBlank).map(alternative => {\n            return {\n                value: alternative[1],\n                label: this.props.translateValue ? this.props.intl.formatMessage({ id: alternative[0] }) : alternative[0]\n            }\n        })\n\n        return (\n            <div>\n                <span className=\"select-heading-product\">{selectHeading}</span>\n                <div>\n                    <Select\n                        isSearchable={false}\n                        onChange={selectOption => {\n                            redirect(\n                                intl\n                                    .formatMessage({ id: 'ROUTE_PRODUCT_DETAIL' })\n                                    .replace(':id', selectOption.value)\n                                    .replace(':outlet?', outlet ? 'outlet' : '')\n                            )\n                        }}\n                        value={selected}\n                        options={options}\n                        clearable={false}\n                        className=\"select_filter_products\"\n                    />\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(FiltersProduct))\n","import React from 'react'\n\nimport { Resizable } from 'react-resizable'\n\nclass LazyImage extends React.Component {\n    state = {\n        currentImage: this.props.preview,\n        loading: true,\n        loadingMask: true,\n        extraClass: this.props.extraClass,\n        type: this.props.type,\n        cutWidth: null,\n        cutHeight: null,\n        isResizing: false,\n        masked: this.props.masked\n    }\n\n    componentDidMount() {\n        this.fetchImage(this.props.image)\n        this.props.masked && this.fetchImageMask(this.props.masked)\n    }\n\n    componentWillReceiveProps(nextProps) {\n        if (nextProps.image !== this.props.image) {\n            this.setState({ currentImage: nextProps.preview, loading: true }, () => {\n                this.fetchImage(nextProps.image)\n            })\n        }\n    }\n\n    componentWillUnmount() {\n        if (this.loadingImage) {\n            this.loadingImage.onload = null\n        }\n    }\n\n    fetchImage = src => {\n        const image = new Image()\n        image.onload = () => this.setState({ currentImage: this.loadingImage.src, loading: false })\n        image.src = src\n        this.loadingImage = image\n    }\n    fetchImageMask = src => {\n        const imageMask = new Image()\n        imageMask.onload = () => this.setState({ currentImageMask: this.loadingImageMask.src, loadingMask: false })\n        imageMask.src = src\n        this.loadingImageMask = imageMask\n    }\n\n    style = loading => {\n        const { currentImage, type } = this.state\n        if (type === 'div-linear-not-100') {\n            return {\n                background: `linear-gradient(2deg, rgba(0, 0, 0, 0.58) 44.64%, rgba(43, 43, 43, 0.38) 65.64%, rgba(255, 255, 255, 0) 79.32%), center/150%100%url(${currentImage})`,\n                transition: '0.5s filter linear',\n                filter: `${loading ? 'blur(5px)' : ''}`\n            }\n        } else if (type === 'div-recurring') {\n            return {\n                backgroundImage: `url(${currentImage})`,\n                backgroundRepeat: 'no-repeat',\n                backgroundSize: '80%',\n                backgroundPositionY: 'bottom',\n                transition: '0.5s filter linear',\n                backgroundColor: '#F5F5FB',\n                filter: `${loading ? 'blur(5px)' : ''}`\n            }\n        } else if (type === 'div-linear') {\n            return {\n                background: `linear-gradient(2deg, rgba(0, 0, 0, 0.58) 44.64%, rgba(43, 43, 43, 0.38) 65.64%, rgba(255, 255, 255, 0) 79.32%), center/100%100%url(${currentImage})`,\n                transition: '0.5s filter linear',\n                filter: `${loading ? 'blur(5px)' : ''}`\n            }\n        } else if (type === 'div') {\n            return {\n                backgroundImage: `url(${currentImage})`,\n\n                transition: '0.5s filter linear',\n                filter: `${loading ? 'blur(5px)' : ''}`\n            }\n        } else if (type === 'cut') {\n            return {\n                backgroundImage: `url(${currentImage})`,\n\n                transition: '0.5s filter linear',\n                filter: `${loading ? 'blur(5px)' : ''}`\n            }\n        } else {\n            return {\n                transition: '0.5s filter linear',\n                filter: `${loading ? 'blur(5px)' : ''}`,\n                width: `${this.props.width}px`,\n                height: `${this.props.height}px`\n            }\n        }\n    }\n\n    render() {\n        const { currentImage, currentImageMask, loading, loadingMask, extraClass, type } = this.state\n\n        const { alt, format, onResize, disabled } = this.props\n        if (type === 'otherMask') {\n            return (\n                <div className={'fit-image' + (loading || loadingMask ? ' loading' : '')}>\n                    <div style={{ position: 'relative' }}>\n                        <img\n                            style={{\n                                width: '30%',\n                                height: '30%',\n                                position: 'absolute',\n                                bottom: '0px',\n                                WebkitMaskSize: 'cover',\n                                WebkitMaskPosition: 'center',\n                                WebkitMaskRepeat: 'no-repeat',\n                                transition: '0.5s filter linear',\n                                filter: `${loading || loadingMask ? 'blur(3px)' : ''}`,\n                                zIndex: 1\n                            }}\n                            src={currentImageMask}\n                            alt={alt}\n                            className={extraClass}\n                        />\n                        <img style={this.style(loading || loadingMask)} src={currentImage} alt={alt} className={extraClass} />\n                    </div>\n                </div>\n            )\n        } else if (type === 'div-linear-not-100') {\n            return (\n                <div className=\"blur-overflow\">\n                    <div style={this.style(loading)} alt={alt} className={extraClass}>\n                        {this.props.children}\n                    </div>\n                </div>\n            )\n        } else if (type === 'div-linear') {\n            return (\n                <div className=\"blur-overflow\">\n                    <div style={this.style(loading)} alt={alt} className={extraClass}>\n                        {this.props.children}\n                    </div>\n                </div>\n            )\n        } else if (type === 'div') {\n            return (\n                <div className=\"blur-overflow\">\n                    <div style={this.style(loading)} alt={alt} className={extraClass}>\n                        {this.props.children}\n                    </div>\n                </div>\n            )\n        } else if (type === 'div-recurring') {\n            return (\n                <div className=\"blur-overflow div-banner-recurring\">\n                    <div style={this.style(loading)} alt={alt} className={extraClass}>\n                        {this.props.children}\n                    </div>\n                </div>\n            )\n        } else if (type === 'cut') {\n            const realWidth = this.divImage !== undefined && this.divImage.clientWidth < 500 && this.divImage.clientWidth > 1 ? this.divImage.clientWidth : 500\n            const heightCalculated = (format.height / format.width) * realWidth\n            const conversionFactor = realWidth / format.width\n            return (\n                <div className=\"cut_to_size__image\">\n                    <div\n                        style={{\n                            backgroundImage: `url(${currentImage})`,\n                            transition: '0.5s filter linear',\n                            filter: `${loading ? 'blur(5px)' : 'brightness(0.4)'}`,\n                            backgroundSize: `${loading ? 'cover' : ''}`,\n                            width: realWidth + 'px',\n                            height: heightCalculated + 'px',\n                            position: 'absolute',\n                            zIndex: '-1'\n                        }}\n                        alt={alt}\n                        className={extraClass + ' cut_to_size__image--dark'}\n                    >\n                        {this.props.children}\n                    </div>\n                    <Resizable\n                        minConstraints={[0, 0]}\n                        maxConstraints={[realWidth, heightCalculated]}\n                        width={conversionFactor * this.props.width}\n                        height={conversionFactor * this.props.height}\n                        onResize={(event, otracosa) => {\n                            if (!disabled) onResize(event, otracosa, conversionFactor)\n                        }}\n                        onResizeStart={() => this.setState({ isResizing: true })}\n                        onResizeStop={() => this.setState({ isResizing: false })}\n                    >\n                        <div\n                            style={{\n                                backgroundImage: `url(${currentImage})`,\n                                transition: this.state.isResizing ? '0s' : '0.5s',\n                                filter: `${loading ? 'blur(5px)' : ''}`,\n                                backgroundSize: `${loading ? 'cover' : ''}`,\n\n                                width: `${conversionFactor * this.props.width}px`,\n                                height: `${conversionFactor * this.props.height}px`,\n                                // border: '1px dotted white',\n                                position: 'absolute'\n                            }}\n                            alt={alt}\n                            className={extraClass + ` cut_to_size__image--cut ${disabled ? ' cut_to_size__image--disabled' : ''}`}\n                        >\n                            {this.props.children}\n                        </div>\n                    </Resizable>\n                    <div\n                        style={{\n                            height: heightCalculated + 'px',\n                            visibility: 'hidden',\n                            zIndex: '-1'\n                        }}\n                        ref={div => {\n                            this.divImage = div\n                        }}\n                        className={extraClass + ' cut_to_size__image--canvas'}\n                    >\n                        {this.props.children}\n                    </div>\n                </div>\n            )\n        } else {\n            return (\n                <div className={'fit-image' + (loading ? ' loading' : '')} style={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n                    <img style={this.style(loading)} src={currentImage} alt={alt} className={extraClass} />\n                </div>\n            )\n        }\n    }\n}\nexport default LazyImage\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport { getImageBackground, isOtherMask } from '../../store/products/actions'\nimport { canViewImageByLot } from '../../store/centers/actions'\nimport AddFavourite from '../global/AddFavourite'\nimport LazyImage from '../global/LazyImage'\nimport DisplayTechnology from '../catalog/rectangleResult/displays/DisplayTechnology'\nimport noImage from '../../assets/img/icons/no-image.svg'\n\nconst mapStateToProps = state => {\n    return {}\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        getImageBackground: product => dispatch(getImageBackground(product)),\n        isOtherMask: product => isOtherMask(product),\n        canViewImageLot: location => dispatch(canViewImageByLot(location))\n\n    }\n}\nclass ProductCarouselV2 extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { imgSelected: null, widthCarouselItem: 100, positionCarousel: 0, widthOfButtonNextandBack: 35 }\n        this.product = this.props.product\n        //HARDCODE: Añade segunda imagen a los productos\n        // const productDoubleImage = ['237395', '241062', '245528', '245547', '245699', '245700', '245704', '300020', '906273', '906287', '906563', '907058', '907364', '907366']\n        // if (!this.props.product.imgGroup && productDoubleImage.includes(this.props.product.productId)) {\n        //     this.product = {\n        //         ...this.props.product,\n        //         imgGroup: [\n        //             {\n        //                 thumb: 'https://apiepro.cosentino.com/mktools/' + this.props.product.productId + '.jpg',\n        //                 img: 'https://apiepro.cosentino.com/mktools/' + this.props.product.productId + '.jpg'\n        //             },\n        //             {\n        //                 thumb: 'https://apiepro.cosentino.com/mktools/' + this.props.product.productId + '-2.jpg',\n        //                 img: 'https://apiepro.cosentino.com/mktools/' + this.props.product.productId + '-2.jpg'\n        //             }\n        //         ]\n        //     }\n        // } else this.product = this.props.product\n    }\n    componentDidMount() {\n        this.product.imgGroup && this.setState({ imgSelected: this.product.imgGroup[0] })\n    }\n    moveCarouselNext(next) {\n        if (\n            next &&\n            this.state.positionCarousel + this.state.widthOfButtonNextandBack >=\n                -1 * (this.props.product.imgFull.length * this.state.widthCarouselItem - this.carouselWrapper.offsetWidth)\n        ) {\n            this.setState({\n                positionCarousel:\n                    this.state.positionCarousel - this.state.widthCarouselItem - this.state.widthOfButtonNextandBack <\n                    this.carouselWrapper.offsetWidth - this.props.product.imgFull.length * this.state.widthCarouselItem\n                        ? this.carouselWrapper.offsetWidth - this.props.product.imgFull.length * this.state.widthCarouselItem - this.state.widthOfButtonNextandBack\n                        : this.state.positionCarousel - this.state.widthCarouselItem\n            })\n        } else if (!next && this.state.positionCarousel < this.state.widthOfButtonNextandBack) {\n            this.setState({\n                positionCarousel:\n                    this.state.positionCarousel + this.state.widthCarouselItem > this.state.widthOfButtonNextandBack\n                        ? this.state.widthOfButtonNextandBack\n                        : this.state.positionCarousel + this.state.widthCarouselItem\n            })\n        }\n    }\n    render() {\n        let { isLogged } = this.props\n        let { imgSelected, widthCarouselItem, positionCarousel } = this.state\n        if (this.product.imgGroup) {\n            return (\n                <div className=\"image-carousel\">\n                    <div className=\"product-image\" data-cy=\"product_detail__image\">\n                        <div className=\"fit-image\">\n                            {imgSelected && <LazyImage preview={imgSelected.thumbMdPreview} image={imgSelected.imgFull} alt=\"\" extraClass=\"img-fluid\" />}\n                            <div className=\"fit-image add-favourite\">{isLogged && <AddFavourite productId={this.product.productId} />}</div>\n                        </div>\n                        <div className=\"wrapper_technology_indicator v2\">\n                            <div className='d-flex items-center' style={{ gap: '4px' }}>\n                                <DisplayTechnology technology={this.product.technology} subBrand={this.product.subBrand} desktopWidth={'90px'} desktopHeight={'auto'} />\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"carousel_container\">\n                        <div\n                            className=\"carousel_container__carousel carousel_wrapper\"\n                            ref={element => {\n                                this.carouselWrapper = element\n                            }}\n                        >\n                            {this.carouselWrapper && this.carouselWrapper.offsetWidth < this.product.imgGroup.length * widthCarouselItem && (\n                                <div className=\"button button__back\" onClick={() => this.moveCarouselNext(false)}>\n                                    <i className=\"fas fa-chevron-left\" />\n                                </div>\n                            )}\n                            <div\n                                className=\"carousel_wrapper__carousel carousel\"\n                                style={{\n                                    left: `${positionCarousel}px`,\n                                    width: `${this.product.imgGroup.length * widthCarouselItem}px`\n                                }}\n                            >\n                                {this.product.imgGroup.map(img => {\n                                    return (\n                                        <div\n                                            className=\"carousel__item item\"\n                                            style={{\n                                                width: widthCarouselItem,\n                                                height: widthCarouselItem,\n                                                backgroundImage: `url('${img.thumb}')`\n                                            }}\n                                            onClick={() => {\n                                                this.setState({ imgSelected: img })\n                                            }}\n                                        />\n                                    )\n                                })}\n                            </div>\n                            {this.carouselWrapper && this.carouselWrapper.offsetWidth < this.product.imgGroup.length * widthCarouselItem && (\n                                <div className=\"button button__next\" onClick={() => this.moveCarouselNext(true)}>\n                                    <i className=\"fas fa-chevron-right\" />\n                                </div>\n                            )}\n                        </div>\n                    </div>\n                </div>\n            )\n        } else if (this.product && !this.props.getImageBackground(this.product)) {\n            return (\n                <div className={`fit-image v2 fit-image--no-image`}>\n                    <div className=\"v2 product-image-container\" style={{ backgroundImage: 'url(\"' + noImage + '\")',\n                        backgroundColor: '#f6f6f6',\n                        backgroundRepeat: 'no-repeat',\n                        backgroundPosition: 'center',\n                    }}>\n                    </div>\n                    <div className=\"fit-image add-favourite v2\">{isLogged &&\n                    <AddFavourite productId={this.product.productId} />}</div>\n                </div>\n            )\n        } else {\n            return (\n                <div className=\"product-image\" data-cy=\"product_detail__image\">\n                    <div\n                        className={`fit-image v2 ${!this.product.img && this.product.type !== 'SAMPLES' && !this.props.canViewImageLot(this.product.location) ? 'fit-image--no-image' : ''}`}>\n                        <LazyImage\n                            preview={this.product.imgFull}\n                            image={this.props.getImageBackground(this.product)}\n                            alt=\"\"\n                            extraClass=\"img-fluid\"\n                            masked={this.product.typeId === '01' || this.props.isOtherMask(this.product) ? this.product.colorImg : null}\n                            type={this.props.isOtherMask(this.product) ? 'otherMask' : null}\n                        />\n                        <div className=\"fit-image add-favourite v2\">{isLogged &&\n                            <AddFavourite productId={this.product.productId} />}</div>\n                        <div className=\"wrapper_technology_indicator v2\">\n                            <div className='d-flex items-center' style={{ gap: '4px' }}>\n                                <DisplayTechnology technology={this.product.technology} subBrand={this.product.subBrand} desktopWidth={'90px'} desktopHeight={'auto'} />\n                            </div>\n                        </div>\n                    </div>\n                    \n                </div>\n            )\n        }\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductCarouselV2)\n","import { connect } from 'react-redux'\nimport { getIsLogged } from '../../store/login/reducers'\nimport Translation from \"../global/Translation\";\nimport React from \"react\";\nimport { canViewMktools } from \"../../store/centers/reducers\";\nimport {fetchRelatedProducts} from \"../../store/crossSelling/actions\";\nimport {getBoughtTogetherProducts, getCurrentCrossSelling} from \"../../store/crossSelling/reducers\";\nimport ProductsSlider from \"./ProductsSlider\";\n\nconst mapStateToProps = state => {\n    const isLogged = getIsLogged(state)\n    const getProducts = () => {\n        if (isLogged) return getBoughtTogetherProducts(state)\n        else return getCurrentCrossSelling(state).map(product => {return {product:product}})\n    }\n\n    return {\n        products: getProducts(),\n        hide: !getIsLogged(state) || canViewMktools(state),\n        title: <Translation id=\"bought_together\" defaultMessage=\"Bought together\" />,\n        customClass: 'products-similar-colors',\n        analyticsTag: 'usually_purchased_cross',\n        minWidth: 215,\n        gtmLabel: 'ec_carrusel_usually_bought_together'\n    }\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n    return {\n        fetch: () => dispatch(fetchRelatedProducts(props.productId))\n    }\n}\n\nconst RelatedProductsContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductsSlider)\n\nexport default RelatedProductsContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nfunction ProductInfoTabs() {\n    return (\n        <React.Fragment>\n            {/* Headings */}\n            <div className=\"product-info-tabs__container d-none\">\n                <div className=\"product-info-tabs__heading\">\n                    <ul className=\"nav\" role=\"tablist\">\n                        <li className=\"nav-item\">\n                            <a className=\"nav-link active\" id=\"description-tab\" data-toggle=\"tab\" href=\"#description\" role=\"tab\" aria-controls=\"description\" aria-selected=\"true\">\n                                <Translation id=\"description\" defaultMessage=\"Description\" />\n                            </a>\n                        </li>\n                        <li className=\"nav-item\">\n                            <a className=\"nav-link\" id=\"specification-tab\" data-toggle=\"tab\" href=\"#specification\" role=\"tab\" aria-controls=\"specification\" aria-selected=\"false\">\n                                <Translation id=\"product_tab_specification\" defaultMessage=\"Specifications\" />\n                            </a>\n                        </li>\n                        <li className=\"nav-item\">\n                            <a className=\"nav-link\" id=\"formats-tab\" data-toggle=\"tab\" href=\"#formats\" role=\"tab\" aria-controls=\"formats\" aria-selected=\"false\">\n                                <Translation id=\"product_tab_formats\" defaultMessage=\"Formats\" />\n                            </a>\n                        </li>\n\n                        <li className=\"nav-item\">\n                            <a className=\"nav-link\" id=\"galleries-tab\" data-toggle=\"tab\" href=\"#galleries\" role=\"tab\" aria-controls=\"galleries\" aria-selected=\"false\">\n                                <Translation id=\"product_tab_galleries\" defaultMessage=\"Galleries\" />\n                            </a>\n                        </li>\n                    </ul>\n                        \n                    <div>\n                        <button\n                            className=\"open-close-info\"\n                            type=\"button\"\n                            data-toggle=\"collapse\"\n                            data-target=\"#collapseTab\"\n                            aria-expanded=\"false\"\n                            aria-controls=\"collapseTab\"\n                        >\n                            <i class=\"fas fa-angle-down rotate-icon\"></i>\n                        </button>\n                    </div>\n                </div>\n                <div className=\"product-info-tabs__content collapse show\" id=\"collapseTab\">\n                    {/* Content */}\n                    <div className=\"tab-content\">\n                        <div className=\"tab-pane fade show active\" id=\"description\" role=\"tabpanel\" aria-labelledby=\"description-tab\">\n                            <h5 className=\"product-info-tabs__title\">¿Qúe es Scalea?</h5>\n                            <p className=\"product-info-tabs__text\">\n                                Scalea® by Cosentino es la marca que engloba toda la oferta de piedra natural del Grupo Cosentino, ofreciendo una opción única e irrepetible que une\n                                diseños modernos y tradicionales.\n                            </p>\n                            <div className=\"product-info-tabs__box row\">\n                                <div className=\"product-info-tabs__cards col\">\n                                    <div className=\"product-info-tabs__img\"><i class=\"far fa-sun\"></i></div>\n                                    <div className=\"product-info-tabs__img-text\">Resistente al fuego y al calor</div>\n                                </div>\n                                <div className=\"product-info-tabs__cards col\">\n                                    <div className=\"product-info-tabs__img\"><i class=\"far fa-sun\"></i></div>\n                                    <div className=\"product-info-tabs__img-text\">Resistencia a los rayos UV</div>\n                                </div>\n                                <div className=\"product-info-tabs__cards col\">\n                                    <div className=\"product-info-tabs__img\"><i class=\"far fa-sun\"></i></div>\n                                    <div className=\"product-info-tabs__img-text\">Durabilidad superior</div>\n                                </div>\n                                <div className=\"product-info-tabs__cards col\">\n                                    <div className=\"product-info-tabs__img\"><i class=\"far fa-sun\"></i></div>\n                                    <div className=\"product-info-tabs__img-text\">Estabilidad del color a lo largo del tiempo</div>\n                                </div>\n                                <div className=\"product-info-tabs__cards col\">\n                                    <div className=\"product-info-tabs__img\"><i class=\"far fa-sun\"></i></div>\n                                    <div className=\"product-info-tabs__img-text\">Estetica y belleza natural</div>\n                                </div>\n                            </div>\n                        </div>\n                        <div className=\"tab-pane fade\" id=\"specification\" role=\"tabpanel\" aria-labelledby=\"specification-tab\">\n                            <h5 className=\"product-info-tabs__title\">Las especificaciones</h5>\n                            <p className=\"product-info-tabs__text\">\n                                Scalea® by Cosentino es la marca que engloba toda la oferta de piedra natural del Grupo Cosentino, ofreciendo una opción única e irrepetible que une\n                                diseños modernos y tradicionales.\n                            </p>\n                        </div>\n                        <div className=\"tab-pane fade\" id=\"formats\" role=\"tabpanel\" aria-labelledby=\"formats-tab\">\n                            <h5 className=\"product-info-tabs__title\">Los formatos</h5>\n                            <p className=\"product-info-tabs__text\">\n                                Scalea® by Cosentino es la marca que engloba toda la oferta de piedra natural del Grupo Cosentino, ofreciendo una opción única e irrepetible que une\n                                diseños modernos y tradicionales.\n                            </p>\n                        </div>\n                        <div className=\"tab-pane fade\" id=\"galleries\" role=\"tabpanel\" aria-labelledby=\"galleries-tab\">\n                            <h5 className=\"product-info-tabs__title\">La galería</h5>\n                            <p className=\"product-info-tabs__text\">\n                                Scalea® by Cosentino es la marca que engloba toda la oferta de piedra natural del Grupo Cosentino, ofreciendo una opción única e irrepetible que une\n                                diseños modernos y tradicionales.\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </React.Fragment>\n    )\n}\n\nexport default ProductInfoTabs\n","import { connect } from 'react-redux'\nimport { getProductsSimilarColors } from '../../store/products/reducers'\nimport { getIsLogged } from '../../store/login/reducers'\nimport Translation from \"../global/Translation\";\nimport React from \"react\";\nimport { fetchProductsSimilarColors } from \"../../store/products/actions\";\nimport { canViewMktools } from \"../../store/centers/reducers\";\nimport ProductsSlider from \"./ProductsSlider\";\n\nconst mapStateToProps = state => {\n    return {\n        products: getProductsSimilarColors(state),\n        hide: !getIsLogged(state) || canViewMktools(state),\n        title: <Translation id=\"similar_colors\" defaultMessage=\"Similar colors\" />,\n        customClass: 'products-similar-colors',\n        analyticsTag: 'similar_colors',\n        minWidth: 215,\n        gtmLabel: 'ec_carrusel_similar_colors'\n    }\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n    return {\n        fetch: () => {\n            return dispatch(fetchProductsSimilarColors(props.productId))\n        }\n    }\n}\n\nconst ProductsSimilarColorsContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductsSlider)\n\nexport default ProductsSimilarColorsContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport { injectIntl } from 'react-intl'\nimport Button from '../global/Button'\nimport GoBack from '../global/GoBack'\nimport InputNumber from '../global/InputNumber'\nimport LocalizedLink from '../global/LocalizedLink'\nimport ProductDisplayName from '../global/ProductDisplayName'\nimport Select from 'react-select'\nimport withRouter from 'react-router/withRouter'\nimport iconDownload from '../../assets/img/icons/download-gray.svg'\nimport DisplayBrand from '../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayStock from '../catalog/rectangleResult/displays/DisplayStock'\nimport mallLarge from '../../assets/img/logos/mall-large.jpg'\nimport FiltersProduct from '../FiltersProduct'\nimport ProductCarouselV2 from './ProductCarouselV2'\nimport DisplayPrice from '../catalog/rectangleResult/displays/DisplayPrice'\nimport RelatedProductsContainer from '../products/RelatedProductsContainer'\nimport ProductInfoTabs from './ProductInfoTabs'\nimport ProductsSimilarColorsContainer from '../products/ProductsSimilarColorsContainer'\nimport BannerRockMaster from '../banners/banner-rockmaster/BannerRockMaster'\nimport LengthMeasureTranslation from '../global/LengthMeasureTranslation'\nimport LengthMeasure from '../global/LengthMeasure'\nimport DisplayNaturalStoneOrigin from '../catalog/rectangleResult/displays/DisplayNaturalStoneOrigin'\nimport BannerEarthic from '../banners/banner-earthic/BannerEarthic'\nimport BannerSuma from '../banners/banner-suma/BannerSuma'\nimport BannerSilestoneXM from '../banners/banner-silestone-xm/BannerSilestoneXM'\nimport QuickGuides from '../global/QuickGuides'\nimport lotsIcon from '../../assets/img/icons/lots-icon.svg'\nimport DisplayOutletIndicator from '../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport DisplayDiscontinued from '../catalog/rectangleResult/displays/DisplayDiscontinued'\nimport DisplayBlackIndicator from '../catalog/rectangleResult/displays/DisplayBlackIndicator'\nimport DisplayHomeDepotIndicator from '../catalog/rectangleResult/displays/DisplayHomeDepotIndicator'\nimport DisplayNewIndicator from '../catalog/rectangleResult/displays/DisplayNewIndicator'\nimport DisplayUpcomingIndicator from '../catalog/rectangleResult/displays/DisplayUpcomingIndicator'\nimport NaturalStoneIndicator from '../cart-line/indicators/NaturalStoneIndicator'\n\nconst typeIdShowDownlad = ['03', '09', '04']\n\nconst ProductDescriptionHeader = ({ product, isMkToolsCenter, naturalStoneViewingPermissions, outlet }) => (\n    <React.Fragment>\n        <div className=\"d-flex flex-wrap align-items-center justify-content-between\" style={{ columnGap: '16px', rowGap: '2px' }}>\n            <div>\n                {isMkToolsCenter && product.webHeadingDesc && product.subtypeId !== 'MONOCOLOR BOX' ? (\n                    <p className=\"product-serie\">{product.webHeadingDesc.toLowerCase()}</p>\n                ) : (\n                    <DisplayBrand brand={product.brand} colorSerieDesc={product.colorSerieDesc} />\n                )}\n            </div>\n            <div className=\"d-flex align-items-center justify-content-between\" style={{ gap: '8px' }}>\n                {product.fromMall && (\n                    <div>\n                        <img style={{ width: '38px' }} src={mallLarge} alt=\"logo mall\" />\n                    </div>\n                )}\n                {product && product.extra && product.extra.isCosentinoGlobal && !(!!outlet && product.outlet) && naturalStoneViewingPermissions.canViewHQ && (\n                    <NaturalStoneIndicator idMessage={'natural_stone_hq'} defaultMessage=\"Natural stone Spain\" />\n                )}\n\n                {product && product.extra && product.extra.isCosentinoBrazil && naturalStoneViewingPermissions.canViewBrazil && (\n                    <NaturalStoneIndicator idMessage={'natural_stone_brazil'} defaultMessage=\"Natural stone Brazil\" />\n                )}\n\n                {product && product.extra && product.extra.isCosentinoGlobal && !!outlet && product.outlet && naturalStoneViewingPermissions.canViewHQ && (\n                    <NaturalStoneIndicator idMessage={'outlet_in_hq'} defaultMessage=\"Outlet Spain\" />\n                )}\n            </div>\n        </div>\n    </React.Fragment>\n)\n\nconst ProductFilters = ({ product, alternatives, outlet, productId }) => (\n    <div className=\"product-detail-filter-product\">\n        {product.thickness && alternatives && (\n            <FiltersProduct\n                selectHeading={<Translation id=\"thickness\" defaultMessage=\"Thickness\" />}\n                alternatives={alternatives.thickness}\n                outlet={outlet}\n                productId={productId}\n                translate=\"thickness\"\n                value={product.thickness}\n            />\n        )}\n        {product.format && alternatives && (\n            <FiltersProduct\n                selectHeading={<Translation id=\"format\" defaultMessage=\"Format\" />}\n                alternatives={alternatives.format}\n                outlet={outlet}\n                productId={productId}\n                translate=\"format\"\n                value={product.format}\n            />\n        )}\n        {product.finish && alternatives && (\n            <FiltersProduct\n                selectHeading={<Translation id=\"finish\" defaultMessage=\"Finish\" />}\n                alternatives={alternatives.finish}\n                outlet={outlet}\n                productId={productId}\n                translate=\"finish\"\n                value={product.finish}\n                translateValue\n            />\n        )}\n    </div>\n)\n\nconst ProductFiltersMktools = ({ product, brandsMktoolsAttr, colorsMktoolsAttr, state, changeBrandOption, changeColorOption, getOptionsColors }) => (\n    <div className=\"product-detail-filter-product\">\n        {product.haveOptions && brandsMktoolsAttr && (\n            <div>\n                <span className=\"select-heading-product\">\n                    <Translation id=\"choose_brand\" defaultMessage=\"Choose brand\" />\n                </span>\n                <Select\n                    options={['No Brand'].concat(brandsMktoolsAttr).map(brand => ({\n                        label: brand.toLowerCase(),\n                        value: brand\n                    }))}\n                    className=\"select-mktools-attr select-mktools-attr--brand\"\n                    value={state.selectedBrandMktoolAttr}\n                    onChange={selectedOption => changeBrandOption(selectedOption)}\n                    clearable={false}\n                />\n            </div>\n        )}\n        {product.haveOptions && colorsMktoolsAttr && (\n            <div>\n                <span className=\"select-heading-product\">\n                    <Translation id=\"choose_color\" defaultMessage=\"Choose color\" />\n                </span>\n                <Select\n                    options={getOptionsColors()}\n                    className=\"select-mktools-attr select-mktools-attr--color\"\n                    value={state.selectedColorMktoolAttr}\n                    onChange={selectedOption => changeColorOption(selectedOption)}\n                    clearable={false}\n                />\n            </div>\n        )}\n    </div>\n)\n\nclass ProductCardV2 extends React.Component {\n    getUnitBy() {\n        const { product } = this.props\n        if (product.unitsByLot) return product.unitsByLot\n        else if (product.unitsByBox) return product.unitsByBox\n        else if (!product.unitsByLot && !product.unitsByBox) return <LengthMeasure product={product} />\n    }\n\n    hasFlagIndicator = () => {\n        return (\n            this.props.product.discontinued ||\n            (this.props.outlet && this.props.product.outlet && this.props.product.outletQuality) ||\n            (this.props.product.fromMall && this.props.product.outletQuality && this.props.product.stock_outlet > 0) ||\n            this.props.showNewIndicator ||\n            this.props.showUpcomingIndicator ||\n            this.props.isExclusiveHomeDepot ||\n            (this.props.canViewPricesPhase3 && this.props.state && this.props.state.promotions && this.props.state.promotions.length > 0)\n        )\n    }\n\n    flagIndicator = (\n        <div className=\"group_tag\">\n            <div className=\"group_tag--left-side\">\n                {this.props.product.discontinued && this.props.product.discontinued !== 'DD' && this.props.product.discontinued !== 'DF' && (\n                    <DisplayDiscontinued discontinued={this.props.product.discontinued} />\n                )}\n\n                {((this.props.outlet && this.props.product.outlet && this.props.product.outletQuality) ||\n                    (this.props.product.fromMall && this.props.product.outletQuality && this.props.product.stock_outlet > 0)) && (\n                    <DisplayOutletIndicator outletQuality={this.props.product.outletQuality} />\n                )}\n\n                {this.props.showNewIndicator && <DisplayNewIndicator />}\n                {this.props.showUpcomingIndicator && <DisplayUpcomingIndicator />}\n                {this.props.isExclusiveHomeDepot && <DisplayHomeDepotIndicator />}\n            </div>\n\n            {this.props.canViewPricesPhase3 &&\n                this.props.state &&\n                this.props.state.promotions &&\n                this.props.state.promotions.length > 0 &&\n                (this.props.state.promotions[0].dealType === 'A' ? (\n                    <div className=\"d-flex\">\n                        <DisplayBlackIndicator value={this.props.intl.formatMessage({ id: 'new_price' })} />\n                    </div>\n                ) : this.props.state.promotions[0].dealType === 'B' ? (\n                    <div className=\"d-flex\">\n                        <DisplayBlackIndicator value={`-${this.props.state.promotions[0].value}%`} />\n                    </div>\n                ) : null)}\n        </div>\n    )\n\n    productAdditionalInfo = (\n        <div className=\"productid-info\">\n            <span>\n                <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n            </span>\n            : <span>{this.props.productId}</span>\n            {this.props.product.zaddon === 'MAL' && (\n                <span>\n                    {' '}\n                    (<Translation id=\"MAL\" defaultMessage=\"Meshed\" />)\n                </span>\n            )}\n        </div>\n    )\n\n    render() {\n        let { product, isLogged, canBuy, canViewOutlet, isMkToolsCenter, colorsMktoolsAttr, brandsMktoolsAttr, isIkeaCenter } = this.props\n\n        let quantity\n        if (product.type === 'TABLA') {\n            quantity = (\n                <div style={{ display: 'inline' }}>\n                    <LengthMeasureTranslation square={true} />\n                </div>\n            )\n        } else {\n            quantity = <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n        }\n\n        const displayStock = (\n            <DisplayStock\n                value={this.props.getStock()}\n                measure={quantity}\n                surface={this.getUnitBy()}\n                product={product}\n                hideSurface={product.fromMall}\n                watchingOutlet={this.props.outlet}\n                canViewThresholdMax={this.props.canViewThresholdMax}\n            />\n        )\n\n        const displayLotsButton =\n            this.props.showLots() && !this.props.outlet ? (\n                <LocalizedLink routeId=\"ROUTE_LOTS\" params={{ id: product.productId, outlet: '' }} gtmLabel=\"ec_ver_lotes\" className=\"d-inline-block\">\n                    <button className=\"buttons-lots\">\n                        <div>\n                            <img src={lotsIcon} alt=\"Lots\" />\n                        </div>\n                        <div>\n                            <Translation id=\"select_your_lot\" defaultMessage=\"Select your lot\" />\n                            &nbsp;({this.props.getStock()}&nbsp;\n                            <Translation id=\"lots\" defaultMessage=\"Lots\" />)\n                        </div>\n                    </button>\n                </LocalizedLink>\n            ) : null\n\n        const displayOutletLotsButton =\n            this.props.showLots() && canViewOutlet && this.props.outlet ? (\n                <LocalizedLink routeId=\"ROUTE_LOTS\" params={{ id: product.productId, outlet: 'outlet' }} className=\"d-inline-block\">\n                    <button className=\"buttons-lots\">\n                        <div>\n                            <img src={lotsIcon} alt=\"Lots\" />\n                        </div>\n                        <div>\n                            <Translation id=\"outlet\" defaultMessage=\"Outlet\" /> ({this.props.getStock()} <Translation id=\"lots\" defaultMessage=\"Lots\" />)\n                        </div>\n                    </button>\n                </LocalizedLink>\n            ) : null\n\n        const productColorsFormulations =\n            product.type === 'PPCC' && product.colorFormulations && product.colorFormulations.length > 0 ? (\n                <div className=\"row-others\">\n                    <p className=\"finished-title\">\n                        <Translation id=\"compatible_with_next_colors\" defaultMessage=\"Compatible with next colors:\" />\n                    </p>\n                    <div className=\"finished\" style={{ display: 'flex', flexDirection: 'row', flexWrap: 'wrap', gap: '8px' }}>\n                        {product.colorFormulations.map((colorFormulation, index) => {\n                            const colorName = colorFormulation.colorName || 'Unknown' // Fallback for null or undefined\n                            return (\n                                <div key={index} style={{ display: 'flex', alignItems: 'center', flexDirection: 'column' }}>\n                                    <img alt=\"product\" style={{ height: '40px', width: '60px', border: '1px dashed #ccc' }} src={colorFormulation.thumb} />\n                                    <p className=\"finished-subtitle\">\n                                        <span style={{ textTransform: 'capitalize', fontSize: '12px' }}>{colorName.toLowerCase()}</span>\n                                    </p>\n                                </div>\n                            )\n                        })}\n                    </div>\n                </div>\n            ) : null\n\n        return (\n            <div className=\"container product-detail product-detail-card\" data-type={product.type}>\n                <div style={{ marginBottom: '24px' }}>\n                    <GoBack text={this.props.intl.formatMessage({ id: 'keep_buying' })} datacy={'product_detail__go_back'} />\n                </div>\n                <div className=\"row\">\n                    <div id=\"box\" className=\"col-12 col-md-8\">\n                        {/* Product image */}\n                        {product && <ProductCarouselV2 product={product} isLogged={isLogged} />}\n\n                        {/* Btn download pdf */}\n                        {isMkToolsCenter && product.download && typeIdShowDownlad.includes(product.typeId) && (\n                            <a href={product.download} className=\"bt-download\">\n                                <div className=\"icon\">\n                                    <img alt=\"\" src={iconDownload} />\n                                </div>\n                                <div className=\"label\">\n                                    <Translation id=\"download_pdf\" defaultMessage=\"Download pdf\" />\n                                </div>\n                            </a>\n                        )}\n\n                        {/* Hybriq patent pending */}\n                        {product.technology == 'HYBRIQ' && (\n                            <div className=\"product-image\" style={{ minHeight: '0' }}>\n                                <div className=\"fit-image-v2 row no-gutters\" style={{ fontSize: '12px', textAlign: 'left' }}>\n                                    <div style={{ paddingRight: '10px' }}>\n                                        <img\n                                            style={{ width: '70px' }}\n                                            className=\"image img-fluid\"\n                                            src=\"https://assetsstatic.cosentino.com/img/Patent-Pending-Logo.svg\"\n                                            alt=\"Patent\"\n                                        ></img>\n                                    </div>\n                                    <div className=\"col-8 col-md-10 box-patent-pending\">\n                                        <Translation\n                                            id=\"hybriq_incorporate_patented\"\n                                            defaultMessage=\"HybriQ and HybriQ+® incorporate patented or patent-pending technologies.\"\n                                        ></Translation>\n                                        <br />\n                                        <Translation\n                                            id=\"hybriq_registered_trademarks\"\n                                            defaultMessage=\"HybriQ+® and HybriQ Technology® are registered trademarks owned by Cosentino S.A.U.\"\n                                        ></Translation>\n                                        <br />\n                                    </div>\n                                </div>\n                            </div>\n                        )}\n\n                        {/* Mobile version */}\n                        <div className=\"product-description product-description-phone\">\n                            {/* Indicators */}\n                            {this.hasFlagIndicator() && this.flagIndicator}\n\n                            {/* Description header */}\n                            <ProductDescriptionHeader\n                                product={product}\n                                isMkToolsCenter={isMkToolsCenter}\n                                naturalStoneViewingPermissions={this.props.naturalStoneViewingPermissions}\n                                outlet={this.props.outlet}\n                            />\n\n                            {/* Display product name */}\n                            <div className=\"product-name-content\" data-cy=\"product_detail__title\">\n                                <ProductDisplayName product={product} />\n                            </div>\n\n                            {this.productAdditionalInfo}\n\n                            <DisplayNaturalStoneOrigin product={product} />\n\n                            {product.technology == 'HYBRIQ' && product.brand && product.brand !== 'XERON' && (\n                                <div style={{ textAlign: 'initial' }}>\n                                    <p style={{ fontSize: '12px' }}>\n                                        <Translation\n                                            id=\"hybriq_loft_series\"\n                                            defaultMessage=\"The Silestone® LOFT series designs have been registered by Cosentino S.A.U.\"\n                                        ></Translation>\n                                        <br />\n                                    </p>\n                                </div>\n                            )}\n\n                            {process.env.REACT_APP_FEATURE_ZAPATILLAS && product.type === 'TABLA' && (\n                                <ProductFilters\n                                    product={product}\n                                    alternatives={this.props.alternatives}\n                                    outlet={this.props.outlet}\n                                    productId={this.props.productId}\n                                />\n                            )}\n\n                            <ProductFiltersMktools \n                                product={product}\n                                brandsMktoolsAttr={brandsMktoolsAttr}\n                                colorsMktoolsAttr={colorsMktoolsAttr}\n                                state={this.props.state}\n                                changeBrandOption={this.props.changeBrandOption}\n                                changeColorOption={this.props.changeColorOption}\n                                getOptionsColors={this.props.getOptionsColors}\n                            />\n\n                            {productColorsFormulations}\n\n                            {isLogged && (\n                                <div className=\"product-detail-stock\">{displayStock}</div>\n                            )}\n\n                            {displayLotsButton && isLogged && (\n                                <div className=\"my-3 d-flex items-center justify-content-start align-items-center\">{displayLotsButton}</div>\n                            )}\n\n                            {product.outlet && displayOutletLotsButton && isLogged && (\n                                <div className=\"my-3 d-flex items-center justify-content-start align-items-center\">{product.outlet && displayOutletLotsButton}</div>\n                            )}\n\n                            <div className=\"x-divider my-3\"></div>\n                            {canBuy && isLogged && <DisplayPrice product={this.props.product} outlet={this.props.outlet} />}\n\n                            {canBuy && (\n                                <div className=\"product-detail-canbuy\">\n                                    <div className=\"product-detail-canbuy--input\">\n                                        <InputNumber\n                                            value={this.props.getValueToAdd()}\n                                            change={qty => this.props.state.setQtyToAdd(qty)}\n                                            step={this.props.isIkeaCenter && this.product && this.product.unit === 'M2' ? 0.01 : this.props.state.step}\n                                            limit={this.props.getLimit()}\n                                            min={this.props.getMin()}\n                                            decimals={this.props.isIkeaCenter && this.product && this.product.unit === 'M2' ? 2 : 0}\n                                        />\n                                    </div>\n                                    <div className=\"bt-add-to-cart product-detail-canbuy--btn\">\n                                        <Button\n                                            far={true}\n                                            inverted\n                                            icon=\"shopping-cart\"\n                                            disabled={this.props.isAdding || !this.props.canAddCart()}\n                                            onClick={() => this.props.addToCart()}\n                                            datacy=\"product_detail__add\"\n                                            customClass=\"bt-add-to-cart-product-v2\"\n                                            dataQas=\"global_product_detail-add-to-cart-button\"\n                                        >\n                                            <Translation id=\"add_to_cart\" defaultMessage=\"Add\" />\n                                        </Button>\n                                    </div>\n\n                                    {!this.props.isShowingSegmentationModal && (\n                                        <div className=\"bt-add-to-cart fixed-bottom\">\n                                            <Button\n                                                far={true}\n                                                inverted\n                                                icon=\"shopping-cart\"\n                                                disabled={this.props.isAdding || !this.props.canAddCart()}\n                                                onClick={() => this.props.addToCart()}\n                                                datacy=\"product_detail__add\"\n                                                customClass=\"bt-add-to-cart-product-v2\"\n                                                dataQas=\"global_product_detail-add-to-cart-button\"\n                                            >\n                                                <Translation id=\"add_to_cart\" defaultMessage=\"Add\" />\n                                            </Button>\n                                        </div>\n                                    )}\n                                </div>\n                            )}\n                        </div>\n\n                        <QuickGuides subtypeId={this.props.product.subtypeId} lang={this.props.locale} />\n                        <RelatedProductsContainer productId={this.props.productId} sectionFlag=\"FJ\" />\n                        <ProductInfoTabs />\n                        <ProductsSimilarColorsContainer productId={this.props.productId} sectionFlag=\"FS\" />\n                    </div>\n\n                    {/* Desktop version */}\n                    <div className=\"col-md-4 product-description product-description-desktop\">\n                        {/* Indicators */}\n                        {this.hasFlagIndicator() && this.flagIndicator}\n\n                        {/* Description header */}\n                        <ProductDescriptionHeader\n                            product={product}\n                            isMkToolsCenter={isMkToolsCenter}\n                            naturalStoneViewingPermissions={this.props.naturalStoneViewingPermissions}\n                            outlet={this.props.outlet}\n                        />\n\n                        {/* Display product name */}\n                        <div className=\"product-name-content\" data-cy=\"product_detail__title\">\n                            <ProductDisplayName product={product} />\n                        </div>\n\n                        {this.productAdditionalInfo}\n\n                        <DisplayNaturalStoneOrigin product={product} />\n\n                        {product.technology == 'HYBRIQ' && product.brand && product.brand !== 'XERON' && (\n                            <p style={{ fontSize: '12px' }}>\n                                <Translation id=\"hybriq_loft_series\" defaultMessage=\"The Silestone® LOFT series designs have been registered by Cosentino S.A.U.\"></Translation>\n                                <br />\n                            </p>\n                        )}\n\n                        {process.env.REACT_APP_FEATURE_ZAPATILLAS && product.type === 'TABLA' && (\n                            <ProductFilters\n                                product={product}\n                                alternatives={this.props.alternatives}\n                                outlet={this.props.outlet}\n                                productId={this.props.productId}\n                            />\n                        )}\n\n                        <ProductFiltersMktools \n                            product={product}\n                            brandsMktoolsAttr={brandsMktoolsAttr}\n                            colorsMktoolsAttr={colorsMktoolsAttr}\n                            state={this.props.state}\n                            changeBrandOption={this.props.changeBrandOption}\n                            changeColorOption={this.props.changeColorOption}\n                            getOptionsColors={this.props.getOptionsColors}\n                        />\n\n                        {productColorsFormulations}\n\n                        {isLogged && (\n                            <div className=\"product-detail-stock\">{displayStock}</div>\n                        )}\n\n                        {displayLotsButton && isLogged && (\n                            <div className=\"my-3 d-flex items-center justify-content-start align-items-center\">\n                                {displayLotsButton}\n                            </div>\n                        )}\n\n                        {product.outlet && displayOutletLotsButton && isLogged && (\n                            <div className=\"my-3 d-flex items-center justify-content-start align-items-center\">{product.outlet && displayOutletLotsButton}</div>\n                        )}\n\n                        <div className=\"x-divider my-3\"></div>\n\n                        {canBuy && isLogged && <DisplayPrice product={this.props.product} outlet={this.props.outlet} />}\n\n                        {canBuy && (\n                            <div className=\"product-detail-canbuy\">\n                                <div className=\"product-detail-canbuy--input\">\n                                    <InputNumber\n                                        value={this.props.getValueToAdd()}\n                                        change={qty => this.props.state.setQtyToAdd(qty)}\n                                        step={this.props.isIkeaCenter && this.product && this.product.unit === 'M2' ? 0.01 : this.props.state.step}\n                                        limit={this.props.getLimit()}\n                                        min={this.props.getMin()}\n                                        decimals={this.props.isIkeaCenter && this.product && this.product.unit === 'M2' ? 2 : 0}\n                                    />\n                                </div>\n                                <div className=\"bt-add-to-cart product-detail-canbuy--btn\">\n                                    <Button\n                                        far={true}\n                                        inverted\n                                        icon=\"shopping-cart\"\n                                        disabled={this.props.isAdding || !this.props.canAddCart()}\n                                        onClick={() => this.props.addToCart()}\n                                        datacy=\"product_detail__add\"\n                                        customClass=\"bt-add-to-cart-product-v2\"\n                                        dataQas=\"global_product_detail-add-to-cart-button\"\n                                    >\n                                        <Translation id=\"add_to_cart\" defaultMessage=\"Add\" />\n                                    </Button>\n                                </div>\n                            </div>\n                        )}\n                    </div>\n                </div>\n                <div className=\"row my-4\">\n                    <div className=\"col-12\">\n                        {/* {this.props.canViewEarthicPromotion && <BannerEarthic />} */}\n                        {this.props.canViewSumaPromotion && <BannerSuma />}\n                        {this.props.canViewSilestonePromotionXM && <BannerSilestoneXM />}\n                        {this.props.canViewRockMasterPromotion && <BannerRockMaster />}\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default withRouter(injectIntl(ProductCardV2))\n","import {productLogic as catalogProductLogic} from \"../catalog/rectangleResult/contexts/logic/ProductLogic\";\nimport {mallProductLogic} from \"../catalog/rectangleResult/contexts/logic/MallProductLogic\";\nimport {BaseProductLogic} from \"../catalog/rectangleResult/contexts/logic/BaseProductLogic\";\nimport {useEffect, useState} from \"react\";\nimport * as analytics from \"../../analyticsEvents\";\nimport {getMallProduct} from \"../landing-templates/utils\";\n\nexport const productCardLogic = (props) => {\n\n    const [product, setProduct] = useState(props.lastSelectedProduct ? props.lastSelectedProduct : props.product)\n\n    const productLogicFunction = product.fromMall ? mallProductLogic : catalogProductLogic\n    const productLogic = productLogicFunction({...props, product}, BaseProductLogic)\n\n    const initialExtras = !product.haveOptions ? {\n        ...productLogic.getExtras(),\n        ...product.extra,\n        type: productLogic.getType(),\n        comingFromCampaign: product.fromMall ? true : null,\n        outlet: props.outlet || (product.fromMall && product.outletQuality)\n            ? product.outletQuality\n            : null\n    } : { type: productLogic.getType(), brand: 'No Brand', colorName: 'No Color' }\n\n    const [selectedBrandMktoolAttr, setSelectedBrandMktoolAttr] = useState(product.haveOptions ? { label: 'No Brand', value: 'No Brand' } : null)\n    const [selectedColorMktoolAttr, setSelectedColorMktoolAttr] = useState(product.haveOptions ? { label: 'No Color', value: 'No Color' } : null)\n    const [extras, setExtras] = useState(initialExtras)\n\n    useEffect(() => {\n        if (product.fromMall && props.mallProducts.length > 0) {\n            const _product = getMallProduct(product, props.mallProducts, props.mallProductsLots)\n            setProduct(_product)\n            props.setLastSelectedProduct(_product)\n        }\n    }, [props.mallProducts])\n\n    useEffect(() => {\n        if (props.product) {\n            let _product\n            let variant\n            let _extra = extras\n\n            if (props.lastSelectedProduct && props.lastSelectedProduct.productId == props.productId) {\n                _product = {...props.product, ...props.lastSelectedProduct}\n                _extra = {..._extra, ...props.lastSelectedProduct.extra }\n            } else {\n                _product = props.product\n                if (props.lastSelectedProduct) {\n                    variant =`variant_${props.lastSelectedProduct.productId}`\n                    _extra = {..._extra, variant }\n                }\n            }\n\n            setExtras(_extra)\n            _product.extra = _extra\n            setProduct(_product)\n\n            if (props.isLogged) {\n                props.onLoadProductDetail(_product)\n                props.postVisited(props.productId, _product.outlet)\n            }\n\n            props.setLastSelectedProduct(_product)\n        }\n    }, [props.product])\n    //\n    useEffect(() => {\n        if (!props.lastSelectedProduct && props.landing && product.fromMall && props.mallProducts.length === 0) {\n            props.fetchProductsLandingsByCenters(props.landing.landingId, [product.centerId], [product], props.landing.portfolio_mode)\n        }\n    }, [props.landing])\n\n    useEffect(() => {\n        if (!props.product) {\n            props.fetchProduct(props.productId)\n        } else if (props.product.haveOptions) {\n            props.fetchColorsMktoolsAttr()\n            props.fetchSimilarProduct(props.productId, product.colorId)\n        }\n\n        props.fetchCrossSelling(props.productId).then(() => {\n            if (props.crossSelling) analytics.sendCatalogImpressions(props.crosselling, 'RELATED_PRODUCTS')\n        })\n        props.fetchAlternatives(props.productId)\n\n    }, [props.productId, props.product && props.product.productId])\n\n    useEffect(() => {\n        if (props.isLogged) {\n            props.fetchProductsFavourite()\n        }\n        props.setInProductDetailScreen(true)\n        return () => props.setInProductDetailScreen(false)\n    }, [])\n\n\n    productLogic.getExtras = () => extras\n\n    const canAddCartMktoolColorAttr = () => {\n        return product.haveOptions ? !!selectedColorMktoolAttr : true\n    }\n    const canAddCartQtyOk = () => {\n        return !((productLogic.getLimit() != null ? productLogic.getLimit() : 1) <= 0 || !productLogic.state.qtyToAdd >= 1)\n    }\n    const canAddMall = () => {\n        //REVIEW::\n        if (product.outletQuality && product.stock_outlet > 0) {\n            return true\n        }\n        if (!product.outletQuality && product.stock > 0) {\n            return true\n        }\n        return false\n    }\n    const canAddCart = () => {\n        if (product.fromMall) {\n            canAddCartQtyOk() && canAddCartMktoolColorAttr() && canAddMall()\n        }\n        return canAddCartQtyOk() && canAddCartMktoolColorAttr()\n    }\n    const getOptionsColors = () => {\n        let options = []\n        if (!selectedBrandMktoolAttr || selectedBrandMktoolAttr.value === 'No Brand') {\n            if (Object.values(props.colorsMktoolsAttr).length > 0)\n                options = ['No Color'].concat(Object.values(props.colorsMktoolsAttr).reduce((valorAnterior, valorActual) => valorAnterior.concat(valorActual)))\n        } else if (selectedBrandMktoolAttr) {\n            options = ['No Color'].concat(props.colorsMktoolsAttr[selectedBrandMktoolAttr.value])\n        }\n        return options.map(color => ({\n            label: color,\n            value: color\n        }))\n    }\n\n    const changeBrandOption = selectedOption => {\n        // console.log('changeBrandOption', selectedOption)\n        setSelectedBrandMktoolAttr(selectedOption)\n        setExtras({\n            ...extras,\n            brand: selectedOption ? selectedOption.value : null\n        })\n\n        if (!selectedOption || selectedOption.value !== 'No Brand') {\n            setSelectedColorMktoolAttr({ label: 'No Color', value: 'No Color' })\n            setExtras({\n                ...extras,\n                colorName: 'No Color',\n                brand: selectedOption ? selectedOption.value : null\n            })\n        }\n    }\n\n    const changeColorOption = selectedOption => {\n        // console.log('changeColorOption', selectedOption)\n        setSelectedColorMktoolAttr(selectedOption)\n        setExtras({\n            ...extras,\n            colorName: selectedOption ? selectedOption.value : null\n        })\n    }\n\n    const state = {\n        ...productLogic.state,\n        selectedBrandMktoolAttr, setSelectedBrandMktoolAttr,\n        selectedColorMktoolAttr, setSelectedColorMktoolAttr,\n        extras, setExtras\n    }\n\n    const addToCart = () => productLogic.addToCart(extras)\n\n    return {...productLogic,\n        state,\n        canAddCart,\n        getOptionsColors,\n        changeBrandOption,\n        changeColorOption,\n        addToCart,\n        product\n    }\n}\n","import React from 'react'\nimport RectangleResultContainer from '../catalog/rectangleResult/RectangleResultContainer'\nimport CircleResultContainer from '../catalog/results/CircleResultContainer'\nimport Spinner from '../global/Spinner'\nimport SimilarProducts from './SimilarProducts'\nimport Error from '../alerts/Error'\nimport Translation from '../global/Translation'\nimport ProductCardV2 from \"../product-detail/ProductCardV2\";\nimport {productCardLogic} from \"./ProductCardLogic\";\n\nconst ProductCardContainer = (props) => {\n\n    const logicProps = productCardLogic(props)\n\n    const { product, addCartLine, isLogged, shippingMethod, crossSelling, error } = props\n    const Result = isLogged ? RectangleResultContainer : CircleResultContainer\n    const crossSellingView =\n        product && product.type === 'TABLA' && crossSelling !== undefined && crossSelling.length > 0 ? (\n            <div style={{ display: 'none' }}>\n                <div className=\"last-colors show-phone-related-products\">\n                    <section id=\"section-catalog\">\n                        <h4 style={{textAlign: 'initial', marginTop: '1rem'}}>\n                            <Translation id=\"related_products\" defaultMessage=\"Related products\" />\n                        </h4>\n                        <div className=\"filter-and-results-container\">\n                            <div className=\"results\">\n                                <div className=\"results-list\" style={{justifyContent: 'center'}}>\n                                    <React.Fragment>\n                                        {crossSelling.map(product => (\n                                            <Result\n                                                key={product.productId}\n                                                product={product}\n                                                shippingMethod={shippingMethod}\n                                                intl={props.intl}\n                                                addCartLine={addCartLine}\n                                                notDescriptionProduct={true}\n                                            />\n                                        ))}\n                                    </React.Fragment>\n                                </div>\n                            </div>\n                        </div>\n                    </section>\n                </div>\n            </div>\n        ) : null\n\n    return (\n        <section id=\"product-detail\">\n            {!product && error ? (\n                <Error alert={props.intl.formatMessage({ id: error.data.err })} />\n            ) : !product && !error ? (\n                <Spinner isLoading={true} />\n            ) : (\n                <div>\n                    { product && <ProductCardV2 {...logicProps} crossSellingView={crossSellingView} /> }\n                    <div className=\"container\">\n                        <div className=\"row\">\n                            <div className=\"col-12\">{product && <SimilarProducts products={product.similarProducts} />}</div>\n                        </div>\n                    </div>\n                </div>\n            )}\n        </section>\n    )\n}\n\nexport default ProductCardContainer\n","import { getLanguage } from './../store/ui/reducers';\nimport React from 'react'\nimport { addCartLine, addCartLineWithouthSeg } from '../store/cart/actions'\nimport { byProductId, getGallery, getError, getColorsMktoolsAttr, getBrandsMktoolsAttr, canViewPricesPhase3, discountsByProductId, isExclusiveHomeDepot, isNewIndicator, isUpcomingIndicator } from '../store/products/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport * as actions from '../store/products/actions'\nimport { getIsLogged, getIsAdmin, getUserType, getImpersonatedBy, canViewRockMasterPromotion, canViewEarthicPromotion, canViewHybriqPromotion, canViewSilestonePromotionXM, getNaturalStoneViewingPermissions, canViewSumaPromotion } from '../store/login/reducers'\nimport {\n    getShippingMethod,\n    getSelectedCenter,\n    canViewOutlet,\n    productIsInPromo,\n    getIsMkToolsCenter,\n    getNeedsSegmentation,\n    getIsIkeaCenter,\n    getIsMktoolsUsaCenter,\n    getPricesGroup,\n    canBuyCatalog,\n    canBuyMktools,\n    isUsaOrCanada,\n    canViewAllLots,\n    canOffer\n} from '../store/centers/reducers'\nimport { goBack } from 'react-router-redux'\nimport { getCurrentCrossSelling, getCurrentAlternatives } from '../store/crossSelling/reducers'\nimport { getCurrentPromotionId, isProductIdInPromotion } from '../store/promotions/reducers'\n\nimport { injectIntl } from 'react-intl'\nimport { getProfileConfiguration } from '../store/profile-configuration/reducers'\nimport { getIsAdding, getQtyProductsCart } from '../store/cart/reducers'\nimport { fetchCrossSelling, fetchAlternatives } from '../store/crossSelling/actions'\nimport {\n    canViewThresholdMax,\n    isComingFromMall,\n    isComingFromCampaign,\n    showingSegmentationModal\n} from '../store/ui/reducers'\nimport { dispatchPushURL, proccessInDetailScreen } from '../store/ui/actions'\nimport {postVisitedProduct} from \"../store/products/actions\";\nimport {getLastSelectedProduct} from \"../store/selected-objects/reducers\";\nimport {getAdaptedFormat} from \"../helpers\";\nimport {\n    getLandingByCommonId,\n    getMallProductsLots,\n    getSelectedProduct,\n    getSelectedProductId\n} from \"../store/landing/reducers\";\nimport ProductCardContainer from \"../components/product-detail/ProductCardContainer\";\nimport {fetchProductsLandingsByCenters} from \"../store/landing/actions\";\nimport {setLastSelectedProduct} from \"../store/selected-objects/actions\";\n\nconst mapStateToProps = (state, { match }) => {\n    const source = byProductId(state, match.params.id)\n    const lastSelectedProduct = getLastSelectedProduct(state)\n\n    return {\n        product: source,\n        lastSelectedProduct: lastSelectedProduct && lastSelectedProduct.productId == match.params.id ? lastSelectedProduct : null,\n        productId: match.params.id,\n        key: match.params.id,\n        isLogged: getIsLogged(state),\n        isAdmin: getIsAdmin(state),\n        shippingMethod: getShippingMethod(state),\n        selectedCenter: getSelectedCenter(state),\n        alternatives: getCurrentAlternatives(state),\n        crossSelling: getCurrentCrossSelling(state),\n        outlet: match.params.outlet,\n        canBuy: (canBuyCatalog(state) && source && !source.isMktool) || (canBuyMktools(state) && source && source.isMktool),\n        userPreferences: getProfileConfiguration(state),\n        userType: getUserType(state),\n        impersonatedBy: getImpersonatedBy(state),\n        canViewOutlet: canViewOutlet(state),\n        isMkToolsCenter: getIsMkToolsCenter(state),\n        productIsInPromo: productIsInPromo(state, source),\n        gallery: getGallery(state),\n        qtyProductCart: getQtyProductsCart(state),\n        centerId: getSelectedCenter(state),\n        error: getError(state),\n        priceGroup: getPricesGroup(state),\n        needsSegmentation: getNeedsSegmentation(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isMktoolsUsaCenter: getIsMktoolsUsaCenter(state),\n        colorsMktoolsAttr: getColorsMktoolsAttr(state),\n        brandsMktoolsAttr: getBrandsMktoolsAttr(state),\n        canViewThresholdMax: canViewThresholdMax(state),\n        isAdding: getIsAdding(state),\n        isComingFromMall: isComingFromMall(state),\n        landing: getLandingByCommonId(state, lastSelectedProduct),\n        isComingFromCampaign: isComingFromCampaign(state),\n        currentPromotionId: getCurrentPromotionId(state),\n        isProductIdInPromo: isProductIdInPromotion(state, match.params.id),\n        isShowingSegmentationModal: showingSegmentationModal(state),\n        isUsaOrCanada: isUsaOrCanada(state),\n        canViewAllLots: canViewAllLots(state),\n        isImpersonated: !!getImpersonatedBy(state),\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        mallProductsLots: getMallProductsLots(state),\n        mallProducts: state.landing.productsLanding,\n        mallSelectedProductId: getSelectedProductId(state),\n        mallSelectedProduct: getSelectedProduct(state),\n        locale:getLanguage(state),\n        canViewRockMasterPromotion: canViewRockMasterPromotion(state),\n        canViewEarthicPromotion: canViewEarthicPromotion(state),\n        canViewHybriqPromotion: canViewHybriqPromotion(state),\n        canViewSilestonePromotionXM: canViewSilestonePromotionXM(state),\n        naturalStoneViewingPermissions: getNaturalStoneViewingPermissions(state),\n        canViewPricesPhase3: canViewPricesPhase3(state),\n        productDiscounts: discountsByProductId(state, match.params.id, match.params.outlet),\n        isExclusiveHomeDepot: isExclusiveHomeDepot(state, source && source.colorId ? source.colorId : null),\n        showNewIndicator: source && source.creationDate && isNewIndicator(source.creationDate),\n        showUpcomingIndicator: source && source.creationDate && isUpcomingIndicator(source.creationDate),\n        canViewSumaPromotion: canViewSumaPromotion(state),\n        canOffer: canOffer(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        addCartLine: (product, qty, extra, callbackCenter, dektonGripRequested, supplierCenterId) => {\n            dispatch(addCartLine(product, qty, extra, callbackCenter, dektonGripRequested, supplierCenterId))\n        },\n        addCartLineWithouthSeg: (product, qty, extra, callbackCenter, dektonGripRequested) => {\n            dispatch(addCartLineWithouthSeg(product, qty, extra, callbackCenter, dektonGripRequested))\n        },\n        fetchProduct: productId => {\n            return dispatch(actions.fetchProduct(productId))\n        },\n        fetchSimilarProduct: (productId, colorId) => {\n            return dispatch(actions.fetchSimilarProduct(productId, colorId))\n        },\n        fetchCrossSelling: productId => {\n            return dispatch(fetchCrossSelling(productId))\n        },\n        fetchAlternatives: productId => {\n            dispatch(fetchAlternatives(productId))\n        },\n        fetchProductsFavourite: productId => {\n            dispatch(actions.fetchProductsFavourite(productId))\n        },\n        goBack: () => {\n            dispatch(goBack())\n        },\n        goCatalog: (intl, outlet) => {\n            dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', outlet ? 'outlet' : '')))\n        },\n        onLoadProductDetail: product => {\n            dispatch({ type: 'PRODUCT_DETAIL_VISIT', product })\n        },\n        fetchColorsMktoolsAttr: () => dispatch(actions.fetchColorsMktoolsAttr()),\n        setInProductDetailScreen: inDetailScreen => {\n            dispatch(proccessInDetailScreen(inDetailScreen))\n        },\n        postVisited: (productId, outlet) => {\n            return dispatch(postVisitedProduct(productId, outlet))\n        },\n        fetchProductsLandingsByCenters: (landingId, centers, products, portfolioMode) => {\n            return dispatch(fetchProductsLandingsByCenters(landingId, centers, products, portfolioMode))\n        },\n        setLastSelectedProduct: product => dispatch(setLastSelectedProduct(product))\n    }\n}\n\nclass ProductDetailScreen extends React.Component {\n\n    componentDidMount() {\n        if (!this.props.product && !this.props.lastSelectedProduct) {\n            // console.log('FETCHING')\n            this.props.fetchProduct(this.props.productId)\n        }\n    }\n\n    render() {\n        return this.props.product || this.props.lastSelectedProduct ? <ProductCardContainer {...this.props}/> : ''\n    }\n}\n\nProductDetailScreen = injectIntl(\n    withRouter(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(ProductDetailScreen)\n    )\n)\n\nexport default ProductDetailScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport Select from 'react-select'\nimport DatePicker from 'react-datepicker'\nimport moment from 'moment'\nimport Button from '../global/Button'\nimport Modal from '../global/Modal'\nimport Alerts from '../alerts/Alerts'\n\nclass AssignCustomer extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { selectedCustomer: null, deliveryDate: moment().add(1, 'days') }\n    }\n    handleChange = selectedCustomer => {\n        this.setState({ selectedCustomer: selectedCustomer })\n    }\n    handleChangeDate = date => {\n        this.setState({\n            deliveryDate: date\n        })\n    }\n    handleSubmit = () => {\n        if (!this.state.selectedCustomer) {\n            this.setState({ alert: 'CUSTOMER_REQUIRED' })\n            return\n        }\n        const deliveryDate = moment(this.state.deliveryDate).format('YYYY/MM/DD')\n        this.props.assignCustomer(this.state.selectedCustomer.value, this.props.order, deliveryDate, this.poInput.value, this.commentInput.value)\n    }\n    render() {\n        if (this.props.customers === undefined) {\n            return null\n        }\n        return (\n            <Modal\n                title={\n                    <span>\n                        <Translation id=\"reservation_id\" defaultMessage=\"Reservation ID\" /> {this.props.order}{' '}\n                        <small>\n                            <Translation id=\"assign_customer\" defaultMessage=\"Assign customer\" />\n                        </small>\n                    </span>\n                }\n                footer={\n                    <Button inline size=\"small\" icon=\"chevron-circle-right\" onClick={() => this.handleSubmit()}>\n                        <Translation id=\"select_shipping_address\" defaultMessage=\"Select shipping address\" />\n                    </Button>\n                }\n                onClose={this.props.onClose}\n            >\n                {this.state.alert && <Alerts alert={this.state.alert} status=\"404\" />}\n\n                <form>\n                    <div className=\"form-group\">\n                        <Select\n                            placeholder={<Translation id=\"select_customer\" defaultMessage=\"Select customer\" />}\n                            options={this.props.customers.map(option => ({\n                                label: option.customerName + ' , ' + option.address + ' , ' + option.zipCode + ' , ' + option.city + ' , ' + option.country,\n                                value: option.shippingAddressId\n                            }))}\n                            value={this.state.selectedCustomer}\n                            onChange={selectedCustomer => this.handleChange(selectedCustomer)}\n                            className=\"select-customer\"\n                        />\n                    </div>\n                    <div className=\"form-group\">\n                        <label htmlFor=\"input-date\">\n                            <Translation id=\"required_delivery_date\" defaultMessage=\"Required delivery date\" />\n                        </label>\n                        <DatePicker\n                            selected={this.state.deliveryDate}\n                            onChange={this.handleChangeDate}\n                            minDate={moment().add(1, 'days')}\n                            className=\"form-control\"\n                            autoComplete=\"off\"\n                            onKeyDown={e => e.preventDefault()}\n                        />\n                    </div>\n                    <div className=\"form-group\">\n                        <label htmlFor=\"input-po\">\n                            <Translation id=\"insert_po\" defaultMessage=\"Insert your PO#\" />\n                        </label>\n                        <input\n                            type=\"text\"\n                            className=\"form-control\"\n                            id=\"input-po\"\n                            ref={input => {\n                                this.poInput = input\n                            }}\n                        />\n                    </div>\n                    <div className=\"form-group\">\n                        <label htmlFor=\"input-comments\">\n                            <Translation id=\"comment\" defaultMessage=\"Comments\" />\n                        </label>\n                        <textarea\n                            className=\"form-control\"\n                            id=\"input-comments\"\n                            rows=\"3\"\n                            ref={input => {\n                                this.commentInput = input\n                            }}\n                        />\n                    </div>\n                </form>\n            </Modal>\n        )\n    }\n}\nexport default AssignCustomer\n","import React from 'react'\nimport ReactTable from 'react-table'\nimport { FormattedMessage, injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { fetchOrderDetails, getFileByUrl, fetchPackingList } from '../../store/orders/actions'\nimport { getPackingList, getPackingListLoading } from '../../store/orders/reducers'\nimport { getToken } from '../../store/login/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport Button from '../global/Button'\nimport Modal from '../global/Modal'\nimport Spinner from '../global/Spinner'\nimport LocalizedLink from '../global/LocalizedLink'\n\nconst mapStateToProps = (state, ownProps) => {\n    return {\n        packingList: ownProps.packingList ? ownProps.packingList : getPackingList(state),\n        shouldFetchPackingList: !ownProps.packingList,\n        isLoading: getPackingListLoading(state),\n        token: getToken(state),\n        lang: getLanguage(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchPackingList: reservationId => {\n            dispatch(fetchPackingList(reservationId))\n        },\n        getFileByUrl: url => dispatch(getFileByUrl(url))\n    }\n}\n\nclass PackingList extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.getOrderInvoiceDownloadUrl = this.getOrderInvoiceDownloadUrl.bind(this)\n        this.getOrderImagesDownloadUrl = this.getOrderImagesDownloadUrl.bind(this)\n    }\n\n    componentDidMount() {\n        //cargamos packing list para vistas de pedido antiguas al nuevo seguimiento\n        if (this.props.shouldFetchPackingList && !this.props.isLoading) this.props.fetchPackingList(this.props.reservationId)\n    }\n\n    getOrderInvoiceDownloadUrl(invoiceNum) {\n        return process.env.REACT_APP_API_HOST + '/users/order-invoice/' + invoiceNum\n        // return process.env.REACT_APP_API_HOST + '/users/order-invoice/' + invoiceNum + '/?authToken=' + this.props.token\n    }\n\n    getOrderImagesDownloadUrl() {\n        return process.env.REACT_APP_API_HOST + '/users/order-images?reservationId=' + this.props.reservationId + '&lang=' + this.props.lang\n        // return process.env.REACT_APP_API_HOST + '/users/order-images?reservationId=' + this.props.reservationId + '&lang=' + this.props.lang + '&authToken=' + this.props.token\n    }\n\n    render() {\n        return (\n            <Modal\n                title={\n                    <span>\n                        <FormattedMessage id=\"packing_list\" defaultMessage=\"Packing list\" />{' '}\n                        <small>\n                            <FormattedMessage id=\"reservation_id\" defaultMessage=\"Reservation ID\" />: {this.props.reservationId}\n                        </small>\n                    </span>\n                }\n                footer={''}\n                onClose={this.props.onClose}\n                size=\"large\"\n            >\n                <Spinner isLoading={this.props.isLoading} relative={true} />\n                {this.props.packingList && this.props.packingList.length ? (\n                    <React.Fragment>\n                        <div className=\"row\">\n                            <div className=\"col-12 text-right mb-3\">\n                                {this.props.canEditOrders && (\n                                    <LocalizedLink\n                                        routeId=\"ROUTE_PROFILE\"\n                                        params={{ filter: 'edit-order', open: this.props.orderId }}\n                                        onClick={e => {\n                                            if (!this.props.orderId) e.preventDefault()\n                                        }}\n                                    >\n                                        <Button inline size=\"tiny\" icon=\"edit\" disabled={!this.props.orderId}>\n                                            <FormattedMessage id=\"edit_order\" defaultMessage=\"Edit order\" />\n                                        </Button>\n                                    </LocalizedLink>\n                                )}\n\n                                <span style={{ margin: '0 5px' }}>\n                                    <Button inline size=\"tiny\" icon=\"download\" onClick={() => this.props.getFileByUrl(this.getOrderImagesDownloadUrl())}>\n                                        <FormattedMessage id=\"download_images\" defaultMessage=\"Download images\" />\n                                    </Button>\n                                </span>\n                            </div>\n                        </div>\n                        <ReactTable\n                            data={this.props.packingList}\n                            loading={this.props.isLoading}\n                            loadingText={<Spinner isLoading={this.props.isLoading} />}\n                            columns={[\n                                { Header: <FormattedMessage id=\"productId\" defaultMessage=\"Product ID\" />, accessor: 'productId' },\n                                { Header: <FormattedMessage id=\"product\" defaultMessage=\"Product\" />, accessor: 'productName' },\n                                { Header: <FormattedMessage id=\"lot_id\" defaultMessage=\"Lot ID\" />, accessor: 'lotId' },\n                                {\n                                    Header: <FormattedMessage id=\"invoice_num\" defaultMessage=\"Invoice Num.\" />,\n                                    Cell: ({ original }) => {\n                                        return (\n                                            <span\n                                                onClick={() => {\n                                                    this.props.getFileByUrl(this.getOrderInvoiceDownloadUrl(original.invoiceNum))\n                                                }}\n                                                style={{ color: 'blue', cursor: 'pointer' }}\n                                            >\n                                                {original.invoiceNum}\n                                            </span>\n                                        )\n                                    }\n                                },\n                                { Header: <FormattedMessage id=\"invoice_date\" defaultMessage=\"Invoice Date\" />, accessor: 'invoiceDate' }\n                            ]}\n                            defaultPageSize={4}\n                            pageSizeOptions={[8, 16, 32, 64, 128]}\n                            previousText={<FormattedMessage id=\"previous\" defaultMessage=\"Previous\" />}\n                            nextText={<FormattedMessage id=\"next\" defaultMessage=\"Next\" />}\n                            noDataText={<FormattedMessage id=\"no_data\" defaultMessage=\"No data available\" />}\n                            pageText={<FormattedMessage id=\"page\" defaultMessage=\"Page\" />}\n                            ofText={<FormattedMessage id=\"of\" defaultMessage=\"Of\" />}\n                        />\n                    </React.Fragment>\n                ) : (\n                    !this.props.isLoading && (\n                        <div className=\"row\">\n                            <div className=\"col-12 text-center my-3\">\n                                <FormattedMessage id=\"try_it_again_later\" defaultMessage=\"Try it again later\" />\n                            </div>\n                        </div>\n                    )\n                )}\n            </Modal>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(PackingList)\n)\n","import React from 'react'\n\nimport ReactTooltip from 'react-tooltip'\nimport { defineMessages, injectIntl } from 'react-intl'\nimport Translation from '../global/Translation'\nimport moment from 'moment'\n\ndefineMessages({\n    pendiente_de_crear: {\n        id: 'order_in_preparation',\n        description: 'order_in_preparation',\n        defaultMessage: 'Order in preparation'\n    },\n    order_delivered: {\n        id: 'order_delivered',\n        description: 'order_delivered',\n        defaultMessage: 'Order delivered'\n    },\n    order_billed: {\n        id: 'order_billed',\n        description: 'order_billed',\n        defaultMessage: 'Order Billed'\n    },\n    order_shipped: {\n        id: 'order_shipped',\n        description: 'order_shipped',\n        defaultMessage: 'Order Shipped'\n    },\n    reservation_status_created: {\n        id: 'reservation_status_created',\n        description: 'reservation_status_created',\n        defaultMessage: 'Reservation Created'\n    },\n    order_status_created: {\n        id: 'order_status_created',\n        description: 'order_status_created',\n        defaultMessage: 'Order Created'\n    },\n    order_status_approved: {\n        id: 'order_status_approved',\n        description: 'order_status_approved',\n        defaultMessage: 'Order Confirmed'\n    },\n    order_status_preparation: {\n        id: 'order_status_preparation',\n        description: 'order_status_preparation',\n        defaultMessage: 'In Process'\n    },\n    order_status_shipped: {\n        id: 'order_status_shipped',\n        description: 'order_status_shipped',\n        defaultMessage: 'In Transit'\n    },\n    order_status_pickup: {\n        id: 'order_status_pickup',\n        description: 'order_status_pickup',\n        defaultMessage: 'Ready for pickup on Center / HUB'\n    },\n    order_status_delivered: {\n        id: 'order_status_delivered',\n        description: 'order_status_delivered',\n        defaultMessage: 'Delivered'\n    },\n    order_status_invoiced: {\n        id: 'order_status_invoiced',\n        description: 'order_status_invoiced',\n        defaultMessage: 'Order invoiced'\n    },\n    order_pending_cancellation: {\n        id: 'order_pending_cancellation',\n        description: 'order_pending_cancellation',\n        defaultMessage: 'Order Pending Cancellation'\n    },\n    order_status_pending_changes: {\n        id: 'order_status_pending_changes',\n        description: 'order_status_pending_changes',\n        defaultMessage: 'Order Pending Changes'\n    },\n    order_status_cancelled: {\n        id: 'order_status_cancelled',\n        description: 'order_status_cancelled',\n        defaultMessage: 'Order Cancelled'\n    },\n    order_status_error: {\n        id: 'order_status_error',\n        description: 'order_status_error',\n        defaultMessage: 'Error'\n    },\n    order_status_partially_delivered: {\n        id: 'order_status_partially_delivered',\n        description: 'order_status_partially_delivered',\n        defaultMessage: 'Partially delivered'\n    }\n})\n\nfunction focusSphere(index) {\n    const focusClass = ' focus'\n    const visibleClass = ' show'\n    try {\n        var spherasElement = document.getElementsByClassName('tracking-status-bar__item')\n        var advertElement = document.getElementsByClassName('timeline-advert')[0]\n        if (spherasElement[index].className.includes(focusClass)) {\n            //Eliminamos clase focus.\n            spherasElement[index].className = spherasElement[index].className.replace(focusClass, '')\n            advertElement.className += visibleClass\n        } else {\n            //Eliminamos clase focus a todos y la añadimos al index\n            advertElement.className = advertElement.className.replace(visibleClass, '')\n            Array.prototype.forEach.call(spherasElement, function(sphera) {\n                sphera.className = sphera.className.replace(focusClass, '')\n            })\n            spherasElement[index].className += focusClass\n        }\n    } catch (e) {\n        // console.log('Unable to find tracking-status-bar__item object with index ' + index)\n    }\n}\n\nlet Sphere = ({ active, current, date, statusText, warning, danger, warningMsg, sphereIndex, opposite, condensed, checkMark, delivery }) => {\n    const labelStyle = {}\n    if (opposite) labelStyle.top = '-2em'\n    if (condensed || (active && checkMark)) {\n        labelStyle.top = '2.6em'\n    }\n\n    const shouldHighlighted = delivery && delivery[sphereIndex] && delivery[sphereIndex].active && (!delivery[sphereIndex + 1] || !delivery[sphereIndex + 1].active)\n\n    return (\n        <div\n            className={`tracking-status-bar__item ${active ? 'tracking-status-bar__item--active' : ''}`}\n            data-tip={warning ? warningMsg : null}\n            onClick={() => focusSphere(sphereIndex)}\n        >\n            <div className={\n                    `tracking-status-bar__item__sphere \n                    ${condensed ? 'tracking-status-bar__item__sphere__condensed' : ''} \n                    ${warning ? 'bg-warning' : ''}\n                    ${danger ? 'bg-danger' : ''}`\n                }\n                style={ (current && checkMark) ? {width: '1.8em',height: '1.8em'} : {} }\n            >\n                { (current && checkMark && !danger) && <i className=\"fal fa-check\"></i> }\n                { (current && checkMark && danger) && <i className=\"fal fa-times\"></i> }\n            </div>\n\n            <React.Fragment>\n                {date ? (\n                    <div className={`tracking-status-bar__item__date ${warning ? 'tracking-status-bar__item__date__warning text-warning' : ''}`}\n                    >\n                        {warning && (\n                            <React.Fragment>\n                                <i className=\"fa fa-exclamation-triangle text-warning\" /> <br />\n                            </React.Fragment>\n                        )}\n                        <div className={`${shouldHighlighted ? 'tracking-status-bar__item__date__highlighted' : ''}`}>\n                            <div className=\"tracking-status-bar__item__text\">{moment(date).format('L')}</div>\n                            <span className={`${shouldHighlighted ? 'tracking-status-bar__item__date__status' : ''}`}>{statusText}</span>\n                        </div>\n                    </div>\n                ) : (\n                    <div className={`tracking-status-bar__item__date test`}>\n                        <div className={`${shouldHighlighted ? 'tracking-status-bar__item__date__highlighted' : ''}`}>\n                            <div className='tracking-status-bar__item__text'>{' '}</div>\n                            <span className={`${shouldHighlighted ? 'tracking-status-bar__item__date__status' : ''}`}>{statusText}</span>\n                        </div>\n                    </div>\n                )}\n            </React.Fragment>\n        </div>\n    )\n}\nlet LineSphere = ({ active, current, date, statusText, warning, danger, lineWarning, warningMsg, index, alternate, condensed, checkMark, delivery }) => {\n    return (\n        <React.Fragment>\n            <div className={`tracking-status-bar__line \n                            ${active ? 'tracking-status-bar__line--active' : ''} \n                            ${lineWarning ? 'bg-warning' : ''}1\n                            ${condensed ? 'tracking-status-bar__line__condensed' : ''}`}\n            />\n            <Sphere active={active}\n                    current={current}\n                    date={date}\n                    statusText={statusText}\n                    warning={warning}\n                    warningMsg={warningMsg}\n                    danger={danger}\n                    sphereIndex={index}\n                    opposite={!condensed && alternate && index%2 > 0}\n                    condensed={condensed}\n                    checkMark={{checkMark}}\n                    delivery={delivery}\n            />\n        </React.Fragment>\n    )\n}\n\nclass Timeline extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n\n        }\n    }\n\n    findLast = (items, predicate) => {\n        for (var i = items.length - 1; i >= 0; i--) {\n            var item = items[i]\n\n            if (predicate(item)) {\n                return item\n            }\n        }\n    }\n    render() {\n        const { orderStatusMap, delivery, detailsView, isVertical, isHorizontal } = this.props\n\n        if (this.props.rejected) {\n            return (\n                <div className=\"reject-col\">\n                    <div className=\"reject-indicator\">\n                        <i className=\"fa fa-times\" /> <Translation id=\"order_rejected\" defaultMessage=\"Order rejected\" />\n                    </div>\n                </div>\n            )\n        }\n        return (\n            <div className={(detailsView ? 'detail-view ' : 'preview ') + 'wrapper__tracking-status-bar'}>\n                <div className={`tracking-status-bar tracking-status-bar--ok \n                ${isVertical ? 'tracking-status-bar__vertical' : ''} \n                ${isHorizontal ? 'tracking-status-bar__horizontal' : ''}\n                `}>\n                    {delivery.map((info, index) => {\n                        return index === 0 ? (\n                            <Sphere\n                                active={info.active}\n                                current={info.current}\n                                date={this.props.withDates ? info.date : null}\n                                statusText={orderStatusMap[info.statusText] && this.props.intl.formatMessage({ id: orderStatusMap[info.statusText].textToShow })}\n                                // warning={info.alert} para mostrar bolas en amarillo rellenas\n                                warning={info.alert}\n                                danger={info.danger}\n                                warningMsg={this.props.intl.formatMessage({\n                                    id: 'something_went_wrong_before_delivery',\n                                    defaultMessage: 'Something went wrong with the process before delivery'\n                                })}\n                                sphereIndex={index}\n                                condensed={this.props.condensed}\n                                checkMark={this.props.checkMark}\n                                delivery={delivery}\n                            />\n                        ) : (\n                            <LineSphere\n                                active={info.active}\n                                current={info.current}\n                                date={this.props.withDates ? info.date : null}\n                                statusText={orderStatusMap[info.statusText] && this.props.intl.formatMessage({ id: orderStatusMap[info.statusText].textToShow })}\n                                // warning={info.alert} para mostrar bolas en amarillo rellenas\n                                warning={info.alert}\n                                danger={info.danger}\n                                lineWarning={info.alert && this.findLast(delivery, item => item.active) == index} //la linea solo amarilla si estamos en el ultimo step y tenemos alerta\n                                warningMsg={this.props.intl.formatMessage({\n                                    id: 'something_went_wrong_before_delivery',\n                                    defaultMessage: 'Something went wrong with the process before delivery'\n                                })}\n                                index={index}\n                                alternate={this.props.alternate}\n                                condensed={this.props.condensed}\n                                checkMark={this.props.checkMark}\n                                delivery={delivery}\n                            />\n                        )\n                    })}\n                </div>\n                <div className=\"timeline-advert show\">\n                    <Translation id=\"click_stage_timeline\" defaultMessage=\"Clic on any stage of the timeline\" />\n                </div>\n                <ReactTooltip type=\"warning\" backgroundColor=\"#f7d21d\" effect=\"solid\" place=\"bottom\" />\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(Timeline)","import { getToken } from '../../store/login/reducers';\nimport { getFileByUrl } from '../../store/orders/actions';\nimport { getOrderDetailsHead, getInvoices } from '../../store/orders/reducers';\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport Translation from '../global/Translation'\nimport moment from 'moment'\nimport { injectIntl } from 'react-intl'\nimport Timeline from './Timeline'\nimport Button from '../global/Button'\nimport confirm from '../global/confirm'\nimport PackingList from './PackingList'\nimport { canDeleteOrders, canEditOrders, getOrderStatusMap, getStatusMap } from '../../store/orders/reducers'\nimport { rejectOrder } from '../../store/orders/actions'\nimport { getIsIkeaCenter } from '../../store/centers/reducers'\nimport { getShippingAddresses } from '../../store/shipping-addresses/reducers'\nimport { dispatchPushURL } from '../../store/ui/actions'\nimport GoBack from '../global/GoBack'\nimport Modal from '../global/Modal'\nimport iconFile from '../../assets/img/icons/file.svg'\nimport iconPrint from '../../assets/img/icons/print.svg'\nimport ReactTable from 'react-table'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        canEditOrders: canEditOrders(state),\n        canDeleteOrders: canDeleteOrders(state),\n        shippingAddressesByUser: getShippingAddresses(state),\n        statusMap: getStatusMap(state),\n        orderStatusMap: getOrderStatusMap(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        orderDetailsHead: getOrderDetailsHead(state),\n        invoices: getInvoices(state),\n        reservationId: match.params.open,\n        token:getToken(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        rejectOrder: (reservationId, orderId) => {\n            return dispatch(rejectOrder(reservationId, orderId))\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        getFileByUrl: url => dispatch(getFileByUrl(url))\n    }\n}\n\nconst DisplayShippingAddress = props => {\n    let { shippingAddress, shippingAddressId, shippingAddressesByUser } = props\n    if (!shippingAddress) {\n        shippingAddress =\n            shippingAddressesByUser && shippingAddressId\n                ? shippingAddressesByUser.filter(shippingAddress => {\n                      return parseInt(shippingAddress.shippingAddressId) === parseInt(shippingAddressId)\n                  })[0]\n                : null\n    }\n\n    return shippingAddress ? (\n        <div>\n            {shippingAddress.customerName}\n            <br />\n            {shippingAddress.address + '' + shippingAddress.zipCode}\n            <br />\n            {shippingAddress.city + ' ' + shippingAddress.country}\n        </div>\n    ) : null\n}\n\nclass OrderHeader extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedDelivery: 0 // siempre seleccionamos la 0 porque se ordenan en el metodo getOrderStatusAndDelivery\n        }\n        this.getOrderInvoiceDownloadUrl = this.getOrderInvoiceDownloadUrl.bind(this)\n        this.getOrderImagesDownloadUrl = this.getOrderImagesDownloadUrl.bind(this)\n    }\n    getOrderInvoiceDownloadUrl(invoiceNum) {\n        // return process.env.REACT_APP_API_HOST + '/users/order-invoice/' + invoiceNum + '/?authToken=' + this.props.token\n        return process.env.REACT_APP_API_HOST + '/users/order-invoice/' + invoiceNum\n    }\n\n    getOrderImagesDownloadUrl() {\n        return process.env.REACT_APP_API_HOST + '/users/order-images?reservationId=' + this.props.reservationId + '&lang=' + this.props.lang\n        // return process.env.REACT_APP_API_HOST + '/users/order-images?reservationId=' + this.props.reservationId + '&lang=' + this.props.lang + '&authToken=' + this.props.token\n    }\n\n    confirmRejectOrder = (reservationId, orderId, intl) => {\n        return confirm(intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER' }), { intl: intl }).then(\n            confirm => {\n                //TODO: actualizar este registro (recargando, mirar a ver opciones)\n                this.props.rejectOrder(reservationId, orderId).then(() => {\n                    this.props.fetchOrders()\n                })\n            },\n            cancel => {\n                return Promise.reject()\n            }\n        )\n    }\n\n    rejectOrder = (reservationId, orderId) => {\n        this.confirmRejectOrder(reservationId, orderId, this.props.intl)\n    }\n\n    writeContent = printWindow => {\n        printWindow.document.write('<html><head>')\n        printWindow.document.write(document.getElementsByTagName('head')[0].innerHTML)\n\n        printWindow.document.write('</head><body class=\"p-4 my-4\">')\n        printWindow.document.write(this.props.ordersGroup.innerHTML)\n        printWindow.document.write('</body></html>')\n\n        return Promise.resolve(printWindow)\n    }\n\n    downloadPdf = () => {\n        let printWindow = window.open('', 'PRINT', 'height=400,width=600')\n        setTimeout(() => {\n            this.writeContent(printWindow).then(printWindow => {\n                setTimeout(() => {\n                    printWindow.focus()\n                    printWindow.print()\n                    printWindow.close()\n                }, 2000)\n            })\n        }, 100)\n\n        return false\n    }\n    showInvoicesModal = () => {\n        this.setState({ showInvoicesModal: true })\n    }\n\n    closeInvoicesModal = () => {\n        this.setState({ showInvoicesModal: false })\n    }\n    render() {\n        const { dataOrder, orderStatusMap } = this.props\n\n        let activeTimeLine = dataOrder.timelines && dataOrder.timelines.length > 0 ? dataOrder.timelines[this.state.selectedDelivery].timeline : null\n\n        return (\n            <div id={dataOrder.reservationId}>\n                <div style={{ backgroundColor: 'white', padding: '1rem', marginRight: '-15px', marginLeft: '-15px' }}>\n                    <div className=\"row\" style={{ marginLeft: '0px' }}>\n                        <div className=\"col-6\">\n                            <GoBack text={this.props.intl.formatMessage({ id: 'back' })} newView={true} />\n                        </div>\n                        <div className=\"col-6\" style={{ display: 'flex', alignItems: 'center' }}>\n                            <div className=\"col-12 bt-group-detail\">\n                                <Button inline size=\"small\" className=\"mr-2\" onClick={() => this.setState({ showPackingList: true })}>\n                                    <img alt=\"\" className=\"icon\" src={iconFile} />\n                                    <Translation id=\"packing_list\" defaultMessage=\"Packing list\" />\n                                </Button>\n\n                                {this.props.invoices && this.props.invoices.length > 0 && (\n                                    <Button inline size=\"small\" onClick={this.showInvoicesModal}>\n                                        <img alt=\"\" className=\"icon\" src={iconFile} />\n                                        <Translation id=\"view_invoice\" defaultMessage=\"View invoice\" />\n                                    </Button>\n                                )}\n\n                                {dataOrder && dataOrder.orderLines && (\n                                    <Button inline size=\"small\" onClick={this.downloadPdf}>\n                                        <img alt=\"\" className=\"icon\" src={iconPrint} />\n                                        <Translation id=\"print\" defaultMessage=\"Print\" />\n                                    </Button>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n                    <br></br>\n                    {dataOrder.orderId && (\n                        <React.Fragment>\n                            <b className=\"font-weight-bold\">\n                                <Translation id=\"reservation_#\" defaultMessage=\"Reservation #\" /> : <span className=\"font-weight-bold\">{dataOrder.reservationId}</span>\n                            </b>\n                            <br></br>\n                            <b className=\"font-weight-bold\">\n                                <Translation id=\"order_#\" defaultMessage=\"Order #\" /> : <span className=\"font-weight-bold\">{dataOrder.orderId}</span>\n                            </b>\n                        </React.Fragment>\n                    )}\n                    <div className=\"order-details-header\">\n                        {dataOrder.ecosentino_is_editable && dataOrder.reservationStatus !== 'PENDING_CANCELLATION' && dataOrder.reservationStatus !== 'PENDING_CHANGES' && (\n                            <React.Fragment>\n                                <div>\n                                    <button className=\"bt bt-not-style\" style={{ paddingLeft: 0 }} onClick={() => this.rejectOrder(dataOrder.reservationId, dataOrder.orderId)}>\n                                        <i className=\"fal fa-times\" /> <Translation id=\"cancel_order\" defaultMessage=\"Cancel order\" />\n                                    </button>                 \n                                </div>\n                                <div>\n                                    <button\n                                        className=\"bt bt-not-style\"\n                                        onClick={() => {\n                                            this.props.redirect(\n                                                this.props.intl\n                                                    .formatMessage({ id: 'ROUTE_PROFILE' })\n                                                    .replace(':filter', 'edit-order')\n                                                    .replace(':open', dataOrder.orderId)\n                                            )\n                                        }}\n                                    >\n                                        <i className=\"fal fa-pencil\" /> <Translation id=\"edit_order\" defaultMessage=\"Edit order\" />\n                                    </button>\n                                </div>\n                            </React.Fragment>\n                        )}\n\n                        <div className=\"d-flex justify-content-end\" style={{ whiteSpace: 'nowrap' }}>\n                            <button className=\"bt bt-not-style\" onClick={this.props.toggleShowDetails}>\n                                {this.props.showDetails ? (\n                                    <span>\n                                        <span>\n                                            <Translation id=\"hide_details\" defaultMessage=\"Hide details\" />\n                                        </span>\n                                        <i style={{ marginLeft: '8px' }} className=\"fal fa-chevron-up\" />\n                                    </span>\n                                ) : (\n                                    <span>\n                                        <span>\n                                            <Translation id=\"show_details\" defaultMessage=\"Show details\" />\n                                        </span>\n                                        <i style={{ marginLeft: '8px' }} className=\"fal fa-chevron-down\" />\n                                    </span>\n                                )}\n                            </button>\n                        </div>\n                    </div>\n                    <div className={`box-details-order p-1 card-body collapse ${this.props.showDetails ? 'd-flex' : ''}`}>\n                        <div>\n                            <span className=\"font-weight-bold\">\n                                <Translation id=\"shipping_to\" defaultMessage=\"Shipping To\" />:{' '}\n                            </span>\n                            <div className=\"value pt-1\">\n                                <DisplayShippingAddress\n                                    shippingAddress={dataOrder.shippingAddress}\n                                    shippingAddressId={dataOrder.shippingAddressId}\n                                    shippingAddressesByUser={this.props.shippingAddressesByUser}\n                                />\n                            </div>\n                            {dataOrder.po && (\n                              <React.Fragment>\n                                  <br></br>\n                                  <b style={{fontWeight: 500}}>\n                                      PO: <span className=\"font-weight-normal\">{dataOrder.po}</span>\n                                  </b>\n                              </React.Fragment>\n                            )}\n                            {dataOrder.comments && (\n                              <React.Fragment>\n                                  <br></br>\n                                  <b style={{fontWeight: 500}}>\n                                      <Translation id=\"comment\" defaultMessage=\"Comments\" />: <span className=\"font-weight-normal\">{dataOrder.comments}</span>\n                                  </b>\n                              </React.Fragment>\n                            )}\n                        </div>\n                        <div className=\"d-flex flex-column font-weight-bold\">\n                            <div className=\"d-flex\">\n                                <span style={{ marginRight: '8px' }}>\n                                    <Translation id=\"reservation_#\" defaultMessage=\"Reservation #\" />\n                                </span>\n                                <span>{dataOrder.reservationId}</span>\n                            </div>\n                            <div className=\"d-flex\">\n                                <span style={{ marginRight: '8px' }}>\n                                    <Translation id=\"order_date\" defaultMessage=\"Order date\" />\n                                </span>\n                                <span>\n                                    {dataOrder.orderCreationDate\n                                        ? moment(dataOrder.orderCreationDate).format('L')\n                                        : dataOrder.createdDate\n                                        ? moment(dataOrder.createdDate).format('L')\n                                        : '--'}\n                                </span>\n                            </div>\n                            <div className=\"d-flex\">\n                                <span style={{ marginRight: '8px' }}>\n                                    <Translation id=\"order_type\" defaultMessage=\"Order Type\" />\n                                </span>\n                                <span>\n                                    <Translation id={dataOrder.shippingType} />\n                                </span>\n                            </div>\n                            <div className=\"d-flex\">\n                                <span style={{ marginRight: '8px' }}>\n                                    <Translation id=\"supplier_center\" defaultMessage=\"Supplier center\" />\n                                </span>\n                                <span>{dataOrder.centerId && `${dataOrder.centerName} (${dataOrder.centerId})`}</span>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                {activeTimeLine && (\n                    <div className=\"mt-3\" style={{ backgroundColor: 'white', padding: '1rem', margin: '0', marginLeft: '-15px', marginRight: '-15px' }}>\n                        <Timeline\n                            detailsView={false /*this.props.isOrderDetails*/}\n                            // delivery={statusAndDelivery.delivery}\n                            delivery={activeTimeLine}\n                            rejected={dataOrder.rejected}\n                            orderStatusMap={orderStatusMap}\n                            withDates\n                        />\n                    </div>\n                )}\n                {this.state.showInvoicesModal && (\n                    <Modal title={<Translation id=\"invoices\" defaultMessage=\"Invoices\" />} onClose={this.closeInvoicesModal}>\n                        <ReactTable\n                            data={this.props.invoices}\n                            columns={[\n                                {\n                                    Header: <Translation id=\"invoice_num\" defaultMessage=\"Invoice Num.\" />,\n                                    Cell: ({ original }) => {\n                                        return (\n                                            <span\n                                                onClick={e => {\n                                                    e.preventDefault()\n\n                                                    this.props.getFileByUrl(this.getOrderInvoiceDownloadUrl(original.invoiceNum))\n                                                }}\n                                                style={{ color: 'blue', cursor: 'pointer' }}\n                                            >\n                                                {original.invoiceNum}\n                                            </span>\n                                        )\n                                    }\n                                },\n                                { Header: <Translation id=\"invoice_date\" defaultMessage=\"Invoice Date\" />, accessor: 'invoiceDate' }\n                            ]}\n                            defaultPageSize={4}\n                            pageSizeOptions={[8, 16, 32, 64, 128]}\n                            previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                            nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                            noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                            pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                            ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                        />\n                    </Modal>\n                )}\n\n                {this.state.showPackingList && this.props.orderDetailsHead && (\n                    <PackingList\n                        reservationId={this.props.reservationId}\n                        orderId={this.props.orderDetailsHead.orderId}\n                        packingList={this.props.packingList}\n                        onClose={() => this.setState({ showPackingList: false })}\n                        canEditOrders={false}\n                    />\n                )}\n            </div>\n        )\n    }\n}\n\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(OrderHeader)\n    )\n)\n","import React from 'react'\nimport { injectIntl, FormattedMessage } from 'react-intl'\nimport { getBusinesSegmentOptions, getUseOptions, getHasSegmentationV3, getChannelOptionsV3, getTypologyOptionsV3 } from '../../store/segmentation/reducers'\nimport { getShippingMethod } from '../../store/centers/reducers'\nimport { connect } from 'react-redux'\nimport SegmentationTranslation from '../segmentation/SegmentationTranslation'\nimport { capitalizeFirstLetter } from '../../helpers'\n\nconst mapStateToProps = state => {\n    return {\n        businesSegmentOptions: getBusinesSegmentOptions(state),\n        useOptions: getUseOptions(state),\n        shippingMethod: getShippingMethod(state),\n        segmentationV3: getHasSegmentationV3(state),\n        channelOptionsV3: getChannelOptionsV3(state),\n        typologyOptionsV3: getTypologyOptionsV3(state)\n    }\n}\nclass LineSegmentation extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { showHelp: false }\n    }\n\n    render() {\n        let { line, businesSegmentOptions, useOptions, segmentationV3, channelOptionsV3, typologyOptionsV3 } = this.props\n\n        let productBS, businessSegment, channel, subchannel, salesforceId, projectId, typology, use\n        if (line.segmentation) {\n            if (!segmentationV3) {\n                productBS = line.businessSegment === null ? 'NOT' : line.businessSegment\n                businessSegment = businesSegmentOptions ? businesSegmentOptions[productBS] : undefined\n                channel = businessSegment ? businessSegment.channels[line.channel] : undefined\n                subchannel = channel ? channel.subchannels[line.subchannel] : undefined\n                typology = subchannel ? subchannel.typologies[line.typology] : undefined\n                use = useOptions ? useOptions.find(option => line.use === option.id) : undefined\n            } else {\n                channel = channelOptionsV3 ? channelOptionsV3[line.channel] : undefined\n                // subchannel = channel ? channel.subchannels[line.subchannel] : undefined //subchannel is no longer needed to retrieve the salesforceid\n                businessSegment = line.segmentation.businessSegment ? line.segmentation.businessSegment : undefined\n                productBS = line.businessSegment === null ? 'NOT' : line.businessSegment\n                salesforceId = channel ? channel.salesforceRelations[line.segmentation.salesforceId] : undefined\n                projectId = salesforceId && line.segmentation.projectId ? salesforceId.projectOptions[line.segmentation.projectId] : undefined\n                typology = typologyOptionsV3 ? typologyOptionsV3.find(option => line.typology === option.id) : undefined\n                use = useOptions ? useOptions.find(option => line.use === option.id) : undefined\n            }\n        }\n\n        return (\n            Object.values(line.segmentation).some(value => {\n                if (Array.isArray(value)) return value.length > 0\n                else return value !== null\n            }) &&\n            (this.props.showAsList ? (\n                <ul style={{ listStyle: 'none', paddingLeft: '0px' }}>\n                    {line.segmentation.businessSegment && (\n                        <li style={{display: this.props.hideSpans? 'inline-block':'list-item'}}>\n                            {!this.props.hideSpans &&\n                                <React.Fragment>\n                                    <FormattedMessage id=\"business_segment\" defaultMessage=\"business_segment\" />:&nbsp;\n                                </React.Fragment>\n                            }\n                            <strong>\n                                {line.segmentation.businessSegment && productBS && <FormattedMessage id={productBS} />}\n                            </strong>\n                        </li>\n                    )}\n                    {channel && (\n                        <li style={{display: this.props.hideSpans? 'inline-block':'list-item'}}>\n                            {this.props.hideSpans ? ' / ' :\n                                <React.Fragment>\n                                    <FormattedMessage id=\"channel\" defaultMessage=\"channel\" />:&nbsp;\n                                </React.Fragment>}\n                            <strong>\n                                <SegmentationTranslation channel={line.channel} />\n                            </strong>\n                        </li>\n                    )}\n                    {subchannel && (\n                        <li style={{display: this.props.hideSpans? 'inline-block':'list-item'}}>\n                            {this.props.hideSpans ? ' / ':\n                                <React.Fragment>\n                                    <FormattedMessage id=\"subchannel\" defaultMessage=\"subchannel\" />:&nbsp;\n                                </React.Fragment>}\n                            <strong>\n                                {subchannel && capitalizeFirstLetter(subchannel.name)}\n                            </strong>\n                        </li>\n                    )}\n\n                    {typology && (\n                        <li style={{display: this.props.hideSpans? 'inline-block':'list-item'}}>\n                            {this.props.hideSpans ? ' / ':\n                                <React.Fragment>\n                                    <FormattedMessage id=\"typology\" defaultMessage=\"Typology\" />:&nbsp;\n                                </React.Fragment>}\n                            <strong>\n                                {capitalizeFirstLetter(typology.name)}\n                            </strong>\n                        </li>\n                    )}\n                    {salesforceId && (\n                        <li style={{display: this.props.hideSpans? 'inline-block':'list-item'}}>\n                            {this.props.hideSpans ? ' / ':\n                                <React.Fragment>\n                                    <FormattedMessage id=\"account_id\" defaultMessage=\"Account ID\" />:&nbsp;\n                                </React.Fragment>}\n                            <strong>\n                                {capitalizeFirstLetter(salesforceId.name)}\n                            </strong>\n                        </li>\n                    )}\n                    {projectId && (\n                        <li style={{display: this.props.hideSpans? 'inline-block':'list-item'}}>\n                            {this.props.hideSpans ? ' / ':\n                                <React.Fragment>\n                                    <FormattedMessage id=\"projectId\" defaultMessage=\"Project Id\" />:&nbsp;\n                                </React.Fragment>}\n                            <strong>\n                                {capitalizeFirstLetter(projectId.projectName)}\n                            </strong>\n                        </li>\n                    )}\n                    {use && (\n                        <li style={{display: this.props.hideSpans? 'inline-block':'list-item'}}>\n                            {this.props.hideSpans ? ' / ':\n                                <React.Fragment>\n                                    <FormattedMessage id=\"use\" defaultMessage=\"Use\" />:&nbsp;\n                                </React.Fragment>}\n                            <strong>\n                                {capitalizeFirstLetter(use.name)}\n                            </strong>\n                        </li>\n                    )}\n                </ul>\n            ) : (\n                <div className=\"segmentation\">\n                    <div\n                        className=\"segmentation__button_info\"\n                        onClick={() => {\n                            this.setState({ showHelp: !this.state.showHelp })\n                        }}\n                    >\n                        <i className=\"fal fa-info-circle\" style={{ margin: '5px' }} />\n                        <FormattedMessage id=\"show_segmentation\" defaultMessage=\"Show segmentation\" />\n                    </div>\n                    <div className={`info ${!this.state.showHelp ? 'info--hidden' : ''}`}>\n                        {line.segmentation.businessSegment && (\n                            <span>\n                                <strong>\n                                    <FormattedMessage id=\"business_segment\" defaultMessage=\"business_segment\" />\n                                    :&nbsp;\n                                </strong>\n                                {line.segmentation.businessSegment && <FormattedMessage id={productBS} />}\n                            </span>\n                        )}\n                        {channel && (\n                            <span>\n                                <strong>\n                                    <FormattedMessage id=\"channel\" defaultMessage=\"channel\" />\n                                    :&nbsp;\n                                </strong>\n                                <SegmentationTranslation channel={line.channel} />\n                            </span>\n                        )}\n                        {subchannel && (\n                            <span>\n                                <strong>\n                                    <FormattedMessage id=\"subchannel\" defaultMessage=\"subchannel\" />\n                                    :&nbsp;\n                                </strong>\n                                {subchannel && subchannel.name}\n                            </span>\n                        )}\n\n                        {typology && (\n                            <span>\n                                <strong>\n                                    <FormattedMessage id=\"typology\" defaultMessage=\"Typology\" />\n                                    :&nbsp;\n                                </strong>\n                                {typology.name}\n                            </span>\n                        )}\n                        {salesforceId && (\n                            <span>\n                                <strong>\n                                    <FormattedMessage id=\"account_id\" defaultMessage=\"Account ID\" />:&nbsp;\n                                    :&nbsp;\n                                </strong>\n                                {salesforceId.name}\n                            </span>\n                        )}\n                        {projectId && (\n                            <span>\n                                <strong>\n                                    <FormattedMessage id=\"projectId\" defaultMessage=\"Project Id\" />\n                                    :&nbsp;\n                                </strong>\n                                {projectId.projectName}\n                            </span>\n                        )}\n                        {use && (\n                            <span>\n                                <strong>\n                                    <FormattedMessage id=\"use\" defaultMessage=\"Use\" />\n                                    :&nbsp;\n                                </strong>\n                                {use.name}\n                            </span>\n                        )}\n                    </div>\n                </div>\n            ))\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(LineSegmentation)\n)\n","import React from 'react'\r\nimport Translation from '../global/Translation'\r\nimport { connect } from 'react-redux'\r\nimport ProductDisplayName from '../global/ProductDisplayName'\r\nimport { closeOrderLineModal, toggleModalOrderLineDetail } from '../../store/orders/actions'\r\nimport { getActiveOrderLine, showModalLineDetail } from '../../store/orders/reducers'\r\nimport ProductImage from '../catalog/ProductImage'\r\nimport DisplayOutletIndicator from '../catalog/rectangleResult/displays/DisplayOutletIndicator'\r\nimport {isEmserUser} from \"../../store/login/reducers\";\r\nimport getNumberFormat from \"../getNumberFormat\";\r\nimport DisplayThickness from \"../catalog/rectangleResult/displays/DisplayThickness\";\r\nimport {getAdaptedFormat} from \"../../helpers\";\r\nimport LineSegmentation from \"../cart-line/LineSegmentation\";\r\n\r\nconst mapStateToProps = state => {\r\n    return {\r\n        isEmserUser: isEmserUser(state),\r\n        showModal: showModalLineDetail(state),\r\n        activeOrderLine: getActiveOrderLine(state),\r\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state)\r\n    }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n    return {\r\n        onToggleLineDetail: orderLine => {\r\n            dispatch(toggleModalOrderLineDetail(orderLine))\r\n        },\r\n        onClose: () => {\r\n            dispatch(closeOrderLineModal())\r\n        }\r\n    }\r\n}\r\n\r\nclass OrderFullMobile extends React.Component {\r\n    render() {\r\n        const { orderLines, lang, adaptedFormat } = this.props\r\n    \r\n        return (\r\n            <React.Fragment>\r\n                {orderLines &&\r\n                    orderLines.length > 0 &&\r\n                    orderLines.map(orderLine => {\r\n                        let numberFormat = getNumberFormat(lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\r\n                        if(orderLine.coin === 'JPY') {\r\n                            numberFormat = getNumberFormat(lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\r\n                        }\r\n                        return (\r\n                            <div\r\n                                className=\"d-flex order-details justify-content-around\"\r\n                                style={{ borderTop: '1px solid #EBEBEB', backgroundColor: 'white', padding: '1em', gap: '1em' }}\r\n                            >\r\n                                <div>\r\n                                    <ProductImage product={orderLine.product} />\r\n                                </div>\r\n                                <div className=\"order-details-txt\">\r\n                                    {orderLine.outlet_quality && <DisplayOutletIndicator outletQuality={orderLine.outlet_quality} />}\r\n                                    {orderLine && orderLine.product && orderLine.product.productId && (\r\n                                        <div>\r\n                                            <b>Material: </b>\r\n                                            <ProductDisplayName product={orderLine.product} />\r\n                                        </div>\r\n                                    )}\r\n                                    {orderLine && orderLine.product && orderLine.product.brand && (\r\n                                        <div>\r\n                                            <b>Marca: </b>\r\n                                            {orderLine.product.brand}\r\n                                        </div>\r\n                                    )}\r\n                                    {orderLine && orderLine.product && orderLine.product.productId && (\r\n                                        <div>\r\n                                            <b>\r\n                                                <Translation id=\"material_id\" defaultMessage=\"Material Id\" />:{' '}\r\n                                            </b>\r\n                                            {orderLine.product.productId}\r\n                                        </div>\r\n                                    )}\r\n                                    {orderLine && orderLine.product && orderLine.product.finish && (\r\n                                        <div>\r\n                                            <b>\r\n                                                <Translation id=\"finish\" defaultMessage=\"Finish\" />:{' '}\r\n                                            </b>\r\n                                            <Translation id={orderLine.product.finish} />\r\n                                        </div>\r\n                                    )}\r\n\r\n                                    {orderLine.lot_id && (\r\n                                        <div>\r\n                                            <b>\r\n                                                <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />:{' '}\r\n                                            </b>\r\n                                            {orderLine.lot_id}\r\n                                        </div>\r\n                                    )}\r\n                                    {orderLine && orderLine.product && orderLine.product.format && (\r\n                                        <div>\r\n                                            <b>\r\n                                                <Translation id=\"format\" defaultMessage=\"Format\" />:{' '}\r\n                                            </b>\r\n                                            {adaptedFormat(orderLine.product.format, { upper: true, showUnits: true })}\r\n                                        </div>\r\n                                    )}\r\n\r\n                                    {orderLine && orderLine.product && orderLine.product.thickness && (\r\n                                      <div>\r\n                                          <b>\r\n                                              <Translation id=\"thickness\" defaultMessage=\"Thickness\" />:{' '}\r\n                                          </b>\r\n                                          <DisplayThickness thickness={orderLine.product.thickness} string />\r\n                                      </div>\r\n                                    )}\r\n                                    {orderLine.serializedLine && (\r\n                                        <div>\r\n                                            <b style={{ padding: 0 }}>Segmentación</b>\r\n                                        </div>\r\n                                    )}\r\n                                    {orderLine.segmentation && (\r\n                                        <div>\r\n                                            <LineSegmentation line={orderLine} responsive={true} showAsList />\r\n                                        </div>\r\n                                    )}\r\n\r\n                                    <div>\r\n                                        <b>Precio: </b>\r\n                                        {numberFormat.format(orderLine.import)} {orderLine.coin}   \r\n                                    </div>\r\n                                    <div>\r\n                                        <b>Cantidad en pedido: </b>\r\n                                        {orderLine.reservation_quantity == 0 ? (\r\n                                            <Translation id=\"added_line\" defaultMessage=\"Added line by center\" />\r\n                                        ) : (\r\n                                            parseInt(orderLine.reservation_quantity)\r\n                                        )}\r\n                                    </div>\r\n                                    <div>\r\n                                        <b>Cantidad solicitada: </b>\r\n                                        {orderLine.reservation_quantity == 0 ? (\r\n                                            <Translation id=\"added_line\" defaultMessage=\"Added line by center\" />\r\n                                        ) : (\r\n                                            parseInt(orderLine.reservation_quantity)\r\n                                        )}\r\n                                    </div>\r\n                                    <div>\r\n                                        <b>Fecha de envío solicitada: </b>\r\n                                        {orderLine.preferredDeliveryDate}\r\n                                    </div>\r\n\r\n                                    <div>\r\n                                        <b>Comentarios: </b>\r\n                                        {orderLine.comments ? orderLine.comments : '--'}\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        )\r\n                    })}\r\n            </React.Fragment>\r\n        )\r\n    }\r\n}\r\n\r\nexport default connect(\r\n    mapStateToProps,\r\n    mapDispatchToProps\r\n)(OrderFullMobile)\r\n","import React from 'react'\nimport ProductDisplayName from '../global/ProductDisplayName'\nimport DisplayThickness from '../catalog/rectangleResult/displays/DisplayThickness'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../global/Translation'\nimport ProductImage from '../catalog/ProductImage'\nimport DisplayOutletIndicator from '../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport {getAdaptedFormat} from \"../../helpers\";\nimport {connect} from \"react-redux\";\nimport getNumberFormat from '../getNumberFormat'\nimport moment from \"moment/moment\";\nimport LineSegmentation from \"../cart-line/LineSegmentation\";\n\n\nconst CUT_TO_SIZE_MATERIALS = ['80457', '80461', '80451', '80458']\n\nconst OrderDetailsTableV2 = props => {\n    const { orderLines, orderToEdit, editMode, isEmserUser, lang } = props\n\n    if (editMode && !orderToEdit) return null\n\n    const showPrice = () => !isEmserUser && !CUT_TO_SIZE_MATERIALS.includes(String(orderLines[0].material_id))\n\n    return (\n\n        <React.Fragment>\n            {orderLines &&\n                orderLines.length > 0 &&\n                orderLines.map(orderLine => {\n                    let numberFormat = getNumberFormat(lang, { maximumFractionDigits: 2, minimumFractionDigits: 2 })\n                    if(orderLine.coin === 'JPY') {\n                        numberFormat = getNumberFormat(lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n                    }\n                    return (\n                        <div\n                            className=\"d-flex order-details\"\n                            style={{\n                                // borderBottom: '1px solid #EBEBEB',\n                                borderTop: '1px solid #EBEBEB',\n                                backgroundColor: 'white',\n                                // marginBottom: '1rem',\n                                padding: '1em',\n                                marginLeft: '-15px',\n                                overflowX: 'auto',\n                                marginRight: '-15px'\n                            }}\n                        >\n                            <div style={{ minWidth: '110px', marginRight: '3rem', width: '110px', height: '110px', flexGrow: 1 }}>\n                                <ProductImage product={orderLine.product} />\n                            </div>\n\n                            <div className=\"d-flex flex-column\" style={{ marginRight: '3rem', flexGrow: 1, width: '15%' }}>\n                                {orderLine.product ? (\n                                    <React.Fragment>\n                                        {orderLine.outlet_quality && <DisplayOutletIndicator outletQuality={orderLine.outlet_quality} />}\n                                        {orderLine && orderLine.product && orderLine.product.productId && (\n                                            <div>\n                                                <b><Translation id=\"material\" defaultMessage=\"Material\" />:</b>\n                                                <br></br>\n                                                <ProductDisplayName product={orderLine.product} />\n                                            </div>\n                                        )}\n                                        {orderLine && orderLine.product && orderLine.product.brand && (\n                                            <div>\n                                                <b><Translation id=\"brand\" defaultMessage=\"Brand\" />:</b>\n                                                <br></br>\n                                                {orderLine.product.brand}\n                                            </div>\n                                        )}\n                                        {orderLine && orderLine.product && orderLine.product.finish && (\n                                            <div>\n                                                <b><Translation id=\"finish\" defaultMessage=\"Finish\" />:</b>\n                                                <br></br>\n                                                {props.intl.formatMessage({ id: orderLine.product.finish })}\n                                            </div>\n                                        )}\n                                        {orderLine && orderLine.product && orderLine.product.productId && (\n                                            <div>\n                                                <b>\n                                                    <Translation id=\"material_id\" defaultMessage=\"Material Id\" />:\n                                                </b>\n                                                <br></br>\n                                                {orderLine.product.productId}\n                                            </div>\n                                        )}\n                                        {orderLine.lot_id && (\n                                            <React.Fragment>\n                                                <b>\n                                                    <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />:\n                                                </b>\n                                                <br></br>\n                                                {orderLine.lot_id}\n                                            </React.Fragment>\n                                        )}\n                                        {orderLine && orderLine.product && orderLine.product.format && (\n                                            <div>\n                                                <b>\n                                                    <Translation id=\"format\" defaultMessage=\"Format\" />:\n                                                </b>\n                                                <br></br>\n                                                {props.adaptedFormat(orderLine.product.format, { upper: true, showUnits: true })}\n                                            </div>\n                                        )}\n                                        {orderLine && orderLine.product && orderLine.product.thickness && (\n                                          <div>\n                                              <b>\n                                                  <Translation id=\"thickness\" defaultMessage=\"Thickness\" />:\n                                              </b>\n                                              <br></br>\n                                              <DisplayThickness thickness={orderLine.product.thickness} string />\n                                          </div>\n                                        )}\n                                    </React.Fragment>\n                                ) : (\n                                    <React.Fragment>\n                                        {orderLine && orderLine.short_text && (\n                                            <div>\n                                                <b><Translation id=\"material\" defaultMessage=\"Material\" />:</b>\n                                                <br></br>\n                                                {orderLine.short_text}\n                                            </div>\n                                        )}\n                                        {orderLine && orderLine.material_id && (\n                                            <div>\n                                                <b>\n                                                    <Translation id=\"material_id\" defaultMessage=\"Material Id\" />:\n                                                </b>\n                                                <br></br>\n                                                {orderLine.material_id}\n                                            </div>\n                                        )}\n                                    </React.Fragment>\n                                )}\n                            </div>\n\n                            <div className=\"d-flex flex-column box-segmentation\" style={{ marginRight: '3rem', flexGrow: 3, width: 'min-content' }}>\n                                {orderLine.segmentation && (\n                                    <React.Fragment>\n                                        <b style={{ paddingInline: '40px' }}><Translation id=\"segmentation\" defaultMessage=\"Segmentation\" /></b>\n                                        <LineSegmentation line={orderLine} showAsList />\n                                    </React.Fragment>\n                                )}\n                            </div>\n                            <div className=\"d-flex flex-column\" style={{ marginRight: '3rem', flexGrow: 3, width: 'min-content' }}>\n                                <b><Translation id=\"comment\" defaultMessage=\"Comments\" /></b>\n                                <br></br>\n                                {orderLine.comments ? orderLine.comments : '--'}\n                            </div>\n                            <div className=\"d-flex flex-column box-price\" style={{ marginLeft: 'auto', flexGrow: 2, width: 'min-content' }}>\n                                {showPrice() && (\n                                    <div>\n                                        <b><Translation id=\"price\" defaultMessage=\"Price\" />: </b>\n                                        <br></br>\n                                        {numberFormat.format(orderLine.import)} {orderLine.coin}                                      \n                                    </div>\n                                )}\n                                <div>\n                                    <b><Translation id=\"order_quantity\" defaultMessage=\"Order quantity\" />: </b>\n                                    <br></br>\n                                    {orderLine.reservation_quantity == 0 ? (\n                                        <Translation id=\"added_line\" defaultMessage=\"Added line by center\" />\n                                    ) : (\n                                        parseInt(orderLine.reservation_quantity)\n                                    )}\n                                </div>\n                                <div>\n                                    <b><Translation id=\"quantity_request\" defaultMessage=\"Quantity requested\" />: </b>\n                                    <br></br>\n                                    {orderLine.reservation_quantity == 0 ? (\n                                        <Translation id=\"added_line\" defaultMessage=\"Added line by center\" />\n                                    ) : (\n                                        parseInt(orderLine.reservation_quantity)\n                                    )}\n                                </div>\n                                <div>\n                                    <b><Translation id=\"requested_delivery_date\" defaultMessage=\"Requested delivery date\" />:</b>\n                                    <br></br>\n                                    {orderLine.preferredDeliveryDate\n                                      ? moment(orderLine.preferredDeliveryDate).format('L')\n                                      : ''}\n                                </div>\n                            </div>\n                        </div>\n                    )\n                })}\n        </React.Fragment>\n    )\n}\n\nconst mapStateToProps = state => {\n    return {\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state)\n    }\n}\n\n\nexport default injectIntl(connect(\n    mapStateToProps,\n    null\n)(OrderDetailsTableV2))\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport { getIsIkeaCenter, getIsLowesCenter, getIsMkToolsCenter } from '../../store/centers/reducers'\nimport {\n    getIsCampaignsPilotUser, getIsDeviatedAdmin,\n    getIsMallAdmin,\n    getIsMktoolsAdmin,\n    getUserAuthorization,\n    canViewPreorder\n} from '../../store/login/reducers'\nimport {withMsal} from '@azure/msal-react'\nimport { connect } from 'react-redux'\nimport { logout } from '../../store/login/actions'\nimport iconLogoutV2 from '../../assets/img/icons/logoutv2.svg'\nimport { getEmployeeId } from '../../store/big-account/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        hasPreOrder: canViewPreorder(state),\n        isMktoolsCenter: getIsMkToolsCenter(state),\n        isMktoolsAdmin: getIsMktoolsAdmin(state),\n        isMallAdmin: getIsMallAdmin(state),\n        isUserMallAuthorized: getUserAuthorization(state),\n        isCampaignAdmin: getIsCampaignsPilotUser(state),\n        isDeviatedAdmin: getIsDeviatedAdmin(state),\n        isLowesCenter: getIsLowesCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        employeeId: getEmployeeId(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onLogout: () => {\n            dispatch(logout())\n        }\n    }\n}\n\nconst ProfileNavBar = ({\n    match,\n    userType,\n    canRouteConfiguration,\n    canRouteOrders,\n    canRouteTransfers,\n    isLowesCenter,\n    canRouteOfferStatusHistory,\n    isIkeaCenter,\n    isMktoolsCenter,\n    msalContext,\n    name,\n    email,\n    username,\n   employeeId,\n    location,\n    onLogout,\n    hasPreOrder\n}) => {\n    const links = withButtons => (\n        <div className='d-flex flex-column menu-configuration'>\n            \n            <div className='d-flex' style={{padding: '0.5rem 0', fontWeight: '300'}}>\n                <div className='mr-3'>\n                    <i className=\"fas fa-user\" />\n                </div>\n                <div>\n                    <span>\n                        \n                        {name} {employeeId && <strong>{employeeId}</strong>}\n                        <span className='txt-username' style={{float: \"none\"}}>\n                            {userType === 'SHOP' || userType === 'LOWES' ? email : username}\n                        </span>\n                    </span>\n                </div>\n            </div>\n            \n            {canRouteConfiguration && (\n                <LocalizedLink\n                    className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} ${location.pathname.indexOf('configuration') !== -1  ? 'active' : ''} linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'configuration', open: '' }}\n                >\n                    {isLowesCenter ? <Translation id=\"store_profile\" defaultMessage=\"Store Profile\" /> : <Translation id=\"configuration\" defaultMessage=\"Configuration\" />}\n                </LocalizedLink>\n            )}\n            {canRouteOrders && (\n                <LocalizedLink\n                    className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} ${location.pathname.indexOf('orders') !== -1  && location.pathname.indexOf('recurring-orders') === -1 && location.pathname.indexOf('pre-orders-cts') === -1 ? 'active' : ''} linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'orders', open: '' }}\n                >\n                    <Translation id=\"orders_history\" defaultMessage=\"Orders history\" />\n                </LocalizedLink>\n            )}\n            {canRouteOrders && userType === 'CUSTOMER' && isIkeaCenter && (\n                <LocalizedLink\n                    className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} ${location.pathname.indexOf('orders') !== -1 && match.params.open === 'open' ? 'active' : ''} linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'orders', open: 'open' }}\n                >\n                    <Translation id=\"open_orders\" defaultMessage=\"Open orders\" />\n                </LocalizedLink>\n            )}\n            {userType === 'CUSTOMER' && hasPreOrder && (\n                    <LocalizedLink\n                    className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} ${location.pathname.indexOf('pre-orders-cts') !== -1 ? 'active' : ''} linkMenu`}\n                    routeId=\"ROUTE_PROFILE\" \n                    params={{ filter: 'pre-orders-cts', open: '' }}\n                >    \n                    <Translation id=\"pre_orders_cts\" defaultMessage=\"Pre Orders CTS\" />   \n                </LocalizedLink>\n            )}\n            {canRouteOfferStatusHistory && (\n                <LocalizedLink\n                    className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} ${location.pathname.indexOf('offers') !== -1 ? 'active' : ''} linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'offers', open: '' }}\n                >\n                    <Translation id=\"quotes\" defaultMessage=\"Quotes\" />\n                </LocalizedLink>\n            )}\n            {canRouteTransfers && (\n                <LocalizedLink\n                    className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} ${location.pathname.indexOf('transers') !== -1 ? 'active' : ''} linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'transfers', open: '' }}\n                >\n                    <Translation id=\"transfer_orders\" defaultMessage=\"Transfer orders\" />\n                </LocalizedLink>\n            )}\n\n            {userType === 'CUSTOMER' && !isMktoolsCenter && !isIkeaCenter && !isLowesCenter && (\n                <LocalizedLink\n                    className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} ${location.pathname.indexOf('recurring-orders') !== -1 ? 'active' : ''} linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'recurring-orders', open: '' }}\n                >\n                    <Translation id=\"recurring_orders_access\" defaultMessage=\"Recurring orders access\" />\n                </LocalizedLink>\n            )}\n            <LocalizedLink\n                className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} ${location.pathname.indexOf('segmentation') !== -1 ? 'active' : ''} linkMenu`}\n                routeId=\"ROUTE_PROFILE\"\n                params={{ filter: 'segmentation', open: '' }}\n            >\n                <Translation id=\"segmentation\" defaultMessage=\"Segmentation\" />\n            </LocalizedLink>\n            <LocalizedLink\n                className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} ${location.pathname.indexOf('products-favourite') !== -1 ? 'active' : ''} linkMenu`}\n                routeId=\"ROUTE_PROFILE\"\n                params={{ filter: 'products-favourite', open: '' }}\n            >\n                <Translation id=\"products_favourite\" defaultMessage=\"Favourite products\" />\n            </LocalizedLink>\n\n            <span className={`${withButtons ? 'configuration-btn btn btn-secondary' : ''} linkMenu linkLogout`} onClick={() => {\n                if (msalContext.accounts && msalContext.accounts[0]) {\n                    msalContext.instance.logoutRedirect()\n                }\n                onLogout()\n            }}\n            >\n                <div className='d-flex'>\n                    <div className=\"icon\" style={{marginRight: '8px'}}>\n                        <img alt=\"\" src={iconLogoutV2} aria-hidden=\"true\" />\n                    </div>\n                    <Translation id=\"logout\" defaultMessage=\"Logout\" />\n                </div>\n            </span>\n        </div>\n    )\n\n    return (\n        <div className=\"row profile-nav-bar\">\n            <div className=\"col-12\">\n                <div className=\"without-buttons d-sm-none d-flex justify-content-around flex-wrap\" role=\"group\">\n                    {links(false)}\n                </div>\n                <div className=\"btn-group d-none d-sm-block\" role=\"group\">\n                    {links(false)}\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default withMsal(\n    injectIntl(withRouter(connect(\n        mapStateToProps,\n        mapDispatchToProps\n)(ProfileNavBar))))\n\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport ProfileNavBar from './ProfileNavBar'\n\nconst Profile = ({ username, name, isIkeaCenter, isLowesCenter, employeeId, userType, isMkToolsCenter, canOffer }) => {\n    const canRouteConfiguration = () => true\n    const canRouteOrders = () => userType === 'CUSTOMER' || isLowesCenter\n    const canRouteEditOrder = () => !isLowesCenter\n    const canRouteTransfers = () => isMkToolsCenter && userType === 'ADMIN'\n    const canRouteDirectSlabAccess = () => !isIkeaCenter && !isLowesCenter\n    const canRouteProductsFavourite = () => !isLowesCenter\n    const canRouteRecurringOrders = () => !isLowesCenter\n    const canRouteSegmentation = () => !isLowesCenter\n    const canRouteOfferStatusHistory = () => canOffer\n    return (\n        <div className=\"profile-menu\">\n            <div className=\"user-box\">\n                <ProfileNavBar\n                    userType={userType}\n                    isMkToolsCenter={isMkToolsCenter}\n                    isIkeaCenter={isIkeaCenter}\n                    isLowesCenter={isLowesCenter}\n                    canRouteConfiguration={canRouteConfiguration()}\n                    canRouteOrders={canRouteOrders()}\n                    canRouteEditOrder={canRouteEditOrder()}\n                    canRouteTransfers={canRouteTransfers()}\n                    canRouteDirectSlabAccess={canRouteDirectSlabAccess()}\n                    canRouteProductsFavourite={canRouteProductsFavourite()}\n                    canRouteRecurringOrders={canRouteRecurringOrders()}\n                    canRouteSegmentation={canRouteSegmentation()}\n                    canRouteOfferStatusHistory={canRouteOfferStatusHistory()}\n                    name={name}\n                    employeeId={employeeId}\n                    username={username}\n                />\n            </div>\n        </div>\n    )\n}\n\nexport default withRouter(Profile)\n","import { connect } from 'react-redux'\nimport ProfileMenu from './ProfileMenu'\nimport { getUserName, getName, getUserImage, getUserType, getEmail } from '../../store/login/reducers'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\nimport {\n    canOffer,\n    getCenters,\n    getIsIkeaCenter,\n    getIsLowesCenter,\n    getIsMkToolsCenter\n} from '../../store/centers/reducers'\nimport { getEmployeeId } from '../../store/big-account/reducers'\nimport { logout } from '../../store/login/actions'\n\nconst mapStateToProps = state => {\n    return {\n        username: getUserName(state),\n        name: getName(state),\n        email: getEmail(state),\n        userimage: getUserImage(state),\n        userType: getUserType(state),\n        profileConfiguration: getProfileConfiguration(state),\n        centers: getCenters(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isLowesCenter: getIsLowesCenter(state),\n        employeeId: getEmployeeId(state),\n        isMkToolsCenter: getIsMkToolsCenter(state),\n        canOffer: canOffer(state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onLogout: () => {\n            dispatch(logout())\n        }\n    }\n}\n\nconst ProfileContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProfileMenu)\n\nexport default ProfileContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport DisplayThickness from '../catalog/rectangleResult/displays/DisplayThickness'\n\nimport { connect } from 'react-redux'\nimport { defineMessages, injectIntl } from 'react-intl'\nimport { clearOrderDetails, fetchOrderDetails, fetchPackingList, getFileByUrl, rejectOrder } from '../../store/orders/actions'\nimport {\n    getError,\n    getInvoices,\n    getOpenDocDetails,\n    getOrder,\n    getOrderDetailsHead,\n    getOrderDetailsLoading,\n    getOrderStatusMap,\n    getPackingList,\n    getStatusMap\n} from '../../store/orders/reducers'\nimport {getToken, isEmserUser} from '../../store/login/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport Spinner from '../global/Spinner'\nimport Modal from '../global/Modal'\nimport { getShippingAddresses } from '../../store/shipping-addresses/reducers'\nimport moment from 'moment'\nimport PackingList from './PackingList'\nimport OrderHeader from './OrderHeader'\nimport confirm from '../global/confirm'\nimport ProductDisplayName from '../global/ProductDisplayName'\nimport OrderFullMobile from './OrderFullMobile'\nimport ProductImage from '../catalog/ProductImage'\nimport ReactTable from 'react-table'\nimport Error from '../alerts/Error'\nimport DisplayOutletIndicator from '../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport { dispatchPushURL } from '../../store/ui/actions'\nimport OrderDetailsTableV2 from './OrderDetailsTableV2'\nimport ProfileContainer from '../profile/ProfileContainer'\n\ndefineMessages({\n    delivery_status_NOT_TREATED: {\n        id: 'delivery_status_NOT_TREATED',\n        description: 'delivery_status_NOT_TREATED',\n        defaultMessage: 'Pending'\n    },\n    delivery_status_TREATED_PARTIALLY: {\n        id: 'delivery_status_TREATED_PARTIALLY',\n        description: 'delivery_status_TREATED_PARTIALLY',\n        defaultMessage: 'In progress'\n    },\n    delivery_status_TREATED_COMPLETELLY: {\n        id: 'delivery_status_TREATED_COMPLETELLY',\n        description: 'delivery_status_TREATED_COMPLETELLY',\n        defaultMessage: 'Finalized'\n    }\n})\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        packingList: getPackingList(state),\n        order: getOrder(state),\n        orderDetailsHead: getOrderDetailsHead(state),\n        openDocDetails: getOpenDocDetails(state),\n        isLoading: getOrderDetailsLoading(state),\n        token: getToken(state),\n        lang: getLanguage(state),\n        error: getError(state),\n        reservationId: match.params.open,\n        shippingAddresses: getShippingAddresses(state),\n        statusMap: getStatusMap(state),\n        orderStatusMap: getOrderStatusMap(state),\n        invoices: getInvoices(state),\n        isEmserUser : isEmserUser(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOrderDetails: reservationId => {\n            dispatch(fetchOrderDetails(reservationId))\n        },\n        fetchPackingList: reservationId => {\n            dispatch(fetchPackingList(reservationId))\n        },\n        clearOrderDetails: reservationId => {\n            dispatch(clearOrderDetails(reservationId))\n        },\n        rejectOrder: (reservationId, orderId) => {\n            dispatch(rejectOrder(reservationId, orderId))\n        },\n        getFileByUrl: url => dispatch(getFileByUrl(url)),\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        }\n    }\n}\n\nconst ProgressDeliveryDate = props => {\n    let total = moment(props.finishDate).valueOf() - moment(props.initDate).valueOf()\n    let progressValueOf = moment().valueOf() - moment(props.initDate).valueOf()\n    let percentage = (progressValueOf * 100) / total\n    if (total < 0) percentage = 100\n\n    return (\n        <div className=\"row\">\n            <div className=\"col-12\">\n                <div className=\"row\">\n                    <div className=\"col-12\">{props.intl.formatMessage({ id: props.statusText })}</div>\n                </div>\n                <div className=\"row\">\n                    <div className=\"col-12\">\n                        <div className=\"progress\">\n                            <div\n                                className=\"progress-bar bg-success\"\n                                role=\"progressbar\"\n                                style={{ width: percentage + '%' }}\n                                aria-valuenow=\"25\"\n                                aria-valuemin=\"0\"\n                                aria-valuemax=\"100\"\n                            />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nclass OrderDetailsV2 extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            showDetails: false,\n            showHelp: false,\n            isLoading: false,\n            showPackingList: false,\n            itemsView: 'per-delivery',\n            showInvoicesModal: false,\n            width: window.innerWidth\n        }\n\n        this.getOrderInvoiceDownloadUrl = this.getOrderInvoiceDownloadUrl.bind(this)\n        this.getOrderImagesDownloadUrl = this.getOrderImagesDownloadUrl.bind(this)\n    }\n    componentWillMount() {\n        window.addEventListener('resize', this.handleWindowSizeChange)\n    }\n\n    componentDidMount() {\n        this.props.fetchOrderDetails(this.props.reservationId)\n        this.props.fetchPackingList(this.props.reservationId)\n    }\n    componentWillUnmount() {\n        this.props.clearOrderDetails(this.props.reservationId)\n        window.removeEventListener('resize', this.handleWindowSizeChange)\n    }\n\n    componentDidUpdate(prevProps) {\n        const order = this.props.order\n\n        if (order) {\n            if (order.deliveries.length === 0 && this.state.itemsView !== 'all') {\n                this.setState({ itemsView: 'all' })\n            }\n        }\n    }\n\n    handleWindowSizeChange = () => {\n        this.setState({ width: window.innerWidth })\n    }\n\n    getOrderInvoiceDownloadUrl(invoiceNum) {\n        return process.env.REACT_APP_API_HOST + '/users/order-invoice/' + invoiceNum\n        // return process.env.REACT_APP_API_HOST + '/users/order-invoice/' + invoiceNum + '/?authToken=' + this.props.token\n    }\n\n    getOrderImagesDownloadUrl() {\n        return process.env.REACT_APP_API_HOST + '/users/order-images?reservationId=' + this.props.reservationId + '&lang=' + this.props.lang\n        // return process.env.REACT_APP_API_HOST + '/users/order-images?reservationId=' + this.props.reservationId + '&lang=' + this.props.lang + '&authToken=' + this.props.token\n    }\n\n    setItemsView = type => {\n        this.setState({ itemsView: type })\n    }\n\n    writeContent = printWindow => {\n        printWindow.document.write('<html><head>')\n        printWindow.document.write(document.getElementsByTagName('head')[0].innerHTML)\n\n        printWindow.document.write('</head><body class=\"p-4 my-4\">')\n        printWindow.document.write(this.orders_group.innerHTML)\n        printWindow.document.write('</body></html>')\n\n        return Promise.resolve(printWindow)\n    }\n\n    downloadPdf = () => {\n        let printWindow = window.open('', 'PRINT', 'height=400,width=600')\n        setTimeout(() => {\n            this.writeContent(printWindow).then(printWindow => {\n                setTimeout(() => {\n                    printWindow.focus()\n                    printWindow.print()\n                    printWindow.close()\n                }, 2000)\n            })\n        }, 100)\n\n        return false\n    }\n\n    confirmRejectOrder = (reservationId, orderId, callback, intl) => {\n        return confirm(intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER' })).then(\n            confirm => {\n                return callback(reservationId, orderId)\n            },\n            cancel => {\n                return Promise.reject()\n            }\n        )\n    }\n\n    rejectOrder = (reservationId, orderId) => {\n        this.confirmRejectOrder(reservationId, orderId, this.props.rejectOrder, this.props.intl)\n    }\n\n    showInvoicesModal = () => {\n        this.setState({ showInvoicesModal: true })\n    }\n\n    closeInvoicesModal = () => {\n        this.setState({ showInvoicesModal: false })\n    }\n\n    render() {\n        const { order, error } = this.props\n        if (!order && error) {\n            return <Error alert={this.props.intl.formatMessage({ id: error.data.err })} />\n        }\n        const { width } = this.state\n        const isMobile = width <= 768\n        let orderShippingAddress =\n            this.props.shippingAddresses && this.props.order\n                ? this.props.shippingAddresses.filter(shippingAddress => {\n                      return shippingAddress.shippingAddressId === this.props.order.shippingAddressId\n                  })[0]\n                : null\n\n        let shippingDates = []\n        this.props.openDocDetails &&\n            this.props.openDocDetails.forEach(line => {\n                if (!shippingDates.includes(line.shipDate)) {\n                    shippingDates.push(line.shipDate)\n                }\n            })\n\n        return (\n            <div className={`container mt-4 order_details ${this.props.isLoading && 'container--loading'}`}>\n                <div className=\"box-profile row\">\n                    <div className=\"box-profile-menu col-12 col-md-4 col-lg-3\">\n                        <ProfileContainer />\n                    </div>\n\n                    <div className=\"box-profile-form col-12 col-xl-9 v2\">\n                        {this.props.order && (\n                            <OrderHeader\n                                dataOrder={this.props.order}\n                                showDetails={this.state.showDetails}\n                                toggleShowDetails={() => this.setState({ showDetails: !this.state.showDetails })}\n                                showActionButtons={this.props.statusMap[this.props.order.statusText] ? this.props.statusMap[this.props.order.statusText].editable : false}\n                                backgroundTransparent={true}\n                                isOrderDetails={true}\n                                ordersGroup={this.orders_group}\n                            />\n                        )}\n\n                        <div id=\"orders_group\" className=\"mt-3\" ref={element => (this.orders_group = element)}>\n                           \n\n                            {order && (\n                                <div className=\"order-history-detail-items\">\n                                    <div className=\"view-selector\" style={{ backgroundColor: 'white', padding: '1rem', marginLeft: '-15px', marginRight: '-15px' }}>\n                                        <span className={this.state.itemsView == 'all' ? 'active' : null} onClick={() => this.setItemsView('all')}>\n                                            <Translation id=\"full_order_view\" defaultMessage=\"View full order\" />\n                                        </span>\n                                        {order.deliveries.length > 0 && (\n                                            <span className={this.state.itemsView == 'per-delivery' ? 'active' : null} onClick={() => this.setItemsView('per-delivery')}>\n                                                <Translation id=\"delivery_view\" defaultMessage=\"View by deliveries\" />\n                                            </span>\n                                        )}\n                                    </div>\n                                    {this.state.itemsView == 'per-delivery' && (\n                                        <div className=\"per-delivery-view time-line-2 mt-3\">\n                                            {order.deliveries.map((delivery, i) => {\n                                                let deliveryStatus = order.timelines.find(timeline => timeline.delivery_id == delivery.delivery_id).delivery_status\n                                                return (\n                                                    <div\n                                                        className=\"\"\n                                                        key={delivery.delivery_id}\n                                                        data={delivery.delivery_id}\n                                                        style={{ backgroundColor: 'white', padding: '1em', marginLeft: '-15px', marginRight: '-15px' }}\n                                                    >\n                                                        <div className=\"delivery-head row\">\n                                                            <div className=\"col-7 col-md-2 number\">\n                                                                <b>\n                                                                    <Translation id=\"delivery_number\" defaultMessage=\"Nº delivery\" />: {i + 1}\n                                                                </b>\n                                                            </div>\n                                                            <div className=\"col-7 col-md-3\">\n                                                                <b>\n                                                                    <Translation id=\"delivery_id\" defaultMessage=\"Delivery id\" />:\n                                                                </b>{' '}\n                                                                #{delivery.delivery_id}\n                                                            </div>\n                                                            <div className=\"col-12 col-md-4\">\n                                                                {deliveryStatus === 'TREATED_COMPLETELLY' ? (\n                                                                    <div>\n                                                                        <b>\n                                                                            <Translation id=\"delivered_date\" defaultMessage=\"Delivered date\" />:{' '}\n                                                                        </b>\n                                                                        {moment(delivery.delivered_date || delivery.billing_date).format('ll')}\n                                                                    </div>\n                                                                ) : (\n                                                                    <div>\n                                                                        <b>\n                                                                            <Translation id=\"estimated_delivery_date\" defaultMessage=\"Estimated delivery date\" />:{' '}\n                                                                        </b>\n                                                                        {moment(delivery.expected_delivery_date).format('ll')}\n                                                                    </div>\n                                                                )}\n                                                            </div>\n                                                            <div className=\"col-12 col-md-3 text-right\">\n                                                                <b>\n                                                                    <Translation id=\"delivery_status\" defaultMessage=\"Delivery status\" />:\n                                                                </b>{' '}\n                                                                {this.props.intl.formatMessage({ id: 'delivery_status_' + deliveryStatus })}{' '}\n                                                                <span className={`delivery-status-dot ${deliveryStatus === 'TREATED_COMPLETELLY' ? 'blue' : 'grey'}`}></span>\n                                                            </div>\n                                                        </div>\n                                                        <div className=\"delivery-lines time-line\">\n                                                            {order.orderLinesByDelivery[delivery.delivery_id] &&\n                                                                order.orderLinesByDelivery[delivery.delivery_id].map((orderLine, i) => {\n                                                                    if (orderLine.product) {\n                                                                        if (isMobile) {\n                                                                            return (\n                                                                                <div className=\"row card-lines time-line\">\n                                                                                    <div>\n                                                                                        <ProductImage product={orderLine.product} />\n                                                                                    </div>\n                                                                                    <div>\n                                                                                        {orderLine.outlet_quality && (\n                                                                                            <DisplayOutletIndicator outletQuality={orderLine.outlet_quality} />\n                                                                                        )}\n                                                                                        <ProductDisplayName product={orderLine.product} />\n                                                                                        <p>\n                                                                                            <b>\n                                                                                                <Translation id=\"brand\" defaultMessage=\"Brand\" />:{' '}\n                                                                                            </b>{' '}\n                                                                                            {orderLine.product.brand}\n                                                                                        </p>\n                                                                                        <p>\n                                                                                            <b>\n                                                                                                <Translation id=\"thickness\" defaultMessage=\"Thickness\" />:{' '}\n                                                                                            </b>\n                                                                                            <DisplayThickness thickness={orderLine.product.thickness} string />\n                                                                                        </p>\n                                                                                        <p>\n                                                                                            <b>\n                                                                                                <Translation id=\"finish\" defaultMessage=\"Finish\" />:{' '}\n                                                                                            </b>\n\n                                                                                            {orderLine.product.finish &&\n                                                                                                this.props.intl.formatMessage({ id: orderLine.product.finish })}\n                                                                                        </p>\n                                                                                        <p>\n                                                                                            <b>\n                                                                                                <Translation id=\"material_id\" defaultMessage=\"Material Id\" />:{' '}\n                                                                                            </b>\n                                                                                            {orderLine.product.productId}\n                                                                                        </p>\n                                                                                        {orderLine.lot_id && (\n                                                                                            <p>\n                                                                                                <b>\n                                                                                                    <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />:{' '}\n                                                                                                </b>\n                                                                                                {orderLine.lot_id}\n                                                                                            </p>\n                                                                                        )}\n                                                                                        <p>\n                                                                                            <b>\n                                                                                                <Translation id=\"format\" defaultMessage=\"Format\" />:{' '}\n                                                                                            </b>\n                                                                                            {orderLine.product.format}\n                                                                                        </p>\n                                                                                        {orderLine.delivery_qty && (\n                                                                                            <p>\n                                                                                                <b>\n                                                                                                    <Translation id=\"delivery_units\" defaultMessage=\"Units included in shipment\" />:{' '}\n                                                                                                </b>\n                                                                                                {parseInt(orderLine.delivery_qty, 10)}/{parseInt(orderLine.quantity, 10)}\n                                                                                            </p>\n                                                                                        )}\n                                                                                    </div>\n                                                                                </div>\n                                                                            )\n                                                                        } else {\n                                                                            return (\n                                                                                <div\n                                                                                    className=\"d-flex order-details\"\n                                                                                    style={{ borderBottom: '1px solid #EBEBEB', marginBottom: '1rem', padding: '1em' }}\n                                                                                >\n                                                                                    <div style={{ minWidth: '100px', marginRight: '3rem' }}>\n                                                                                        <ProductImage product={orderLine.product} />\n                                                                                    </div>\n                                                                                    <div className=\"d-flex flex-column\" style={{ marginRight: '3rem' }}>\n                                                                                        {orderLine.outlet_quality && (\n                                                                                            <DisplayOutletIndicator outletQuality={orderLine.outlet_quality} />\n                                                                                        )}\n                                                                                        <b>\n                                                                                            <Translation id=\"material\" defaultMessage=\"Material\" />:\n                                                                                        </b>\n                                                                                        <ProductDisplayName product={orderLine.product} />\n                                                                                        <b>\n                                                                                            <Translation id=\"brand\" defaultMessage=\"Brand\" />:\n                                                                                        </b>\n                                                                                        {orderLine.product.brand}\n                                                                                    </div>\n                                                                                    <div className=\"d-flex flex-column\" style={{ marginRight: '3rem' }}>\n                                                                                        <b>\n                                                                                            <Translation id=\"thickness\" defaultMessage=\"Thickness\" />:\n                                                                                        </b>\n                                                                                        <DisplayThickness thickness={orderLine.product.thickness} string />\n                                                                                        <b>\n                                                                                            <Translation id=\"finish\" defaultMessage=\"Finish\" />:\n                                                                                        </b>\n                                                                                        {orderLine.product.finish && (\n                                                                                            <React.Fragment>\n                                                                                                <b>\n                                                                                                    <Translation id=\"finish\" defaultMessage=\"Finish\" />\n                                                                                                </b>\n                                                                                                {this.props.intl.formatMessage({ id: orderLine.product.finish })}\n                                                                                            </React.Fragment>\n                                                                                        )}\n                                                                                    </div>\n                                                                                    <div className=\"d-flex flex-column\" style={{ marginRight: '3rem' }}>\n                                                                                        <b>\n                                                                                            <Translation id=\"material_id\" defaultMessage=\"Material Id\" />:\n                                                                                        </b>\n                                                                                        {orderLine.product.productId}\n                                                                                    </div>\n                                                                                    <div className=\"d-flex flex-column box-price\" style={{ marginLeft: 'auto' }}>\n                                                                                        {orderLine.lot_id && (\n                                                                                            <React.Fragment>\n                                                                                                <b>\n                                                                                                    <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />:\n                                                                                                </b>\n                                                                                                {orderLine.lot_id}\n                                                                                            </React.Fragment>\n                                                                                        )}\n                                                                                        <b>\n                                                                                            <Translation id=\"format\" defaultMessage=\"Format\" />:\n                                                                                        </b>\n                                                                                        {orderLine.product.format}\n                                                                                        {orderLine.delivery_qty && (\n                                                                                            <React.Fragment>\n                                                                                                <b>\n                                                                                                    <Translation id=\"delivery_units\" defaultMessage=\"Units included in shipment\" />:\n                                                                                                </b>\n                                                                                                {parseInt(orderLine.delivery_qty, 10)}/{parseInt(orderLine.quantity, 10)}\n                                                                                            </React.Fragment>\n                                                                                        )}\n                                                                                    </div>\n                                                                                </div>\n                                                                            )\n                                                                        }\n                                                                    } else {\n                                                                        return (\n                                                                            <div className=\"delivery-line row\" key={i}>\n                                                                                <div className=\"col-12 col-md-2\">\n                                                                                    <ProductImage product={null}></ProductImage>\n                                                                                </div>\n                                                                                <div className=\"col-12 col-md-5\"></div>\n                                                                                <div className=\"col-12 col-md-2\">\n                                                                                    <p>\n                                                                                        <Translation id=\"material_id\" defaultMessage=\"Material Id\" />:{' '}\n                                                                                        <b>{orderLine.material_id}</b>\n                                                                                    </p>\n                                                                                    {orderLine.lot_id && (\n                                                                                        <p>\n                                                                                            <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />: <b>{orderLine.lot_id}</b>\n                                                                                        </p>\n                                                                                    )}\n                                                                                </div>\n                                                                                <div className=\"col-12 col-md-2\">\n                                                                                    <p>\n                                                                                        <Translation id=\"delivery_units\" defaultMessage=\"Units included in shipment\" />:{' '}\n                                                                                        <b>\n                                                                                            {orderLine.delivery_qty && (\n                                                                                                <span>\n                                                                                                    {parseInt(orderLine.delivery_qty, 10)}/{parseInt(orderLine.quantity, 10)}\n                                                                                                </span>\n                                                                                            )}\n                                                                                        </b>\n                                                                                    </p>\n                                                                                </div>\n                                                                            </div>\n                                                                        )\n                                                                    }\n                                                                })}\n                                                        </div>\n                                                    </div>\n                                                )\n                                            })}\n                                        </div>\n                                    )}\n                                    {this.state.itemsView == 'all' &&\n                                        (!isMobile ? (\n                                            <OrderDetailsTableV2 orderLines={order.orderLines} editMode={false} isEmserUser={this.props.isEmserUser} lang={this.props.lang} />\n                                        ) : (\n                                            <OrderFullMobile orderLines={order.orderLines} lang={this.props.lang} />\n                                        ))}\n                                </div>\n                            )}\n                        </div>\n                    </div>\n                </div>\n\n                {this.state.showInvoicesModal && (\n                    <Modal title={<Translation id=\"invoices\" defaultMessage=\"Invoices\" />} onClose={this.closeInvoicesModal}>\n                        <ReactTable\n                            data={this.props.invoices}\n                            columns={[\n                                {\n                                    Header: <Translation id=\"invoice_num\" defaultMessage=\"Invoice Num.\" />,\n                                    Cell: ({ original }) => {\n                                        return (\n                                            <span\n                                                onClick={e => {\n                                                    e.preventDefault()\n\n                                                    this.props.getFileByUrl(this.getOrderInvoiceDownloadUrl(original.invoiceNum))\n                                                }}\n                                                style={{ color: 'blue', cursor: 'pointer' }}\n                                            >\n                                                {original.invoiceNum}\n                                            </span>\n                                        )\n                                    }\n                                },\n                                { Header: <Translation id=\"invoice_date\" defaultMessage=\"Invoice Date\" />, accessor: 'invoiceDate' }\n                            ]}\n                            defaultPageSize={4}\n                            pageSizeOptions={[8, 16, 32, 64, 128]}\n                            previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                            nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                            noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                            pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                            ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                        />\n                    </Modal>\n                )}\n\n                {this.state.showPackingList && this.props.orderDetailsHead && (\n                    <PackingList\n                        reservationId={this.props.reservationId}\n                        orderId={this.props.orderDetailsHead.orderId}\n                        packingList={this.props.packingList}\n                        onClose={() => this.setState({ showPackingList: false })}\n                        canEditOrders={false}\n                    />\n                )}\n                <Spinner isLoading={this.props.isLoading} />\n            </div>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(OrderDetailsV2)\n)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport {\n    getError, getInvoices,\n    getOpenDocDetails,\n    getOrder, getOrderDetailsHead,\n    getOrderDetailsLoading,\n    getOrderStatusMap,\n    getPackingList,\n    getStatusMap\n} from '../../store/orders/reducers'\nimport { injectIntl } from 'react-intl'\nimport {\n    clearOrderDetails,\n    fetchOrderDetails,\n    fetchPackingList, getFileByUrl, rejectOrder,\n} from '../../store/orders/actions'\nimport { withRouter } from 'react-router-dom'\nimport { dispatchPushURL } from '../../store/ui/actions'\nimport { getToken, isEmserUser } from '../../store/login/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport { getShippingAddresses } from '../../store/shipping-addresses/reducers'\nimport OrderDetailsV2 from \"./OrderDetailsV2\";\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        packingList: getPackingList(state),\n        order: getOrder(state),\n        orderDetailsHead: getOrderDetailsHead(state),\n        openDocDetails: getOpenDocDetails(state),\n        isLoading: getOrderDetailsLoading(state),\n        token: getToken(state),\n        lang: getLanguage(state),\n        error: getError(state),\n        reservationId: match.params.open,\n        shippingAddresses: getShippingAddresses(state),\n        statusMap: getStatusMap(state),\n        orderStatusMap: getOrderStatusMap(state),\n        invoices: getInvoices(state),\n        isEmserUser : isEmserUser(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOrderDetails: reservationId => {\n            dispatch(fetchOrderDetails(reservationId))\n        },\n        fetchPackingList: reservationId => {\n            dispatch(fetchPackingList(reservationId))\n        },\n        clearOrderDetails: reservationId => {\n            dispatch(clearOrderDetails(reservationId))\n        },\n        rejectOrder: (reservationId, orderId) => {\n            dispatch(rejectOrder(reservationId, orderId))\n        },\n        getFileByUrl: url => dispatch(getFileByUrl(url)),\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        }\n    }\n}\n\nconst OrderDetailsContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(OrderDetailsV2)\n    )\n)\n\nexport default OrderDetailsContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport ReactTable from 'react-table'\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport AssignCustomer from './AssignCustomer'\nimport confirm from '../global/confirm'\nimport Spinner from '../global/Spinner'\nimport OrderDetailsContainer from '../orders/OrderDetailsContainer'\n\nconst confirmReject = (reservationId, rejectReservation, intl) => {\n    confirm(intl.formatMessage({ id: 'REJECT_RESERVATION_CONFIRM' }), {intl: intl}).then(\n        confirm => {\n            rejectReservation(reservationId)\n        },\n        cancel => {}\n    )\n}\nclass Reservations extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { selectedOrder: null, showAssignCustomer: false, showOrderDetails: false }\n    }\n    assignCustomer = (shippingAddressId, reservation, date, po, comments) => {\n        this.props.assignCustomer(shippingAddressId, reservation, date, po, comments)\n        this.setState({ selectedOrder: null, showAssignCustomer: false })\n    }\n    showAssignCustomer = selectedOrder => {\n        this.setState({ selectedOrder: selectedOrder, showAssignCustomer: true })\n    }\n\n    closeAssignCustomer = () => {\n        this.setState({ selectedOrder: null, showAssignCustomer: false })\n    }\n    componentDidMount() {\n        this.props.fetchReservations(this.props.unassigned)\n        this.props.fetchCustomers()\n    }\n    showOrderDetails = selectedOrder => {\n        this.setState({ selectedOrder: selectedOrder, showOrderDetails: true })\n    }\n    closeOrderDetails = () => {\n        this.setState({ selectedOrder: null, showOrderDetails: false })\n    }\n    render() {\n        return (\n            <section id=\"section-unassigned-orders\">\n                <div className=\"container\">\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <h2>\n                                {this.props.unassigned ? (\n                                    <Translation id=\"unassigned_reservations\" defaultMessage=\"Unassigned reservations\" />\n                                ) : (\n                                    <Translation id=\"reservations\" defaultMessage=\"Reservations\" />\n                                )}\n                            </h2>\n                            <ReactTable\n                                data={this.props.reservations}\n                                columns={[\n                                    { Header: <Translation id=\"order_date\" defaultMessage=\"Order date\" />, accessor: 'createdAt' },\n                                    { Header: <Translation id=\"reservation_id\" defaultMessage=\"Reservation ID\" />, accessor: 'reservationId' },\n                                    {\n                                        Header: <Translation id=\"order_id\" defaultMessage=\"Order ID\" />,\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <span onClick={() => this.showOrderDetails(original.reservationId)} style={{ color: 'blue' }}>\n                                                    {original.orderId}\n                                                </span>\n                                            )\n                                        }\n                                    },\n                                    { Header: <Translation id=\"customer_id\" defaultMessage=\"Customer id\" />, accessor: 'customerId' },\n                                    { Header: <Translation id=\"status\" defaultMessage=\"Status\" />, accessor: 'status' },\n                                    { Header: <Translation id=\"status_description\" defaultMessage=\"Status description\" />, accessor: 'statusDescription' },\n                                    {\n                                        Header: <Translation id=\"assign\" defaultMessage=\"Assign\" />,\n                                        id: 'assign',\n                                        show: this.props.unassigned === 'unassigned',\n                                        minWidth: 200,\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <div>\n                                                    <Button inline size=\"small\" icon=\"hand-point-up\" onClick={() => this.showAssignCustomer(original.reservationId)}>\n                                                        <Translation id=\"assign\" defaultMessage=\"Assign\" />\n                                                    </Button>{' '}\n                                                    <Button\n                                                        inline\n                                                        size=\"small\"\n                                                        icon=\"ban\"\n                                                        onClick={event => confirmReject(original.reservationId, this.props.rejectReservation, this.props.intl)}\n                                                    >\n                                                        <Translation id=\"reject\" defaultMessage=\"Reject\" />\n                                                    </Button>\n                                                </div>\n                                            )\n                                        },\n                                        className: 'text-center',\n                                        headerClassName: 'text-center'\n                                    }\n                                ]}\n                                defaultSorted={[{ id: 'reservationId', desc: true }]}\n                                defaultPageSize={8}\n                                pageSizeOptions={[8, 16, 32, 64, 128]}\n                                previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                loading={this.props.isLoading}\n                                loadingText={<Spinner isLoading={this.props.isLoading} />}\n                                noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                                pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                            />\n                            {this.state.showAssignCustomer && this.props.customers && (\n                                <AssignCustomer\n                                    customers={this.props.customers}\n                                    order={this.state.selectedOrder}\n                                    onClose={() => this.closeAssignCustomer()}\n                                    assignCustomer={(shippingAddressId, reservation, date, po, comments) => this.assignCustomer(shippingAddressId, reservation, date, po, comments)}\n                                />\n                            )}\n                            {this.state.showOrderDetails && <OrderDetailsContainer order={this.state.selectedOrder} onClose={() => this.closeOrderDetails()} />}\n                        </div>\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\nexport default injectIntl(Reservations)\n","import { connect } from 'react-redux'\nimport * as ui from '../../store/ui/actions'\nimport { getCustomers, getReservations, getReservationsLoading } from '../../store/reservations/reducers'\nimport { fetchCustomers, assignCustomer, fetchReservations, rejectReservation } from '../../store/reservations/actions'\nimport Reservations from './Reservations'\nimport { withRouter } from 'react-router-dom'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        reservations: getReservations(state),\n        customers: getCustomers(state),\n        unassigned: match.params.unassigned,\n        key: match.params.unassigned,\n        isLoading: getReservationsLoading(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closeImpersonateModal())\n        },\n        fetchReservations: unassigned => {\n            dispatch(fetchReservations(unassigned))\n        },\n        fetchCustomers: () => {\n            dispatch(fetchCustomers())\n        },\n        assignCustomer: (shippingAddressId, reservation, date, po, comments) => {\n            dispatch(assignCustomer(shippingAddressId, reservation, date, po, comments))\n        },\n        rejectReservation: reservation => {\n            dispatch(rejectReservation(reservation))\n        }\n    }\n}\n\nconst ReservationsContainer = withRouter(connect(mapStateToProps, mapDispatchToProps)(Reservations))\n\nexport default ReservationsContainer\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport ReservationsContainer from '../components/unassigned-reservations/ReservationsContainer'\n\nconst mapStateToProps = state => {\n    return {}\n}\nconst mapDispatchToProps = dispatch => {\n    return {}\n}\n\nclass ReservationsScreen extends React.Component {\n    render() {\n        return <ReservationsContainer />\n    }\n}\nReservationsScreen = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ReservationsScreen)\n\nexport default ReservationsScreen\n","import * as api from '../api'\nimport { getToken } from '../login/reducers'\nimport { getFiltersToApi } from './reducers'\n\nexport const closeDeliveryDetail = () => {\n    return {\n        type: 'CLOSE_DELIVERY_DETAIL'\n    }\n}\n\nexport const fetchDeliveryDetails = deliveryId => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_DELIVERY_DETAIL_REQUEST',\n        deliveryId\n    })\n\n    return api\n        .fetchDeliveryDetails(deliveryId, getToken(getState()))\n\n        .then(response => {\n            dispatch({\n                type: 'FETCH_DELIVERY_DETAIL_SUCCESS',\n                deliveryDetails: response.data\n            })\n        })\n}\n\nexport const fetchKpis = () => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_KPIS_REQUEST' })\n\n    return api.fetchKpis(getToken(getState()), getFiltersToApi(getState())).then(\n        response => {\n            dispatch({ type: 'FETCH_KPIS_SUCCESS', summary: response.data })\n        },\n        error => {\n            dispatch({ type: 'FETCH_KPIS_FAILURE', payload: { status: error.response.status, statusText: error.response.statusText } })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const fetchOpenOrders = page => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_KPIS_OPEN_ORDERS_REQUEST'\n    })\n\n    return api.fetchKpisOpenOrders(getToken(getState()), page, getFiltersToApi(getState())).then(\n        response => {\n            dispatch({ type: 'FETCH_KPIS_OPEN_ORDERS_SUCCESS', response: response.data })\n        },\n        error => {\n            dispatch({ type: 'FETCH_KPIS_OPEN_ORDERS_FAILURE', status: error.response.status, statusText: error.response.statusText })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const fetchBackOrders = page => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_KPIS_BACK_ORDERS_REQUEST'\n    })\n    return api.fetchKpisBackOrders(getToken(getState()), page, getFiltersToApi(getState())).then(\n        response => {\n            dispatch({ type: 'FETCH_KPIS_BACK_ORDERS_SUCCESS', response: response.data })\n        },\n        error => {\n            dispatch({ type: 'FETCH_KPIS_BACK_ORDERS_FAILURE', status: error.response.status, statusText: error.response.statusText })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const setKpisFilters = (startDate, endDate, centers, customers, topColors) => (dispatch, getState) => {\n    dispatch({ type: 'SET_KPIS_FILTERS', filters: { startDate, endDate, centers, customers, topColors } })\n    dispatch(fetchKpis())\n    dispatch(fetchOpenOrders())\n    dispatch(fetchBackOrders())\n}\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport Select from 'react-select'\nimport DatePicker from 'react-datepicker'\nimport moment from 'moment'\nimport iconBars from '../../assets/img/icons/filter.svg'\nimport iconClose from '../../assets/img/icons/close-white.svg'\nimport { injectIntl } from 'react-intl'\n\nimport { fetchKpis, setKpisFilters } from '../../store/kpis/actions'\nimport { getSummary, getFilters, getFiltersOpen } from '../../store/kpis/reducers'\nimport { connect } from 'react-redux'\nimport Button from '../global/Button'\nimport { toggleKpisFilters } from '../../store/ui/actions'\n\nconst mapStateToProps = state => {\n    return {\n        summary: getSummary(state),\n        filters: getFilters(state),\n        filtersOpen: getFiltersOpen(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchKpis: () => {\n            dispatch(fetchKpis())\n        },\n        setKpisFilters: (startDate, endDate, centers, customers, topColors) => {\n            dispatch(setKpisFilters(startDate, endDate, centers, customers, topColors))\n        },\n        toggleKpisFilters: showFilters => {\n            dispatch(toggleKpisFilters(showFilters))\n        }\n    }\n}\nclass KpisFilters extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            isOpen: this.props.filtersOpen,\n            centers: this.props.filters.centers,\n            customers: this.props.filters.customers,\n            topColors: this.props.filters.topColors,\n            startDate: moment().startOf('year'),\n            endDate: moment()\n        }\n    }\n    toggleKpisFilters = showFilters => {\n        this.setState({ isOpen: showFilters }, () => {\n            this.props.toggleKpisFilters(showFilters)\n        })\n    }\n    setKpisFilters = () => {\n        this.props.setKpisFilters(this.state.startDate, this.state.endDate, this.state.centers, this.state.customers, this.state.topColors)\n    }\n    changeStartDate = date => {\n        this.setState(\n            {\n                startDate: date\n            },\n            function() {\n                this.setKpisFilters()\n            }\n        )\n    }\n\n    changeEndDate = date => {\n        this.setState(\n            {\n                endDate: date\n            },\n            function() {\n                this.setKpisFilters()\n            }\n        )\n    }\n    handleFilterChange = (selectedOption, filter) => {\n        if (selectedOption !== null) {\n            let selected = selectedOption\n\n            this.setState({ [filter]: selected }, function() {\n                this.setKpisFilters()\n            })\n        } else {\n            this.setState({ [filter]: selectedOption }, function() {\n                this.setKpisFilters()\n            })\n        }\n    }\n    selectColor = colorId => {\n        if (this.state.topColors.includes(colorId)) {\n            this.setState(\n                {\n                    topColors: this.state.topColors.filter(color => color !== colorId)\n                },\n                function() {\n                    this.setKpisFilters()\n                }\n            )\n        } else {\n            this.setState(\n                {\n                    topColors: this.state.topColors.concat(colorId)\n                },\n                function() {\n                    this.setKpisFilters()\n                }\n            )\n        }\n    }\n    flushFilters = () => {\n        this.setState(\n            {\n                centers: [],\n                customers: [],\n                topColors: [],\n                startDate: moment().startOf('year'),\n                endDate: moment()\n            },\n            function() {\n                this.setKpisFilters()\n            }\n        )\n    }\n    render() {\n        const { isOpen } = this.state\n        return (\n            <div className=\"row\">\n                <div className=\"col-8 offset-2\">\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <h1>\n                                <Translation id=\"activity\" defaultMessage=\"Activity\" />\n                            </h1>\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"filter-bar\">\n                                <div className=\"row\">\n                                    <div className=\"col-12\">\n                                        <div className=\"row\">\n                                            <div className=\"date-filter col-12 col-sm-6\">\n                                                <div className=\"start-date\">\n                                                    <div className=\"name\">\n                                                        <Translation id=\"from\" defaultMessage=\"From\" /> <i className=\"fal fa-chevron-down\" />\n                                                    </div>\n                                                    <DatePicker\n                                                        selected={this.state.startDate}\n                                                        selectsStart\n                                                        startDate={this.state.startDate}\n                                                        endDate={this.state.endDate}\n                                                        maxDate={this.state.endDate}\n                                                        onChange={selectedOption => this.changeStartDate(selectedOption, 'startDate')}\n                                                        autoComplete=\"off\"\n                                                        onKeyDown={e => e.preventDefault()}\n                                                        className=\"form-control form-control-sm date\"\n                                                    />\n                                                </div>\n                                            </div>\n                                            <div className=\"date-filter col-12 col-sm-6\">\n                                                <div className=\"end-date\">\n                                                    <div className=\"name\">\n                                                        <Translation id=\"to\" defaultMessage=\"To\" /> <i className=\"fal fa-chevron-down\" />\n                                                    </div>\n                                                    <DatePicker\n                                                        selected={this.state.endDate}\n                                                        selectsEnd\n                                                        startDate={this.state.startDate}\n                                                        endDate={this.state.endDate}\n                                                        minDate={this.state.startDate}\n                                                        onChange={selectedOption => this.changeEndDate(selectedOption, 'endDate')}\n                                                        autoComplete=\"off\"\n                                                        onKeyDown={e => e.preventDefault()}\n                                                        className=\"form-control form-control-sm date\"\n                                                    />\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div className=\"col-1\">\n                    <div className=\"more-filters\">\n                        <div className=\"bt-open-more-filters\" onClick={() => this.toggleKpisFilters(!this.state.isOpen)}>\n                            <img alt=\"\" src={isOpen ? iconClose : iconBars} />\n                        </div>\n\n                        <div className=\"more-filters-container\" style={{ visibility: isOpen ? 'visible' : 'hidden' }}>\n                            <div className=\"filters\">\n                                <div className=\"filter\">\n                                    <div className=\"label\">\n                                        <Translation id=\"centers\" defaultMessage=\"Centers\" />\n                                    </div>\n                                    <div className=\"options\">\n                                        <Select\n                                            placeholder={this.props.intl.formatMessage({ id: 'select' })}\n                                            multi={true}\n                                            value={this.props.filters.centers}\n                                            onChange={selectedOption => this.handleFilterChange(selectedOption, 'centers')}\n                                            options={\n                                                this.props.summary &&\n                                                this.props.summary.centers.map(option => ({\n                                                    label: option.name + ` (${option.count})`,\n                                                    value: option.id\n                                                }))\n                                            }\n                                        />\n                                    </div>\n                                </div>\n                                <div className=\"filter\">\n                                    <div className=\"label\">\n                                        <Translation id=\"client\" defaultMessage=\"Client\" />\n                                    </div>\n                                    <div className=\"options\">\n                                        <Select\n                                            placeholder={this.props.intl.formatMessage({ id: 'select' })}\n                                            multi={true}\n                                            value={this.props.filters.customers}\n                                            onChange={selectedOption => this.handleFilterChange(selectedOption, 'customers')}\n                                            options={\n                                                this.props.summary &&\n                                                this.props.summary.customers.map(option => ({\n                                                    label: option.name + ` (${option.count})`,\n                                                    value: option.id\n                                                }))\n                                            }\n                                        />\n                                    </div>\n                                </div>\n                                <div className=\"filter\">\n                                    <div className=\"label\">\n                                        <Translation id=\"top_color\" defaultMessage=\"Top Color\" />\n                                    </div>\n                                    <div className=\"options\">\n                                        {this.props.summary &&\n                                            this.props.summary.topColors.map(option => (\n                                                <div className=\"option\">\n                                                    <input\n                                                        id={option.id}\n                                                        type=\"checkbox\"\n                                                        onClick={() => this.selectColor(option.id)}\n                                                        key={option.id}\n                                                        checked={this.props.filters.topColors.includes(option.id)}\n                                                    />\n                                                    <label for={option.id} className=\"text\">\n                                                        {option.name} ({option.count})\n                                                    </label>\n                                                </div>\n                                            ))}\n                                    </div>\n                                </div>\n                                <div className=\"filter\">\n                                    <div className=\"refresh row\">\n                                        <div className=\"col-12\">\n                                            <Button size=\"small\" onClick={() => this.flushFilters()}>\n                                                <i className=\"fa fa-sync\" /> <Translation id=\"clear_all\" defaultMessage=\"Clear all\" />\n                                            </Button>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nKpisFilters = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(KpisFilters)\n\nexport default injectIntl(KpisFilters)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport moment from 'moment'\nimport KpisFilters from './KpisFilters'\nimport iconCart from '../../assets/img/icons/cart-thin.svg'\nimport iconCaution from '../../assets/img/icons/caution.svg'\nimport LocalizedLink from '../global/LocalizedLink'\nimport { connect } from 'react-redux'\nimport { fetchKpis } from '../../store/kpis/actions'\nimport { getSummary } from '../../store/kpis/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        summary: getSummary(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchKpis: (startDate, endDate, customers, centers, topColors) => {\n            dispatch(fetchKpis(startDate, endDate, customers, centers, topColors))\n        }\n    }\n}\nclass Kpis extends React.Component {\n    componentDidMount() {\n        this.props.fetchKpis(moment().startOf('year'), moment(), null, null, null)\n    }\n    calcOverCount = (unit, total) => {\n        if (total === 0) return 0\n        return (unit * 100) / total\n    }\n\n    render() {\n        return (\n            <section id=\"section-kpis\">\n                <div className=\"top-background\">\n                    <div className=\"waves\" />\n                </div>\n                <div className=\"kpis-container\">\n                    <div className=\"container\">\n                        <KpisFilters {...this.props} />\n                    </div>\n                    <div className=\"container\">\n                        <div className=\"row\">\n                            <div className=\"col-12 col-md-8 offset-md-2\">\n                                <div className=\"row\">\n                                    <div className=\"col-12 col-lg-6\">\n                                        <div className=\"kpi-box\">\n                                            <div className=\"row\">\n                                                <div className=\"icon col-12 col-md-3\">\n                                                    <img alt=\"\" src={iconCart} />\n                                                </div>\n                                                <div className=\"col-12 col-md-9 text-right\">\n                                                    <div className=\"chart\">\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.openOrders.byBrand.SCALEA, this.props.summary.openOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.openOrders.byBrand.SCALEA} SCALEA</div>\n                                                        </div>\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.openOrders.byBrand.SENSA, this.props.summary.openOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.openOrders.byBrand.SENSA} SENSA</div>\n                                                        </div>\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.openOrders.byBrand.SILESTONE, this.props.summary.openOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.openOrders.byBrand.SILESTONE} SILESTONE</div>\n                                                        </div>\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.openOrders.byBrand.DEKTON, this.props.summary.openOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.openOrders.byBrand.DEKTON} DEKTON</div>\n                                                        </div>\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.openOrders.byBrand.PREXURY, this.props.summary.openOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.openOrders.byBrand.PREXURY} PREXURY</div>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div className=\"row\">\n                                                <div className=\"info col-12\">\n                                                    <LocalizedLink routeId=\"ROUTE_KPI_DETAIL\" params={{ filter: 'open-orders' }}>\n                                                        <div className=\"title\">\n                                                            <Translation id=\"open_orders\" defaultMessage=\"Open orders\" />\n                                                        </div>\n                                                        <div className=\"subtitle\">\n                                                            <span className=\"number\">{this.props.summary && this.props.summary.openOrders.count}</span>\n                                                            <Translation id=\"orders_in_progress\" defaultMessage=\"Orders in progress\" />\n                                                            <i className=\"goto-icon fal fa-chevron-right\" />\n                                                        </div>\n                                                    </LocalizedLink>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <div className=\"col-12 col-lg-6\">\n                                        <div className=\"kpi-box\">\n                                            <div className=\"row\">\n                                                <div className=\"icon col-12 col-md-3\">\n                                                    <img alt=\"\" src={iconCaution} />\n                                                </div>\n                                                <div className=\"col-12 col-md-9 text-right\">\n                                                    <div className=\"chart\">\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.backOrders.byBrand.SCALEA, this.props.summary.backOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.backOrders.byBrand.SCALEA} SCALEA</div>\n                                                        </div>\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.backOrders.byBrand.SENSA, this.props.summary.backOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.backOrders.byBrand.SENSA} SENSA</div>\n                                                        </div>\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.backOrders.byBrand.SILESTONE, this.props.summary.backOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.backOrders.byBrand.SILESTONE} SILESTONE</div>\n                                                        </div>\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.backOrders.byBrand.DEKTON, this.props.summary.backOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.backOrders.byBrand.DEKTON} DEKTON</div>\n                                                        </div>\n                                                        <div\n                                                            className=\"bar\"\n                                                            style={{\n                                                                height:\n                                                                    this.props.summary &&\n                                                                    this.calcOverCount(this.props.summary.backOrders.byBrand.PREXURY, this.props.summary.backOrders.count) + '%'\n                                                            }}\n                                                        >\n                                                            <div className=\"number\">{this.props.summary && this.props.summary.backOrders.byBrand.PREXURY} PREXURY</div>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div className=\"row\">\n                                                <div className=\"info col-12\">\n                                                    <LocalizedLink routeId=\"ROUTE_KPI_DETAIL\" params={{ filter: 'back-orders' }}>\n                                                        <div className=\"title\">\n                                                            <Translation id=\"back_orders\" defaultMessage=\"Back orders\" />\n                                                        </div>\n                                                        <div className=\"subtitle\">\n                                                            <span className=\"number\">{this.props.summary && this.props.summary.backOrders.count}</span>\n                                                            <Translation id=\"items_withouth_stock\" defaultMessage=\"Items withouth stock\" />\n                                                            <i className=\"goto-icon fal fa-chevron-right\" />\n                                                        </div>\n                                                    </LocalizedLink>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\nKpis = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(Kpis)\n\nexport default Kpis\n","import React from 'react'\n\nimport Kpis from '../components/kpis/Kpis'\n\nclass KpisScreen extends React.Component {\n    render() {\n        return <Kpis />\n    }\n}\n\nexport default KpisScreen\n","import React from 'react'\nimport Translation from '../../../global/Translation'\n\nimport ReactTable from 'react-table'\nimport { getIsLoading, getBackOrders } from '../../../../store/kpis/reducers'\nimport { connect } from 'react-redux'\nimport Spinner from '../../../global/Spinner'\nimport { fetchBackOrders } from '../../../../store/kpis/actions'\nimport GoBack from '../../../global/GoBack'\nconst mapStateToProps = state => {\n    return {\n        backOrders: getBackOrders(state),\n        isLoading: getIsLoading(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchBackOrders: page => {\n            dispatch(fetchBackOrders(page))\n        }\n    }\n}\nclass BackOrders extends React.Component {\n    componentDidMount() {\n        this.props.fetchBackOrders()\n    }\n    render() {\n        const { isLoading, backOrders } = this.props\n        if (!backOrders) return <Spinner isLoading={isLoading} />\n        return (\n            <div>\n                <GoBack />\n                <h2>\n                    <Translation id=\"back_orders\" defaultMessage=\"Back orders\" />\n                </h2>\n\n                <ReactTable\n                    data={backOrders.data}\n                    columns={[\n                        { Header: <Translation id=\"order_id\" defaultMessage=\"Order ID\" />, accessor: 'orderId' },\n                        { Header: <Translation id=\"order_type\" defaultMessage=\"Order Type\" />, accessor: 'orderType' },\n                        { Header: <Translation id=\"position\" defaultMessage=\"Position\" />, accessor: 'position' },\n                        { Header: <Translation id=\"priority\" defaultMessage=\"Priority\" />, accessor: 'priority' },\n                        { Header: <Translation id=\"prefered_delivery_date\" defaultMessage=\"Preferred delivery date\" />, accessor: 'preferredDeliveryDate' },\n                        { Header: <Translation id=\"order_date\" defaultMessage=\"Order date\" />, accessor: 'createdAt' },\n                        { Header: <Translation id=\"quantity\" defaultMessage=\"Quantity\" />, id: 'qty', accessor: 'qty', className: 'text-right' },\n                        {\n                            Header: <Translation id=\"pending_quantity\" defaultMessage=\"Pending Quantity\" />,\n                            id: 'pendingQty',\n                            accessor: 'pendingQty',\n                            className: 'text-right'\n                        },\n                        { Header: <Translation id=\"price\" defaultMessage=\"Price\" />, id: 'price', accessor: 'price', className: 'text-right' },\n                        { Header: <Translation id=\"type_of_sale\" defaultMessage=\"Type of sale\" />, accessor: 'typeOfSale' },\n                        { Header: <Translation id=\"channel\" defaultMessage=\"Channel\" />, accessor: 'channel' },\n                        { Header: <Translation id=\"use\" defaultMessage=\"Use\" />, accessor: 'use' },\n                        { Header: <Translation id=\"center_id\" defaultMessage=\"Center ID\" />, accessor: 'centerId' },\n                        { Header: <Translation id=\"client_id\" defaultMessage=\"Client ID\" />, accessor: 'customerId' },\n                        { Header: <Translation id=\"client\" defaultMessage=\"Client\" />, accessor: 'customerName' },\n                        { Header: <Translation id=\"productId\" defaultMessage=\"Product ID\" />, accessor: 'productId' },\n                        { Header: <Translation id=\"product\" defaultMessage=\"Product\" />, accessor: 'productDescription' }\n                    ]}\n                    defaultPageSize={20}\n                    showPageSizeOptions={false}\n                    pageSizeOptions={[8, 16, 32, 64, 128]}\n                    manual\n                    pages={this.props.backOrders.last_page}\n                    previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                    nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                    loadingText={<Translation id=\"loading\" defaultMessage=\"Loading\" />}\n                    noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                    pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                    ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                    onFetchData={(state, instance) => {\n                        this.props.fetchBackOrders(state.page + 1)\n                        this.setState({ loading: true })\n                    }}\n                />\n            </div>\n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BackOrders)\n","import React from 'react'\n\nimport ReactTable from 'react-table'\nimport 'react-table/react-table.css'\nimport { connect } from 'react-redux'\nimport { currentDeliveryId, currentDeliveryDetailLines } from '../../../store/kpis/reducers'\nimport { closeDeliveryDetail } from '../../../store/kpis/actions'\n\nconst mapStateToProps = state => {\n    return {\n        deliveryDetail: currentDeliveryDetailLines(state),\n        deliveryId: currentDeliveryId(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(closeDeliveryDetail())\n        }\n    }\n}\n\nconst KpiDetailModal = ({ deliveryDetail, deliveryId, onClose }) => (\n    <div style={{ display: deliveryId ? 'block' : 'none' }}>\n        <div className=\"modal-kpi-overlay\" onClick={onClose} />\n        <div className=\"modal-kpi-container\">\n            <div className=\"container header row no-gutters\">\n                <div className=\"col-6 my-auto\">\n                    <h3>Order: {deliveryId}</h3>\n                </div>\n                <div className=\"col-6 my-auto text-right\">\n                    <div className=\"bt-close\" onClick={onClose}>\n                        <i className=\"fal fa-times\" />\n                    </div>\n                </div>\n            </div>\n            <div className=\"table\">\n                <ReactTable\n                    data={deliveryDetail}\n                    columns={[\n                        {\n                            Header: 'deliveryId',\n                            accessor: 'deliveryId'\n                        },\n                        {\n                            Header: 'pos',\n                            accessor: 'pos'\n                        },\n                        {\n                            Header: 'productId',\n                            accessor: 'productId'\n                        },\n                        {\n                            Header: 'product',\n                            accessor: 'product'\n                        },\n                        {\n                            Header: 'qty',\n                            accessor: 'qty'\n                        },\n                        {\n                            Header: '_UM',\n                            accessor: '_UM'\n                        },\n                        {\n                            Header: 'shippingPlace',\n                            accessor: 'shippingPlace'\n                        },\n                        {\n                            Header: 'createdBy',\n                            accessor: 'createdBy'\n                        },\n                        {\n                            Header: '_Doc.compr.',\n                            accessor: '_Doc.compr.'\n                        },\n                        {\n                            Header: '_Doc.modelo',\n                            accessor: '_Doc.modelo'\n                        },\n                        {\n                            Header: '_PosMod',\n                            accessor: '_PosMod'\n                        },\n                        {\n                            Header: 'lotId',\n                            accessor: 'lotId'\n                        },\n                        {\n                            Header: '_Nº stock esp.',\n                            accessor: '_Nº stock esp.'\n                        }\n                    ]}\n                    defaultPageSize={8}\n                    pageSizeOptions={[8, 16, 32, 64, 128]}\n                    previousText=\"Anterior\"\n                    nextText=\"Siguiente\"\n                    loadingText=\"Cargando...\"\n                    noDataText=\"No hay datos\"\n                    pageText=\"Página\"\n                    ofText=\"de\"\n                />\n            </div>\n        </div>\n    </div>\n)\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(KpiDetailModal)\n","import React from 'react'\n\nimport LocalizedLink from '../../../global/LocalizedLink'\n\nconst KpiTabButton = ({ link, icon, number, active }) => {\n    const kpiClass = active ? 'kpi active' : 'kpi'\n    return (\n        <LocalizedLink routeId={link}>\n            <div className={kpiClass}>\n                <div className=\"row\">\n                    <div className=\"col-12 col-lg-6\">\n                        <div className=\"icon\">\n                            <img alt=\"\" src={icon} />\n                        </div>\n                    </div>\n                    <div className=\"col-12 col-lg-6\">\n                        <div className=\"number\">{number}</div>\n                    </div>\n                </div>\n            </div>\n        </LocalizedLink>\n    )\n}\n\nexport default KpiTabButton\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport { fetchKpis } from '../../../../store/kpis/actions'\nimport { getSummary } from '../../../../store/kpis/reducers'\nimport { injectIntl } from 'react-intl'\nimport { withRouter } from 'react-router-dom'\nimport iconCart from '../../../../assets/img/icons/cart-thin.svg'\nimport iconCaution from '../../../../assets/img/icons/caution.svg'\nimport KpiTabButton from './KpiTabButton'\nimport moment from 'moment'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        filter: match.params.filter,\n        summary: getSummary(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchKpis: (startDate, endDate, customers, centers, topColors) => {\n            dispatch(fetchKpis(startDate, endDate, customers, centers, topColors))\n        }\n    }\n}\nclass KpiHeader extends React.Component {\n    componentDidMount() {\n        this.props.fetchKpis(moment().startOf('year'), moment(), null, null, null)\n    }\n    render() {\n        const { summary, filter } = this.props\n        return (\n            <div className=\"row\">\n                <div className=\"col-12 col-lg-8 offset-lg-2\">\n                    <div className=\"row\">\n                        <div className=\"col-12\" />\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"container\" />\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"kpis-resume\">\n                                <div className=\"row\">\n                                    <div className=\"col\">\n                                        <KpiTabButton\n                                            link={this.props.intl.formatMessage({ id: 'ROUTE_KPI_DETAIL' }).replace(':filter', 'open-orders')}\n                                            icon={iconCart}\n                                            active={filter === 'open-orders'}\n                                            number={summary ? summary.openOrders.count : null}\n                                        />\n                                    </div>\n                                    <div className=\"col\">\n                                        <KpiTabButton\n                                            link={this.props.intl.formatMessage({ id: 'ROUTE_KPI_DETAIL' }).replace(':filter', 'back-orders')}\n                                            icon={iconCaution}\n                                            active={filter === 'back-orders'}\n                                            number={summary ? summary.backOrders.count : null}\n                                        />\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default withRouter(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(injectIntl(KpiHeader))\n)\n","import React from 'react'\nimport Translation from '../../../global/Translation'\n\nimport ReactTable from 'react-table'\nimport { getOpenOrders, getIsLoading } from '../../../../store/kpis/reducers'\nimport { connect } from 'react-redux'\nimport Spinner from '../../../global/Spinner'\nimport { fetchOpenOrders } from '../../../../store/kpis/actions'\nimport GoBack from '../../../global/GoBack'\nconst mapStateToProps = state => {\n    return {\n        openOrders: getOpenOrders(state),\n        isLoading: getIsLoading(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOpenOrders: page => {\n            dispatch(fetchOpenOrders(page))\n        }\n    }\n}\nclass OpenOrders extends React.Component {\n    componentDidMount() {\n        this.props.fetchOpenOrders()\n    }\n    render() {\n        const { isLoading, openOrders } = this.props\n        if (!openOrders) return <Spinner isLoading={isLoading} />\n        return (\n            <div>\n                <GoBack />\n                <h2>\n                    <Translation id=\"open_orders\" defaultMessage=\"Open orders\" />\n                </h2>\n                <ReactTable\n                    data={openOrders.data}\n                    columns={[\n                        {\n                            Header: <Translation id=\"order_id\" defaultMessage=\"Order ID\" />,\n                            accessor: 'orderId'\n                        },\n                        {\n                            Header: <Translation id=\"order_type\" defaultMessage=\"Order Type\" />,\n                            accessor: 'orderType'\n                        },\n                        {\n                            Header: <Translation id=\"position\" defaultMessage=\"Position\" />,\n                            accessor: 'position'\n                        },\n                        {\n                            Header: <Translation id=\"priority\" defaultMessage=\"Priority\" />,\n                            accessor: 'priority'\n                        },\n                        {\n                            Header: <Translation id=\"prefered_delivery_date\" defaultMessage=\"Preferred delivery date\" />,\n                            accessor: 'preferredDeliveryDate'\n                        },\n                        {\n                            Header: <Translation id=\"order_date\" defaultMessage=\"Order date\" />,\n                            accessor: 'createdAt'\n                        },\n                        {\n                            Header: <Translation id=\"quantity\" defaultMessage=\"Quantity\" />,\n                            id: 'qty',\n                            accessor: 'qty',\n                            className: 'text-right'\n                        },\n                        {\n                            Header: <Translation id=\"pending_quantity\" defaultMessage=\"Pending Quantity\" />,\n                            id: 'pendingQty',\n                            accessor: 'pendingQty',\n                            className: 'text-right'\n                        },\n                        {\n                            Header: <Translation id=\"price\" defaultMessage=\"Price\" />,\n                            id: 'price',\n                            accessor: 'price',\n                            className: 'text-right'\n                        },\n                        {\n                            Header: <Translation id=\"type_of_sale\" defaultMessage=\"Type of sale\" />,\n                            accessor: 'typeOfSale'\n                        },\n                        {\n                            Header: <Translation id=\"channel\" defaultMessage=\"Channel\" />,\n                            accessor: 'channel'\n                        },\n                        {\n                            Header: <Translation id=\"use\" defaultMessage=\"Use\" />,\n                            accessor: 'use'\n                        },\n                        {\n                            Header: <Translation id=\"center_id\" defaultMessage=\"Center ID\" />,\n                            accessor: 'centerId'\n                        },\n                        {\n                            Header: <Translation id=\"client_id\" defaultMessage=\"Client ID\" />,\n                            accessor: 'customerId'\n                        },\n                        {\n                            Header: <Translation id=\"client\" defaultMessage=\"Client\" />,\n                            accessor: 'customerName'\n                        },\n                        {\n                            Header: <Translation id=\"productId\" defaultMessage=\"Product ID\" />,\n                            accessor: 'productId'\n                        },\n                        {\n                            Header: <Translation id=\"product\" defaultMessage=\"Product\" />,\n                            accessor: 'productDescription'\n                        }\n                    ]}\n                    defaultPageSize={20}\n                    showPageSizeOptions={false}\n                    pageSizeOptions={[8, 16, 32, 64, 128]}\n                    manual\n                    pages={this.props.openOrders.last_page}\n                    previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                    nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                    loadingText={<Translation id=\"loading\" defaultMessage=\"Loading\" />}\n                    noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                    pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                    ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                    onFetchData={(state, instance) => {\n                        // show the loading overlay\n                        this.props.fetchOpenOrders(state.page + 1)\n                        this.setState({ loading: true })\n                        // fetch your data\n                        // this.props.fetchOpenOrders().then(this.setState({ data: openOrders.data, loading: false, pages: -1 }))\n                        // Update react-table\n                    }}\n                />\n            </div>\n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(OpenOrders)\n","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\nimport { Route, Switch } from 'react-router-dom'\nimport BackOrders from '../components/kpis/KpiDetail/KpiBody/BackOrders'\nimport KpiDetailModal from '../components/kpis/KpiDetail/KpiDetailModal'\nimport KpiHeader from '../components/kpis/KpiDetail/KpiHeader/KpiHeader'\nimport KpisFilters from '../components/kpis/KpisFilters'\nimport OpenOrders from '../components/kpis/KpiDetail/KpiBody/OpenOrders'\nimport { connect } from 'react-redux'\nimport { getLocalizedUrl } from '../store/ui/reducers'\n\nconst mapStateToProps = (state, props) => {\n    return {\n        localizedUrl: (routeId) => getLocalizedUrl(state, props.intl, routeId)\n    }\n}\n\nclass KpiDetailScreen extends React.Component {\n    render() {\n        return (\n            <div>\n                <section id=\"section-kpis\" className=\"detail\">\n                    <div className=\"top-background\">\n                        <div className=\"waves\" />\n                    </div>\n                    <div className=\"kpis-container\">\n                        <div className=\"container\">\n                            <KpisFilters {...this.props} />\n\n                            <KpiHeader />\n                            <div className=\"row\">\n                                <div className=\"col-12\">\n                                    <div className=\"results\">\n                                        <Switch>\n                                            <Route path={this.props.localizedUrl('ROUTE_KPI_DETAIL').replace(':filter', 'open-orders')} component={OpenOrders} />{' '}\n                                            <Route path={this.props.localizedUrl('ROUTE_KPI_DETAIL').replace(':filter', 'back-orders')} component={BackOrders} />{' '}\n                                        </Switch>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <KpiDetailModal />\n                </section>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(KpiDetailScreen)\n)\n","import { connect } from 'react-redux'\nimport { getLastProductBoughts } from '../../store/products/reducers'\n\nimport { fetchLastProductsBought } from '../../store/products/actions'\nimport { getIsLogged } from '../../store/login/reducers'\nimport { canViewMktools } from '../../store/centers/reducers'\nimport ProductsSlider from \"./ProductsSlider\";\nimport Translation from \"../global/Translation\";\nimport React from \"react\";\n\nconst mapStateToProps = state => {\n    return {\n        products: getLastProductBoughts(state),\n        hide: !getIsLogged(state) || canViewMktools(state),\n        title: <Translation id=\"recently-purchased-products\" defaultMessage=\"Recently purchased products\" />,\n        analyticsTag: 'recently_purchased',\n        gtmLabel: 'ec_carrusel_rencently_purchased'\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetch: () => {\n            return dispatch(fetchLastProductsBought())\n        }\n    }\n}\n\nconst LastBoughtProductsContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductsSlider)\n\nexport default LastBoughtProductsContainer\n","import Cookies from 'cookies-js'\nimport * as api from '../api'\nimport { getToken } from '../login/reducers'\n\nexport const setLastView = () => {\n    Cookies.set('changeLogLastView', Date.now())\n    return {\n        type: 'SET_LAST_VIEW',\n        date: parseInt(Cookies.get('changeLogLastView'), 10)\n    }\n}\nexport const fetchChangelogByProject = onlyNews => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_CHANGELOG_BY_PROJECT_REQUEST'\n    })\n    return api\n        .fetchChangelogByProject(getToken(getState()), onlyNews)\n        .then(response => {\n            if (onlyNews) dispatch({ type: 'FETCH_CHANGELOG_BY_PROJECT_NEWS_SUCCESS', items: response.data })\n            else dispatch({ type: 'FETCH_CHANGELOG_BY_PROJECT_SUCCESS', items: response.data })\n        })\n        .catch(() => {\n            dispatch({ type: 'FETCH_CHANGELOG_BY_PROJECT_FAILURE', extra: 'do nothing' })\n        })\n}\n","import React, { Component } from 'react'\nimport { getChangelogItemsNews } from '../../store/changelog/reducers'\nimport { fetchChangelogByProject } from '../../store/changelog/actions'\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\n\nimport { getIsLogged } from '../../store/login/reducers'\nimport Translation from '../global/Translation'\n\nconst mapStateToProps = state => {\n    return {\n        changelogItems: getChangelogItemsNews(state),\n        isLogged: getIsLogged(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchChangelogByProject: onlyNews => dispatch(fetchChangelogByProject(onlyNews))\n    }\n}\n\nclass ChangeLog extends Component {\n    state = { showHelp: !this.props.lastView }\n    componentDidMount() {\n        if (!this.props.changelogItems) this.props.fetchChangelogByProject(true)\n    }\n    render() {\n        let { changelogItems, isLogged } = this.props\n        if (isLogged && changelogItems && Object.keys(changelogItems).length > 0) {\n            return (\n                <div className=\"container\">\n                    <div className=\"row\">\n                        <div className=\"col\">\n                            <div class=\"\">\n                                <h3 className=\"mb-4 display-4\" style={{ borderBottom: '1px solid rgba(0,0,0,0.1)' }}>\n                                    <Translation defaultMessage=\"What´s new\" id=\"what_new\" />!\n                                </h3>\n\n                                {changelogItems &&\n                                    Object.keys(changelogItems).map(date => {\n                                        if (\n                                            //check if some functionality have items\n                                            Object.entries(changelogItems[date])\n                                                .map(([key, value]) => ({ key, value }))\n                                                .some(item => Object.entries(item.value).length > 0)\n                                        ) {\n                                            return (\n                                                <React.Fragment>\n                                                    {Object.keys(changelogItems[date]).map(project => {\n                                                        if (Object.entries(changelogItems[date][project]).length > 0) {\n                                                            return (\n                                                                <div>\n                                                                    <h5>{this.props.intl.formatMessage({ id: project })}</h5>\n                                                                    <ul className=\"changelog-items\" style={{ listStyle: 'none' }}>\n                                                                        {Object.keys(changelogItems[date][project]).map(functionality => {\n                                                                            if (Object.keys(changelogItems[date][project][functionality]).length > 0) {\n                                                                                return (\n                                                                                    <li>\n                                                                                        <h6>{this.props.intl.formatMessage({ id: functionality })}</h6>\n                                                                                        <ul className=\"changelog-items\" style={{ listStyle: 'none' }}>\n                                                                                            {Object.keys(changelogItems[date][project][functionality]).map(change => {\n                                                                                                return (\n                                                                                                    <div>\n                                                                                                        <h6>\n                                                                                                            <span className=\"badge badge-primary mr-1\">\n                                                                                                                {this.props.intl.formatMessage({ id: change })}\n                                                                                                            </span>\n                                                                                                        </h6>\n                                                                                                        <ul className=\"changelog-items\" style={{ listStyle: 'none' }}>\n                                                                                                            {changelogItems[date][project][functionality][change].map(\n                                                                                                                (item, index) => {\n                                                                                                                    return (\n                                                                                                                        <li className=\"mb-4\">\n                                                                                                                            <div\n                                                                                                                                className=\"changelog–items__title collapsed\"\n                                                                                                                                data-toggle=\"collapse\"\n                                                                                                                                data-target={\n                                                                                                                                    '#' +\n                                                                                                                                    date +\n                                                                                                                                    project +\n                                                                                                                                    functionality +\n                                                                                                                                    change +\n                                                                                                                                    index\n                                                                                                                                }\n                                                                                                                                aria-controls={\n                                                                                                                                    date + project + functionality + change + index\n                                                                                                                                }\n                                                                                                                            >\n                                                                                                                                <span>{item.title}</span>\n                                                                                                                                {item.description && (\n                                                                                                                                    <div\n                                                                                                                                        className=\"button_info button_info--changelog\"\n                                                                                                                                        style={{ left: 'initial' }}\n                                                                                                                                    >\n                                                                                                                                        <i\n                                                                                                                                            className=\"fal fa-info-circle\"\n                                                                                                                                            style={{ margin: '5px' }}\n                                                                                                                                        />\n                                                                                                                                        <Translation\n                                                                                                                                            id=\"plus_info\"\n                                                                                                                                            defaultMessage=\"+ Info\"\n                                                                                                                                        />\n                                                                                                                                    </div>\n                                                                                                                                )}\n                                                                                                                            </div>\n                                                                                                                            {item.description && (\n                                                                                                                                <div\n                                                                                                                                    id={\n                                                                                                                                        date +\n                                                                                                                                        project +\n                                                                                                                                        functionality +\n                                                                                                                                        change +\n                                                                                                                                        index\n                                                                                                                                    }\n                                                                                                                                    className=\"collapse\"\n                                                                                                                                >\n                                                                                                                                    <small>{item.description}</small>\n                                                                                                                                </div>\n                                                                                                                            )}\n                                                                                                                        </li>\n                                                                                                                    )\n                                                                                                                }\n                                                                                                            )}\n                                                                                                        </ul>\n                                                                                                    </div>\n                                                                                                )\n                                                                                            })}\n                                                                                        </ul>\n                                                                                    </li>\n                                                                                )\n                                                                            } else return null\n                                                                        })}\n                                                                    </ul>\n                                                                </div>\n                                                            )\n                                                        } else return null\n                                                    })}\n                                                </React.Fragment>\n                                            )\n                                        } else return null\n                                    })}\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            )\n        } else return null\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(ChangeLog)\n)\n","import React, { createRef } from 'react'\nimport Translation from '../global/Translation'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport {cloneDeep, values} from 'lodash'\nimport Slider from \"react-slick\";\nimport { defineMessages } from 'react-intl'\n\ndefineMessages({\n    XERON: {\n        id: \"xeron\",\n        description: \"xeron\",\n        defaultMessage: \"Xeron\"\n    },\n    special_custom_projects: {\n        id: \"special_custom_projects\",\n        description: \"special_custom_projects\",\n        defaultMessage: \"Special custom projects\"\n    },\n    custom_flooring: {\n        id: \"custom_flooring\",\n        description: \"custom_flooring\",\n        defaultMessage: \"Custom flooring\"\n    },\n    wall_clading: {\n        id: \"wall_clading\",\n        description: \"wall_clading\",\n        defaultMessage: \"Wall clading\"\n    },\n    baseboards: {\n        id: \"baseboards\",\n        description: \"baseboards\",\n        defaultMessage: \"Baseboards\"\n    },\n    prexury: {\n        id: \"prexury\",\n        description: \"prexury\",\n        defaultMessage: \"Prexury\"\n    },\n    scalea: {\n        id: \"scalea\",\n        description: \"scalea\",\n        defaultMessage: \"Scalea\"\n    },\n    vanities: {\n        id: \"vanities\",\n        description: \"vanities\",\n        defaultMessage: \"Vanities\"\n    },\n    sensa: {\n        id: \"sensa\",\n        description: \"sensa\",\n        defaultMessage: \"Sensa\"\n    },\n    colorsil: {\n        id: \"colorsil\",\n        description: \"colorsil\",\n        defaultMessage: \"Colorsil\"\n    },\n    flooring_cladding: {\n        id: \"flooring_cladding\",\n        description: \"flooring_cladding\",\n        defaultMessage: \"Flooring cladding\"\n    },\n})\n\nclass MenuLinksV2 extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            props: props,\n        }\n    }\n\n    render() {\n        const {\n            responsive,\n            customClass,\n            mktoolShippingCenter\n        } = this.state.props\n\n        const showMall = () => {\n            let control = false\n            if(this.props.userLandings && this.props.userLandings.length > 0 && this.props.isMallPilotUser) {\n                this.props.userLandings.map(landing => {\n                    let today = new Date()\n                    if (new Date(landing.end_at) > today) {\n                        control = true\n                    }\n\n                })\n                return(control)\n            }\n            return false\n        }\n        const getMallLink = () => {\n            if(this.props.userLandings && this.props.userLandings.length > 0) {\n                for (let i = 0; i < this.props.userLandings.length; i++) {\n                    let today = new Date()\n                    if (new Date(this.props.userLandings[i].end_at) > today) {                                             \n                        return (this.props.userLandings[i].slug)                        \n                    }                    \n                }                \n            }else{\n                return (\"test\")  \n            }\n            \n        }\n\n        const brandLinks = [];\n        if (\n            !this.props.isNoSilestoneCenter && // Verifica si no es un centro que no vende Silestone\n            (!this.props.isAustralianCenter || this.props.isSilestoneBrandVisible) // Verifica si no es Australia o si hay stock\n        ) {\n            brandLinks.push({\n                name: 'Silestone',\n                queryString: `?type[0]=TABLA&brand[0]=SILESTONE`,\n                routeId: 'ROUTE_CATALOG',\n                translationId: 'silestone',\n                params: { outlet: '' },\n                dataQas: 'global_header-silestone-menu-link-child'\n            })\n        }\n\n        if (this.props.isAustralianCenter) {\n            brandLinks.push({\n                name: 'Xeron',\n                queryString: `?type[0]=TABLA&brand[0]=XERON`,\n                routeId: 'ROUTE_CATALOG',\n                translationId: 'xeron',\n                params: { outlet: '' },\n                dataQas: 'global_header-xeron-menu-link-child'\n            })\n        }\n        \n        brandLinks.push({\n            name: this.props.selectedCenter == 7130 ? 'DKTN' : 'Dekton',\n            translationId: this.props.selectedCenter == 7130 ? 'Dktn' : 'dekton',\n            queryString:\n                this.props.selectedCenter == 7130\n                    ? `?type[0]=TABLA&brand[0]=DKTN`\n                    : `?type[0]=TABLA&brand[0]=DEKTON`,\n            routeId: 'ROUTE_CATALOG',\n            params: { outlet: '' },\n            dataQas: 'global_header-dekton-menu-link-child'\n        })\n        brandLinks.push({\n            name: 'Scalea',\n            translationId: 'scalea',\n            queryString: `?type[0]=TABLA&brand[0]=SCALEA`,\n            routeId: 'ROUTE_CATALOG',\n            params: { outlet: '' },\n            dataQas: 'global_header-scalea-menu-link-child'\n        })\n        brandLinks.push({\n            name: 'Sensa',\n            translationId: 'sensa',\n            queryString: `?type[0]=TABLA&brand[0]=SENSA`,\n            routeId: 'ROUTE_CATALOG',\n            params: { outlet: '' },\n            dataQas: 'global_header-sensa-menu-link-child'\n        })\n        brandLinks.push({\n            name: 'Prexury',\n            translationId: 'prexury',\n            queryString: `?type[0]=TABLA&brand[0]=PREXURY`,\n            routeId: 'ROUTE_CATALOG',\n            params: { outlet: '' },\n            dataQas: 'global_header-prexury-menu-link-child'\n        })\n\n        const outletBrandLinks = cloneDeep(brandLinks)\n        outletBrandLinks.pop()\n        outletBrandLinks.forEach(v => {\n            v.params.outlet = 'outlet'\n            v.queryString = v.queryString.replace('type[0]=TABLA&', '')\n            delete v.dataQas\n        })\n\n        let linksMenu = [\n            {\n                name: 'slabs',\n                routeId: 'ROUTE_CATALOG',\n                params: { outlet: '' },\n                queryString: '?type[0]=TABLA',\n                translationId: 'tables',\n                customClassTag: 'slabs',\n                show: this.props.centerPreferences && this.props.centerPreferences.productsByType.slab && this.props.canViewCatalog,\n                dataQas: 'global_header-slabs-menu-link',\n                gtmLabel: 'ec_menu_header-slabs',\n                links: brandLinks\n            },\n            {\n                name: 'standard products',\n                routeId: 'ROUTE_CATALOG',\n                queryString: '?type[0]=TABLA&type[1]=CTS&subtype[0]=SOLERIA&type[2]=BAÑOS&type[3]=FREGADERO&subtype[1]=Optimma&subtype[2]=Washbasin&subtype[3]=wall_clading&subtype[4]=Shower%20tray&subtype[5]=IDUEL&subtype[6]=IDUES&subtype[7]=INTEGRITY%20DUE%20L&subtype[8]=INTEGRITY%20DUE%20S&subtype[9]=INTEGRITY%20DUE-T&subtype[10]=INTEGRITY%20ONE&subtype[11]=INTEGRITY%20XL&subtype[12]=INTEGRITY-Q&subtype[13]=IONE&subtype[14]=IXL&subtype[15]=LOF&subtype[16]=Tile',\n                params: { outlet: '' },\n                translationId: 'standard_products',\n                customClassTag: 'standard',\n                show: this.props.canViewCatalog && !this.props.canViewMktools,\n                dataQas: 'global_header-standard-products-menu-link',\n                gtmLabel: 'ec_menu_header-sinks',\n                links: [\n                    {\n                        name: 'Flooring & Cladding',\n                        queryString: '?type[0]=TABLA&type[1]=CTS&subtype[0]=SOLERIA&subtype[1]=Optimma&subtype[2]=wall_clading&subtype[3]=Tile',\n                        routeId: 'ROUTE_CATALOG',\n                        translationId: 'flooring_cladding',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-flooring-cladding-menu-link-child'\n                    },\n                    {\n                        name: 'Sinks',\n                        queryString: '?type[0]=FREGADERO',\n                        translationId: 'sinks',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-sinks-menu-link-child'\n                    },\n                    {\n                        name: 'Shower Trays',\n                        queryString: '?type[0]=BAÑOS&subtype[0]=Shower%20tray',\n                        translationId: 'subtype_shower_tray',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-shower-trays-menu-link-child'\n                    },\n                    {\n                        name: 'Vanities',\n                        translationId: 'vanities',\n                        queryString: '?type[0]=BA%C3%91OS&subtype[0]=Washbasin',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-vanities-menu-link-child'\n                    }\n                ]\n            },\n            {\n                name: 'custom products',\n                routeId: 'ROUTE_CUT_TO_SIZE',\n                queryString: '',\n                translationId: 'custom_products',\n                params: { outlet: '' },\n                customClassTag: 'cts',\n                show: this.props.canViewCutToSize && this.props.isLogged,\n                dataQas: 'global_header-custom-products-menu-link',\n                gtmLabel: 'ec_menu_header-elaborados',\n                links: [\n                    {\n                        name: 'Cut to Size',\n                        queryString: '?type=solo_corte',\n                        routeId: 'ROUTE_CUT_TO_SIZE',\n                        translationId: 'solo_corte',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-cts-menu-link-child'\n                    },\n                    {\n                        name: 'Custom Flooring',\n                        queryString: '?type=soleria',\n                        translationId: 'soleria',\n                        routeId: 'ROUTE_CUT_TO_SIZE',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-custom-floring-menu-link-child'\n                    },\n                    {\n                        name: 'Baseboards',\n                        queryString: '?type=rodapies',\n                        translationId: 'rodapies',\n                        routeId: 'ROUTE_CUT_TO_SIZE',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-baseboards-menu-link-child'\n                    },\n                    {\n                        name: 'Furniture',\n                        queryString: '?type=custom_mobiliario',\n                        translationId: 'furniture',\n                        routeId: 'ROUTE_CUT_TO_SIZE',\n                        params: { outlet: '' },\n                        notShow: !this.props.canViewFurniture,\n                        dataQas: 'global_header-furniture-menu-link-child'\n                    },\n                    {\n                        name: 'Washbasing and shower trays',\n                        queryString: '?type=configurable_bath',\n                        translationId: 'washbasing_and_shower_trays',\n                        routeId: 'ROUTE_CUT_TO_SIZE',\n                        params: { outlet: '' },\n                        notShow: !this.props.canViewConfigurableBath,\n                        dataQas: 'global_header-special-custom-projects-menu-link-child'\n                    },\n                    {\n                        name: 'Special custom projects',\n                        queryString: this.props.canViewPreorder ? '?type=preorder' : '?type=budget',\n                        translationId: 'special_custom_projects',\n                        routeId: 'ROUTE_CUT_TO_SIZE',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-special-custom-projects-menu-link-child'\n                    },\n                ]\n            },\n            {\n                name: 'ppcc',\n                routeId: 'ROUTE_CATALOG',\n                queryString: '?type[0]=PPCC',\n                translationId: 'professional_products',\n                params: { outlet: '' },\n                customClassTag: 'ppcc',\n                show: this.props.centerPreferences && this.props.centerPreferences.productsByType.complementary && this.props.canViewCatalog,\n                dataQas: 'global_header-professional-products-menu-link',\n                gtmLabel: 'ec_menu_header-ppcc',\n                links: [\n                    {\n                        name: 'Solumastik',\n                        queryString: '?type[0]=PPCC&subtype[0]=Solumastik',\n                        translationId: 'SOLUMASTIK',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-solumastik-menu-link-child'\n                    },\n                    {\n                        name: 'Colorsil',\n                        queryString: '?type[0]=PPCC&subtype[0]=Colorsil',\n                        translationId: 'colorsil',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-colorsil-menu-link-child'\n                    },\n                    {\n                        name: 'Mastidek',\n                        queryString: '?type[0]=PPCC&subtype[0]=Mastidek',\n                        translationId: 'MASTIDEK',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-mastidek-menu-link-child'\n                    },\n                    {\n                        name: 'Colordek',\n                        translationId: 'COLORDEK',\n                        queryString: '?type[0]=PPCC&subtype[0]=Colordek',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-colordek-menu-link-child'\n                    },\n                    {\n                        name: 'Abrasive',\n                        queryString: '?type[0]=PPCC&subtype[0]=ABRASIVE',\n                        translationId: 'ABRASIVE',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-abrasive-menu-link-child'\n                    },\n                    {\n                        name: 'Others',\n                        queryString: '?type[0]=PPCC&subtype[0]=OTHERS_PPCC',\n                        translationId: 'OTHERS',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-others-menu-link-child'\n                    }\n                ]\n            },\n            {\n                name: 'outlet',\n                routeId: 'ROUTE_CATALOG',\n                queryString: '',\n                translationId: 'outlet',\n                params: { outlet: 'outlet' },\n                customClassTag: 'outlet',\n                show: this.props.canViewCatalog && !this.props.canViewMktools,\n                dataQas: 'global_header-outlet-menu-link',\n                gtmLabel: 'ec_menu_header-outlet',\n                links: outletBrandLinks\n            },\n            {\n                name: 'Mall',\n                routeId: 'ROUTE_LANDING_TEMPLATE',\n                queryString: '',\n                params: { slug: getMallLink(), outlet: '', preview: '', iso: '' },\n                translationId: '',\n                customClassTag: 'mall',\n                show: showMall(),\n                dataQas: 'global_header-mall-menu-link',\n                links: this.props.userLandings\n                    ? this.props.userLandings.map(landing => {\n                          let today = new Date()\n                          if (new Date(landing.end_at) > today) {\n                              return {\n                                  name: landing['slug'],\n                                  routeId: 'ROUTE_LANDING_TEMPLATE',\n                                  params: { slug: landing ? landing['slug'] : 'test', outlet: '', preview: '', iso: '' },\n                                  translationId: ''\n                              }\n                          }\n                      })\n                    : []\n            },\n            {\n                name: 'marketing',\n                routeId: 'ROUTE_CATALOG',\n                //queryString: this.props.mktoolShippingCenter ? `?webHeading[0]=MK&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}` : '?webHeading[0]=MK',\n                queryString: '?webHeading[0]=MK',\n                params: { outlet: '' },\n                translationId: 'mktool',\n                customClassTag: 'mktool',\n                show: this.props.canViewMktools && !this.props.isWarehouse,\n                dataQas: 'global_header-maketing-menu-link',\n                links: [\n                    {\n                        name: 'Muestras',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=MK&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=01`\n                            : '?webHeading[0]=MK&type[0]=01',\n                        routeId: 'ROUTE_CATALOG',\n                        translationId: 'SAMPLES',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-muestras-menu-link-child'\n                    },\n                    {\n                        name: 'Expositores y torres',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=MK&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=08`\n                            : '?webHeading[0]=MK&type[0]=08',\n                        translationId: 'DISPLAYS',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-expositores-torres-menu-link-child'\n                    },\n                    {\n                        name: 'Cajas',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=MK&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=07`\n                            : '?webHeading[0]=MK&type[0]=07',\n                        translationId: 'BOXES',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-cajas-menu-link-child'\n                    },\n                    {\n                        name: 'Test Kits',\n                        translationId: 'TEST_KITS',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=MK&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=12`\n                            : '?webHeading[0]=MK&type[0]=12',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-test-kits-menu-link-child'\n                    },\n                    {\n                        name: 'Papeleria',\n                        translationId: 'LITERATURE',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=MK&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=04`\n                            : '?webHeading[0]=MK&type[0]=04',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-papeleria-menu-link-child'\n                    },\n                    {\n                        name: 'Merchandising',\n                        translationId: 'MERCHANDISING',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=MK&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=03`\n                            : '?webHeading[0]=MK&type[0]=03',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-merchandising-menu-link-child'\n                    }\n                ]\n            },\n            {\n                name: 'lowesBrochures',\n                routeId: 'ROUTE_CATALOG_LOWES',\n                queryString: '',\n                translationId: 'brochures',\n                params: { filter: 'brochures' },\n                customClassTag: '',\n                show: this.props.selectedCenter === this.props.lowesCenerId && this.props.userType !== 'ADMIN',\n                dataQas: 'global_header-lowes-brochures-menu-link'\n            },\n            {\n                name: 'lowesCustomerSamples',\n                routeId: 'ROUTE_CATALOG_LOWES',\n                queryString: '',\n                translationId: 'customer_samples',\n                params: { filter: 'customer-samples' },\n                customClassTag: '',\n                show: this.props.selectedCenter === this.props.lowesCenerId && this.props.userType !== 'ADMIN',\n                dataQas: 'global_header-lowes-samples-menu-link'\n            },\n            {\n                name: 'lowesAdmin',\n                routeId: 'ROUTE_CATALOG_LOWES_ADMIN',\n                queryString: '',\n                translationId: 'lowes',\n                params: { filter: 'home' },\n                customClassTag: '',\n                show: this.props.selectedCenter === this.props.lowesCenerId && this.props.userType === 'ADMIN',\n                dataQas: 'global_header-lowes-admin-menu-link'\n            },\n            {\n                name: 'showroom',\n                routeId: 'ROUTE_CATALOG',\n                queryString: this.props.mktoolShippingCenter ? `?webHeading[0]=SH&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}` : '?webHeading[0]=SH',\n                params: { outlet: '' },\n                translationId: 'showroom',\n                customClassTag: 'showroom',\n                dataQas: 'global_header-showroom-menu-link',\n                show: this.props.canViewMktools && !this.props.isWarehouse,\n                links: [\n                    {\n                        name: 'Identificadores',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=SH&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=05`\n                            : '?webHeading[0]=SH&type[0]=05',\n                        routeId: 'ROUTE_CATALOG',\n                        translationId: 'TAGS',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-identificadores-menu-link'\n                    },\n                    {\n                        name: 'Anclajes',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=SH&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=06`\n                            : '?webHeading[0]=SH&type[0]=06',\n                        translationId: 'ANCHORING',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-anclajes-menu-link'\n                    },\n                    {\n                        name: 'Expositores y torres',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=SH&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=07`\n                            : '?webHeading[0]=SH&type[0]=08',\n                        translationId: 'DISPLAYS',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' }\n                    },\n                    {\n                        name: 'Mobiliario',\n                        translationId: 'furniture',\n                        queryString: this.props.mktoolShippingCenter\n                            ? `?webHeading[0]=SH&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}&type[0]=10`\n                            : '?webHeading[0]=SH&type[0]=10',\n                        routeId: 'ROUTE_CATALOG',\n                        params: { outlet: '' },\n                        dataQas: 'global_header-mobiliario-menu-link'\n                    }\n                ]\n            },\n            {\n                name: 'warehouse',\n                routeId: 'ROUTE_CATALOG',\n                queryString: this.props.mktoolShippingCenter ? `?webHeading[0]=WH&mktoolShippingCenter[0]=${this.props.mktoolShippingCenter}` : '?webHeading[0]=WH',\n                params: { outlet: '' },\n                translationId: 'warehouse',\n                customClassTag: 'warehouse',\n                show: this.props.canViewMktools && this.props.isWarehouse,\n                dataQas: 'global_header-warehouse-menu-link'\n            }\n        ]\n        let links = [\n            {\n                name: 'slabs',\n                routeId: 'ROUTE_CATALOG',\n                queryString: '?type[0]=TABLA',\n                params: { outlet: '' },\n                translationId: 'tables',\n                customClassTag: 'slabs',\n                show: this.props.centerPreferences && this.props.centerPreferences.productsByType.slab && this.props.canViewCatalog,\n                gtmLabel: 'ec_home_banner_seccion-slabs'\n            },\n\n            {\n                name: 'standard products',\n                routeId: 'ROUTE_CATALOG',\n                queryString:\n                    '?type[0]=TABLA&type[1]=CTS&subtype[0]=SOLERIA&subtype[1]=Optimma&type[2]=BAÑOS&subtype[2]=wall_clading&subtype[3]=Washbasin&type[3]=BAÑOS&subtype[4]=Shower%20tray&?type[4]=FREGADERO',\n                params: { outlet: '' },\n                translationId: 'standard_products',\n                customClassTag: 'standard',\n                show: this.props.canViewCatalog && !this.props.canViewMktools,\n                gtmLabel: 'ec_home_banner_seccion-standard'\n            },\n            {\n                name: 'custom products',\n                routeId: 'ROUTE_CUT_TO_SIZE',\n                queryString: '',\n                translationId: 'custom_products',\n                params: { outlet: '' },\n                customClassTag: 'cts',\n                show: this.props.canViewCutToSize && this.props.isLogged,\n                gtmLabel: 'ec_home_banner_seccion-cts'\n            },\n            {\n                name: 'ppcc',\n                routeId: 'ROUTE_CATALOG',\n                queryString: '?type[0]=PPCC',\n                translationId: 'professional_products',\n                params: { outlet: '' },\n                customClassTag: 'ppcc',\n                show: this.props.centerPreferences && this.props.centerPreferences.productsByType.complementary && this.props.canViewCatalog,\n                gtmLabel: 'ec_home_banner_seccion-ppcc'\n            },\n\n            {\n                name: 'outlet',\n                routeId: 'ROUTE_CATALOG',\n                queryString: '',\n                translationId: 'outlet',\n                params: { outlet: 'outlet' },\n                customClassTag: 'outlet',\n                show: this.props.canViewCatalog && !this.props.canViewMktools,\n                gtmLabel: 'ec_home_banner_seccion-outlet'\n            },\n            {\n                name: 'promo',\n                routeId: 'ROUTE_CATALOG',\n                queryString: '?type[0]=TABLA&promo=true',\n                translationId: 'promotions',\n                params: { outlet: '' },\n                customClassTag: '',\n                show: this.props.hasPromoActivated\n            },\n            {\n                name: 'lowesBrochures',\n                routeId: 'ROUTE_CATALOG_LOWES',\n                queryString: '',\n                translationId: 'brochures',\n                params: { filter: 'brochures' },\n                customClassTag: '',\n                show: this.props.selectedCenter === this.props.lowesCenerId && this.props.userType !== 'ADMIN'\n            },\n            {\n                name: 'lowesCustomerSamples',\n                routeId: 'ROUTE_CATALOG_LOWES',\n                queryString: '',\n                translationId: 'customer_samples',\n                params: { filter: 'customer-samples' },\n                customClassTag: '',\n                show: this.props.selectedCenter === this.props.lowesCenerId && this.props.userType !== 'ADMIN'\n            },\n            {\n                name: 'lowesAdmin',\n                routeId: 'ROUTE_CATALOG_LOWES_ADMIN',\n                queryString: '',\n                translationId: 'lowes',\n                params: { filter: 'home' },\n                customClassTag: '',\n                show: this.props.selectedCenter === this.props.lowesCenerId && this.props.userType === 'ADMIN'\n            },\n            {\n                name: 'profile',\n                routeId: 'ROUTE_PROFILE',\n                queryString: '',\n                translationId: 'profile',\n                customClassTag: 'profile',\n                params: { filter: 'configuration', open: '' },\n                show: this.props.canViewCatalog\n            },\n            {\n                name: 'mkTool',\n                routeId: 'ROUTE_CATALOG',\n                queryString: mktoolShippingCenter ? `?webHeading[0]=MK&mktoolShippingCenter[0]=${mktoolShippingCenter}` : '?webHeading[0]=MK',\n                translationId: 'mktool',\n                params: { outlet: '' },\n                customClassTag: '',\n                show:\n                    this.props.canViewCatalog &&\n                    this.props.canViewMktools &&\n                    this.props.centerMktool &&\n                    (this.props.selectedCenter === this.props.showroomCenterId || this.props.selectedCenter === this.props.DRIUSACenterId)\n            },\n            {\n                name: 'showRoom',\n                routeId: 'ROUTE_CATALOG',\n                queryString: mktoolShippingCenter ? `?webHeading[0]=SH&mktoolShippingCenter[0]=${mktoolShippingCenter}` : '?webHeading[0]=SH',\n                translationId: 'showroom',\n                params: { outlet: '' },\n                customClassTag: '',\n                show:\n                    this.props.canViewCatalog &&\n                    this.props.canViewMktools &&\n                    this.props.centerShowroom &&\n                    (this.props.selectedCenter === this.props.showroomCenterId || this.props.selectedCenter === this.props.DRIUSACenterId)\n            },\n            {\n                name: 'warehouse',\n                routeId: 'ROUTE_CATALOG',\n                queryString: '?webHeading[0]=WH',\n                params: { outlet: '' },\n                translationId: 'warehouse',\n                customClassTag: '',\n                show: this.props.canViewCatalog &&\n                    this.props.canViewMktools &&\n                    this.props.centerWarehouse &&\n                    this.props.selectedCenter === this.props.warehoseCenterId\n            }\n        ]\n\n        const LinkList = ({ children, responsive, customClass = \"\", index }) =>\n            <li className={responsive ? 'nav-item ' + customClass : customClass} onClick={() => {\n                if (customClass) {\n                    let elementsClass = customClass.split(' ')\n                    //console.log({ \"selector\": elementsClass });\n                    let selector = (elementsClass[0].length > 0 ? `.${elementsClass[0]}` : \"\") + (elementsClass[1].length > 0 ? `.${elementsClass[1]}` : \"\")\n                    let element = selector !== \"\" ? document.querySelectorAll(selector) : null\n                    if (element && element[0]) {\n                        if (element[0].children && element[0].children[0]) {\n                            element[0].children[0].click()\n                        }\n                    }\n                }\n                if (responsive) {\n                    [...document.querySelectorAll(`#responsive-extra-menu-${index}`)].map(e => {\n                        e.hidden = !e.hidden\n                    });\n                    [...document.querySelectorAll(`#arrow-down-${index}`)].map(e => {\n                        e.hidden = !e.hidden\n                    });\n                    [...document.querySelectorAll(`#arrow-up-${index}`)].map(e => {\n                        e.hidden = !e.hidden\n                    });\n                }\n            }}>{children}</li>\n\n        const settings = {\n            arrows: true,\n            nextArrow: <SampleNextArrow />,\n            prevArrow: <SamplePrevArrow />,\n            swipeToSlide: true,\n            dots: true,\n            speed: 300,\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            infinite: false,\n            variableWidth: false\n        }\n\n\n        let hasBackground = false\n\n        return (\n                <React.Fragment>\n                    \n                    {\n                        !this.props.comp && !this.props.footer &&\n                      <div className={'product-links-container'}>\n                          {\n                              links.map((value, index) => (\n                                value.show &&\n                                <LinkList className='link-hover' responsive={responsive} params={values.params ? values.params : {}} customClass={(customClass ? customClass : \"\") + ` ${value.customClassTag}`} key={index}>\n                                    <LocalizedLink routeId={value.routeId} queryString={value.queryString} params={value.params} className={responsive ? 'nav-link' : null} gtmLabel={value.gtmLabel}>\n                                        <Translation id={value.translationId} />\n                                    </LocalizedLink>\n                                </LinkList>\n                              ))\n                          }\n                      </div>\n\n                    }\n                    {\n                      !this.props.comp && !this.props.footer &&\n                      <div className={'container product-links-slider-container'}>\n                          <Slider {...settings}>\n                              {\n                                  links.filter((value) => {\n                                      //TODO Refactor this please\n                                      return ['slabs', 'ppcc', 'elaborados', 'sinks', 'outlet', 'standard', 'cts'].includes(value.customClassTag);\n                                  }).map((value, index) => (\n                                    value.show &&\n                                      <div key={index}>\n                                          <div style={{margin: '0 10px'}}>\n                                              <LinkList className='link-hover' responsive={responsive} params={values.params ? values.params : {}} customClass={(customClass ? customClass : \"\") + ` ${value.customClassTag}`} key={index}>\n                                                  <LocalizedLink routeId={value.routeId} queryString={value.queryString} params={value.params} className={responsive ? 'nav-link' : null}>\n                                                      <Translation id={value.translationId} />\n                                                  </LocalizedLink>\n                                              </LinkList>\n                                          </div>\n\n                                      </div>\n\n                                  ))\n                              }\n                          </Slider>\n                      </div>\n\n                    }\n                    {\n                        this.props.footer && \n                        linksMenu.map((value, index) => (\n                            value.show &&\n                            <LinkList className='link-hover' responsive={responsive} params={values.params ? values.params : {}} customClass={(customClass ? customClass : \"\") + ` ${value.customClassTag}`} key={index}>\n                                <LocalizedLink routeId={value.routeId} queryString={value.queryString} params={value.params} className={responsive ? '' : null}>\n                                    {\n                                        value.translationId &&\n                                        <Translation id={value.translationId} />\n                                    }\n                                    {\n                                        !value.translationId &&\n                                        value.name\n                                    }      \n                                </LocalizedLink>\n                            </LinkList> \n                        ))\n                    }\n                    {\n                        this.props.comp &&\n                        <ul className={`nav-burger ${responsive ? \"responsive\" : \"\"}`} onMouseOver={() => {\n                            if (!responsive) {\n                                let backgroundHeight = 0;\n                                //document.querySelectorAll(\".header-links-separator\").forEach(e => e.hidden = false);\n                                document.querySelectorAll(\".extra-menu\").forEach(e => {\n                                    e.hidden = false\n                                    e.classList.add(\"fade-in\")\n                                    backgroundHeight = Math.max(backgroundHeight, e.offsetHeight)\n                                })\n                                document.querySelectorAll(\".background\").forEach(e => {\n                                    e.hidden = false\n                                    e.style.height = backgroundHeight + 'px'\n                                });\n                            }\n\n                        }} onMouseOut={() => {\n                            if (!responsive) {\n                                //document.querySelectorAll(\".header-links-separator\").forEach(e => e.hidden = true);\n                                document.querySelectorAll(\".extra-menu\").forEach(e => {\n                                    e.hidden = true\n                                    e.classList.remove(\"fade-in\")\n                                })\n                                document.querySelectorAll(\".background\").forEach(e => e.hidden = true);\n                            }\n\n                        }}>\n                            {\n                                linksMenu.map((value, index) => {return value.show &&\n                                    <li className='link-hover' index={index} responsive={responsive} params={values.params ? values.params : {}} customClass={(customClass ? customClass : \"\") + ` ${value.customClassTag} header-menu-link ${responsive ? \"responsive\" : \"\"}`} key={index}>\n                                        <LocalizedLink routeId={value.routeId}\n                                                       header={true}\n                                                       params={value.params}\n                                                       queryString={value.queryString}\n                                                       className='a-hover-menu v2'\n                                                       dataQas={value.dataQas}\n                                                       gtmLabel={value.gtmLabel}>\n\n                                            {\n                                                value.translationId &&\n                                                <Translation id={value.translationId} />\n                                            }\n                                            {\n                                                !value.translationId &&\n                                                value.name\n                                            }\n\n                                        </LocalizedLink>\n                                        {\n                                            responsive &&\n                                            <React.Fragment>\n                                            <span className='arrow-down' id={`arrow-down-${index}`} onClick={()=>{\n                                                [...document.querySelectorAll(`#responsive-extra-menu-${index}`)].map(e => {\n                                                    e.hidden = !e.hidden\n                                                });\n                                                [...document.querySelectorAll(`#arrow-down-${index}`)].map(e => {\n                                                    e.hidden = !e.hidden\n                                                });\n                                                [...document.querySelectorAll(`#arrow-up-${index}`)].map(e => {\n                                                    e.hidden = !e.hidden\n                                                });\n                                            }}><i className={`fal fa-chevron-down`}></i></span>\n                                                <span className='arrow-down' id={`arrow-up-${index}`} hidden={true} onClick={() => {\n                                                    [...document.querySelectorAll(`#responsive-extra-menu-${index}`)].map(e => {\n                                                        e.hidden = !e.hidden\n                                                    });\n                                                    [...document.querySelectorAll(`#arrow-down-${index}`)].map(e => {\n                                                        e.hidden = !e.hidden\n                                                    });\n                                                    [...document.querySelectorAll(`#arrow-up-${index}`)].map(e => {\n                                                        e.hidden = !e.hidden\n                                                    });\n                                                }}><i className={`fal fa-chevron-up`}></i></span>\n                                            </React.Fragment>\n                                        }\n                                        {\n                                            !hasBackground && <div className='background shadow-sm' hidden={true} gtm-label=\"ec_submenu_header\"/>\n                                        }\n                                        {\n                                            hasBackground = true\n                                        }\n                                        <div className=\"extra-menu\" id={window.innerWidth <= 1199 ? `responsive-extra-menu-${index}` : `extra-menu-${index}`} hidden={true}>\n                                            <ul className={`group-links header-menu-link`}>\n                                                {\n                                                    value.links &&\n                                                    value.links.map((link, i) => (\n                                                        link && !link.notShow &&\n                                                        <LinkList className='link-hover' responsive={responsive} params={values.params ? values.params : {}} key={i}>\n                                                            <LocalizedLink routeId={link.routeId}\n                                                                           header={true}\n                                                                           params={link.params}\n                                                                           queryString={link.queryString}\n                                                                           className={`${responsive ? 'nav-link' : null} sub-menu-link v2`}\n                                                                           control={value.name === \"custom products\" ? true : false}\n                                                                           dataQas={link.dataQas}\n                                                                           gtmLabel=\"ec_submenu_header\"\n                                                            >\n                                                                {\n                                                                    link.translationId !== \"\" &&\n                                                                    <Translation id={link.translationId} />\n                                                                }\n                                                                {\n                                                                    link.translationId === \"\" &&\n                                                                    <React.Fragment>{link.name}</React.Fragment>\n                                                                }\n\n\n                                                            </LocalizedLink>\n                                                        </LinkList>\n\n                                                    ))\n                                                }\n                                            </ul>\n                                        </div>\n                                    </li>\n                                })\n                            }\n                        </ul>\n                    }\n                </React.Fragment>\n        )\n    }\n\n}\n\nexport default MenuLinksV2;\n\nfunction SampleNextArrow(props) {\n    const { style, onClick } = props\n    return (\n      <i\n        className={'fal fa-chevron-right'}\n        style={{ ...style, display: 'block', position: 'absolute', right: 0, top: '40%', fontSize: '30px', cursor: 'pointer', zIndex: '10' }}\n        onClick={onClick}\n      />\n    )\n}\n\nfunction SamplePrevArrow(props) {\n    const { style, onClick } = props\n    return (\n      <i\n        className={'fal fa-chevron-left'}\n        style={{ ...style, display: 'block', position: 'absolute', top: '40%', fontSize: '30px', cursor: 'pointer', zIndex: '10' }}\n        onClick={onClick}\n      />\n    )\n}\n","import React from 'react'\nimport { canViewFurniture, canViewPreorder } from '../../store/login/reducers'\nimport { connect } from 'react-redux'\nimport MenuLinksV2 from '../header/MenuLinksV2'\n\nimport {\n  canViewCatalog,\n  canViewBaths,\n  canViewMktools,\n  canViewOutlet,\n  canViewPromotions,\n  getCenterMktool,\n  getCenterShowroom,\n  getCenterWarehose,\n  getDRIUSACenterId,\n  getLowesCenterId,\n  getMktoolsShippingCenter,\n  getSelectedCenter,\n  getSelectedCenterPreferences,\n  getShippingMethod,\n  getShowroomCenterId,\n  getWarehoseCenterId,\n  hasPromoActivated,\n  isNoSilestoneCenter,\n  isAustralianCenter,\n} from '../../store/centers/reducers'\nimport { changeCenter } from '../../store/centers/actions'\nimport { canViewCutToSize, getIsLogged, getIsMallPilotUser, getUserType, canViewConfigurableBath } from '../../store/login/reducers'\nimport { getUserLandings } from '../../store/landing/reducers'\nimport { injectIntl } from 'react-intl'\nimport { getIsXeronBrandVisible, getIsSilestoneBrandVisible } from '../../store/ui/reducers'\n\nconst mapStateToProps = (state, ownProps) => {\n  return {\n    canViewCatalog: canViewCatalog(state),\n    canViewPromotions: canViewPromotions(state),\n    canViewPreorder: canViewPreorder(state),\n    canViewFurniture: canViewFurniture(state),\n    centerPreferences: getSelectedCenterPreferences(state),\n    canViewOutlet: canViewOutlet(state),\n    hasPromoActivated: hasPromoActivated(state),\n    isLogged: getIsLogged(state),\n    shippingMethod: getShippingMethod(state),\n    userType: getUserType(state),\n    selectedCenter: getSelectedCenter(state),\n    centerMktool: getCenterMktool(state),\n    centerShowroom: getCenterShowroom(state),\n    centerWarehouse: getCenterWarehose(state),\n    mktoolShippingCenter: getMktoolsShippingCenter(state),\n    canViewBaths: canViewBaths(state),\n    userLandings: getUserLandings(state),\n    isMallPilotUser: getIsMallPilotUser(state),\n    warehoseCenterId: getWarehoseCenterId(),\n    showroomCenterId: getShowroomCenterId(),\n    DRIUSACenterId: getDRIUSACenterId(),\n    lowesCenerId: getLowesCenterId(),\n    canViewMktools: canViewMktools(state),\n    canViewCutToSize: canViewCutToSize(state),\n    customClass: ownProps.customClass ? ownProps.customClass : null,\n    header: ownProps.comp,\n    isWarehouse: getSelectedCenter(state) == getWarehoseCenterId(),\n    isNoSilestoneCenter: isNoSilestoneCenter(state),\n    canViewConfigurableBath: canViewConfigurableBath(state),\n    isAustralianCenter: isAustralianCenter(state),\n    isXeronBrandVisible: getIsXeronBrandVisible(state),\n    isSilestoneBrandVisible: getIsSilestoneBrandVisible(state)\n  }\n}\n\nconst mapDispatchToProps = dispatch => {\n  return {\n    changeCenter: centerId => {\n      dispatch(changeCenter(centerId))\n    }\n  }\n}\n\nconst Menu = React.forwardRef((props, ref) =>  {\n  return (<MenuLinksV2 ref={ref} {...props} />)\n})\n\nconst MenuContainer = injectIntl(connect(\n  mapStateToProps,\n  mapDispatchToProps,\n  null,\n  { forwardRef: true }\n)(Menu))\n\nexport default  MenuContainer\n","import { connect } from 'react-redux'\nimport { getProductsForYou } from '../../store/products/reducers'\nimport { getIsLogged } from '../../store/login/reducers'\nimport Translation from \"../global/Translation\";\nimport React from \"react\";\nimport ProductsSlider from \"./ProductsSlider\";\nimport { fetchProductsForYou } from \"../../store/products/actions\";\nimport { canViewMktools } from \"../../store/centers/reducers\";\n\nconst mapStateToProps = state => {\n    return {\n        products: getProductsForYou(state),\n        hide: !getIsLogged(state) || canViewMktools(state),\n        title: <Translation id=\"products_for_you\" defaultMessage=\"Products for you\" />,\n        analyticsTag: 'recomended_products_cross',\n        gtmLabel: 'ec_carrusel_products_for_you'\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetch: () => {\n            return dispatch(fetchProductsForYou())\n        }\n    }\n}\n\nconst ProductsForYouContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductsSlider)\n\n\nexport default ProductsForYouContainer\n","import React from \"react\";\nimport Translation from \"./Translation\";\n\nclass Countdown extends React.Component {\n\n    promoDate = null\n    state = {now: new Date().getTime()}\n    interval = null\n\n    componentDidMount() {\n        if (!this.props.hide) {\n            this.interval = setInterval(this.updateTime, 1)\n            const time = new Date(this.props.endDate)\n            // time.setDate(time.getDate() + 7)\n            this.promoDate = time.getTime()\n        }\n    }\n\n    componentWillUnmount() {\n        clearInterval(this.interval)\n    }\n\n    updateTime = () => this.setState({now: new Date().getTime()})\n\n    checkTime = (i) => {\n        if (i < 10) {i = \"0\" + i}  // add zero in front of numbers < 10\n        return i;\n    }\n\n    render() {\n\n        \n        let dateFuture = new Date(this.props.endDate);\n        let dateNow = new Date();\n\n        let seconds = Math.floor((dateFuture - (dateNow)) / 1000);\n        let minutes = Math.floor(seconds / 60);\n        let hours = Math.floor(minutes / 60);\n        let days = Math.floor(hours / 24);\n\n        hours = hours - (days * 24);\n        minutes = minutes - (days * 24 * 60) - (hours * 60);\n        seconds = seconds - (days * 24 * 60 * 60) - (hours * 60 * 60) - (minutes * 60); \n        \n        if(days < 10) days = \"0\"+days\n        if(minutes < 10) minutes = \"0\"+minutes\n        if(hours < 10) hours = \"0\"+hours\n        if(seconds < 10) seconds = \"0\"+seconds\n\n\n        return  (\n            <div className=\"countdown\">                \n                <div className=\"countdown-time\">\n                    <span>{days}</span>\n                    <span><Translation id=\"days\" defaultMessage=\"days\" /></span>\n                </div>\n                <div className=\"countdown-time\">\n                    <span>{hours}</span>\n                    <span><Translation id=\"hours\" defaultMessage=\"hours\" /></span>\n                </div>\n                <div className=\"countdown-time\">\n                    <span>{minutes}</span>\n                    <span><Translation id=\"minutes\" defaultMessage=\"minutes\" /></span>\n                </div>\n                <div className=\"countdown-time\">\n                    <span>{seconds}</span>\n                    <span><Translation id=\"seconds\" defaultMessage=\"seconds\" /></span>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default Countdown\n\n","import { connect } from 'react-redux'\nimport { getIsLogged } from '../../store/login/reducers'\nimport { canViewMktools } from '../../store/centers/reducers'\nimport Translation from \"../global/Translation\";\nimport React from \"react\";\nimport Countdown from \"../global/Countdown\";\nimport RectangleResultContainer from '../catalog/rectangleResult/RectangleResultContainer'\nimport Slider from 'react-slick/lib/slider'\nimport { getUserLandings } from '../../store/landing/reducers'\nimport LocalizedLink from '../global/LocalizedLink'\nimport {fetchProductsLandingsByCenters} from \"../../store/landing/actions\";\nimport {getMallProduct} from \"../landing-templates/utils\";\nimport ProductContext, {MallProductContext} from \"../catalog/rectangleResult/contexts/ProductContext\";\n\nconst mapStateToProps = state => {\n    //const products = getProductsForYou(state)/*getLastProductBoughts(state)*/\n\n    return {\n        //products: products && products.map(el => el.product),\n        hide: !getIsLogged(state) || canViewMktools(state),\n        userLandings: getUserLandings(state),\n        productsLanding: state.landing.productsLanding,\n        productsLots: state.landing.productsLots,\n        gtmLabel: 'ec_carrusel_promotion_mall'\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchProductsLandingsByCenters: (landingId, centers, products, portfolioMode) => {\n            return dispatch(fetchProductsLandingsByCenters(landingId, centers, products, portfolioMode))\n        },\n    }\n}\n\n\n\nfunction SampleNextArrow(props) {\n    const { style, onClick } = props\n    return (\n        <i\n            className={'fal fa-chevron-right'}\n            style={{ ...style, display: 'block', position: 'absolute', right: '-16px', top: '30%', fontSize: '30px', cursor: 'pointer', zIndex: '10' }}\n            onClick={onClick}\n        />\n    )\n}\n\nfunction SamplePrevArrow(props) {\n    const { style, onClick } = props\n    return (\n        <i\n            className={'fal fa-chevron-left'}\n            style={{ ...style, display: 'block', position: 'absolute', left: '-14px', top: '30%', fontSize: '30px', cursor: 'pointer', zIndex: '10' }}\n            onClick={onClick}\n        />\n    )\n}\n\nclass MallPreviewContainer extends React.Component {\n    state = {\n        slideIndex: 0,\n        landings: [],\n        lastFetchedLanding: -1\n    }\n\n    resize = () => {        \n        // let slices = 4\n        // if(window.innerWidth < 1430) {\n        //     slices = 3\n        // }\n        // if (window.innerWidth < 1010) {\n        //     slices = 2\n        // }\n        // if (window.innerWidth < 768) {\n        //     slices = 1\n        // }\n        const slidesToShow =  this.getSlidesToShow()\n        this.setState({ slidesToShow })\n    }\n\n    componentDidMount() {\n        window.addEventListener(\"resize\", this.resize.bind(this));\n    }\n\n    componentWillUnmount() {\n        window.removeEventListener(\"resize\", this.resize.bind(this));\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n\n        if (this.state.lastFetchedLanding === -1) this.setState({lastFetchedLanding: 0})\n\n        if (this.props.userLandings.length > 0\n            && this.state.lastFetchedLanding < this.props.userLandings.length\n            && this.state.lastFetchedLanding !== prevState.lastFetchedLanding\n        ) {\n            let today = new Date()\n            const landing = this.props.userLandings[this.state.lastFetchedLanding]\n            if(new Date(landing.end_at) > today) {\n                this.props.fetchProductsLandingsByCenters(landing.common_id, landing.centers, landing.products, landing.portfolio_mode)\n            } else {\n                this.setState({\n                    lastFetchedLanding: this.state.lastFetchedLanding + 1\n                })\n            }\n        }\n\n        if (this.props.productsLanding !== prevProps.productsLanding ) {\n            const landing = this.props.userLandings[this.state.lastFetchedLanding]\n\n            if (landing) {\n                landing.products = landing.products.map(product => {\n                    // return product.data\n                    return getMallProduct(product, this.props.productsLanding, this.props.productsLots)\n                })\n                this.state.landings.push(landing)\n                this.setState({\n                    lastFetchedLanding: this.state.lastFetchedLanding + 1\n                }, this.resize)\n            }\n        }\n    }\n\n\n    getSlidesToShow = () => {\n        const maxSlidesToShow = 10\n        const minGap = 12\n        const minWidth = 250\n        const minCardWidth = this.props.minWidth ? this.props.minWidth : minWidth\n        const el = document.getElementById('mall-promo-slides')\n        if (!el) return 1\n        let maxSlides = Math.floor(el.offsetWidth / minCardWidth) //250 Card width\n        const gap = (el.offsetWidth - minCardWidth * maxSlides) / (1 + maxSlides)\n        if (gap < minGap) --maxSlides\n        const slidesCount = this.props.productsLanding.length > maxSlides ? maxSlides : this.props.productsLanding.length\n        return Math.min(maxSlidesToShow, slidesCount)\n    }\n\n    render() {\n        const settings = {\n            arrows: true,\n            nextArrow: <SampleNextArrow />,\n            prevArrow: <SamplePrevArrow />,\n            swipeToSlide: true,\n            dots: true,\n            speed: 300,\n            slidesToShow: this.state.slidesToShow,\n            slidesToScroll: 1,\n            infinite: false,\n            variableWidth: false\n        }\n        //if (this.props.hide || !this.props.products || !this.props.products[0]) return <React.Fragment>hola</React.Fragment>\n        //console.log({ productNormal: this.props.products[0], productMall: this.props.userLandings[0].products[0]});\n        \n        return(\n            this.state.landings.length > 0 &&(\n                this.state.landings.map(landing => {\n                    let today = new Date()                    \n                    if(new Date(landing.end_at) > today) \n                        return(\n\n                        <section id=\"section-products-slider\">\n                        <div className=\"container\">\n                            <div className=\"row\">\n                                <div className=\"col-12\">\n                                    <div className=\"container\" gtm-label={this.props.gtmLabel}>\n                                        <div className=\"general-results-list\">\n                                            <div className=\"results-list mall-preview-slider\">\n                                                <div style={{ padding: '16px 8px', display: 'flex', justifyContent: 'space-between', alignItems: 'center' }} className=\"mall-promo-card\">\n                                                    <h2>\n                                                        <span>{landing.title}</span>\n                                                    </h2>\n                                                    <div className=\"timer-promo\">\n                                                        <span><Translation id=\"time_remaining\" defaultMessage=\"Promotion time remaining\" /></span>\n                                                        <Countdown endDate={landing.end_at ? landing.end_at : \"2025-02-15\"} />\n                                                    </div>\n                                                </div>\n                                                <div id=\"mall-promo-slides\" >\n                                                    <Slider ref={s => (this.slider = s)} {...settings}>\n                                                        {landing.products.map((product, index) => product && (\n                                                            <div className=\"slider-cards\" key={`pindex-${index}`}>\n                                                                <ProductContext.Provider value={MallProductContext}>\n                                                                    <RectangleResultContainer\n                                                                        key={index}\n                                                                        product={product}\n                                                                        mallPromotionSection={true}\n                                                                        list='promotion_products'\n                                                                        showImg={true}\n                                                                    />\n                                                                </ProductContext.Provider>\n                                                            </div>\n                                                        )\n                                                        )}\n                                                    </Slider>\n                                                </div>\n                                                <div className={'mall-promotion-container'}>\n                                                    <LocalizedLink routeId={\"ROUTE_LANDING_TEMPLATE\"} params={{ slug: landing ? landing['slug'] : \"test\", outlet: '', preview: '', iso: '' }} queryString={\"\"} gtmLabel=\"ec_button_view_promotion_mall\">\n                                                        <button className={\"mall-promotion-btn\"}>\n                                                            <Translation id=\"see_products_mall\" defaultMessage=\"See all products of the Mall \" />\n                                                        </button>\n                                                    </LocalizedLink>\n                                                </div>\n                                            </div>\n                                        </div>                               \n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        </section>\n                    )\n                })\n                \n            )\n        \n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(MallPreviewContainer)\n\n","import React, {Fragment, useState} from 'react'\nimport Translation from '../global/Translation'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport Button from '../global/Button'\nimport slide from '../../assets/img/home/home-slide.png'\nimport CTS_V2 from '../../assets/img/banners-v2/CTS_V2.png'\nimport Banos_V2 from '../../assets/img/banners-v2/Banos_V2.png'\nimport Outlet_V2 from '../../assets/img/banners-v2/Outlet_V2.png'\nimport Tablas_V2 from '../../assets/img/banners-v2/Tablas_V2.png'\nimport PPCC_V2 from '../../assets/img/banners-v2/PPCC_V2.png'\nimport outlet from '../../assets/img/home/home-slide-outlet.png'\nimport mall from '../../assets/img/home/mall-slide.png'\nimport promoNaturalStoneV2 from '../../assets/img/banners-exclusive-promo-natural-stone/promo_natural_stone_v2.png'\nimport { injectIntl } from 'react-intl'\n\nimport LastBoughtProductsContainer from '../products/LastBoughtProductsContainer'\n\nimport Spinner from '../global/Spinner'\nimport ChangeLogHomeNews from '../changelog/ChangeLogHomeNews'\nimport Alerts from '../alerts/Alerts'\nimport MenuContainer from '../header/MenuContainer'\nimport ProductsForYouContainer from \"../products/ProductsForYouContainer\";\nimport MallPreviewContainer from \"../products/MallPreviewContainer\";\nimport BannerDekton from '../banners/banner-dekton/BannerDekton'\nimport Banner1Mktools from '../../assets/img/banners-mktools/Promo_Card_1.png'\nimport Banner2Mktools from '../../assets/img/banners-mktools/Promo_Card_2.png'\nimport Banner3Mktools from '../../assets/img/banners-mktools/Promo_Card_3.png'\nimport BannerWorkwear from '../../assets/img/banners-mktools/cosentino-workwear.jpg'\nimport BannerSupplies from '../../assets/img/banners-mktools/cosentino-supplies.jpg'\nimport BannerRockMaster from '../banners/banner-rockmaster/BannerRockMaster'\nimport BannerSuma from '../banners/banner-suma/BannerSuma'\nimport BannerSilestoneXM from '../banners/banner-silestone-xm/BannerSilestoneXM'\nimport Slider from 'react-slick'\n\nclass HomeV2 extends React.Component {\n    state = {hasMall: true}\n\n    componentDidMount() {\n        if (this.props.selectedCenter === 7777) this.props.goLowes(this.props.userType, this.props.intl)\n        else if (this.props.isIkeaCenter) this.props.goIkea(this.props.intl)\n\n        // const slider = document.getElementsByClassName('slick-slider')[0]\n        // slider.addEventListener(\"drag\", (e) => {e.stopPropagation()}, false)\n\n        // document.addEventListener('DOMContentLoaded', (event) => {\n        //     const elements = document.getElementsByClassName('slick-slider');\n        //     for (let element of elements) {\n        //         element.addEventListener('dragstart', (e) => {\n        //             e.stopPropagation();\n        //         });\n        //     }\n        // });\n    }\n\n    slickSettings = {\n        arrows: false,\n        swipeToSlide: true,\n        dots: false,\n        speed: 750,\n        autoplaySpeed: 4000,\n        slidesToShow: 1,\n        slidesToScroll: 1,\n        infinite: true,\n        autoplay: true,\n        variableWidth: false\n    }\n\n    CustomSlide = (props) => {\n        const [isMovin, setIsMovin] = useState(false)\n\n        const { id, bannerUrl, bannerTitle, bannerText } = props;\n        const handleClick = e => {\n            if (isMovin) e.preventDefault()\n        }\n\n        return (\n            <div className=\"col-12\"\n                 onDragStart={e => {\n                     e.preventDefault()\n                 }}\n                 onMouseDown={e => {\n                     if (isMovin===true) setIsMovin(false)\n                 }}\n                 onMouseMove={e => {\n                     if (isMovin===false) setIsMovin(true)\n                 }}\n            >\n                <LocalizedLink routeId=\"ROUTE_PROMOTION_LANDING\"b\n                               params={{ promotionId: id }}\n                               onClick={handleClick}\n                >\n                    <div>\n                        <img src={bannerUrl} style={{ width: '100%' }} alt=\"\" className=\"\" />\n                        <div style={{ position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', width: '80%', fontSize: '1vw' }}>\n                            <div dangerouslySetInnerHTML={{ __html: bannerTitle }} />\n                            <div dangerouslySetInnerHTML={{ __html: bannerText }} />\n                        </div>\n                    </div>\n                </LocalizedLink>\n            </div>\n        );\n    }\n\n    render() {\n\n        let homeSlides = [\n                {\n                    title: <Translation id=\"tables\" defaultMessage=\"Slabs\" />,\n                    colorTitle: 'white',\n                    subtitle: <Translation id=\"ask_about_stock\" defaultMessage=\"Check Stock of your Usual Center\" />,\n                    colorSubtitle: 'white',\n                    buttonText: <Translation id=\"shop_here\" defaultMessage=\"Buy here\" />,\n                    buttonColor: 'white',\n                    backgroundImage: slide,\n                    backgroundImageLazy: slide,\n                    routeId: 'ROUTE_CATALOG',\n                    queryString: '?type[0]=TABLA',\n                    params: { outlet: '' },\n                    extraClassName: 'card-wide card-tall',\n                    dataQas: ''\n                },\n                {\n                    title: <Translation id=\"tables\" defaultMessage=\"Slabs\" />,\n                    colorTitle: 'white',\n                    subtitle: <Translation id=\"ask_about_stock\" defaultMessage=\"Check Stock of your Usual Center\" />,\n                    colorSubtitle: 'white',\n                    buttonText: <Translation id=\"shop_here\" defaultMessage=\"Buy here\" />,\n                    buttonColor: 'white',\n                    backgroundImage: mall,\n                    backgroundImageLazy: mall,\n                    routeId: 'ROUTE_CATALOG',\n                    queryString: '?type[0]=TABLA',\n                    params: { outlet: '' },\n                    extraClassName: '',\n                    dataQas: ''\n                },\n                {\n                    title: <Translation id=\"cosentino_outlet\" defaultMessage=\"Cosentino Outlet\" />,\n                    colorTitle: 'white',\n                    subtitle: <Translation id=\"shop_here\" defaultMessage=\"Buy here\" />,\n                    colorSubtitle: 'white',\n                    buttonText: <Translation id=\"shop_here\" defaultMessage=\"Buy here\" />,\n                    buttonColor: 'white',\n                    backgroundImage: outlet,\n                    backgroundImageLazy: outlet,\n                    routeId: 'ROUTE_CATALOG',\n                    queryString: '?type[0]=TABLA',\n                    params: { outlet: 'outlet' },\n                    extraClassName: '',\n                    dataQas: ''\n                },\n\n            ]\n        if (this.props.typeClient){\n            switch (this.props.typeClient) {\n                case 1:\n                    if(this.props.testAB === 'A'){\n                        homeSlides[0].title = <Translation id=\"CTS_V2_TXT\" defaultMessage=\"Slabs\" />\n                        homeSlides[0].subtitle = <Translation id=\"CTS_V2_TXT_2\" defaultMessage=\"Check Stock of your Usual Center\" />\n                        homeSlides[0].buttonText = <Translation id=\"access\" defaultMessage=\"Buy here\" />\n                        homeSlides[0].backgroundImage = CTS_V2\n                        homeSlides[0].backgroundImageLazy = CTS_V2\n                        homeSlides[0].queryString = ''\n                        homeSlides[0].params = { outlet: '' }\n                        homeSlides[0].routeId = 'ROUTE_CUT_TO_SIZE'\n                        homeSlides[0].dataQas = 'home_hero-cut-to-size-buy-here-button'\n\n                        homeSlides[1].title = this.props.isAustralianCenter ?\n                            <Translation id=\"TABLAS_V2_NO_SL_TXT\" defaultMessage=\"Dekton and Sensa\" />\n                            :\n                            <Translation id=\"TABLAS_V2_TXT\" defaultMessage=\"Slabs\" />\n                        homeSlides[1].subtitle = <Translation id=\"tables\" defaultMessage=\"Slabs\" />\n                        homeSlides[1].buttonText = <Translation id=\"access\" defaultMessage=\"Buy here\" />\n                        homeSlides[1].backgroundImage = Tablas_V2\n                        homeSlides[1].backgroundImageLazy = Tablas_V2\n                        homeSlides[1].queryString = '?type[0]=TABLA'\n                        homeSlides[1].params = { outlet: '' }\n                        homeSlides[1].routeId = 'ROUTE_CATALOG'\n                        homeSlides[1].dataQas = 'home_hero-slabs-buy-here-button'\n                    }else{\n                        homeSlides[0].title = this.props.isAustralianCenter ?\n                            <Translation id=\"TABLAS_V2_NO_SL_TXT\" defaultMessage=\"Dekton and Sensa\" />\n                            :\n                            <Translation id=\"TABLAS_V2_TXT\" defaultMessage=\"Slabs\" />\n                        homeSlides[0].subtitle = <Translation id=\"tables\" defaultMessage=\"Slabs\" />\n                        homeSlides[0].buttonText = <Translation id=\"access\" defaultMessage=\"Buy here\" />\n                        homeSlides[0].backgroundImage = Tablas_V2\n                        homeSlides[0].backgroundImageLazy = Tablas_V2\n                        homeSlides[0].queryString = '?type[0]=TABLA'\n                        homeSlides[0].params = { outlet: '' }\n                        homeSlides[0].routeId = 'ROUTE_CATALOG'\n                        homeSlides[0].dataQas = 'home_hero-slabs-buy-here-button'\n\n                        homeSlides[1].title = <Translation id=\"CTS_V2_TXT\" defaultMessage=\"Slabs\" />\n                        homeSlides[1].subtitle = <Translation id=\"CTS_V2_TXT_2\" defaultMessage=\"Check Stock of your Usual Center\" />\n                        homeSlides[1].buttonText = <Translation id=\"access\" defaultMessage=\"Buy here\" />\n                        homeSlides[1].backgroundImage = CTS_V2\n                        homeSlides[1].backgroundImageLazy = CTS_V2\n                        homeSlides[1].queryString = ''\n                        homeSlides[1].params = { outlet: '' }\n                        homeSlides[1].routeId = 'ROUTE_CUT_TO_SIZE'\n                        homeSlides[1].dataQas = 'home_hero-cut-to-size-buy-here-button'\n                    }\n\n                    homeSlides[2].title = <Translation id=\"OUTLET_V2_TXT\" defaultMessage=\"Cosentino Outlet\" />\n                    homeSlides[2].subtitle = <Translation id=\"cosentino_outlet\" defaultMessage=\"Cosentino Outlet\" />\n                    homeSlides[2].buttonText = <Translation id=\"view_promotion\" defaultMessage=\"Buy here\" />\n                    homeSlides[2].backgroundImage = Outlet_V2\n                    homeSlides[2].backgroundImageLazy = Outlet_V2\n                    homeSlides[2].queryString = '?type[0]=TABLA'\n                    homeSlides[2].params = { outlet: 'outlet' }\n                    homeSlides[2].routeId = 'ROUTE_CATALOG'\n                    homeSlides[2].dataQas = 'home_hero-outlet-buy-here-button'\n\n                    break\n                case 2:\n                    homeSlides[0].title = <Translation id=\"CTS_V2_TXT\" defaultMessage=\"Slabs\" />\n                    homeSlides[0].subtitle = <Translation id=\"CTS_V2_TXT_2\" defaultMessage=\"Check Stock of your Usual Center\" />\n                    homeSlides[0].buttonText = <Translation id=\"access\" defaultMessage=\"Buy here\" />\n                    homeSlides[0].backgroundImage = CTS_V2\n                    homeSlides[0].backgroundImageLazy = CTS_V2\n                    homeSlides[0].queryString = ''\n                    homeSlides[0].params = { outlet: '' }\n                    homeSlides[0].routeId = 'ROUTE_CUT_TO_SIZE'\n                    homeSlides[0].dataQas = 'home_hero-cut-to-size-buy-here-button'\n\n                    homeSlides[1].title = this.props.isAustralianCenter ?\n                        <Translation id=\"TABLAS_V2_NO_SL_TXT\" defaultMessage=\"Dekton and Sensa\" />\n                        :\n                        <Translation id=\"TABLAS_V2_TXT\" defaultMessage=\"Slabs\" />\n                    homeSlides[1].subtitle = <Translation id=\"tables\" defaultMessage=\"Slabs\" />\n                    homeSlides[1].buttonText = <Translation id=\"access\" defaultMessage=\"Buy here\" />\n                    homeSlides[1].backgroundImage = Tablas_V2\n                    homeSlides[1].backgroundImageLazy = Tablas_V2\n                    homeSlides[1].queryString = '?type[0]=TABLA'\n                    homeSlides[1].params = { outlet: '' }\n                    homeSlides[1].routeId = 'ROUTE_CATALOG'\n                    homeSlides[1].dataQas = 'home_hero-slabs-buy-here-button'\n\n                    homeSlides[2].title = <Translation id=\"OUTLET_V2_TXT\" defaultMessage=\"Cosentino Outlet\" />\n                    homeSlides[2].subtitle = <Translation id=\"cosentino_outlet\" defaultMessage=\"Cosentino Outlet\" />\n                    homeSlides[2].buttonText = <Translation id=\"view_promotion\" defaultMessage=\"Buy here\" />\n                    homeSlides[2].backgroundImage = Outlet_V2\n                    homeSlides[2].backgroundImageLazy = Outlet_V2\n                    homeSlides[2].queryString = '?type[0]=TABLA'\n                    homeSlides[2].params = { outlet: 'outlet' }\n                    homeSlides[2].routeId = 'ROUTE_CATALOG'\n                    homeSlides[2].dataQas = 'home_hero-outlet-buy-here-button'\n                    break\n                case 3:\n                    homeSlides[0].title = <Translation id=\"baths_and_wall_cladding\" defaultMessage=\"Slabs\" />\n                    homeSlides[0].subtitle = <Translation id=\"new_section\" defaultMessage=\"Check Stock of your Usual Center\" />\n                    homeSlides[0].buttonText = <Translation id=\"access\" defaultMessage=\"Buy here\" />\n                    homeSlides[0].backgroundImage = Banos_V2\n                    homeSlides[0].backgroundImageLazy = Banos_V2\n                    homeSlides[0].queryString = '?type[0]=BAÑOS'\n                    homeSlides[0].params = { outlet: '' }\n                    homeSlides[0].routeId = 'ROUTE_CATALOG'\n                    homeSlides[0].dataQas = 'home_hero-baths-cladding-buy-here-button'\n\n                    homeSlides[1].title = <Translation id=\"CTS_V2_TXT\" defaultMessage=\"Slabs\" />\n                    homeSlides[1].subtitle = <Translation id=\"CTS_V2_TXT_2\" defaultMessage=\"Check Stock of your Usual Center\" />\n                    homeSlides[1].buttonText = <Translation id=\"access\" defaultMessage=\"Buy here\" />\n                    homeSlides[1].backgroundImage = CTS_V2\n                    homeSlides[1].backgroundImageLazy = CTS_V2\n                    homeSlides[0].queryString = ''\n                    homeSlides[0].params = { outlet: '' }\n                    homeSlides[0].routeId = 'ROUTE_CUT_TO_SIZE'\n                    homeSlides[0].dataQas = 'home_hero-cut-to-size-buy-here-button'\n\n                    homeSlides[2].title = <Translation id=\"professional_products\" defaultMessage=\"Cosentino Outlet\" />\n                    homeSlides[2].subtitle = <Translation id=\"PPCC_V2_TITLE\" defaultMessage=\"Buy here\" />\n                    homeSlides[2].buttonText = <Translation id=\"access\" defaultMessage=\"Buy here\" />\n                    homeSlides[2].backgroundImage = PPCC_V2\n                    homeSlides[2].backgroundImageLazy = PPCC_V2\n                    homeSlides[2].queryString = '?type[0]=PPCC'\n                    homeSlides[2].params = { outlet: '' }\n                    homeSlides[2].routeId = 'ROUTE_CATALOG'\n                    homeSlides[2].dataQas = 'home_hero-professional-products-buy-here-button'\n                    break\n                default:\n\n            }\n        }\n\n        if (this.props.canViewMktools && !this.props.isWarehouse) {\n             homeSlides[0] = {\n                 title: <Translation id=\"marketing_tools\" defaultMessage=\"Marketing Tools\" />,\n                 colorTitle: 'white',\n                 subtitle: '',\n                 buttonText: <Translation id=\"shop_here\" defaultMessage=\"Buy here\" />,\n                 backgroundImage: Banner1Mktools,\n                 backgroundImageLazy: Banner1Mktools,\n                 routeId: 'ROUTE_CATALOG',\n                 queryString: '?webHeading[0]=MK',\n                 params: { outlet: '' },\n                 buttonColor: 'white',\n                 extraClassName: ''\n             }\n             homeSlides[1] = {\n                 title: <Translation id=\"showroom\" defaultMessage=\"Showroom\" />,\n                 colorTitle: 'white',\n                 subtitle: '',\n                 buttonText: <Translation id=\"shop_here\" defaultMessage=\"Buy here\" />,\n                 backgroundImage: Banner2Mktools,\n                 backgroundImageLazy: Banner2Mktools,\n                 routeId: 'ROUTE_CATALOG',\n                 queryString: '?webHeading[0]=SH',\n                 params: { outlet: '' },\n                 buttonColor: 'white',\n                 extraClassName: ''\n             }\n             delete homeSlides[2]\n        }\n\n        if (this.props.canViewMktools && this.props.isWarehouse) {\n            homeSlides[0] = {\n                title: <Translation id=\"WORKWEAR\" defaultMessage=\"Workwear\" />,\n                colorTitle: 'white',\n                subtitle: '',\n                buttonText: <Translation id=\"shop_here\" defaultMessage=\"Buy here\" />,\n                backgroundImage: BannerWorkwear,\n                backgroundImageLazy: BannerWorkwear,\n                routeId: 'ROUTE_CATALOG',\n                queryString: '?typeId[0]=13',\n                params: { outlet: '' },\n                buttonColor: 'white',\n                extraClassName: 'card-wide card-tall background-position-center'\n            }\n            homeSlides[1] = {\n                title: <Translation id=\"WAREHOUSE_SUPPLIES\" defaultMessage=\"warehouse supplies\" />,\n                colorTitle: 'white',\n                subtitle: '',\n                buttonText: <Translation id=\"shop_here\" defaultMessage=\"Buy here\" />,\n                backgroundImage: BannerSupplies,\n                backgroundImageLazy: BannerSupplies,\n                routeId: 'ROUTE_CATALOG',\n                queryString: '?typeId[0]=15',\n                params: { outlet: '' },\n                buttonColor: 'white',\n                extraClassName: 'background-position-center'\n            }\n            homeSlides[2] = {\n                title: <Translation id=\"warehouse\" defaultMessage=\"Warehouse\" />,\n                colorTitle: 'white',\n                subtitle: '',\n                buttonText: <Translation id=\"shop_here\" defaultMessage=\"Buy here\" />,\n                backgroundImage: Banner3Mktools,\n                backgroundImageLazy: Banner3Mktools,\n                routeId: 'ROUTE_CATALOG',\n                queryString: '?webHeading[0]=WH',\n                params: { outlet: '' },\n                buttonColor: 'white',\n                extraClassName: 'background-position-center'\n            }\n        }\n\n        if(this.props.showBannerPromo) {\n            homeSlides[0]['backgroundImage'] = promoNaturalStoneV2\n            homeSlides[0]['title'] = <Translation id=\"exclusive_promo_natural_stone\" defaultMessage=\"Exclusive promo Natural Stone\" />\n            homeSlides[0]['subtitle'] = <Translation id=\"from_14_18_november\" defaultMessage=\"From 14-18 November\" />\n            homeSlides[0]['buttonText'] = <Translation id=\"make_a_reservation\" defaultMessage=\"Make a reservation\" />\n            homeSlides[0]['URL'] = 'https://forms.cosentino.com/natural-stone-week-eu/'\n        }\n\n            return (\n                <div id=\"home\" style={{overflow: \"hidden\"}}>\n                    {this.props.isLogging && <Spinner isLoading={this.props.isLogging} />}\n\n                    <div className=\"container\">\n                        {this.props.maintenanceScheduledText && (\n                            <Alerts status=\"primary\" alert={<div dangerouslySetInnerHTML={{ __html: this.props.maintenanceScheduledText }} />} />\n                        )}\n                        <div className=\"home-slide-container\">\n                            {homeSlides.map((element, index) => {\n                                return (\n                                    element.URL && element.URL !== '' ? (\n                                        <a href={element.URL} className={'image-slide-item ' + element.extraClassName} target='_blank'>\n                                            <div className={'image-slide-item ' + element.extraClassName} style={{ backgroundImage: `linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),url(${element.backgroundImage})` }}>\n                                                <div className=\"slide-title\">\n                                                    <div className=\"subtitle\" style={{ color: element.colorSubtitle }}>\n                                                        {element.subtitle}\n                                                    </div>\n                                                    <h2 className=\"title\" style={{ color: element.colorTitle }}>\n                                                        {element.title}\n                                                    </h2>\n                                                </div>\n                                                <div className=\"slide-bt\">\n                                                    <Button inline gentle size=\"medium\" style={{ color: element.buttonColor, borderColor: element.buttonColor }} dataQas={element.dataQas} gtmLabel=\"ec_home_banner_mosaico\">\n                                                        {element.buttonText}\n                                                    </Button>\n                                                </div>\n                                            </div>\n                                        </a>\n                                        ) : (\n                                        <LocalizedLink\n                                            key={index}\n                                            routeId={element.routeId}\n                                            queryString={element.queryString}\n                                            params={element.params}\n                                            className={'image-slide-item ' + element.extraClassName}\n                                        >\n                                            <div className={'image-slide-item ' + element.extraClassName} style={{ backgroundImage: `linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),url(${element.backgroundImage})` }}>\n                                                <div className=\"slide-title\">\n                                                    <div className=\"subtitle\" style={{ color: element.colorSubtitle }}>\n                                                        {element.subtitle}\n                                                    </div>\n                                                    <h2 className=\"title\" style={{ color: element.colorTitle }}>\n                                                        {element.title}\n                                                    </h2>\n                                                </div>\n                                                <div className=\"slide-bt\">\n                                                    <Button inline gentle size=\"medium\" style={{ color: element.buttonColor, borderColor: element.buttonColor }} dataQas={element.dataQas} gtmLabel=\"ec_home_banner_mosaico\">\n                                                        {element.buttonText}\n                                                    </Button>\n                                                </div>\n                                            </div>\n                                        </LocalizedLink>\n                                    )\n                                )\n                            })}\n                        </div>\n\n                        <div className=\"home-cards-container\">\n                            <MenuContainer customClass=\"home-card\"></MenuContainer>\n                        </div>\n\n                        {this.props.hasPromotionLandingActivated &&\n                            <Slider {...this.slickSettings} >\n                                {this.props.promotionData.map(p => {\n                                        const bannerTitle = p.banner_title ? (p.banner_title[this.props.locale] ? p.banner_title[this.props.locale] : p.banner_title[p.banner_title.default]) : null\n                                        const bannerText = p.banner_text ? (p.banner_text[this.props.locale] ? p.banner_text[this.props.locale] : p.banner_text[p.banner_text.default]) : null\n\n                                        return <this.CustomSlide id={p.id}\n                                                                 bannerUrl={p.home_banner_url}\n                                                                 bannerTitle={bannerTitle}\n                                                                 bannerText={bannerText}\n                                        />\n                                    }\n                                )}\n                            </Slider>\n                        }\n                    </div>\n\n                    {\n                        this.props.isUsaOrCanada &&\n                        <React.Fragment>\n                            <div className=\"container dekton-banner-desktop\">\n                                <BannerDekton />\n                            </div>\n                            <div className=\"container dekton-banner-squared\">\n                                <BannerDekton squared={true} />\n                            </div>\n                        </React.Fragment>\n                    }\n\n                    <ProductsForYouContainer sectionFlag=\"HP\"/>\n                    {\n                        // this.props.isMallPilotUser && this.props.userLandings && this.props.userLandings.length > 0 &&\n                        //this.state.hasMall > 0 &&\n                        <MallPreviewContainer/>\n                    }\n                    <LastBoughtProductsContainer sectionFlag=\"HB\"/>\n                    \n                    {/* {this.props.canViewEarthicPromotion && (\n                        <div className=\"container\">\n                            <BannerEarthic />\n                        </div>\n                    )} */}\n\n                    {this.props.canViewSumaPromotion && (\n                        <div className=\"container\">\n                            <BannerSuma />\n                        </div>\n                    )}\n\n                    {this.props.canViewRockMasterPromotion && (\n                        <div className=\"container mb-4\">\n                            <BannerRockMaster />\n                        </div>\n                    )}\n\n                    {this.props.canViewSilestonePromotionXM && (\n                        <div className=\"container\">\n                            <BannerSilestoneXM />\n                        </div>\n                    )}\n\n                    {this.props.isLogged && (\n                        <div className=\"row\">\n                            <div className=\"col-12\">\n                                <ChangeLogHomeNews />\n                            </div>\n                        </div>\n                    )}\n                </div>\n            )\n    }\n}\n\nexport default injectIntl(HomeV2)\n","import { getUserLandings } from './../../store/landing/reducers';\nimport { connect } from 'react-redux'\n\nimport {\n    getShippingMethod,\n    canOnlyViewOutlet,\n    getCenterName,\n    hasPromoActivated,\n    getSelectedCenter,\n    getIsIkeaCenter,\n    getPromoBanners,\n    getIsVirtualVisitEnabled,\n    hasPromotionLandingActivated,\n    getWarehoseCenterId,\n    getShowroomCenterId,\n    canViewMktools,\n    getHQCenterId,\n    getLowesCenterId,\n    isEuropeOrIberia,\n    isUsaOrCanada, isAustralianCenter\n} from '../../store/centers/reducers'\nimport { changeCenter } from '../../store/centers/actions'\nimport { getIsLogged, getSalesOrg, getUserType, getIsLogging, getVirtualVisitURL, canViewRockMasterPromotion, canViewEarthicPromotion, canViewHybriqPromotion, canViewSilestonePromotionXM, getClientType, getIsMallPilotUser, getTypeClient,getTestAB, canViewSumaPromotion } from '../../store/login/reducers'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\nimport { getLanguage, getMaintenanceScheduled, getMaintenanceScheduledText } from '../../store/ui/reducers'\nimport { dispatchPushURL, fetchMaintenance } from '../../store/ui/actions'\nimport {\n    getBannerDescription,\n    getBannerTitle,\n    getPromotionData,\n    getPromotionHomeBanner,\n    getPromotionLateralBanner,\n    getPromotionLink\n} from '../../store/promotions/reducers'\nimport moment from 'moment/moment'\nimport HomeV2 from \"./HomeV2\";\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        shippingMethod: getShippingMethod(state),\n        isLogged: getIsLogged(state),\n        canOnlyViewOutlet: canOnlyViewOutlet(state),\n        userPreferences: getProfileConfiguration(state),\n        center: getCenterName(state),\n        canViewMktools: canViewMktools(state),\n        salesOrg: getSalesOrg(state),\n        userType: getUserType(state),\n        typeClient: getTypeClient(state),\n        testAB: getTestAB(state),\n        hasPromoActivated: hasPromoActivated(state),\n        hasPromotionLandingActivated: hasPromotionLandingActivated(state),\n        selectedCenter: getSelectedCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isLogging: getIsLogging(state),\n        locale: getLanguage(state),\n        homeBanner: getPromotionHomeBanner(state),\n        promotionLateralBanner: getPromotionLateralBanner(state),\n        promotionLink: getPromotionLink(state),\n        promoBanners: getPromoBanners(state),\n        virtualVisitEnabled: getIsVirtualVisitEnabled(state),\n        URLVirtualVisit: getVirtualVisitURL(state),\n        maintenanceScheduled: getMaintenanceScheduled(state),\n        maintenanceScheduledText: getMaintenanceScheduledText(state),\n        promotionBannerTitle: getBannerTitle(state),\n        promotionBannerDescription: getBannerDescription(state),\n        warehoseCenterId: getWarehoseCenterId(),\n        showroomCenterId: getShowroomCenterId(),\n        HQCenterId: getHQCenterId(),\n        LowesCenterId: getLowesCenterId(),\n        userLandings: getUserLandings(state),\n        isMallPilotUser: getIsMallPilotUser(state),\n        showBannerPromo: new moment() < moment('2022-11-18 18:00') && isEuropeOrIberia(state),\n        isUsaOrCanada: isUsaOrCanada(state),\n        canViewRockMasterPromotion: canViewRockMasterPromotion(state),\n        isWarehouse: getSelectedCenter(state) == getWarehoseCenterId(),\n        canViewEarthicPromotion: canViewEarthicPromotion(state),\n        canViewHybriqPromotion: canViewHybriqPromotion(state),\n        isAustralianCenter: isAustralianCenter(state),\n        canViewSilestonePromotionXM: canViewSilestonePromotionXM(state),\n        canViewSumaPromotion: canViewSumaPromotion(state),\n        promotionData: getPromotionData(state)\n\n        // showBannerPromo: false\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        changeCenter: centerId => {\n            dispatch(changeCenter(centerId))\n        },\n        goLowes: (userType, intl) => {\n            userType === 'ADMIN'\n                ? dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG_LOWES_ADMIN' }).replace(':filter', 'home')))\n                : dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG_LOWES' }).replace(':filter', 'home')))\n        },\n        goIkea: intl => {\n            dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', '')))\n        },\n        fetchMaintenance: () => {\n            dispatch(fetchMaintenance())\n        }        \n    }\n}\n\nconst HomeContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(HomeV2)\n\nexport default HomeContainer\n","import React from 'react'\n\nimport HomeContainer from '../components/home/HomeContainer'\nconst HomeScreen = props => <HomeContainer {...props} />\n\nexport default HomeScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport Select from 'react-select'\n\nimport Button from '../global/Button'\nimport groupBy from 'json-groupby'\nimport { injectIntl } from 'react-intl'\nimport * as analytics from '../../analyticsEvents'\nimport axios from 'axios'\nimport FileDownload from 'js-file-download'\nimport FormatCSVModal from '../global/FormatCSVModal'\nimport Modal from '../global/Modal'\n\nclass LotsFilter extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            emailPromptOpen: false,\n            showCSVFormat: false,\n            selectedOption: ''\n        }\n\n        this.promptEmail = this.promptEmail.bind(this)\n        this.downloadPdf = this.downloadPdf.bind(this)\n    }\n\n    promptEmail() {\n        this.setState({ emailPromptOpen: true })\n    }\n\n    closeFormatCSVModal(format) {\n        this.setState({ showCSVFormat: false })\n\n        if (!format) {\n            return\n        }\n\n        const { intl } = this.props\n        const fields = ['quarryBlock', 'shade', 'bundleId', 'lotId', 'length', 'width', 'quality', 'qty', 'location', 'qualityOutlet']\n        analytics.downloadLots(format, this.props.commonParamsAnalytics)\n        const header = fields.map(field => {\n            return intl.formatMessage({ id: `${field}` })\n        })\n\n        const FileDownload = require('js-file-download')\n        axios\n            .get(\n                process.env.REACT_APP_API_HOST +\n                    `/catalog/${this.props.center}/lots/${this.props.productId}/csv/?format=${format}&lang=${this.props.language}${\n                        this.props.outlet ? '&outlet=1' : ''\n                    }&fields=${encodeURIComponent(fields.join(','))}&header=${encodeURIComponent(header.join(','))}`,\n                { headers: { Authorization: `Bearer ${this.props.token}` }, 'Content-Type': 'text/plain', responseType: 'blob' }\n            )\n            .then(response => {\n                FileDownload(response.data, `lots.${format}`)\n            })\n    }\n\n    downloadPdf() {\n        if (!this.inputEmail.value) {\n            return\n        }\n\n        this.setState({ emailPromptOpen: false })\n        analytics.downloadLots('PDF', this.props.commonParamsAnalytics)\n\n        const email = this.inputEmail.value\n\n        const { intl } = this.props\n        const fields = ['image', 'quarryBlock', 'shade', 'bundleId', 'lotId', 'length', 'width', 'quality', 'qty', 'location', 'qualityOutlet']\n        const header = fields.map(field => {\n            return intl.formatMessage({ id: `${field}` })\n        })\n\n        const url = `${process.env.REACT_APP_API_HOST}/catalog/${this.props.center}/lots/${this.props.productId}/pdf/?lang=${this.props.language}${\n            this.props.outlet ? '&outlet=1' : ''\n        }&fields=${encodeURIComponent(fields.join(','))}&header=${encodeURIComponent(header.join(','))}&to=${encodeURIComponent(email)}`\n        // }&fields=${encodeURIComponent(fields.join(','))}&header=${encodeURIComponent(header.join(','))}&to=${encodeURIComponent(email)}&authToken=${this.props.token}`\n\n        fetch(url, {\n            headers: {Authorization: `Bearer ${this.props.token}`}\n        })\n    }\n\n    quarryBlockHandleChange = selectedOption => {\n        this.props.handleFilterChange(selectedOption, 'quarryBlock')\n        this.setState({ selectedOption })\n    }\n\n    qualityHandleChange = selectedOption => {\n        this.props.handleFilterChange(selectedOption, 'quality')\n        this.setState({ selectedOption })\n    }\n\n    shadeHandleChange = selectedOption => {\n        this.props.handleFilterChange(selectedOption, 'shade')\n        this.setState({ selectedOption })\n    }\n\n    locationHandleChange = selectedOption => {\n        this.props.handleFilterChange(selectedOption, 'location')\n        this.setState({ selectedOption })\n    }\n\n    render() {\n        const { onlyLots, isAdmin, search, searchValue, flush, intl } = this.props\n        const groupByQuarryBlock = onlyLots !== undefined ? groupBy(onlyLots, ['quarryBlock'], ['lotId']) : null\n        const groupByShade = onlyLots !== undefined ? groupBy(onlyLots, ['shade'], ['lotId']) : null\n        const groupByQuality = onlyLots !== undefined ? groupBy(onlyLots, ['quality'], ['lotId']) : null\n        const groupByLocation = onlyLots !== undefined ? groupBy(onlyLots, ['location'], ['lotId']) : null\n\n        const { selectedOption } = this.state\n  \t    const selectedValue = selectedOption && selectedOption.value\n\n        const searchBar = <input type=\"text\" placeholder={intl.formatMessage({ id: 'search' })} value={searchValue} onChange={search()} />\n\n        return (\n            <div>\n                <div className=\"filters\">\n                    <div className=\"dropdown-filters\">\n                        <div className=\"left-side\">\n                            <div className=\"filter\">\n                                <Select\n                                    placeholder={this.props.intl.formatMessage({ id: 'quarryBlock' })}\n                                    options={\n                                        groupByQuarryBlock &&\n                                        Object.keys(groupByQuarryBlock).map(option => ({\n                                            label: option + ' (' + groupByQuarryBlock[option].lotId.length + ')',\n                                            value: option\n                                        }))\n                                    }\n                                    value={selectedValue}\n                                    onChange={this.quarryBlockHandleChange}\n                                />\n                            </div>\n\n                            {!(this.props.original.brand === 'SILESTONE' || this.props.original.brand === 'DEKTON' || this.props.original.brand === 'XERON') && (\n                                <div className=\"filter\">\n                                    <Select\n                                        placeholder={this.props.intl.formatMessage({ id: 'quality' })}\n                                        options={\n                                            groupByQuality &&\n                                            Object.keys(groupByQuality).map(option => ({\n                                                label: option + ' (' + groupByQuality[option].lotId.length + ')',\n                                                value: option\n                                            }))\n                                        }\n                                        value={selectedValue}\n                                        onChange={this.qualityHandleChange}\n                                    />\n                                </div>\n                            )}\n\n                            {(isAdmin || this.props.impersonatedBy) && (\n                                <div className=\"filter\">\n                                    <Select\n                                        placeholder={this.props.intl.formatMessage({ id: 'shade' })}\n                                        options={\n                                            groupByShade &&\n                                            Object.keys(groupByShade).map(option => ({\n                                                label: option + ' (' + groupByShade[option].lotId.length + ')',\n                                                value: option\n                                            }))\n                                        }\n                                        value={selectedValue}\n                                        onChange={this.shadeHandleChange}\n                                    />\n                                </div>\n                            )}\n\n                            {(isAdmin || this.props.impersonatedBy) && (\n                                <div className=\"filter\">\n                                    <Select\n                                        placeholder={this.props.intl.formatMessage({ id: 'location' })}\n                                        options={\n                                            groupByLocation &&\n                                            Object.keys(groupByLocation).map(option => ({\n                                                label: option + ' (' + groupByLocation[option].lotId.length + ')',\n                                                value: option\n                                            }))\n                                        }\n                                        value={selectedValue}\n                                        onChange={this.locationHandleChange}\n                                    />\n                                </div>\n                            )}\n\n                            <div className=\"search-bar-filters-responsive\">\n                                <div className=\"lots-search-bar-responsive\">{searchBar}</div>\n                            </div>\n                        </div>\n\n                        <div className=\"filter-clear-btn\">\n                            <button onClick={this.props.clearFilters}>\n                                <Translation id=\"clear_all\" defaultMessage=\"Reset filters\" />\n                            </button>\n                            {/*RELOAD*/}\n                            {/*<Button className={\"ml-3\"} inline size=\"small\" onClick={flush}>*/}\n                            {/*    <i className=\"fa fa-sync\" />*/}\n                            {/*</Button>*/}\n                        </div>\n                    </div>\n\n                    <div className=\"search-bar-filters\">\n                        <div className=\"lots-search-bar-desktop\">{searchBar}</div>\n\n                        <div className=\"dropdown dropdown-btn\">\n                            <button id=\"dropdownMenuButton\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" className=\"lots-filter-btn-download\">\n                                <Translation id=\"download\" defaultMessage=\"Download\" />\n                                <i class=\"fas fa-caret-down\"></i>\n                            </button>\n                            <div className=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton\">\n                                <button onClick={() => this.setState({ showCSVFormat: true })}>\n                                    <Translation id=\"download_excel\" defaultMessage=\"Download Excel\" />\n                                </button>\n                                <button onClick={this.promptEmail}>\n                                    <Translation id=\"download_pdf\" defaultMessage=\"Download PDF\" />\n                                </button>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                {this.state.showCSVFormat && <FormatCSVModal onClose={format => this.closeFormatCSVModal(format)} token={() => this.props.token} />}\n                {this.state.emailPromptOpen && (\n                    <Modal\n                        title={<Translation id=\"emailPromptModalTitle\" defaultMessage=\"We are preparing your listing\" />}\n                        onClose={() => this.setState({ emailPromptOpen: false })}\n                        footer={\n                            <Button onClick={this.downloadPdf} inverted size=\"medium\">\n                                <Translation id=\"send\" defaultMessage=\"Send\" />\n                            </Button>\n                        }\n                    >\n                        <p>\n                            <Translation\n                                id=\"emailPromptModalBody\"\n                                defaultMessage=\"This process may take several minutes. Please, give us your email so we can send it once it is ready.\"\n                            />\n                        </p>\n                        <div className=\"form-group\">\n                            <b>\n                                <small>\n                                    <Translation id=\"email\" defaultMessage=\"Email\" />\n                                </small>\n                            </b>\n                            <input ref={ref => (this.inputEmail = ref)} type=\"email\" className=\"form-control\" aria-describedby=\"emailHelp\" placeholder=\"Email\" />\n                        </div>\n                    </Modal>\n                )}\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(LotsFilter)\n","import Translation from \"../global/Translation\";\n\nimport React from 'react'\nimport {injectIntl} from \"react-intl\";\nimport DisplayOutletIndicator from \"../catalog/rectangleResult/displays/DisplayOutletIndicator\";\nimport Button from \"../global/Button\";\nimport LocalizedLink from \"../global/LocalizedLink\";\nimport IntegerInputNumber from \"../input-number-other/IntegerInputNumber\";\nimport noBundleImage from '../../assets/img/no-image-bundle.png'\nimport cameraOff from \"../../assets/img/icons/camera-off.svg\";\nimport DisplayNaturalStoneOrigin from \"../catalog/rectangleResult/displays/DisplayNaturalStoneOrigin\";\nimport {v4 as uuidv4} from \"uuid\";\n\n\nclass LotTableRow extends React.Component {\n\n    render() {\n\n        const { product, centerId, defaultImage, lot, isAdmin, impersonatedBy, outlet, userType, width, length, surface, getMinimumValue,\n            isLot, lotImage, maxQuantity, unit, lunit, setQuantity, addToCart, canViewLotId, canViewAllLots, selectedProduct } = this.props\n\n\n        let _defaultImage = defaultImage;\n        if (!_defaultImage) {\n            if (!isLot) _defaultImage = noBundleImage;\n            else _defaultImage = cameraOff;\n        }\n\n\n        return (\n\n            <tr style={{\n                width: '100%',\n                //paddingRight: '17px',\n                height:'85px',\n                alignItems: 'center',\n                //borderTop: \"1px solid grey\",\n                fontWeight:'400',\n                fontSize: \"15px\"\n            }}>\n\n                <td>\n                    <div className=\"wrapper-product-image\">\n                        {\n                            lotImage ? (\n                                <LocalizedLink\n                                    // target=\"_blank\"\n                                    routeId=\"ROUTE_LOT_IMAGE_VIEWER\"\n                                    params={{\n                                        parentUrl: window.location.href,\n                                        productId: product.productId,\n                                        center: centerId,\n                                        lotId: lot.lotId,\n                                        quarryBlock: lot.quarryBlock.replace('/', '-'),\n                                        quality: lot.quality.replace('/', '-'),\n                                        outlet: outlet ? outlet : ''\n                                    }}\n                                    gtmLabel=\"ec_lupa\"\n                                >\n                                    {/*<img src={lotImage} className=\"\" alt=\"\" style={{ width: '100%' }} />*/}\n                                    <div className=\"magnifier\" style={{\n                                        position: \"relative\",\n                                        // backgroundImage: `url(${lotImage}), url(${lupa})`,\n                                        backgroundImage: `url(${lotImage})`,\n                                        height:'60px',\n                                        width:'60px',\n                                        backgroundSize: \"cover\",\n                                        backgroundPosition: \"center\",\n                                        backgroundBlendMode: \"difference\"\n                                    }}>\n                                        <i className=\"fas fa-search\"\n                                           style={{width: '100%', lineHeight:'60px', textAlign:'center', textShadow:'#fff 1px 1px'}}\n                                        />\n                                        {/*<img src={lupa}  height=\"60px\" width=\"60px\"*/}\n                                        {/*    style={{*/}\n                                        {/*    position: \"absolute\",*/}\n                                        {/*    backgroundImage: `url(${lupa})`,*/}\n                                        {/*    height:'60px',*/}\n                                        {/*    width:'60px',*/}\n                                        {/*    backgroundSize: \"contain\",*/}\n                                        {/*    backgroundPosition: \"center\"*/}\n                                        {/*}}/>*/}\n                                    </div>\n\n                                </LocalizedLink>\n                            ) : (\n                                <div\n                                    className=\"lot-row-image tooltip-container magnifier-withouth-image\"\n                                    style={{\n                                        backgroundImage: `url(${_defaultImage})`,\n                                        backgroundSize: `${isLot ? '75%' : 'cover'}`,\n                                        backgroundPosition: \"center\",\n                                        backgroundRepeat: \"no-repeat\"\n                                }}>\n                                    {\n                                        !defaultImage && (\n                                            <span className=\"tooltip\">\n                                                <Translation id=\"image-no-available\" defaultMessage=\"Sorry, the image is not available\"/>\n                                            </span>\n                                        )\n                                    }\n                                </div>\n                            )\n                        }\n                    </div>\n                </td>\n\n                <td>\n                    {\n                        isLot ? (\n                            <div>\n                                <div><Translation id=\"lot\" defaultMessage=\"Lot\" /></div>\n                                {/*<div>{canViewLotId ? lot.lotId : ''}</div>*/}\n                                <div>{lot.lotId}</div>\n                                {lot.bundleId &&\n                                    <div><small>Bundle ID {lot.bundleId}</small></div>\n                                }\n                            </div>\n                        ) : (\n                            <div>\n                                <div>Bundle</div>\n                                <div>{lot.bundleId}</div>\n                                {\n                                    this.props.isLatinaVitoria ? (\n                                        lot.lots && (\n                                            <div style={{cursor:'pointer', color:\"blue\"}}\n                                                 onClick={() => this.props.openBundleContent(lot)}\n                                            >\n                                                <small><Translation id=\"view_lots\" defaultMessage=\"View lots\" /></small>\n                                            </div>\n                                        )\n                                    ) : (\n                                        lot.lotId && canViewLotId && (\n                                            <div><small><Translation id=\"lot\" defaultMessage=\"Lot\" />: { lot.lotId }</small></div>\n                                        )\n                                    )\n                                }\n                            </div>\n                        )\n                    }\n                </td>\n\n                <td>\n                    {lot.quarryBlock}\n                </td>\n\n                {\n                    (!canViewAllLots || isAdmin) && (\n                        <td style={{textAlign:'center'}}>\n                            {lot.quality}\n                        </td>\n                    )\n                }\n\n                {\n                    outlet && (\n                        <td style={{textAlign:'center'}}>\n                            {\n                                lot.qualityOutlet && (\n                                    <div className=\"m-auto\" style={{width:'fit-content'}}>\n                                        {outlet && (\n                                            <DisplayOutletIndicator\n                                                outletQuality={lot.qualityOutlet} //{this.product.outletQuality}\n                                                outletDeviated={isAdmin || impersonatedBy ? product.outletDeviated : null}\n                                            />\n                                        )}\n                                    </div>\n                                )\n                            }\n                        </td>\n                    )\n                }\n\n                <td style={{textAlign:'end', position:'relative'}}>\n                    {length} x {width} {lunit()}{!isLot && (<div style={{position:\"absolute\", top:\"calc(50% - 0.7em)\", right:\"-0.25em\"}}>*</div> )}\n                </td>\n\n                <td style={{textAlign:'end', position:'relative'}}>\n                    {surface} {unit}2{!isLot && (<div style={{position:\"absolute\", top:\"calc(50% - 0.7em)\", right:\"-0.25em\"}}>*</div> )}\n                </td>\n\n                <DisplayNaturalStoneOrigin product={product} isLotTableView={true}/>\n\n                {(isAdmin  || this.props.impersonatedBy || this.props.isMexico) && (\n                    <td style={{textAlign:'center'}}>\n                        {lot.shade}\n                    </td>\n                )}\n                {(isAdmin  || this.props.impersonatedBy) && (\n                    <td>\n                        {lot.location}\n                    </td>\n                )}\n\n                <td/>\n\n                <td>\n                    <div className={`d-flex ${this.props.minimumOrder ? 'justify-content-end' : 'justify-content-between'}`}>\n                        <div className=\"input\">\n                            <IntegerInputNumber\n                                min={getMinimumValue()}\n                                max={maxQuantity}\n                                onChangeValue={(v) => setQuantity(v)}\n                                disabled={isAdmin}\n                            />\n                        </div>\n\n                        {!isAdmin && !this.props.minimumOrder && (\n                            <Button onClick={() => addToCart()} inverted icon=\"shopping-cart\" size=\"medium\" customClass=\"square btn-purchase-list\" gtmLabel=\"ec_comprar_lista\">\n                                {userType === 'SHOP' ? <Translation id=\"reserve\" defaultMessage=\"Reserve\" /> : <Translation id=\"buy\" defaultMessage=\"Buy\" />}\n                            </Button>\n                        )}\n                    </div>\n\n                </td>\n\n            </tr>\n        )\n    }\n}\n\nexport default injectIntl(LotTableRow)","import Translation from '../global/Translation'\nimport React from 'react'\nimport { injectIntl } from 'react-intl'\nimport DisplayOutletIndicator from '../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport IntegerInputNumber from '../input-number-other/IntegerInputNumber'\nimport LocalizedLink from '../global/LocalizedLink'\nimport noBundleImage from '../../assets/img/no-image-bundle.png'\nimport cameraOff from '../../assets/img/icons/camera-off.svg'\nimport DisplayNaturalStoneOrigin from '../catalog/rectangleResult/displays/DisplayNaturalStoneOrigin'\nimport { rejectionCodeMap, getBundleRejectionCode } from './utils'\n\nclass LotGridCell extends React.Component {\n    render() {\n        const {\n            product,\n            centerId,\n            defaultImage,\n            lot,\n            isAdmin,\n            impersonatedBy,\n            outlet,\n            userType,\n            width,\n            length,\n            surface,\n            getMinimumValue,\n            isLot,\n            lotImage,\n            maxQuantity,\n            unit,\n            lunit,\n            setQuantity,\n            addToCart,\n            canViewLotId,\n            canViewAllLots,\n            selectedProduct,\n            intl,\n            bundlesRejectionCodes\n        } = this.props\n\n        let _defaultImage = defaultImage\n        if (!_defaultImage) {\n            if (!isLot) _defaultImage = noBundleImage\n            else _defaultImage = cameraOff\n        }\n\n        return (\n            <div className=\"lots__grid__cell__container\">\n                <div className=\"wrapper-product-image\">\n                    {lotImage ? (\n                        <LocalizedLink\n                            routeId=\"ROUTE_LOT_IMAGE_VIEWER\"\n                            params={{\n                                parentUrl: window.location.href,\n                                productId: product.productId,\n                                lotId: lot.lotId,\n                                center: centerId,\n                                quarryBlock: lot.quarryBlock.replace('/', '-'),\n                                quality: lot.quality.replace('/', '-'),\n                                outlet: outlet ? outlet : false,\n                                position: 'relative'\n                            }}\n                        >\n                            <div\n                                className=\"magnifier\"\n                                style={{\n                                    backgroundImage: `url(${lotImage})`,\n                                    height: '190px',\n                                    backgroundSize: '150%',\n                                    backgroundPosition: 'center',\n                                    borderRadius: '4px 4px 0 0',\n                                    position: 'relative'\n                                }}\n                            >\n                                {lot.qualityOutlet && (\n                                    <span className=\"outlet__indicator\">\n                                        {(outlet || true) && (\n                                            <DisplayOutletIndicator\n                                                outletQuality={lot.qualityOutlet} //{this.product.outletQuality}\n                                                outletDeviated={isAdmin || impersonatedBy ? product.outletDeviated : null}\n                                            />\n                                        )}\n                                    </span>\n                                )}\n                            </div>\n                            <i className=\"fas fa-search\" style={{ position: 'absolute', top: '16px', right: '16px', fontSize: '22px', textShadow:'#fff 1px 1px' }} />\n                        </LocalizedLink>\n                    ) : (\n                        <div\n                            className=\"tooltip-container magnifier-withouth-image\"\n                            style={{\n                                backgroundImage: `url(${_defaultImage})`,\n                                height: '190px',\n                                backgroundSize: `${defaultImage ? 'cover' : isLot ? '30%' : 'contain'}`,\n                                backgroundPosition: 'center',\n                                borderRadius: '4px 4px 0 0',\n                                backgroundColor: '#d8d8d8',\n                                backgroundRepeat: 'no-repeat'\n                            }}\n                        >\n                            {!defaultImage && (\n                                <span className=\"tooltip plus\">\n                                    <Translation id=\"image-no-available\" defaultMessage=\"Sorry, the image is not available\" />\n                                </span>\n                            )}\n                        </div>\n                    )}\n\n                    {/*<AddFavourite productId={product.productId}/>*/}\n                </div>\n\n                {/*********** INFO SECTION ***********/}\n                <div className=\"lots__grid__cell__container__info--content\">\n                    <div className=\"lots__grid__header\">\n                        {isLot ? (\n                            <div className=\"lot-name\">\n                                <h4 className={lot.bundleId ? 'm-0' : ''}>\n                                    <Translation id=\"lot\" defaultMessage=\"Lot\" /> {canViewLotId ? lot.lotId : ''}\n                                </h4>\n                                {lot.bundleId && <h6>Bundle ID {lot.bundleId}</h6>}\n                            </div>\n                        ) : (\n                            <div className=\"lot-name\">\n                                <h4>Bundle ID {lot.bundleId}</h4>\n                                {this.props.isLatinaVitoria\n                                    ? lot.lots && (\n                                          <h6 className=\"is-latina-victoria-view-lots\"\n                                              onClick={() => this.props.openBundleContent(lot)}\n                                          >\n                                              <Translation id=\"view_lots\" defaultMessage=\"View lots\" />\n                                          </h6>\n                                      )\n                                    : lot.lotId && canViewLotId && (\n                                          <h6>\n                                              <Translation id=\"lot\" defaultMessage=\"Lot\" /> {lot.lotId}\n                                          </h6>\n                                    )}\n                            </div>\n                        )}\n\n                        <div className=\"quarry-block\">\n                            <span>\n                                <Translation id=\"quarryBlock\" defaultMessage=\"Quarry Block\" />: {lot.quarryBlock}\n                            </span>\n                        </div>\n                    </div>\n\n                    {/* Divider */}\n                    <div className=\"w-100 py-3\">\n                        <div\n                            style={{\n                                width: '100%',\n                                height: '1px',\n                                backgroundColor: '#D8D8D8'\n                            }}\n                        />\n                    </div>\n\n                    <div className=\"middle-details-content\">\n                        {(!canViewAllLots || isAdmin) && (\n                            <div className=\"row__lot__info\">\n                                <div className=\"row__lot__info--key\">\n                                    <span>\n                                        <Translation id=\"quality\" defaultMessage=\"Quality\" />\n                                    </span>\n                                    :\n                                </div>\n                                <div className=\"row__lot__info--value\">\n                                    <span>{lot.quality}</span>\n                                </div>\n                            </div>\n                        )}\n\n                        {(isAdmin || impersonatedBy || this.props.isMexico) && (\n                            <React.Fragment>\n                                <div className=\"row__lot__info\">\n                                    <div className=\"row__lot__info--key\">\n                                        <span>\n                                            <Translation id=\"shade\" defaultMessage=\"Shade\" />\n                                        </span>\n                                        :\n                                    </div>\n                                    <div className=\"row__lot__info--value\">\n                                        <span>{lot.shade}</span>\n                                    </div>\n                                </div>\n                                <div className=\"row__lot__info\">\n                                    <div className=\"row__lot__info--key\">\n                                        <span>\n                                            ID <Translation id=\"location\" defaultMessage=\"Location\" />\n                                        </span>\n                                        :\n                                    </div>\n                                    <div className=\"row__lot__info--value\">\n                                        <span>{lot.location}</span>\n                                    </div>\n                                </div>\n                            </React.Fragment>\n                        )}\n\n                        <div className=\"row__lot__info\">\n                            {isLot ? (\n                                <div className=\"row__lot__info--key\">\n                                    <span>\n                                        <Translation id=\"size\" defaultMessage=\"Size\" />\n                                    </span>\n                                    :\n                                </div>\n                            ) : (\n                                <div className=\"row__lot__info--key\">\n                                    <span>\n                                        <Translation id=\"main_size\" defaultMessage=\"Main size\" />\n                                    </span>\n                                    :\n                                </div>\n                            )}\n                            <div className=\"row__lot__info--value\">\n                                <span>\n                                    {length} x {width} {lunit()}\n                                </span>\n                            </div>\n                        </div>\n\n                        <div className=\"row__lot__info\">\n                            {isLot ? (\n                                <div className=\"row__lot__info--key\">\n                                    <span>\n                                        <Translation id=\"surface\" defaultMessage=\"Surface\" />\n                                    </span>\n                                    :\n                                </div>\n                            ) : (\n                                <div className=\"row__lot__info--key\">\n                                    <span>\n                                        <Translation id=\"main_surface\" defaultMessage=\"Main surface\" />\n                                    </span>\n                                    :\n                                </div>\n                            )}\n                            <div className=\"row__lot__info--value\">\n                                <span>\n                                    {surface} {unit}2\n                                </span>\n                            </div>\n                        </div>\n\n                        <div className=\"row__lot__info\">\n                            <div className=\"row__lot__info--key\">\n                                <span>\n                                    <Translation id=\"units\" defaultMessage=\"Units\" />\n                                </span>\n                                :\n                            </div>\n                            <div className=\"row__lot__info--value\">\n                                <span>{maxQuantity}</span>\n                            </div>\n                        </div>\n\n                        <DisplayNaturalStoneOrigin product={product} isLotGridView={true} />\n                    </div>\n\n                    {/* Rejection code when is not Bundle, that means when is only lot */}\n                    {isLot && lot.rejectionCode && (\n                        <React.Fragment>\n                            <div className=\"w-100 py-3\">\n                                <div\n                                    style={{\n                                        width: '100%',\n                                        height: '1px',\n                                        backgroundColor: '#D8D8D8'\n                                    }}\n                                />\n                            </div>\n\n                            <div className=\"row_lot__info__status\">\n                                <div className=\"row_lot__info__status--icon\">\n                                    <i class=\"fas fa-exclamation-circle\"></i>\n                                </div>\n                                <div className=\"row_lot__info__status--text\">\n                                    <div>\n                                        <span className=\"main-text\">\n                                            <Translation id=\"material_status_information\" defaultMessage=\"Material status information\" />\n                                        </span>\n                                        :&nbsp;\n                                    </div>\n                                    <div>\n                                        <span className=\"categories\">{rejectionCodeMap[lot.rejectionCode]}</span>\n                                    </div>\n                                </div>\n                            </div>\n                        </React.Fragment>\n                    )}\n\n                    {/* Rejection code when is Bundle, that means when is not only lot */}\n                    {!isLot && getBundleRejectionCode(lot, bundlesRejectionCodes) && (\n                        <React.Fragment>\n                            <div className=\"w-100 py-3\">\n                                <div\n                                    style={{\n                                        width: '100%',\n                                        height: '1px',\n                                        backgroundColor: '#D8D8D8'\n                                    }}\n                                />\n                            </div>\n\n                            <div className=\"row_lot__info__status\">\n                                <div className=\"row_lot__info__status--icon\">\n                                    <i class=\"fas fa-exclamation-circle\"></i>\n                                </div>\n                                <div className=\"row_lot__info__status--text\">\n                                    <div>\n                                        <span className=\"main-text\">\n                                            <Translation id=\"material_status_information\" defaultMessage=\"Material status information\" />\n                                        </span>\n                                        :&nbsp;\n                                    </div>\n                                    <div>\n                                        <span className=\"categories\">{rejectionCodeMap[getBundleRejectionCode(lot, bundlesRejectionCodes)]}</span>\n                                    </div>\n                                </div>\n                            </div>\n                        </React.Fragment>\n                    )}\n\n                    {/* Divider */}\n                    <div className=\"w-100 py-3\">\n                        <div\n                            style={{\n                                width: '100%',\n                                height: '1px',\n                                backgroundColor: '#D8D8D8'\n                            }}\n                        />\n                    </div>\n                </div>\n                {!isAdmin && (\n                    <div className=\"lots__grid__cell__container__info--buy\">\n                        <IntegerInputNumber min={getMinimumValue()} max={maxQuantity} onChangeValue={v => setQuantity(v)} />\n                        <button className=\"lots__grid__cell__container__info--btn\" onClick={() => addToCart()} gtm-label=\"ec_comprar_cuadricula\">\n                            {userType === 'SHOP' ? <Translation id=\"reserve\" defaultMessage=\"Reserve\" /> : <Translation id=\"buy\" defaultMessage=\"Buy\" />}\n                        </button>\n                    </div>\n                )}\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(LotGridCell)\n","import React from 'react'\nimport {injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport {getUnit} from \"../../store/profile-configuration/reducers\";\nimport LotTableRow from \"./LotTableRow\";\nimport LotGridCell from \"./LotGridCell\";\nimport {canViewLotId} from \"../../store/products/reducers\";\nimport {v4 as uuidv4} from 'uuid'\n\nconst mapStateToProps = state => {\n    return {\n        unit: getUnit(state),\n        canViewLotId: canViewLotId(state)\n    }\n}\n\n// const mapDispatchToProps = dispatch => {\n//     return {\n//         buyLot: (productId, lotId, centerId, extra = null, supplierCenterId = null) => {\n//             dispatch(addCartLineLot(productId, lotId, centerId, extra, supplierCenterId))\n//         },\n//         buyBundle: (productId, bundleId, lotId, qty, centerId, extra = null, supplierCenterId = null) => {\n//             dispatch(addCartLineBundle(productId, bundleId, lotId, qty, centerId, extra, supplierCenterId))\n//         },\n//         selectLot: (selectedLot, uuid) => {\n//             dispatch({type:'ADD_LOT_TO_BUY', selectedLot, uuid})\n//         }\n//     }\n// }\n\nclass LotComponent extends React.Component {\n\n    componentDidMount() {\n        this.setState({\n            quantity: this.getMinimumValue(),\n            uuid: uuidv4()\n        })\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (!prevProps.lot && this.props.lot) {\n            this.setState({\n                quantity: this.getMinimumValue()\n            })\n        }\n    }\n\n    getLUnit = () => {\n        return this.props.unit === 'ft' ? 'in' : 'cm'\n    }\n\n    getMeasure = (field, isSurface) => {\n        let localeField = field + '_' + this.props.unit\n        if (isSurface) localeField += '2'\n        return this.props.lot[localeField]\n    }\n\n    setQuantity = (quantity) => {\n        this.setState({quantity: quantity}, () => {\n            if (this.props.minimumOrder) {\n                const selectedLot = quantity > 0 ? this.getSelectedLot() : null\n                this.props.selectLot(selectedLot, this.state.uuid)\n            }\n        })\n    }\n\n    addToCart = () => {\n        const selectedLot = this.getSelectedLot()\n\n        if (selectedLot) {\n            if (selectedLot.bundleId) this.props.buyBundle(selectedLot.productId, selectedLot.bundleId, selectedLot.visibleLotId, selectedLot.quantity, selectedLot.centerId, selectedLot.extra, selectedLot.supplierCenterId)\n            else if (selectedLot.lotId) this.props.buyLot(selectedLot.productId, selectedLot.lotId, selectedLot.centerId, selectedLot.extra, selectedLot.supplierCenterId)\n        }\n    }\n\n    getSelectedLot = () => {\n        const {product, center, lot, canViewLotId, selectedProduct, fromMall} = this.props\n\n        const isBundle = lot && lot.bundleId && true\n        let extra = {}\n        let supplierCenterId = null\n        if (selectedProduct){\n            extra = {...extra, ...selectedProduct.extra}\n            supplierCenterId = selectedProduct.centerId\n        }\n        if (fromMall) extra.mall = true\n        const selectedLot = {}\n\n        if (isBundle) {\n            selectedLot.bundleId = lot.bundleId\n            selectedLot.visibleLotId = canViewLotId ? lot.lotId : null\n        }\n        selectedLot.quantity = isBundle ? this.state.quantity : 1\n        selectedLot.productId = product.productId\n        selectedLot.lotId = lot.lotId\n        selectedLot.centerId = center\n        selectedLot.extra = extra\n        selectedLot.supplierCenterId = supplierCenterId\n\n        return selectedLot\n    }\n\n    getMinimumValue = () => this.props.isLatinaVitoria ? this.props.lot.count : (this.props.minimumOrder ? 0 : 1)\n\n\n    render() {\n        const {lotsImages, lot, isGrid} = this.props\n        const isLot = !lot.bundleId ||!(lot.lots && lot.lots.length > 0)\n        let lotImage;\n\n        if (lotsImages) {\n            if(!isLot){\n                const foundLot = lot.lots && lot.lots.find((lotInfo) => {\n                    return lotsImages[lotInfo.lotId] && !!lotsImages[lotInfo.lotId].image\n                });\n                lotImage = foundLot && (isGrid ? lotsImages[foundLot.lotId].image : lotsImages[foundLot.lotId].thumb);\n            } else {\n                lotImage = lotsImages[lot.lotId] && (isGrid ? lotsImages[lot.lotId].image : lotsImages[lot.lotId].thumb ? lotsImages[lot.lotId].thumb : lotsImages[lot.lotId].image)\n            }\n        }\n\n        const width =this.getMeasure('width')\n        const length = this.getMeasure('length')\n        const surface = this.getMeasure('qty', true)\n\n\n        const maxQuantity = lot.lots ? lot.lots.length : 1\n\n        const props = {...this.props, setQuantity: this.setQuantity, lunit: this.getLUnit, addToCart: this.addToCart,\n            width, length, surface, maxQuantity, lotImage, isLot, getMinimumValue: this.getMinimumValue\n        }\n\n        console.log('lots', lotImage, lot.lotId, lotsImages[lot.lotId])\n        return isGrid ? (<LotGridCell {...props}/>) : (<LotTableRow {...props}/>)\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(LotComponent)\n)\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport {connect} from \"react-redux\";\nimport Translation from \"../global/Translation\";\nimport LotComponent from \"./LotComponent\";\n\n\n\nconst LotsTable = (props) => {\n        const lots = props.lots ? props.lots.slice(props.selectedIndex * props.pageSize, props.selectedIndex * props.pageSize + props.pageSize) : []\n\n\n        /**\n         * Determines if product is pn and has country code \n         * @returns {boolean}\n         */\n        const isNaturalStoneWithOrigin = () => {\n            const product = props.original\n            if (product && product.brand && product.countryCode) {\n                const naturalStone = ['scalea', 'sensa', 'prexury']\n                if (naturalStone.includes(product.brand.toLowerCase())) return true\n            }\n            return false\n        }\n\n        return (\n            <div className=\"row no-gutters w-100\" style={{overflow:'auto', maxHeight:'400px'}}>\n\n                <div className=\"row no-gutters\" style={{\n                    //width:'1076px',\n                    minWidth:'100%',\n                    fontSize: '14px',\n                    fontWeight: 500,\n                    marginBottom: '12px'\n                }}>\n                    <table style={{width:'100%'}}>\n\n                        <tr className=\"table-header\">\n\n                            <th style={{width:'7.5%'}}/>\n\n                            <th>\n                                <Translation id=\"type\" defaultMessage=\"Type\"/>\n                            </th>\n\n                            <th>\n                                <Translation id=\"quarryBlock\" defaultMessage=\"Quarry Block\" />\n                            </th>\n\n                            {\n                                (!props.canViewAllLots || props.isAdmin) && (\n                                    <th style={{textAlign:'center'}}>\n                                        <Translation id=\"quality\" defaultMessage=\"Quality\"/>\n                                    </th>\n                                )\n                            }\n\n                            {\n                                props.outlet && (\n                                    <th style={{textAlign:'center'}}>\n                                        <Translation id=\"quality\" defaultMessage=\"Quality\"/> Outlet\n                                    </th>\n                                )\n                            }\n\n                            <th style={{textAlign:'end'}}>\n                                <Translation id=\"size\" defaultMessage=\"Size\" />\n                            </th>\n\n                            <th style={{textAlign:'end'}}>\n                                <Translation id=\"surface\" defaultMessage=\"Surface\" />\n                            </th>\n\n                            {isNaturalStoneWithOrigin() && (\n                                <th style={{textAlign:'end'}}>\n                                    <Translation id=\"origin\" defaultMessage=\"Origin\" />\n                                </th>\n                            )}\n\n                            {(props.isAdmin || props.impersonatedBy || props.isMexico) && (\n                                <th style={{textAlign:'center'}}>\n                                    <Translation id=\"shade\" defaultMessage=\"Shade\" />\n                                </th>\n                            )}\n                            {(props.isAdmin || props.impersonatedBy) && (\n                                <th>\n                                    <Translation id=\"location\" defaultMessage=\"Location\" />\n                                </th>\n                            )}\n\n                            <th style={{width:'2.5%'}}/>\n\n                            {!props.isAdmin &&\n                                <th style={props.minimumOrder ? {textAlign:'end'} : {}}>\n                                    <Translation id=\"lots-to-buy\" defaultMessage=\"Lots to buy\"/>\n                                </th>\n                            }\n\n                        </tr>\n                        <tbody>\n                            { lots && lots.map(l => {\n                                const key = l.bundleId ? l.bundleId : l.lotId\n                                return (\n                                    <LotComponent\n                                        {...props}\n                                        lot={l}\n                                        defaultImage={props.original.img}\n                                        product={props.original}\n                                        key={key}\n\n                                        // centerId={props.center}\n                                        // isAdmin={props.isAdmin}\n                                        // lotImages={props.lotsImages}\n                                        // outlet={props.outlet}\n                                        // impersonatedBy={props.impersonatedBy}\n                                        // canViewAllLots={props.canViewAllLots}\n                                        // selectedProduct={props.selectedProduct}\n                                        // fromMall={props.fromMall}\n                                    />\n                                )\n                            })}\n                        </tbody>\n\n\n                    </table>\n                </div>\n            </div>\n        )\n\n}\n\nexport default injectIntl(\n    connect(\n        null,\n        null\n    )(LotsTable)\n)\n","import React from 'react'\nimport LotComponent from \"./LotComponent\";\n\nconst LotsGrid = (props) => {\n\n    const lots = props.lots ? props.lots.slice(props.selectedIndex * props.pageSize, props.selectedIndex * props.pageSize + props.pageSize) : []\n\n    return(\n        <div className=\"lots__grid__container\">\n            {\n                lots && lots.map(l => {\n                    const key = l.bundleId ? l.bundleId : l.lotId\n                    return (\n                        <LotComponent\n                            {...props}\n                            lot={l}\n                            defaultImage={props.original.img}\n                            product={props.original}\n                            isGrid={true}\n                            key={key}\n\n                            // centerId={props.center}\n                            // lotImages={props.lotsImages}\n                            // isAdmin={props.isAdmin}\n                            // canViewAllLots={props.canViewAllLots}\n                            // selectedProduct={props.selectedProduct}\n                        />\n                    )\n                })\n            }\n        </div>\n    )\n\n}\n\nexport default LotsGrid\n","import React from 'react'\nimport Alert from './Alerts'\n\n\nconst CloseableAlerts = ({ alerts, status, onClose }) => {\n\n    if (alerts) {\n        return (\n            <div style={{position:'relative'}}>\n                <div style={{width:'100%'}}>\n                    {\n                        alerts.map(alert => <Alert alert={alert.id} status={status} values={alert.values}/>)\n                    }\n                </div>\n\n                <div style={{position:\"absolute\",right:'12px',top:'4px',color:'gray'}}>\n                    <i className=\"far fa-times\" onClick={onClose}/>\n                </div>\n            </div>\n        )\n    }\n\n\n}\n\nexport default CloseableAlerts\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport LotsTable from './LotsTable'\nimport LotsGrid from './LotsGrid'\nimport ReactPaginate from 'react-paginate';\nimport Select from \"react-select\";\nimport CloseableAlerts from '../alerts/CloseableAlerts'\nimport {v4 as uuidv4} from \"uuid\";\n\nconst DEFAULT_PAGE_SIZE = 32\nconst DEFAULT_PAGE_OPTION = {label: \"32 rows\", value:32}\n\nclass LotsList extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedBundles: [],\n            selectedLots: [],\n            selectedIndex: 0,\n            currentPageSize: DEFAULT_PAGE_SIZE ,\n            currentValue: DEFAULT_PAGE_OPTION,\n            isListView: true,\n            showAdvisorAlert: true,\n        }\n    }\n\n\n    componentDidMount() {\n        if (window.location.pathname.includes('grid')) {\n            this.setState({isListView:false, currentValue:DEFAULT_PAGE_OPTION, currentPageSize:12, selectedIndex:0 })\n        }\n        this.props.clearSelectedLots()\n    }\n\n    componentWillReceiveProps(nextProps) {\n        this.scrollTableTop()\n    }\n\n    scrollTableTop = () => {\n        const table = document.getElementsByClassName('lots_table')[0]\n        if (table) table.getElementsByClassName('rt-tbody')[0].scrollTop = 0\n    }\n\n    selectLot = lotId => {\n        if (this.state.selectedLots.includes(lotId)) {\n            this.setState({ selectedLots: this.state.selectedLots.filter(lot => lot !== lotId) })\n        } else {\n            this.setState({ selectedLots: this.state.selectedLots.concat(lotId) })\n        }\n    }\n\n    addToCart = () => {\n        this.props.bulkAddToCart(this.props.productId, this.state.selectedLots, this.state.selectedBundles, this.props.outletQuality)\n        this.setState({ selectedBundles: [], selectedLots: [] })\n    }\n\n    toggleGrid = (isList) => {\n        if (isList) {\n            this.setState({isListView:true, currentValue:DEFAULT_PAGE_OPTION, currentPageSize:DEFAULT_PAGE_SIZE, selectedIndex:0 })\n            const noGridLocation = window.location.href.replace('/grid', '')\n            window.history.replaceState(null, '', noGridLocation)\n        } else {\n            this.setState({isListView:false, currentValue:DEFAULT_PAGE_OPTION, currentPageSize:12, selectedIndex:0 })\n            if (!window.location.href.includes('grid')) {\n                const gridLocation = window.location.href + '/grid'\n                window.history.replaceState(null, '', gridLocation)\n            }\n        }\n    }\n\n    selectedLotsQuantity = () => Object.values(this.props.selectedLots).reduce((acc, currentValue) => acc + currentValue.quantity, 0)\n\n    addSelectedLotsToCart = () => {\n        const lotsToBuy = Object.values(this.props.selectedLots)\n        this.props.addCartBulkLots(this.props.productId, lotsToBuy, !!this.props.outlet)\n    }\n\n\n    render() {\n        const {isListView} = this.state\n        let pagesCount = 0\n        if (this.props.lots) {\n            pagesCount = Math.ceil(this.props.lots.length / this.state.currentPageSize)\n        }\n\n        const selectedLotsQuantity = this.selectedLotsQuantity()\n        const key = uuidv4()\n\n        return (\n\n            <div id=\"lots-list\">\n\n                <div className=\"lots__list__header\">\n                    <div className=\"lots__list__header--counter\">\n                        <span><Translation id=\"show-n-results\" defaultMessage=\"Showing {count} results\" values={{count:this.props.lots.length}}/></span>\n                    </div>\n\n                    {!this.props.minimumOrder &&\n                        <div className=\"lots__list__header--tabs\">\n                                <button className={`list-view g-sel ${isListView ? 'active' : ''}`} onClick={() => this.toggleGrid(true)} gtm-label=\"ec_ver_lista\">\n                                    <i className=\"fa fa-list\"/>\n                                    <Translation id=\"list_view\" defaultMessage=\"List view\" />\n                                </button>\n                                <button className={`grid-view g-sel ${!isListView ? 'active' : ''}`} onClick={() => this.toggleGrid(false)} gtml-label=\"ec_ver_cuadricula\">\n                                    <i className=\"fa fa-th\"/>\n                                    <Translation id=\"grid_view\" defaultMessage=\"Grid view\" />\n                                </button>\n                        </div>\n                    }\n                </div>\n\n                {\n                    this.state.isListView ? (\n                        <LotsTable\n                            {...this.props}\n                            selectedIndex={this.state.selectedIndex}\n                            pageSize={this.state.currentPageSize}\n                            key={key}\n                        />\n                    ) : (\n                        <LotsGrid\n                            {...this.props}\n                            selectedIndex={this.state.selectedIndex}\n                            pageSize={this.state.currentPageSize}\n                            key={key}\n                        />\n                    )\n                }\n\n                <div className=\"d-flex mt-2\">\n                    <div className='v2 paginator d-flex flex-grow-1 justify-content-center'>\n                            <ReactPaginate\n                                breakLabel=\"...\"\n                                previousLabel={<span><i className=\"fas fa-chevron-left mr-3\" /></span>}\n                                nextLabel={<span><i className=\"fas fa-chevron-right ml-3\" /></span>}\n                                onPageChange={ (e) => this.setState({selectedIndex: e.selected}) }\n                                pageCount={pagesCount}\n                                renderOnZeroPageCount={null}\n                                pageClassName=\"page-item\"\n                                pageLinkClassName=\"page-link\"\n                                previousClassName=\"page-item\"\n                                previousLinkClassName=\"page-link page-nav\"\n                                nextClassName=\"page-item\"\n                                nextLinkClassName=\"page-link page-nav\"\n                                breakClassName=\"page-item\"\n                                breakLinkClassName=\"page-link\"\n                                containerClassName=\"pagination\"\n                                activeClassName=\"active\"\n                                forcePage={this.state.selectedIndex}\n                            />\n                    </div>\n                        {this.state.isListView && (\n                            <div style={{width:\"120px\", flexGrow:0}}>\n                                <Select\n                                    //placeholder={this.props.intl.formatMessage({ id: '32 rows' })}\n                                    clearable={false}\n                                    value={this.state.currentValue}\n                                    options={[\n                                        {\n                                            label: \"8 rows\",\n                                            value: 8\n                                        },\n                                        {\n                                            label: \"16 rows\",\n                                            value: 16\n                                        },\n                                        {\n                                            label: \"32 rows\",\n                                            value: 32\n                                        },\n                                        {\n                                            label: \"64 rows\",\n                                            value: 64\n                                        },\n                                        {\n                                            label: \"128 rows\",\n                                            value: 128\n                                        }\n                                    ]}\n                                    onChange={selectedOption => this.setState({currentValue: selectedOption, currentPageSize : selectedOption.value})}\n                                />\n                            </div>\n                        )\n                    }\n                </div>\n\n                {this.props.minimumOrder && <div className=\"my-2\" style={{backgroundColor:'black', width:'100%', height:'1px'}}/>}\n\n                <div className=\"row no-gutters mt-2\" style={{width: '100%'}}>\n                    {this.state.showAdvisorAlert && (\n                            <div className=\"col-12 col-lg-6\">\n                                <div>\n                                    <CloseableAlerts alerts={[{id:'LOTS_IMAGE_MAY_NOT_MATCH'},{id:'AVG_BUNDLE_SIZE'}]} status=\"warning\" onClose={()=>this.setState({showAdvisorAlert:false})}/>\n                                </div>\n                            </div>\n                    )}\n                    {this.state.isListView && !this.props.isAdmin && this.props.minimumOrder && (\n                        <div className=\"col-12 col-lg-6 mt-2 mt-lg-0 d-flex justify-content-end align-items-center\" style={{columnGap: '24px'}}>\n                            <div>\n                                <div style={{fontSize: '1em',fontWeight: 500, textAlign:'end'}}>\n                                    <Translation id=\"added_units\" defaultMessage=\"Added units\"/>:&nbsp;{selectedLotsQuantity}\n                                </div>\n                                <div style={{fontSize: '0.72em',fontWeight: 100, textAlign:'end'}}>\n                                    <Translation id=\"minimun_order\" defaultMessage=\"Minimun order\"/>::&nbsp;{this.props.minimumOrder}\n                                </div>\n                            </div>\n                            <Button\n                                onClick={this.addSelectedLotsToCart}\n                                inverted icon=\"shopping-cart\"\n                                size=\"medium\"\n                                disabled={selectedLotsQuantity < this.props.minimumOrder}\n                                customClass=\"btn-purchase-list justify-content-center\"\n                                style={{padding:'4px', minWidth:'96px'}}\n                            >\n                                <Translation id=\"add\" defaultMessage=\"Add\" />\n                            </Button>\n                        </div>\n                    )}\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(LotsList)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\nimport Alerts from '../alerts/Alerts'\nimport DisplayPrice from \"../catalog/rectangleResult/displays/DisplayPrice\";\nimport {getProfileConfiguration} from \"../../store/profile-configuration/reducers\";\nimport {connect} from \"react-redux\";\nimport {\n    getIsMkToolsCenter\n} from \"../../store/centers/reducers\";\nimport { getPriceListAtSelectedCenter, getUserPriceList } from '../../store/login/reducers'\nimport ProductDisplayName from \"../global/ProductDisplayName\";\n\n\nconst mapStateToProps = state => {\n    return {\n        userPreferences: getProfileConfiguration(state),\n        priceList: getPriceListAtSelectedCenter(state),\n        userPriceList: getUserPriceList(state),\n        isMktoolsCenter: getIsMkToolsCenter(state),\n    }\n}\n\n\nclass LotsHeader extends React.Component {\n\n    state={\n        showAdvisorAlert: true\n    }\n\n    render() {\n        const { original, filtered, goBack, intl } = this.props\n\n        const lotsBooked = filtered ? (\n            <div className=\"row mt-2\">\n                <div className=\"col-12\">\n                    <Alerts alert={'LOTS_ALREADY_BOOKED'} status=\"warning\" />\n                </div>\n            </div>\n        ) : null\n\n        return (\n            <div>\n                <div className=\"toolbar\">\n                    <div className=\"row align-items-end no-gutters\">\n                        <div className=\"col-12 mb-1\">\n                            <div className=\"position-relative position-lg-absolute mb-lg-0\"\n                                 style={{position:\"absolute\", top:0, left:0, fontSize:\"14px\", color:\"#232323\", fontWeight:\"500\"}}>\n                                <div className=\"go-back\" onClick={goBack}>\n                                    <span>\n                                        <i className=\"fal fa-chevron-left\" />&nbsp;\n                                        <Translation id=\"back_to\" defaultMessage=\"Back to\" />&nbsp;\n                                        <ProductDisplayName product={original} />\n                                    </span>\n                                </div>\n                            </div>\n\n                            {original && (\n                                <div className=\"lots__header__container\">\n                                    <div className=\"lots__header__container--title\">\n                                        <span><Translation id=\"choose_lots_of\" defaultMessage=\"Choose lots of\" />&nbsp;</span>\n                                        <ProductDisplayName product={original} />\n                                        {original.thickness.toLowerCase()} cm,&nbsp;\n                                        {intl.formatMessage({ id: original.finish }).toLowerCase()}.\n                                    </div>\n\n                                    <div className=\"lots__header__container--price\">\n                                        <DisplayPrice\n                                            userPreferences={this.props.userPreferences}\n                                            priceList={this.props.priceList}\n                                            userPriceList={this.props.userPriceList}\n                                            product={original}\n                                            isMktoolsCenter={this.props.isMktoolsCenter}\n                                            centerId={this.props.centerId}\n                                        />\n                                    </div>\n\n                                    <div className=\"lots__header__container--text\">\n                                        <Translation id=\"lots-faster-way-message\" defaultMessage=\"Now you can select loose boards, complete or partial bundles in a faster way\"/>\n                                    </div>\n                                </div>\n                            )}\n                        </div>\n\n                    </div>\n                    {lotsBooked}\n                </div>\n\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(LotsHeader)\n)\n\n","import React from 'react'\n\nimport LotsFilter from './LotsFilter'\nimport LotsList from './LotsList'\nimport LotsHeader from './LotsHeader'\nimport Spinner from '../global/Spinner'\nimport Translation from \"../global/Translation\";\nimport _ from 'lodash';\n\nclass Lots extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { initialValuesSet: false, quarryBlock: null, shade: null, quality: null, location: null, search: '', modalImage: null, lotsFiltered: null }\n    }\n\n    componentDidMount() {\n        let shouldFetchOutlet = (this.props.original && (!this.props.original.outlet && this.props.original.trullyOutlet)) || this.props.outlet ? true : false\n        const fl = this.props.fetchLots(this.props.productId, null, null, null, null, shouldFetchOutlet, this.filter)\n        this.props.fetchProduct(this.props.productId)\n        // if (!this.props.fromMall) this.props.fetchProduct(this.props.productId)\n        // this.props.onLoadLots(this.props.outlet, this.props.productId)\n    }\n\n    componentDidUpdate(prevProps) {\n        const prevLotsSize = this.getTotalLotsSize(prevProps.lots)\n        const currentLotsSize = this.getTotalLotsSize(this.props.lots)\n        if (currentLotsSize !== prevLotsSize || this.state.lotsFiltered === null) {\n            this.filter()\n        }\n    }\n\n    getTotalLotsSize =(lots) => {\n        if (!lots) return 0\n        let count = 0\n        lots.forEach(l => {\n            if (l.lots) l.lots.forEach(() => ++count)\n            else ++count\n        })\n        return count\n    }\n\n    handleFilterChange = (selectedOption, filter) => {\n        let selected = selectedOption !== null ? selectedOption.value : null\n        // this.setState({ [filter]: selected }, function() {\n        //     // this.props.fetchLots(this.props.productId, this.state.quarryBlock, this.state.shade, this.state.quality, this.state.location, this.props.outlet)\n        // })\n        this.setState({ [filter]: selected }, this.filter)\n    }\n\n    clearFilters = () => {\n        this.setState({ quarryBlock: null, shade: null, quality: null, location: null, search: '' },  this.filter)\n    }\n\n    flush = () => {\n        this.setState({ search: '' }, () => {\n            this.props.fetchLots(this.props.productId, this.state.quarryBlock, this.state.shade, this.state.quality, this.state.location, this.props.outlet, this.filter)\n        })\n    }\n\n    search = e => {\n        this.setState({ search: e.target.value }, this.filter)\n    }\n\n    filter = () => {\n\n        if (!this.props.lots) return\n\n        let lotsFiltered = _.cloneDeep(this.props.lots)\n\n        if (this.props.fromMall) {\n            // if (!!this.props.mallProductLots && this.props.selectedMallProductId && !!this.props.mallProductLots[this.props.selectedMallProductId]) {\n            if (!!this.props.selectedProduct.productLots) {\n                const mallLots = {}\n                // this.props.mallProductLots[this.props.selectedMallProductId].lots.forEach(l => mallLots[l] = true)\n                this.props.selectedProduct.productLots.lots.forEach(l => mallLots[l] = true)\n                lotsFiltered = lotsFiltered.filter(l => {\n                    if (mallLots[l.lotId]) return true\n                    // if (l.lotId in mallLots) return true\n                    if (l.lots) {\n                        const bundle = l.lots.filter(innerLot => {\n                            return mallLots[innerLot.lotId]\n                        })\n                        if (bundle.length >= 1) {\n                            l.lots = bundle\n                            return true\n                        }\n                    }\n                    return false\n                })\n            } else {\n                lotsFiltered = lotsFiltered.filter(l => {\n                    if (l.mall === 'MA') return true\n                    if (l.lots) {\n                        const bundle = l.lots.filter(il => il.mall === 'MA')\n                        if (bundle.length > 1) {\n                            l.lots = bundle\n                            return true\n                        }\n                    }\n                    return false\n                })\n            }\n        } else {\n            // lotsFiltered = lotsFiltered.filter(l => !l.mall)\n        }\n\n\n        \n        if (!(this.props.isAdmin || this.props.impersonatedBy)) {\n            lotsFiltered = lotsFiltered.filter(row => {\n                return row.blocked !== 'Y'\n            })\n        }\n\n        if (this.state.search) {\n            lotsFiltered = lotsFiltered.filter(row => {\n                const hasLotId = !!row.lotId && row.lotId.includes(this.state.search)\n                const hasBundleId = !!row.bundleId && row.bundleId.includes(this.state.search)\n                const hasInnerLotId = !!row.lots && row.lots.some(lot => lot.lotId.includes(this.state.search))\n                return hasLotId || hasBundleId || hasInnerLotId\n                // if (row.lotId) return row.lotId.includes(this.state.search)\n                // else if (row.bundleId) return row.bundleId.includes(this.state.search) || row.lots.some(lot => lot.lotId.includes(this.state.search))\n                // else return row\n            })\n        }\n\n        if (this.state.quarryBlock) {\n            lotsFiltered = lotsFiltered.filter(row => {\n                if (row.quarryBlock) return row.quarryBlock.includes(this.state.quarryBlock)\n                if (row.bundleId) return row.lots.some(lot => lot.quarryBlock && lot.quarryBlock.includes(this.state.quarryBlock))\n                return false\n            })\n        }\n        if (this.state.shade) {\n            lotsFiltered = lotsFiltered.filter(row => {\n                if (row.shade) return row.shade.includes(this.state.shade)\n                if (row.bundleId) return row.lots.some(lot => lot.shade && lot.shade.includes(this.state.shade))\n                else return false\n            })\n        }\n        if (this.state.quality) {\n            lotsFiltered = lotsFiltered.filter(row => {\n                if (row.quality) return row.quality.includes(this.state.quality)\n                if (row.bundleId) return row.lots.some(lot => lot.quality && lot.quality.includes(this.state.quality))\n                else return false\n            })\n        }\n        if (this.state.location) {\n            lotsFiltered = lotsFiltered.filter(row => {\n                if (row.location) return row.location.includes(this.state.location)\n                if (row.bundleId) return row.lots.some(lot => lot.location && lot.location.includes(this.state.location))\n                else return false\n            })\n        }\n\n        if (lotsFiltered) this.calcLotsDimensions(lotsFiltered)\n        this.storeCurrentProductLots(lotsFiltered)\n        this.setState({lotsFiltered})\n    }\n\n    calcLotsDimensions(lots) {\n        if (lots) {\n            lots.map(lot => {\n                if (lot.lots && lot.lots.length > 0) {\n                    const size = lot.lots.length\n\n                    lot.length = (lot.lots.reduce((val, child) => {\n                        return val + parseFloat(child.length)\n                    }, 0)/size).toFixed(2)\n\n                    lot.width =(lot.lots.reduce((val, child) => {\n                        return val + parseFloat(child.width)\n                    }, 0) / size).toFixed(2)\n\n                    lot.length_ft = (lot.lots.reduce((val, child) => {\n                        return val + parseFloat(child.length_ft)\n                    }, 0) / size).toFixed(2)\n\n                    lot.length_m = (lot.lots.reduce((val, child) => {\n                        return val + parseFloat(child.length_m)\n                    }, 0) / size).toFixed(1)\n\n                    lot.width_ft = (lot.lots.reduce((val, child) => {\n                        return val + parseFloat(child.width_ft)\n                    }, 0) / size).toFixed(2)\n\n                    lot.width_m = (lot.lots.reduce((val, child) => {\n                        return val + parseFloat(child.width_m)\n                    }, 0) / size).toFixed(1)\n\n                    lot.qty = (lot.lots.reduce((val, child) => {\n                        return val + parseFloat(child.qty)\n                    }, 0) / size).toFixed(2)\n\n                    lot.qty_ft2 = (lot.lots.reduce((val, child) => {\n                            return val + parseFloat(child.qty_ft2)\n                        }, 0) / size).toFixed(2)\n\n                    lot.qty_m2 = (lot.lots.reduce((val, child) => {\n                        return val + parseFloat(child.qty_m2)\n                    }, 0) / size).toFixed(2)\n\n                    lot.quarryBlock = lot.lots[0].quarryBlock\n                    lot.quality = lot.lots[0].quality\n                    lot.location = lot.lots[0].location\n                    lot.qualityOutlet = lot.lots[0].qualityOutlet\n                    lot.shade = lot.lots[0].shade\n                    lot.lotId = lot.lots[0].lotId\n                    lot.count = size\n                } else if(lot.length_ft && lot.length_ft.toFixed) {\n                    // lot.length = lot.length.toFixed(2)\n                    // lot.width = lot.width.toFixed(2)\n                    lot.length_ft = lot.length_ft.toFixed(2)\n                    lot.length_m = lot.length_m.toFixed(0)\n                    lot.width_ft = lot.width_ft.toFixed(2)\n                    lot.width_m = lot.width_m.toFixed(0)\n                    // lot.qty = lot.qty.toFixed(2)\n                    lot.qty_ft2 = lot.qty_ft2.toFixed(2)\n                    lot.qty_m2 = lot.qty_m2.toFixed(2)\n                    lot.count = 1\n                }\n\n                return lot\n            })\n        }\n    }\n\n    storeCurrentProductLots(lots) {\n        const productLots = []\n        const addLot = (lot) => {\n            const foundLot = lot.lots && lot.lots.find((lotInfo) => {\n                return this.props.lotsImages[lotInfo.lotId] && !!this.props.lotsImages[lotInfo.lotId].image\n            });\n            const lotImgData = foundLot ? {...this.props.lotsImages[foundLot.lotId]} : {...this.props.lotsImages[lot.lotId]}\n            if (lotImgData && lotImgData.image) {\n                lotImgData.bundleId = lot.bundleId\n                lotImgData.quarryBlock = lot.quarryBlock\n                lotImgData.quality = lot.quality\n                lotImgData.qualityOutlet = lot.qualityOutlet\n                lotImgData.shade = lot.shade\n                lotImgData.location = lot.location\n                lotImgData.width_m = lot.width_m\n                lotImgData.width_ft = lot.width_ft\n                lotImgData.length_m = lot.length_m\n                lotImgData.length_ft = lot.length_ft\n                lotImgData.qty_m2 = lot.qty_m2\n                lotImgData.qty_ft2 = lot.qty_ft2\n                lotImgData.count = lot.count\n                lotImgData.rejectionCode = lot.rejectionCode\n                productLots.push(lotImgData)\n            }\n        }\n\n        if (lots && this.props.lotsImages) {\n            lots.forEach(lot => {\n                addLot(lot)\n                // if (lot.lots && lots.length) {\n                //     lot.lots.forEach(innerLot => addLot(innerLot))\n                // }\n                // else addLot(lot)\n            })\n        }\n\n        this.props.setCurrentProductLots(productLots)\n    }\n\n    render() {\n        if (this.props.original && this.props.original.lotViewAvailable !== undefined && !this.props.original.lotViewAvailable) {\n            this.props.redirect(\n                this.props.intl\n                    .formatMessage({ id: 'ROUTE_PRODUCT_DETAIL' })\n                    .replace(':id', this.props.original.productId)\n                    .replace('/:outlet?', this.props.outlet ? '/outlet' : '')\n            )\n        }\n        if (this.props.lots === undefined || this.props.original === undefined || this.props.isLoading) {\n            return (\n                <section id=\"section-lots\">\n                    <Spinner isLoading={this.props.isLoading} />\n                </section>\n            )\n        }\n\n        let lots = this.state.lotsFiltered\n        let onlyLots = []\n\n        if (lots) {\n            // Only lots\n            lots.forEach(lot => {\n                if (lot.lots) {\n                    lot.lots.forEach(childLot => onlyLots.push(childLot))\n                } else {\n                    onlyLots.push(lot)\n                }\n            })\n        }\n\n        return (\n            <section id=\"section-lots\">\n                <div className=\"lots container\">\n                    <div className=\"row\">\n                        <div className=\"lots-container col-12\">\n                            <LotsHeader {...this.props} flush={this.flush} onlyLots={onlyLots} />\n                            <div className=\"filters-container\">\n                                <LotsFilter {...this.props}\n                                            search={e => this.search}\n                                            flush={this.flush}\n                                            handleFilterChange={this.handleFilterChange}\n                                            clearFilters={this.clearFilters}\n                                            onlyLots={onlyLots}\n                                />\n                            </div>\n                            <div className=\"table\">\n                                {\n                                    (lots && lots.length > 0) ? (\n                                        <LotsList {...this.props} lots={lots}/>\n                                    ) : (\n                                        <h1 className=\"text-center my-4\"><Translation id=\"no_results\" defaultMessage=\"No results\"/></h1>\n                                    )\n                                }\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\n\nexport default Lots\n","import { connect } from 'react-redux'\nimport { fetchLots, fetchLotsImages } from '../../store/lots/actions'\nimport { fetchProduct } from '../../store/products/actions'\n\nimport Lots from './Lots'\nimport { byProductId, canViewLotId } from '../../store/products/reducers'\nimport {addCartBulkLots, addCartLineBundle, addCartLineLot, bulkAddToCart} from '../../store/cart/actions'\nimport {\n    getLots,\n    getIsLoading,\n    getFiltered,\n    getLotsImages,\n    getSelectedLotsToBy,\n    getBundlesRejectionCodes\n} from '../../store/lots/reducers'\nimport {\n    getSelectedCenter,\n    getHQCenterId,\n    canBuyCatalog,\n    canViewAllLots,\n    isLatinaVitoria, isMexico\n} from '../../store/centers/reducers'\nimport {\n    getIsAdmin,\n    getToken,\n    getUserType,\n    getImpersonatedBy,\n    getCommonParams,\n} from '../../store/login/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport { injectIntl } from 'react-intl'\nimport { goBack } from 'react-router-redux'\nimport withRouter from 'react-router/withRouter'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\nimport { dispatchPushURL, openBundleContent } from '../../store/ui/actions'\nimport { getMallProductsLots, getSelectedProductId } from \"../../store/landing/reducers\";\nimport { getLastSelectedProduct } from \"../../store/selected-objects/reducers\";\nconst mapStateToProps = (state, { match }) => {\n    const selectedProduct = getLastSelectedProduct(state)\n    return {\n        isAdmin: getIsAdmin(state),\n        impersonatedBy: getImpersonatedBy(state),\n        token: getToken(state),\n        language: getLanguage(state),\n        productId: match.params.id,\n        lots: getLots(state),\n        lotsImages: getLotsImages(state),\n        original: byProductId(state, match.params.id),\n        isLoading: getIsLoading(state),\n        outlet: match.params.outlet === 'outlet',\n        fromMall: (match.params.outlet === 'mall' || (selectedProduct && selectedProduct.fromMall)),\n        filtered: getFiltered(state),\n        center: getSelectedCenter(state),\n        canBuyCatalog: canBuyCatalog(state),\n        userType: getUserType(state),\n        userPreferences: getProfileConfiguration(state),\n        canViewLotId: canViewLotId(state),\n        commonParamsAnalytics: getCommonParams(state),\n        HQCenterId: getHQCenterId(),\n        canViewAllLots: canViewAllLots(state),\n        mallProductLots: getMallProductsLots(state),\n        selectedMallProductId: getSelectedProductId(state),\n        minimumOrder: selectedProduct && selectedProduct.fromMall && selectedProduct.minimumOrder,\n        selectedLots: getSelectedLotsToBy(state),\n        isLatinaVitoria: isLatinaVitoria(state),\n        selectedProduct,\n        bundlesRejectionCodes: getBundlesRejectionCodes(state),\n        isMexico: isMexico(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchLots: (productId, quarryBlock, shade, quality, location, outlet, callback) => {\n            dispatch(fetchLots(productId, quarryBlock, shade, quality, location, outlet, callback))\n        },\n        fetchLotsImages: lotIds => {\n            dispatch(fetchLotsImages(lotIds))\n        },\n        fetchProduct: productId => {\n            dispatch(fetchProduct(productId))\n        },\n        buyTables: (productId, tableData, centerId) => {\n\n        },\n        bulkAddToCart: (product, lots, bundles, outlet) => {\n            dispatch(bulkAddToCart(product, lots, bundles, outlet))\n        },\n        addCartLineLot: (product, lot) => {\n            dispatch(addCartLineLot(product, lot))\n        },\n        goBack: () => {\n            dispatch(goBack())\n        },\n        onLoadLots: (outlet, productId) => {\n            dispatch({ type: 'LOTS_VISIT', outlet, productId })\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        setCurrentProductLots: productLots => {\n            dispatch({ type: 'SET_CURRENT_PRODUCT_LOTS', productLots})\n        },\n        clearSelectedLots: () => dispatch({type: 'CLEAR_LOTS_TO_BUY'}),\n        buyLot: (productId, lotId, centerId, extra = null, supplierCenterId = null) => {\n            dispatch(addCartLineLot(productId, lotId, centerId, extra, supplierCenterId))\n        },\n        buyBundle: (productId, bundleId, lotId, qty, centerId, extra = null, supplierCenterId = null) => {\n            dispatch(addCartLineBundle(productId, bundleId, lotId, qty, centerId, extra, supplierCenterId))\n        },\n        selectLot: (selectedLot, uuid) => {\n            dispatch({type:'ADD_LOT_TO_BUY', selectedLot, uuid})\n        },\n        addCartBulkLots: (productId, selectedLots, isOutlet) => dispatch(addCartBulkLots(productId, selectedLots, isOutlet)),\n        openBundleContent: bundle => dispatch(openBundleContent(bundle))\n\n    }\n}\n\nconst LotsContainer = injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(Lots)\n)\n\nexport default withRouter(LotsContainer)\n","import React from 'react'\n\nimport LotsContainer from '../components/lots/LotsContainer'\n\nconst LotsScreen = props => <LotsContainer {...props} />\n\nexport default LotsScreen\n","import React from 'react'\n\nimport { defineMessages, injectIntl } from 'react-intl'\nimport Translation from '../global/Translation'\nimport { getStatusMap } from '../../store/orders/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\ndefineMessages({\n    //1\n    pendiente_de_crear: {\n        id: 'pendiente_de_crear',\n        description: 'pendiente_de_crear',\n        defaultMessage: 'Pending to create'\n    },\n    //2\n    pedido_creado: {\n        id: 'pedido_creado',\n        description: 'pedido_creado',\n        defaultMessage: 'Order created'\n    },\n    //3\n    aprobado: {\n        id: 'aprobado',\n        description: 'aprobado',\n        defaultMessage: 'Approved'\n    },\n    //4\n    preparado_para_carga: {\n        id: 'preparado_para_carga',\n        description: 'preparado_para_carga',\n        defaultMessage: 'Prepared for loading'\n    },\n    //5\n    salida_de_mercancías_realizada: {\n        id: 'salida_de_mercancías_realizada',\n        description: 'salida_de_mercancías_realizada',\n        defaultMessage: 'Goods issue made'\n    },\n    entregado: {\n        id: 'entregado',\n        description: 'entregado',\n        defaultMessage: 'Delivered'\n    },\n    //6\n    facturado_finalizado: {\n        id: 'facturado_finalizado',\n        description: 'facturado_finalizado',\n        defaultMessage: 'Billed / Finished'\n    },\n    //7\n    reserva_cancelada: {\n        id: 'reserva_cancelada',\n        description: 'reserva_cancelada',\n        defaultMessage: 'Reservation canceled'\n    },\n    error_creating_order: {\n        id: 'error_creating_order',\n        description: 'error_creating_order',\n        defaultMessage: 'Error creating order'\n    },\n    error_procesando_oferta: {\n        id: 'error_procesando_oferta',\n        description: 'error_procesando_oferta',\n        defaultMessage: 'Error processing offer'\n    },\n    quote_rejected: {\n        id: 'quote_rejected',\n        description: 'quote_rejected',\n        defaultMessage: 'Quote rejected'\n    },\n\n    //9\n    cambios_pendientes: {\n        id: 'cambios_pendientes',\n        description: 'cambios_pendientes',\n        defaultMessage: 'Pending changes'\n    },\n    oferta_creada: {\n        id: 'oferta_creada',\n        description: 'oferta_creada',\n        defaultMessage: 'Offer created'\n    },\n    PENDING_CANCELLATION: {\n        id: 'PENDING_CANCELLATION',\n        description: 'PENDING_CANCELLATION',\n        defaultMessage: 'Pending cancellation'\n    },\n    PENDING_ACCEPT_OFFER: {\n        id: 'PENDING_ACCEPT_OFFER',\n        description: 'PENDING_ACCEPT_OFFER',\n        defaultMessage:\"Quote in process to accept\"\n    },\n    PENDING_CANCEL_OFFER: {\n        id: 'PENDING_CANCEL_OFFER',\n        description: 'PENDING_CANCEL_OFFER',\n        defaultMessage: 'Quote in process to reject'\n    },\n    QUOTE_EXPIRED: {\n        id: 'QUOTE_EXPIRED',\n        description: 'QUOTE_EXPIRED',\n        defaultMessage: 'Quote is expired'\n    }\n})\nconst mapStateToProps = (state, { match }) => {\n    return {\n        statusMap: getStatusMap(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {}\n}\nclass OrderStatus extends React.Component {\n    render() {\n        let { statusMap } = this.props\n        const original = this.props.original\n        if (this.props.rejected) {\n            return (\n                <div className=\"reject-col\">\n                    <div className=\"reject-indicator\">\n                        <i className=\"fa fa-times\" /> <Translation id=\"order_rejected\" defaultMessage=\"Order rejected\" />\n                    </div>\n                </div>\n            )\n        }\n        if (!statusMap[original.statusText]) return null\n        return (\n            <div>\n                <div className=\"tracking-progress-bar\">\n                    {parseInt(statusMap[original.statusText].status, 10) < 7 && (\n                        <div>\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                    ${\n                                        parseInt(statusMap[original.statusText].status, 10) >= 1 && parseInt(statusMap[original.statusText].status, 10) < 7\n                                            ? 'tracking-progress-bar__item--active'\n                                            : null\n                                    }`}\n                            >\n                                <i className=\"far fa-paper-plane pp-align-center\" />\n                            </div>\n\n                            <span\n                                className={`tracking-progress-bar__item__bar ${\n                                    parseInt(statusMap[original.statusText].status, 10) >= 2 && parseInt(statusMap[original.statusText].status, 10) < 7\n                                        ? 'tracking-progress-bar__item__bar--active'\n                                        : null\n                                }`}\n                            />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${\n                                                                parseInt(statusMap[original.statusText].status, 10) >= 3 && parseInt(statusMap[original.statusText].status, 10) < 7\n                                                                    ? 'tracking-progress-bar__item--active'\n                                                                    : null\n                                                            }`}\n                            >\n                                <i className=\"far fa-thumbs-up\" />\n                            </div>\n\n                            <span\n                                className={`tracking-progress-bar__item__bar ${\n                                    parseInt(statusMap[original.statusText].status, 10) >= 4 && parseInt(statusMap[original.statusText].status, 10) < 7\n                                        ? 'tracking-progress-bar__item__bar--active'\n                                        : null\n                                }`}\n                            />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${\n                                                                parseInt(statusMap[original.statusText].status, 10) >= 5 && parseInt(statusMap[original.statusText].status, 10) < 7\n                                                                    ? 'tracking-progress-bar__item--active'\n                                                                    : null\n                                                            }`}\n                            >\n                                <i className=\"fas fa-truck pp-align-center\" />\n                            </div>\n                            <span\n                                className={`tracking-progress-bar__item__bar ${\n                                    parseInt(statusMap[original.statusText].status, 10) >= 6 && parseInt(statusMap[original.statusText].status, 10) < 7\n                                        ? 'tracking-progress-bar__item__bar--active'\n                                        : null\n                                }`}\n                            />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${\n                                                                parseInt(statusMap[original.statusText].status, 10) >= 6 && parseInt(statusMap[original.statusText].status, 10) < 7\n                                                                    ? 'tracking-progress-bar__item--active'\n                                                                    : null\n                                                            }`}\n                            >\n                                <i className=\"fas fa-file\" />\n                            </div>\n                        </div>\n                    )}\n                    {parseInt(statusMap[original.statusText].status, 10) >= 7 && parseInt(statusMap[original.statusText].status, 10) < 9 && (\n                        <div className=\"error\">\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${parseInt(statusMap[original.statusText].status, 10) === 7 ? 'tracking-progress-bar__item--active' : null}`}\n                            >\n                                <i className=\"far fa-paper-plane pp-align-center\" />\n                            </div>\n\n                            <span\n                                className={`tracking-progress-bar__item__bar ${\n                                    parseInt(statusMap[original.statusText].status, 10) === 7 ? 'tracking-progress-bar__item__bar--active' : null\n                                }`}\n                            />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first \n                                                            ${parseInt(statusMap[original.statusText].status, 10) === 7 ? 'tracking-progress-bar__item--active' : null}`}\n                            >\n                                <i className=\"far fa-thumbs-down .td-align-center\" />\n                            </div>\n                        </div>\n                    )}\n                    {parseInt(statusMap[original.statusText].status, 10) >= 9 && parseInt(statusMap[original.statusText].status, 10) < 20 &&(\n                        <div className=\"update\">\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${parseInt(statusMap[original.statusText].status, 10) === 9 ? 'tracking-progress-bar__item--active' : null}`}\n                            >\n                                <i className=\"far fa-sync icon-align-vertical td-align-center\" />\n                            </div>\n                        </div>\n                    )}\n                    {parseInt(statusMap[original.statusText].status, 10) === 20 && (\n                        <div className=\"update\">\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first tracking-progress-bar__item--active`}\n                            >\n                                <i className=\"fas fa-ban icon-align-vertical td-align-center\" />\n                            </div>\n                        </div>\n                    )}\n                </div>\n                <span>\n                    {this.props.intl.formatMessage({\n                        id: statusMap[original.statusText].textToShow\n                    })}{' '}\n                    {/* ({original.statusText}) */}\n                </span>\n            </div>\n        )\n    }\n}\n\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(OrderStatus)\n    )\n)\n","import React from 'react'\n\nclass IkeaOrderStatus extends React.Component {\n    render() {\n        const original = this.props.original\n        return (\n            <div>\n                <div className=\"tracking-progress-bar\">\n                    {parseInt(original.status, 10) < 7 && (\n                        <div>\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${\n                                                                parseInt(original.status, 10) >= 1 && parseInt(original.status, 10) < 7\n                                                                    ? 'tracking-progress-bar__item--active'\n                                                                    : null\n                                                            }`}\n                            >\n                                <i className=\"far fa-paper-plane pp-align-center\" />\n                            </div>\n\n                            <span\n                                className={`tracking-progress-bar__item__bar ${\n                                    parseInt(original.status, 10) >= 2 && parseInt(original.status, 10) < 7 ? 'tracking-progress-bar__item__bar--active' : null\n                                }`}\n                            />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${\n                                                                parseInt(original.status, 10) >= 3 && parseInt(original.status, 10) < 7\n                                                                    ? 'tracking-progress-bar__item--active'\n                                                                    : null\n                                                            }`}\n                            >\n                                <i className=\"far fa-thumbs-up\" />\n                            </div>\n\n                            <span\n                                className={`tracking-progress-bar__item__bar ${\n                                    parseInt(original.status, 10) >= 4 && parseInt(original.status, 10) < 7 ? 'tracking-progress-bar__item__bar--active' : null\n                                }`}\n                            />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${\n                                                                parseInt(original.status, 10) >= 5 && parseInt(original.status, 10) < 7\n                                                                    ? 'tracking-progress-bar__item--active'\n                                                                    : null\n                                                            }`}\n                            >\n                                <i className=\"fas fa-truck pp-align-center\" />\n                            </div>\n                            <span\n                                className={`tracking-progress-bar__item__bar ${\n                                    parseInt(original.status, 10) >= 6 && parseInt(original.status, 10) < 7 ? 'tracking-progress-bar__item__bar--active' : null\n                                }`}\n                            />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${\n                                                                parseInt(original.status, 10) >= 6 && parseInt(original.status, 10) < 7\n                                                                    ? 'tracking-progress-bar__item--active'\n                                                                    : null\n                                                            }`}\n                            >\n                                <i className=\"fas fa-file\" />\n                            </div>\n                        </div>\n                    )}\n                    {parseInt(original.status, 10) >= 7 && parseInt(original.status, 10) < 9 && (\n                        <div className=\"error\">\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${parseInt(original.status, 10) === 7 ? 'tracking-progress-bar__item--active' : null}`}\n                            >\n                                <i className=\"far fa-paper-plane pp-align-center\" />\n                            </div>\n\n                            <span className={`tracking-progress-bar__item__bar ${parseInt(original.status, 10) === 7 ? 'tracking-progress-bar__item__bar--active' : null}`} />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first \n                                                            ${parseInt(original.status, 10) === 7 ? 'tracking-progress-bar__item--active' : null}`}\n                            >\n                                <i className=\"far fa-thumbs-down .td-align-center\" />\n                            </div>\n                        </div>\n                    )}\n                    {parseInt(original.status, 10) >= 9 && (\n                        <div className=\"update\">\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${parseInt(original.status, 10) === 9 ? 'tracking-progress-bar__item--active' : null}`}\n                            >\n                                <i className=\"far fa-sync icon-align-vertical td-align-center\" />\n                            </div>\n                        </div>\n                    )}\n                </div>\n                <span>{original.statusText}</span>\n            </div>\n        )\n    }\n}\n\nexport default IkeaOrderStatus\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport confirm from '../global/confirm'\nimport DatePicker from 'react-datepicker'\nimport LocalizedLink from '../global/LocalizedLink'\nimport Modal from '../global/Modal'\nimport moment from 'moment'\nimport OrderStatus from './OrderStatus'\nimport ReactTable from 'react-table'\nimport Spinner from '../global/Spinner'\nimport IkeaOrderStatus from './IkeaOrderStatus'\nimport PackingList from './PackingList'\n\nconst confirmRejectOrder = (reservationId, orderId, onRejectOrder, intl) => {\n    return confirm(intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER' }), {intl: intl}).then(\n        confirm => {\n            return onRejectOrder(reservationId, orderId)\n        },\n        cancel => {\n            return Promise.reject()\n        }\n    )\n}\n\nclass OldOrders extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedOrder: null,\n            selectedOrderId: null,\n            showOrderDetails: false,\n            startDate: moment().add(this.props.isIkeaCenter ? -15 : -90, 'days'),\n            endDate: moment(),\n            installationData: null,\n            oldInstallationData: null\n        }\n    }\n\n    componentDidMount() {\n        if (\n            (this.props.type === 'transfer' && this.props.transferOrders.length === 0) ||\n            (this.props.type === 'open' && this.props.openOrders.length === 0) ||\n            (!this.props.type && this.props.orders.length === 0)\n        )\n            this.props.fetchOrders('ikea', this.state.startDate, this.state.endDate, null, null, null, this.props.selectedShippingAddressForIkea)\n    }\n    haveInstallationData = original => {\n        return original.notas\n    }\n    showOrderInstallationData = original => {\n        let installationDataSplited = original.notas.split(' // ')\n        if (installationDataSplited.length >= 6) {\n            let name = installationDataSplited[0].replace('Name: ', '')\n            let address = installationDataSplited[1].replace('Address: ', '')\n            let town = installationDataSplited[2].replace('Town: ', '')\n            let province = installationDataSplited[3].replace('Pronvince: ', '')\n            let zip = installationDataSplited[4].replace('Zip Code: ', '')\n            let phone = installationDataSplited[5].replace('Phone: ', '')\n            let comments = installationDataSplited[6].replace('Comments: ', '')\n\n            this.setState({ installationData: { name, address, town, province, zip, phone, comments } })\n        } else if (original.notas) {\n            this.setState({ oldInstallationData: original.notas })\n        }\n    }\n    showOrderDetails = (reservationId, orderId) => {\n        this.setState({ selectedOrder: reservationId, selectedOrderId: orderId, showOrderDetails: true })\n    }\n    rejectOrder = (reservationId, orderId) => {\n        confirmRejectOrder(reservationId, orderId, this.props.rejectOrder, this.props.intl)\n    }\n    closeOrderDetails = () => {\n        this.setState({ selectedOrder: null, selectedOrderId: null, showOrderDetails: false })\n    }\n    search = e => {\n        this.setState({ search: e.target.value })\n    }\n    changeStartDate = date => {\n        this.setState({ startDate: date })\n    }\n\n    changeEndDate = date => {\n        this.setState({ endDate: date }, () => this.props.fetchOrders('ikea', this.state.startDate, this.state.endDate))\n    }\n    canDoActions = original => {\n        if (original.statusAtRescab === 'RR') return true\n        //the logic to edit before oldorders\n        return !['06', '07', '08', '09'].includes(original.status)\n        //not working on production\n        //return this.props.statusMap[original.statusText] ? this.props.statusMap[original.statusText].editable : false\n    }\n    render() {\n        const { intl } = this.props\n        let orders = this.props.type ? this.props.openOrders : this.props.orders\n        if (!orders) return null\n        let ordersFiltered = null\n\n        if (this.props.isIkeaCenter)\n            orders = orders.filter(row => {\n                return row.shippingAddressId.includes(this.props.selectedShippingAddressForIkea)\n            })\n\n        if (this.state.search) {\n            ordersFiltered = orders\n            ordersFiltered = ordersFiltered.filter(row => {\n                return (\n                    row.reservationId.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    row.orderId.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    row.createdDate.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    (row.po && row.po.toLowerCase().includes(this.state.search.toLowerCase()))\n                )\n            })\n        }\n        const dataOrders = ordersFiltered !== null ? ordersFiltered : orders\n        const columns = [\n            {\n                Header: <Translation id=\"order_details\" defaultMessage=\"Order details\" />,\n                id: 'assign',\n                Cell: ({ original }) => {\n                    return (\n                        <React.Fragment>\n                            <Button inline size=\"small\" icon=\"hand-point-up\" onClick={() => this.showOrderDetails(original.reservationId, original.orderId)}>\n                                <Translation id=\"packing_list\" defaultMessage=\"packing_list\" />\n                            </Button>\n\n                            {this.props.isIkeaCenter && this.haveInstallationData(original) && (\n                                <React.Fragment>\n                                    <div style={{ marginTop: '5px' }} />\n                                    <Button inline size=\"small\" icon=\"clipboard-list\" far onClick={() => this.showOrderInstallationData(original)}>\n                                        <Translation id=\"installation_data\" defaultMessage=\"Installation Data\" />\n                                    </Button>\n                                </React.Fragment>\n                            )}\n                            {original.rejected ? null : (\n                                <React.Fragment>\n                                    {' '}\n                                    {this.props.canEditOrders && this.canDoActions(original) && (\n                                        <LocalizedLink\n                                            routeId=\"ROUTE_PROFILE\"\n                                            params={{ filter: 'edit-order', open: original.orderId }}\n                                            onClick={e => {\n                                                if (!original.orderId) e.preventDefault()\n                                            }}\n                                        >\n                                            <Button inline size=\"small\" icon=\"edit\" disabled={!original.orderId}>\n                                                <Translation id=\"edit_order\" defaultMessage=\"Edit\" />\n                                            </Button>\n                                        </LocalizedLink>\n                                    )}{' '}\n                                    {this.props.canDeleteOrders && this.canDoActions(original) && (\n                                        <Button\n                                            inline\n                                            size=\"small\"\n                                            icon=\"trash\"\n                                            onClick={() => this.rejectOrder(original.reservationId, original.orderId)}\n                                            disabled={!original.orderId || !original.reservationId}\n                                        >\n                                            <Translation id=\"delete\" defaultMessage=\"delete\" />\n                                        </Button>\n                                    )}\n                                </React.Fragment>\n                            )}\n                        </React.Fragment>\n                    )\n                },\n                className: 'text-center',\n                headerClassName: 'text-center',\n                minWidth: 280\n            },\n            { Header: <Translation id=\"reservation_id\" defaultMessage=\"Reservation ID\" />, accessor: 'reservationId' },\n            { Header: <Translation id=\"order_id\" defaultMessage=\"Order ID\" />, accessor: 'orderId' },\n            {\n                Header: <Translation id=\"customer_id\" defaultMessage=\"Customer id\" />,\n                accessor: 'customerId',\n                show: this.props.userType !== 'CUSTOMER'\n            },\n            { Header: <Translation id=\"created_date\" defaultMessage=\"Created Date\" />, accessor: 'createdDate' },\n            { Header: <Translation id=\"customer_order\" defaultMessage=\"Customer Order\" />, accessor: 'po' },\n            {\n                Header: <Translation id=\"status\" defaultMessage=\"Status\" />,\n                id: 'status',\n                Cell: ({ original }) => {\n                    return this.props.isIkeaCenter ? (\n                        <IkeaOrderStatus original={original} rejected={original.rejected} />\n                    ) : (\n                        <OrderStatus original={original} rejected={original.rejected} />\n                    )\n                },\n                className: 'text-center',\n                headerClassName: 'text-center',\n                minWidth: 250\n            },\n            { Header: <Translation id=\"quote\" defaultMessage=\"Quote\" />, accessor: 'offer', show: this.props.canOffer },\n            { Header: <Translation id=\"container\" defaultMessage=\"Container\" />, accessor: 'container' },\n            {\n                Header: <Translation id=\"eta\" defaultMessage=\"ETA\" />,\n                Cell: ({ original }) => {\n                    return <span>{original.eta !== '0000-00-00' && original.eta}</span>\n                },\n                accessor: 'eta',\n                minWidth: 100\n            }\n        ]\n        const columnsOfIkea = [\n            { Header: <Translation id=\"id_employee\" defaultMessage=\"Id employee\" />, accessor: 'employeeId' },\n            { Header: <Translation id=\"addressee\" defaultMessage=\"Addressee\" />, accessor: 'customerName' }\n        ]\n        if (this.props.isIkeaCenter) columns.splice(7, 1, ...columnsOfIkea)\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-12\">\n                        <div className=\"toolbar\">\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <div className=\"col-12 order_header\">\n                                        <div className=\"group_title\">\n                                            <h4>\n                                                {!this.props.type && <Translation id=\"orders_history\" defaultMessage=\"Orders history\" />}\n                                                {this.props.type === 'open' && <Translation id=\"open_orders\" defaultMessage=\"Open orders\" />}\n                                                {this.props.type === 'transfer' && <Translation id=\"transfer_orders\" defaultMessage=\"Transfer orders\" />}\n                                            </h4>\n                                        </div>\n                                        <div className=\"group_date_picker\">\n                                            {this.props.type !== 'transfer' && (\n                                                <React.Fragment>\n                                                    <div className=\"group_date_picker__item\">\n                                                        <div className=\"name\">\n                                                            <Translation id=\"from\" defaultMessage=\"From\" /> <i className=\"fal fa-chevron-down\" />\n                                                        </div>\n                                                        <DatePicker\n                                                            selected={this.state.startDate}\n                                                            selectsStart={true}\n                                                            startDate={this.state.startDate}\n                                                            endDate={this.state.endDate}\n                                                            maxDate={moment()}\n                                                            onChange={selectedOption => this.changeStartDate(selectedOption, 'startDate')}\n                                                            onFocus={() => this.setState({ endDate: null })}\n                                                            autoComplete=\"off\"\n                                                            onKeyDown={e => e.preventDefault()}\n                                                            showMonthDropdown\n                                                            showYearDropdown\n                                                            className=\"form-control form-control-sm date\"\n                                                        />\n                                                    </div>\n                                                    <div className=\"group_date_picker__item\">\n                                                        <div className=\"name\">\n                                                            <Translation id=\"to\" defaultMessage=\"To\" /> <i className=\"fal fa-chevron-down\" />\n                                                        </div>\n                                                        <DatePicker\n                                                            selected={this.state.endDate}\n                                                            selectsEnd\n                                                            startDate={this.state.startDate}\n                                                            endDate={this.state.endDate}\n                                                            minDate={this.state.startDate}\n                                                            maxDate={\n                                                                //PARA IKEA 3 MESES MAXIMOPORQUE UTILIZA LA OPEN DOC\n                                                                this.props.isIkeaCenter\n                                                                    ? moment() < moment(this.state.startDate).add(3, 'month')\n                                                                        ? moment()\n                                                                        : moment(this.state.startDate).add(3, 'month')\n                                                                    : //RESTO DE CASOS 12 MESES\n                                                                    moment() < moment(this.state.startDate).add(12, 'month')\n                                                                    ? moment()\n                                                                    : moment(this.state.startDate).add(12, 'month')\n                                                            }\n                                                            onChange={selectedOption => this.changeEndDate(selectedOption, 'endDate')}\n                                                            autoComplete=\"off\"\n                                                            onKeyDown={e => e.preventDefault()}\n                                                            showMonthDropdown\n                                                            showYearDropdown\n                                                            className=\"form-control form-control-sm date\"\n                                                        />\n                                                    </div>\n                                                </React.Fragment>\n                                            )}\n                                        </div>\n                                        <div className=\"location search-bar search-bar--thin disabled\">\n                                            <input\n                                                type=\"text\"\n                                                data-qa=\"query\"\n                                                className=\"search-box\"\n                                                placeholder={intl.formatMessage({\n                                                    id: 'search'\n                                                })}\n                                                value={this.state.search}\n                                                onChange={e => this.setState({ search: e.target.value })}\n                                            />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n\n                        <ReactTable\n                            data={dataOrders}\n                            loading={this.props.isLoading}\n                            loadingText={<Spinner isLoading={this.props.isLoading} />}\n                            className=\"-highlight\"\n                            columns={columns}\n                            defaultSorted={[{ id: 'reservationId', desc: true }]}\n                            defaultPageSize={8}\n                            pageSizeOptions={[8, 16, 32, 64, 128]}\n                            previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                            nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                            noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                            pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                            ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                        />\n                        {this.state.showOrderDetails && (\n                            <PackingList\n                                reservationId={this.state.selectedOrder}\n                                order={this.state.selectedOrder}\n                                orderId={this.state.selectedOrderId}\n                                onClose={() => this.closeOrderDetails()}\n                                canEditOrders={this.props.canEditOrders}\n                            />\n                        )}\n                        {(this.state.installationData || this.state.oldInstallationData) && (\n                            <Modal\n                                title={<Translation id=\"installation_data\" defaultMessage=\"Installation Data\" />}\n                                onClose={() => this.setState({ installationData: null })}\n                                size=\"large\"\n                                footer={\n                                    <div className=\"modal-footer__buttons\">\n                                        <Button onClick={() => this.setState({ installationData: null, oldInstallationData: null })} inverted size=\"medium\">\n                                            <Translation id=\"ok\" defaultMessage=\"Ok\" />\n                                        </Button>\n                                    </div>\n                                }\n                            >\n                                {this.state.installationData && (\n                                    <React.Fragment>\n                                        <Translation id=\"name\" defaultMessage=\"Name\" />: <span>{this.state.installationData.name}</span> <br />\n                                        <Translation id=\"address\" defaultMessage=\"Address\" />: <span>{this.state.installationData.address}</span> <br />\n                                        <Translation id=\"town\" defaultMessage=\"Town\" />: <span>{this.state.installationData.town}</span> <br />\n                                        <Translation id=\"province\" defaultMessage=\"Province\" />: <span>{this.state.installationData.province}</span> <br />\n                                        <Translation id=\"zip\" defaultMessage=\"Zip Code\" />: <span>{this.state.installationData.zip}</span> <br />\n                                        <Translation id=\"phone\" defaultMessage=\"Phone\" />: <span>{this.state.installationData.phone}</span> <br />\n                                        <Translation id=\"comments\" defaultMessage=\"Comments\" />: <span>{this.state.installationData.comments}</span> <br />\n                                    </React.Fragment>\n                                )}\n                                {this.state.oldInstallationData && <span>{this.state.oldInstallationData}</span>}\n                            </Modal>\n                        )}\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(OldOrders)\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 16,\n    height: 16,\n    viewBox: \"0 0 16 16\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M7.26562 0.161719C7.73125 -0.0539062 8.26875 -0.0539062 8.73438 0.161719L15.5656 3.31797C15.8312 3.43984 16 3.70547 16 3.99922C16 4.29297 15.8312 4.55859 15.5656 4.68047L8.73438 7.83672C8.26875 8.05234 7.73125 8.05234 7.26562 7.83672L0.434375 4.68047C0.16875 4.55547 0 4.28984 0 3.99922C0 3.70859 0.16875 3.43984 0.434375 3.31797L7.26562 0.161719ZM13.9031 6.54922L15.5656 7.31797C15.8312 7.43984 16 7.70547 16 7.99922C16 8.29297 15.8312 8.55859 15.5656 8.68047L8.73438 11.8367C8.26875 12.0523 7.73125 12.0523 7.26562 11.8367L0.434375 8.68047C0.16875 8.55547 0 8.28984 0 7.99922C0 7.70859 0.16875 7.43984 0.434375 7.31797L2.09687 6.54922L6.84688 8.74297C7.57812 9.08047 8.42188 9.08047 9.15312 8.74297L13.9031 6.54922ZM9.15312 12.743L13.9031 10.5492L15.5656 11.318C15.8312 11.4398 16 11.7055 16 11.9992C16 12.293 15.8312 12.5586 15.5656 12.6805L8.73438 15.8367C8.26875 16.0523 7.73125 16.0523 7.26562 15.8367L0.434375 12.6805C0.16875 12.5555 0 12.2898 0 11.9992C0 11.7086 0.16875 11.4398 0.434375 11.318L2.09687 10.5492L6.84688 12.743C7.57812 13.0805 8.42188 13.0805 9.15312 12.743Z\",\n    fill: \"black\"\n  })));\n};\n\nexport default __webpack_public_path__ + \"static/media/order-history.ed9b420f.svg\";\nexport { SvgComponent as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 15,\n    height: 12,\n    viewBox: \"0 0 15 12\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1.125 0C0.503906 0 0 0.503906 0 1.125V8.625C0 9.24609 0.503906 9.75 1.125 9.75H1.5C1.5 10.9922 2.50781 12 3.75 12C4.99219 12 6 10.9922 6 9.75H9C9 10.9922 10.0078 12 11.25 12C12.4922 12 13.5 10.9922 13.5 9.75H14.25C14.6648 9.75 15 9.41484 15 9C15 8.58516 14.6648 8.25 14.25 8.25V6.75V6V5.56172C14.25 5.16328 14.093 4.78125 13.8117 4.5L12 2.68828C11.7188 2.40703 11.3367 2.25 10.9383 2.25H9.75V1.125C9.75 0.503906 9.24609 0 8.625 0H1.125ZM9.75 3.75H10.9383L12.75 5.56172V6H9.75V3.75ZM4.875 9.75C4.875 10.3711 4.37109 10.875 3.75 10.875C3.12891 10.875 2.625 10.3711 2.625 9.75C2.625 9.12891 3.12891 8.625 3.75 8.625C4.37109 8.625 4.875 9.12891 4.875 9.75ZM11.25 10.875C10.6289 10.875 10.125 10.3711 10.125 9.75C10.125 9.12891 10.6289 8.625 11.25 8.625C11.8711 8.625 12.375 9.12891 12.375 9.75C12.375 10.3711 11.8711 10.875 11.25 10.875Z\",\n    fill: \"black\"\n  })));\n};\n\nexport default __webpack_public_path__ + \"static/media/shipping-truck.76eea230.svg\";\nexport { SvgComponent as ReactComponent };","import React from 'react'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport { ReactComponent as OrderHistoryIcon } from '../../../assets/img/order-history/order-history.svg'\nimport { ReactComponent as ShippingTruckIcon } from '../../../assets/img/order-history/shipping-truck.svg'\nimport Translation from '../../global/Translation'\n\nclass NavigationTabs extends React.Component {\n    render() {\n        return (            \n            <div className=\"header__tabs\">\n                <div className=\"header__tabs__buttons\">\n                    <LocalizedLink\n                        className={`tab__link ${window.location.pathname.indexOf('orders') !== -1 ? 'active' : ''}`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'orders', open: '' }}\n                        gtmLabel=\"ec_historial_pedidos\"\n                    >\n                        <OrderHistoryIcon />\n                        <span><Translation id=\"orders\" defaultMessage=\"Orders\" /></span>\n                    </LocalizedLink>\n\n                    <LocalizedLink\n                        className={`tab__link ${window.location.pathname.indexOf('shipping-history') !== -1 ? 'active' : ''}`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'shipping-history', open: '' }}\n                        gtmLabel=\"ec_historial_envios\"\n                    >\n                        <ShippingTruckIcon />\n                        <span><Translation id=\"shippings\" defaultMessage=\"Shippings\" /></span>\n                    </LocalizedLink>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default NavigationTabs","/**\n * OrderLine status for order history\n */\nexport const OrderLineStatus = {\n    Created: 'CREATED',\n    Approved: 'APPROVED',\n    Pending: 'PENDING',\n    In_process: 'IN_PROCESS',\n    Partially_delivered: 'PARTIALLY_DELIVERED',\n    Delivered: 'DELIVERED',\n    Order_cancelled: 'ORDER_CANCELLED'\n}","import React from 'react'\nimport { FormattedHTMLMessage, injectIntl } from 'react-intl'\nimport Translation from '../../../global/Translation'\nimport { ReactComponent as ShippingTruckIcon } from '../../../../assets/img/order-history/shipping-truck.svg'\nimport ProductImage from '../../../catalog/ProductImage'\nimport { addForwardSlash, getConfigLineName } from '../Utils'\nimport ProductDisplayName from '../../../global/ProductDisplayName'\nimport { OrderLineStatus } from '../Enums/OrderLineStatus'\nimport moment from 'moment'\nimport { ElaborationOptionsMapById } from '../../../cut-to-size/CutToSizeMaps'\nimport LineSegmentation from '../../../cart-line/LineSegmentation'\nimport { capitalizeFirstLetter } from '../../../../helpers'\nimport NaturalStoneIndicator from '../../../cart-line/indicators/NaturalStoneIndicator'\nimport CustomProductIndicator from '../../../cart-line/indicators/CustomProductIndicator'\nimport DisplayQuickShipIndicator from '../../../catalog/rectangleResult/displays/DisplayQuickShipIndicator'\nimport DisplayBrand from '../../../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayOutletIndicator from '../../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport DisplayDiscontinued from '../../../catalog/rectangleResult/displays/DisplayDiscontinued'\n\nclass NewOrderCardItem extends React.Component {\n    render() {\n        const { order, orderLine, orderStatusMap, intl, adaptedFormat, isIkeaCenter, redirect, replaceDotWithComma, locale, getMeasure } = this.props\n\n        const showBtnToDetails = () => {\n            if (order.orderId && order.reservationId && order.orderLines.length > 0 && !isIkeaCenter) return true\n            return false\n        }\n\n        const handleBtnToDetailsOnClick = () => {\n            redirect(\n                intl\n                    .formatMessage({ id: 'ROUTE_ORDER_DETAILS' })\n                    .replace(':filter', 'view-order')\n                    .replace(':reservationId', order.reservationId)\n            )\n        }\n\n        const thicknessFormatIntl = orderLine => {\n            if (!orderLine.product.thickness) return null\n            return replaceDotWithComma(orderLine.product.thickness, locale) + ' cm'\n        }\n\n        const zaddonFormatIntl = orderLine => {\n            if (orderLine.product.zaddon !== 'MAL') return null\n            return intl.formatMessage({ id: 'MAL' })\n        }\n\n        const thicknessFormatCtsIntl = cts => {\n            if (!cts.thickness) return null\n            return replaceDotWithComma(cts.thickness, locale) + ' cm'\n        }\n\n        const finishFormatIntl = (orderLine, intl) => {\n            if (!orderLine.product.finish) return null\n            return intl.formatMessage({ id: orderLine.product.finish })\n        }\n\n        const finishFormatCtsInt = cts => {\n            if (!cts.finish) return null\n            return intl.formatMessage({ id: cts.finish })\n        }\n\n        const productFormatIntl = orderLine => {\n            if (!orderLine.product.format) return null\n            return adaptedFormat(orderLine.product.format, { upper: true, showUnits: true })\n        }\n\n        const subtypeFormatIntl = orderLine => {\n            if (!orderLine.product.subtypeName) return null\n            return intl.formatMessage({ id: orderLine.product.subtypeName })\n        }\n\n        const validOrderLineStatus = orderLine && orderLine.status && orderLine.status.status ? orderLine.status.status : order.orderStatusV3.status\n        const validOrderLineStatusDate = orderLine && orderLine.status && orderLine.status.date ? orderLine.status.date : order.orderStatusV3.date\n        const isQuickShip = !!(orderLine.cut_to_size && orderLine.cut_to_size.configurable && orderLine.cut_to_size.configurable.thirdParty)\n\n        const orderLinesStatusColor = () => {\n            if (validOrderLineStatus === OrderLineStatus.Created) return '--position-created'\n            if (validOrderLineStatus === OrderLineStatus.Approved) return '--position-confirmed'\n            if (validOrderLineStatus === OrderLineStatus.Pending) return '--position-pending'\n            if (validOrderLineStatus === OrderLineStatus.In_process) return '--position-in-process'\n            if (validOrderLineStatus === OrderLineStatus.Partially_delivered) return '--position-partially-delivered'\n            if (validOrderLineStatus === OrderLineStatus.Delivered) return '--position-delivered'\n            if (validOrderLineStatus === OrderLineStatus.Order_cancelled) return '--position-cancelled'\n        }\n\n        const deliveryStatusLogic = () => {\n            if (\n                isQuickShip &&\n                validOrderLineStatus != OrderLineStatus.Order_cancelled &&\n                validOrderLineStatus != OrderLineStatus.Delivered &&\n                validOrderLineStatus != OrderLineStatus.Partially_delivered\n            ) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <FormattedHTMLMessage id=\"estimated_delivery_on_4_weeks\" defaultMessage=\"Estimated delivery on <b>2-4 weeks</b>\" />\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Created && validOrderLineStatusDate == null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"no_planned_delivery\" defaultMessage=\"No planned delivery\" />\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Created && validOrderLineStatusDate !== null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {moment(validOrderLineStatusDate).isSame(moment(), 'day') ? (\n                                    <Translation id=\"today\" defaultMessage=\"Today\" />\n                                ) : (\n                                    moment(validOrderLineStatusDate).format('L')\n                                )}\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Approved && validOrderLineStatusDate == null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"no_planned_delivery\" defaultMessage=\"No planned delivery\" />\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Approved && validOrderLineStatusDate !== null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {moment(validOrderLineStatusDate).isSame(moment(), 'day') ? (\n                                    <Translation id=\"today\" defaultMessage=\"Today\" />\n                                ) : (\n                                    moment(validOrderLineStatusDate).format('L')\n                                )}\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Pending && validOrderLineStatusDate == null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"no_planned_delivery\" defaultMessage=\"No planned delivery\" />\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Pending && validOrderLineStatusDate !== null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {moment(validOrderLineStatusDate).isSame(moment(), 'day') ? (\n                                    <Translation id=\"today\" defaultMessage=\"Today\" />\n                                ) : (\n                                    moment(validOrderLineStatusDate).format('L')\n                                )}\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.In_process && validOrderLineStatusDate == null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"no_planned_delivery\" defaultMessage=\"No planned delivery\" />\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.In_process && validOrderLineStatusDate !== null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {moment(validOrderLineStatusDate).isSame(moment(), 'day') ? (\n                                    <Translation id=\"today\" defaultMessage=\"Today\" />\n                                ) : (\n                                    moment(validOrderLineStatusDate).format('L')\n                                )}\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Partially_delivered) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        {showBtnToDetails() && (\n                            <div className=\"subtitle\">\n                                <span>\n                                    <Translation id=\"this_product_has_multiple_deliveries_check_deliveries_at\" defaultMessage=\"This product has multiple deliveries. Check deliveries at\" />\n                                    &nbsp;\n                                    <button onClick={() => handleBtnToDetailsOnClick()}>\n                                        <Translation id=\"order_details\" defaultMessage=\"Order details\" />\n                                    </button>\n                                </span>\n                            </div>\n                        )}\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Delivered && validOrderLineStatusDate == null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"entregado\" defaultMessage=\"Delivered\" />\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Delivered && validOrderLineStatusDate !== null) {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"entregado\" defaultMessage=\"Delivered\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {moment(validOrderLineStatusDate).isSame(moment(), 'day') ? (\n                                    <Translation id=\"today\" defaultMessage=\"Today\" />\n                                ) : (\n                                    moment(validOrderLineStatusDate).format('L')\n                                )}\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Order_cancelled && orderLine.reject_reason === 'D1') {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"product_canceled_by_user\" defaultMessage=\"Product canceled by user\" />\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n\n            if (validOrderLineStatus === OrderLineStatus.Order_cancelled && orderLine.reject_reason !== 'D1') {\n                return (\n                    <div className=\"shipping__status__info\">\n                        <div>\n                            <span>\n                                <Translation id=\"product_canceled_by_center\" defaultMessage=\"Product cancelled by center\" />\n                            </span>\n                        </div>\n                    </div>\n                )\n            }\n        }\n\n        const positionStatus = (\n            <div className=\"position__status\">\n                <div className={\"position__status--shipping-icon \" + orderLinesStatusColor()}>\n                    <ShippingTruckIcon />\n                </div>\n                <div>\n                    <span className={'position__status--text ' + orderLinesStatusColor()}>\n                        {validOrderLineStatus\n                            ? intl.formatMessage({ id: orderStatusMap[validOrderLineStatus].textToShow })\n                            : intl.formatMessage({ id: orderStatusMap[order.orderStatusV3.status].textToShow })}\n                    </span>\n                </div>\n            </div>\n        )\n\n        //Third column\n        const deliveryStatusBlock = (\n            <div className=\"shipping__status__content\">\n                <div className=\"shipping__status__content--elements\">\n                    <div>{positionStatus}</div>\n                    <div>{deliveryStatusLogic()}</div>\n                </div>\n            </div>\n        )\n\n        //Second column\n        const segmentationBlock = (\n            <React.Fragment>\n                {orderLine.segmentation && (\n                    <div className=\"card__item__segmentation--desktop\">\n                        <LineSegmentation line={orderLine} showAsList />\n                    </div>\n                )}\n            </React.Fragment>\n        )\n\n        const handleOrderLineQuantity = orderLine => {\n            return (\n                <React.Fragment>\n                    {orderLine.reservation_quantity ? (\n                        parseInt(orderLine.reservation_quantity) === 0 ? (\n                            <Translation id=\"product_added_by_center\" defaultMessage=\"Product added by center\" />\n                        ) : parseInt(orderLine.reservation_quantity) !== parseInt(orderLine.quantity) ? (\n                            orderLine.quantity ? (\n                                <React.Fragment>{parseInt(orderLine.quantity)}</React.Fragment>\n                            ) : (\n                                <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                            )\n                        ) : (\n                            <React.Fragment>{parseInt(orderLine.reservation_quantity)}</React.Fragment>\n                        )\n                    ) : (\n                        <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                    )}\n                </React.Fragment>\n            )\n        }\n\n        const cutToSizeDescriptionBlock = orderLine => {\n            const cts = orderLine.cut_to_size\n            const measures = getMeasure(cts)\n            const materialName = ElaborationOptionsMapById[orderLine.material_id]\n                ? this.props.intl.formatMessage(ElaborationOptionsMapById[orderLine.material_id].name)\n                : null\n            const features = [materialName, measures.format, finishFormatCtsInt(cts), thicknessFormatCtsIntl(cts)]\n            if (orderLine.cut_to_size.addon === 'MAL') features.push(this.props.intl.formatMessage({ id: 'MAL' }))\n\n            return (\n                <div>\n                    <div className=\"order-divider-x\"></div>\n                    <div className=\"order__card__item order__card__item__grid\">\n                        {/* Firts column */}\n                        <div className=\"card__item__productinfo\">\n                            <div className=\"card__item__productinfo--container\">\n                                <div className=\"card__item__productinfo--img\">\n                                    <img src={cts.thumb} alt=\"Cut to size\" />\n                                </div>\n                                <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                                    <CustomProductIndicator />\n                                </div>\n                            </div>\n                            <div className=\"card__item__productinfo--text\">\n                                <div className=\"brand-container\">\n                                    <span className=\"brand\">\n                                        <DisplayBrand brand={cts.brand} />\n                                    </span>\n                                </div>\n\n                                <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                                    <div className=\"product\">\n                                        <span>{capitalizeFirstLetter(cts.colorName)}</span>\n                                    </div>\n                                    <div>\n                                        <span className=\"technical\">{addForwardSlash(...features)}</span>\n                                    </div>\n                                </div>\n\n                                {orderLine.material_id && (\n                                    <div className=\"product-id\">\n                                        <span>\n                                            <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                        </span>\n                                        :&nbsp;\n                                        <span>\n                                            {orderLine.material_id}\n                                        </span>\n                                    </div>\n                                )}\n\n                                <div>\n                                    <span className=\"qty\">\n                                        <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                        :&nbsp;\n                                        {handleOrderLineQuantity(orderLine)}\n                                    </span>\n                                </div>\n\n                                {orderLine.segmentation && (\n                                    <div className=\"card__item__segmentation--tablet\">\n                                        <LineSegmentation line={orderLine} showAsList />\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n\n                        {/* Second column */}\n                        {segmentationBlock}\n\n                        {/* Third column */}\n                        {deliveryStatusBlock}\n                    </div>\n                </div>\n            )\n        }\n\n        const descriptionBlock = orderLine => {\n            return (\n                <div>\n                    <div className=\"order-divider-x\"></div>\n                    <div className=\"order__card__item order__card__item__grid\">\n                        {/* Firts column */}\n                        <div className=\"card__item__productinfo\">\n                            <div className=\"card__item__productinfo--container\">\n                                <div className=\"card__item__productinfo--img\">\n                                    <ProductImage product={orderLine.product} inSmallBox={true} />\n                                </div>\n                                <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                                    {orderLine.extra && orderLine.extra.isCosentinoGlobal &&\n                                        (orderLine.extra.outlet ? (\n                                            <NaturalStoneIndicator idMessage={'outlet_in_hq'} defaultMessage=\"Outlet Spain\" inSmallBox={true} />\n                                        ) : (\n                                            <NaturalStoneIndicator idMessage={'natural_stone_hq'} defaultMessage=\"Natural stone Spain\" inSmallBox={true} />\n                                        ))}\n\n                                    {orderLine.extra && orderLine.extra.isCosentinoBrazil && (\n                                        <NaturalStoneIndicator idMessage={'natural_stone_brazil'} defaultMessage=\"Natural stone Brazil\" inSmallBox={true} />\n                                    )}\n                                </div>\n                            </div>\n                            <div className=\"card__item__productinfo--text\">\n                                <div className=\"brand-container\">\n                                    <span className=\"brand\">\n                                        <DisplayBrand brand={orderLine.product.brand} />\n                                    </span>\n                                </div>\n                                <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                                    <div>\n                                        <span className=\"product\">\n                                            <ProductDisplayName product={orderLine.product} />\n                                        </span>\n                                    </div>\n                                    <div>\n                                        <span className=\"technical\">\n                                            {addForwardSlash(\n                                                subtypeFormatIntl(orderLine),\n                                                productFormatIntl(orderLine),\n                                                finishFormatIntl(orderLine, intl),\n                                                thicknessFormatIntl(orderLine),\n                                                zaddonFormatIntl(orderLine)\n                                            )}\n                                        </span>\n                                    </div>\n                                </div>\n\n                                {orderLine.product.productId && (\n                                    <div className=\"product-id\">\n                                        <span>\n                                            <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                        </span>\n                                        :&nbsp;\n                                        <span>\n                                            {orderLine.product.productId}\n                                        </span>\n                                    </div>\n                                )}\n\n                                {orderLine.lot_id && (\n                                    <div className=\"lot-id\">\n                                        <span>\n                                            <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                                            :&nbsp;\n                                        </span>\n                                        <span>{orderLine.lot_id}</span>\n                                    </div>\n                                )}\n\n                                <div className=\"indicators-block\">\n                                    {orderLine.product.discontinued && (\n                                        <span className=\"mb-1\">\n                                            <DisplayDiscontinued discontinued={orderLine.product.discontinued} inSmallBox={true} />\n                                        </span>\n                                    )}\n                                    {orderLine.outlet_quality && (\n                                        <span className=\"mb-1\">\n                                            <DisplayOutletIndicator\n                                                outletQuality={orderLine.outlet_quality}\n                                                inSmallBox={true}\n                                            />\n                                        </span>\n                                    )}\n                                </div>\n\n                                <div>\n                                    <span className=\"qty\">\n                                        <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                        :&nbsp;\n                                        {handleOrderLineQuantity(orderLine)}\n                                    </span>\n                                </div>\n\n                                {orderLine.segmentation && (\n                                    <div className=\"card__item__segmentation--tablet\">\n                                        <LineSegmentation line={orderLine} showAsList />\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n\n                        {/* Second column */}\n                        {segmentationBlock}\n\n                        {/* Third column */}\n                        {deliveryStatusBlock}\n                    </div>\n                </div>\n            )\n        }\n\n        const descriptionBlockConfigBath = orderLine => {\n            const cts = orderLine.cut_to_size\n            return (\n                <div>\n                    <div className=\"order-divider-x\"></div>\n                    <div className=\"order__card__item order__card__item__grid\">\n                        {/* Firts column */}\n                        <div className=\"card__item__productinfo\">\n                            <div className=\"card__item__productinfo--container\">\n                                <div className=\"card__item__productinfo--img\">\n                                    {!!cts.configurable.thirdParty && <DisplayQuickShipIndicator tooltipId={cts.configurable.refcode} />}\n                                    <img src={cts.thumb} alt={getConfigLineName(cts.configurable)} className=\"is-img-configurable\" />\n                                </div>\n\n                                <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                                    <CustomProductIndicator />\n                                </div>\n                            </div>\n\n                            <div className=\"card__item__productinfo--text\">\n                                <div className=\"brand-container\">\n                                    <span className=\"brand\">\n                                        <DisplayBrand brand={cts.configurable.material.brand} />\n                                    </span>\n                                </div>\n\n                                <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                                    <div>\n                                        <span className=\"product\">\n                                            <span className=\"product-title\">{getConfigLineName(cts.configurable)}</span>\n                                        </span>\n                                    </div>\n                                    <div>\n                                        <span className=\"technical\">\n                                            <Translation id=\"customized\" defaultMessage=\"Custom\" />\n                                        </span>\n                                    </div>\n                                </div>\n\n                                {orderLine.material_id && (\n                                    <div className=\"product-id\">\n                                        <span>\n                                            <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                        </span>\n                                        :&nbsp;\n                                        <span>\n                                            {orderLine.material_id}\n                                        </span>\n                                    </div>\n                                )}\n\n                                <div>\n                                    <span className=\"qty\">\n                                        <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                        :&nbsp;\n                                        {handleOrderLineQuantity(orderLine)}\n                                    </span>\n                                </div>\n\n                                {orderLine.segmentation && (\n                                    <div className=\"card__item__segmentation--tablet\">\n                                        <LineSegmentation line={orderLine} showAsList />\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n\n                        {/* Second column */}\n                        {segmentationBlock}\n\n                        {/* Third column */}\n                        {deliveryStatusBlock}\n                    </div>\n                </div>\n            )\n        }\n\n        return (\n            <React.Fragment>\n                {orderLine.product ? (\n                    <React.Fragment>{descriptionBlock(orderLine)}</React.Fragment>\n                ) : orderLine.cut_to_size && orderLine.cut_to_size.configurable ? (\n                    <React.Fragment>{descriptionBlockConfigBath(orderLine)}</React.Fragment>\n                ) : orderLine.cut_to_size ? (\n                    <React.Fragment>{cutToSizeDescriptionBlock(orderLine)}</React.Fragment>\n                ) : (\n                    <div>\n                        <div className=\"order-divider-x\"></div>\n                        <div className=\"order__card__item order__card__item__grid\">\n                            {/* First column */}\n                            <div className=\"card__item__productinfo\">\n                                <div className=\"card__item__productinfo--img\">\n                                    <ProductImage product={null} />\n                                </div>\n                                <div className=\"card__item__productinfo--text\">\n                                    {orderLine.short_text && (\n                                        <div>\n                                            <span className=\"product\">\n                                                <span>{capitalizeFirstLetter(orderLine.short_text)}</span>\n                                            </span>\n                                        </div>\n                                    )}\n                                    {orderLine.material_id && (\n                                        <div className=\"product-id\">\n                                            <span>\n                                                <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                            </span>\n                                            :&nbsp;\n                                            <span>\n                                                {orderLine.material_id}\n                                            </span>\n                                        </div>\n                                    )}\n\n                                    {orderLine.lot_id && (\n                                        <div className=\"lot-id\">\n                                            <span>\n                                                <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                                                :&nbsp;\n                                            </span>\n                                            <span>{orderLine.lot_id}</span>\n                                        </div>\n                                    )}\n\n                                    <div>\n                                        <span className=\"qty\">\n                                            <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                            :&nbsp;\n                                            {handleOrderLineQuantity(orderLine)}\n                                        </span>\n                                    </div>\n\n                                    {orderLine.segmentation && (\n                                        <div className=\"card__item__segmentation--tablet\">\n                                            <LineSegmentation line={orderLine} showAsList />\n                                        </div>\n                                    )}\n                                </div>\n                            </div>\n                            {/* Second column */}\n                            {segmentationBlock}\n\n                            {/* Third column */}\n                            {deliveryStatusBlock}\n                        </div>\n                    </div>\n                )}\n            </React.Fragment>\n        )\n    }\n}\n\nexport default injectIntl(NewOrderCardItem)\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport moment from 'moment'\nimport NewOrderCardItem from './NewOrderCardItem'\nimport { SliderNextArrow, SliderPrevArrow } from '../Utils'\nimport Slider from 'react-slick'\nimport Translation from '../../../global/Translation'\nimport Button from '../../../global/Button'\nimport Alerts from '../../../alerts/Alerts'\n\nclass NewOrderCard extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            showMoreProducts: false\n        }\n    }\n\n    showBtnToDetails = order => {\n        if (order.orderId && order.reservationId && order.orderLines.length > 0 && !this.props.isIkeaCenter) return true\n        return false\n    }\n\n    render() {\n        const { order, orderStatusMap, intl, isIkeaCenter, redirect, adaptedFormat, replaceDotWithComma, locale, getMeasure } = this.props\n\n        const showMoreLessProducts = () => {\n            this.setState({ showMoreProducts: !this.state.showMoreProducts })\n        }\n\n        const positionsMap =\n            order &&\n            order.orderLines &&\n            order.orderLines.length > 0 &&\n            order.orderLines.map((orderLine, idx) => {\n                return (\n                    order.orderId !== null ? (\n                        <NewOrderCardItem\n                            key={idx}\n                            order={order}\n                            orderLine={orderLine}\n                            orderStatusMap={orderStatusMap}\n                            adaptedFormat={adaptedFormat}\n                            isIkeaCenter={isIkeaCenter}\n                            redirect={redirect}\n                            intl={intl}\n                            locale={locale}\n                            replaceDotWithComma={replaceDotWithComma}\n                            getMeasure={getMeasure}\n                        />\n                    ) : (null)\n                )\n            })\n\n        const handleBtnToDetailsOnClick = () => {\n            redirect(\n                intl\n                    .formatMessage({ id: 'ROUTE_ORDER_DETAILS' })\n                    .replace(':filter', 'view-order')\n                    .replace(':reservationId', order.reservationId)\n            )\n        }\n\n        const sliderSettings = {\n            arrows: true,\n            nextArrow: <SliderNextArrow />,\n            prevArrow: <SliderPrevArrow />,\n            swipeToSlide: true,\n            dots: true,\n            speed: 300,\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            infinite: false,\n            variableWidth: false\n        }\n\n        return (\n            <React.Fragment>\n                {order && (\n                    <div className=\"order__card\">\n                        {/* Header */}\n                        <header className=\"order__card__header\">\n                            <div className=\"col-12 col-md-9 col-xl-9 p-0 order__card__header__info\">\n                                <div className=\"card__header__text\">\n                                    <div className=\"card__header__text--title\">\n                                        <span>\n                                            <Translation id=\"status\" defaultMessage=\"Status\" />:\n                                        </span>\n                                        <div className=\"card__header__text--subtitle\">\n                                            {order.reservationStatus === 'PENDING_CANCELLATION' ? (\n                                                <span>{intl.formatMessage({ id: orderStatusMap[order.reservationStatus].textToShow })}</span>\n                                            ) : order.ecosentino_status === 'PENDING_CHANGES' ? (\n                                                <span>{intl.formatMessage({ id: orderStatusMap[order.ecosentino_status].textToShow })}</span>\n                                            ) : order.orderStatusV3.status ? (\n                                                <span>{intl.formatMessage({ id: orderStatusMap[order.orderStatusV3.status].textToShow })}</span>\n                                            ) : (\n                                                <span>--</span>\n                                            )}\n                                        </div>\n                                    </div>\n                                </div>\n\n                                <div className=\"card__header__text\">\n                                    <div className=\"card__header__text--title\">\n                                        <span>\n                                            <Translation id=\"date\" defaultMessage=\"Date\" />\n                                            :&nbsp;\n                                        </span>\n                                    </div>\n                                    <div className=\"card__header__text--subtitle\">\n                                        {order.orderCreationDate ? (\n                                            moment(order.orderCreationDate).isSame(moment(), 'day') ? (\n                                                <span>\n                                                    <Translation id=\"today\" defaultMessage=\"Today\" />\n                                                </span>\n                                            ) : (\n                                                <span>{moment(order.orderCreationDate).format('L')}</span>\n                                            )\n                                        ) : order.createdDate ? (\n                                            moment(order.createdDate.date).isSame(moment(), 'day') ? (\n                                                <span>\n                                                    <Translation id=\"today\" defaultMessage=\"Today\" />\n                                                </span>\n                                            ) : (\n                                                <span>{moment(order.createdDate.date).format('L')}</span>\n                                            )\n                                        ) : (\n                                            <span>--</span>\n                                        )}\n                                    </div>\n                                </div>\n\n                                <div className=\"card__header__text\">\n                                    {order.orderId ? (\n                                        <React.Fragment>\n                                            <div className=\"card__header__text--title\">\n                                                <span>\n                                                    <Translation id=\"order_number\" defaultMessage=\"Order number\" />\n                                                </span>\n                                                :&nbsp;\n                                            </div>\n                                            <div className=\"card__header__text--subtitle\">\n                                                <span>{order.orderId}</span>\n                                            </div>\n                                        </React.Fragment>\n                                    ) : order.reservationId ? (\n                                        <React.Fragment>\n                                            <div className=\"card__header__text--title\">\n                                                <span>\n                                                    <Translation id=\"reservation_id\" defaultMessage=\"Reservation ID\" />\n                                                </span>\n                                            </div>\n                                            <div className=\"card__header__text--subtitle\">\n                                                <span>{order.reservationId}</span>\n                                            </div>\n                                        </React.Fragment>\n                                    ) : (\n                                        <React.Fragment>\n                                            <div className=\"card__header__text--title\">\n                                                <span>\n                                                    <Translation id=\"order_number\" defaultMessage=\"Order number\" />\n                                                </span>\n                                                :&nbsp;\n                                            </div>\n                                            <div className=\"card__header__text--subtitle\">\n                                                <span>--</span>\n                                            </div>\n                                        </React.Fragment>\n                                    )}\n                                </div>\n\n                                <div className=\"card__header__text\">\n                                    <div className=\"card__header__text--title\">\n                                        <span>\n                                            <Translation id=\"number_of_products\" defaultMessage=\"Number of products\" />\n                                        </span>\n                                        :&nbsp;\n                                    </div>\n                                    <div className=\"card__header__text--subtitle\">\n                                        {order.orderId !== null && order.orderLines.length > 0 ? (\n                                            <span>\n                                                {order.orderLines.length}\n                                            </span>\n                                        ) : (\n                                            <span>\n                                                <Translation id=\"you_will_be_able_to_view_your_order\" defaultMessage=\"You will be able to view your order in a few minutes\" />\n                                            </span>\n                                        )}\n                                    </div>\n                                </div>\n                            </div>\n                            {/* Desktop button */}\n                            {this.showBtnToDetails(order) && (\n                                <div className=\"col-12 col-md-3 col-xl-3 p-0 order__card__header--btn\">\n                                    <Button\n                                        className=\"bt bt-inverted\"\n                                        gtmLabel=\"ec_historial_pedidos_detalles\"\n                                        onClick={() => {\n                                            handleBtnToDetailsOnClick()\n                                        }}\n                                    >\n                                        <Translation id=\"view_details\" defaultMessage=\"View details\" />\n                                    </Button>\n                                </div>\n                            )}\n                        </header>\n                        {(order.ecosentino_status === 'PENDING_CHANGES' || order.reservationStatus === 'PENDING_CANCELLATION') && (\n                            <div className=\"px-3 mb-3\">\n                                <Alerts status='warning'\n                                        alert='order_in_process_of_modification_warning'\n                                        cssIcon='fas fa-exclamation-triangle'\n                                        iconSize='16px'\n                                        className='order__alert__warning'   \n                                />\n                            </div>\n                        )}\n                        {/* Body */}\n                        <section className=\"order__card__item--container\">\n                            <div className=\"d-none d-md-block\">\n                                <div className={`${this.state.showMoreProducts ? '' : 'show-more-less-order'}`}>\n                                    {positionsMap}\n                                </div>\n                                {order.orderLines.length > 3 && (\n                                    <div className=\"show__more__less\">\n                                        <button onClick={() => showMoreLessProducts()}>\n                                            {this.state.showMoreProducts ? (\n                                                <React.Fragment>\n                                                    <span>\n                                                        <Translation id=\"view_less\" defaultMessage=\"View less\" />\n                                                    </span>\n                                                    <i class=\"fas fa-chevron-up\"></i>\n                                                </React.Fragment>\n                                            ) : (\n                                                <React.Fragment>\n                                                    <span>\n                                                        <Translation id=\"view_all_products\" defaultMessage=\"View all products\" />\n                                                    </span>\n                                                    &nbsp;\n                                                    <span>&#40;{order.orderLines.length}&#41;</span>\n                                                    <i class=\"fas fa-chevron-down\"></i>\n                                                </React.Fragment>\n                                            )}\n                                        </button>\n                                    </div>\n                                )}\n                            </div>\n                            <div className=\"d-block d-md-none\">\n                                <Slider ref={s => (this.slider = s)} {...sliderSettings}>\n                                    {positionsMap}\n                                </Slider>\n                            </div>\n                        </section>\n                        {/* Responsive button */}\n                        {this.showBtnToDetails(order) && (\n                            <footer className=\"order__card__footer\">\n                                <div>\n                                    <Button\n                                        className=\"bt bt-inverted\"\n                                        gtmLabel=\"ec_historial_pedidos_detalles\"\n                                        onClick={() => {\n                                            handleBtnToDetailsOnClick()\n                                        }}\n                                    >\n                                        <Translation id=\"view_details\" defaultMessage=\"View details\" />\n                                    </Button>\n                                </div>\n                            </footer>\n                        )}\n                    </div>\n                )}\n            </React.Fragment>\n        )\n    }\n}\n\nexport default injectIntl(NewOrderCard)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../global/Translation'\nimport { toggleMenu, showPersonalData } from '../../../store/ui/actions'\nimport { showMenuSelector, showPersonalDataSelector } from '../../../store/ui/reducers'\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggleMenu: active => {\n            dispatch(toggleMenu(active))\n        },\n        onTogglePersonalData: active => {\n            dispatch(showPersonalData(active))\n        }\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        showMenu: showMenuSelector(state),\n        showPersonalData: showPersonalDataSelector(state)\n    }\n}\n\nclass GoBackButton extends React.Component {\n    render() {\n        return (\n            <div className=\"go-back-profile\">\n                <i className=\"fal fa-chevron-left\"></i>\n                <span\n                    className=\"label label-v2\"\n                    onClick={() => {\n                        if (!this.props.showMenu) this.props.onToggleMenu(this.props.showMenu)\n                        if (this.props.showMenu && this.props.showPersonalData) {\n                            this.props.onToggleMenu(this.props.showMenu)\n                        }\n                        this.props.onTogglePersonalData(this.props.showPersonalData)\n                    }}\n                >\n                    <Translation id=\"back_to_personal_area\" defaultMessage=\"Back to personal area\" />\n                </span>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(GoBackButton))\n","import React, { useEffect, useState } from 'react'\nimport FiltersModal from \"../../../global/Filters/FiltersModal\";\nimport Translation from \"../../../global/Translation\";\nimport Select from \"react-select\";\nimport DatePicker from \"react-datepicker\";\nimport moment from \"moment\";\nimport {getCenters, getIsIkeaCenter} from \"../../../../store/centers/reducers\";\nimport {injectIntl, defineMessages} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport FilterTags from \"../../../global/Filters/FilterTags\";\nimport debounce from \"lodash/debounce\";\nimport {cloneDeep} from \"lodash\";\nimport SearchInput from '../../../global/SearchInput';\n\ndefineMessages({\n    by_estimated_delivery_date: {\n        id: 'by_estimated_delivery_date',\n        description: 'by_estimated_delivery_date',\n        defaultMessage: 'By estimated delivery date'\n    },\n    requested_date: {\n        id: 'requested_date',\n        description: 'requested_date',\n        defaultMessage: 'Requested delivery date'\n    },\n    status_type_filter: {\n        id: 'status_type_filter',\n        description: 'status_type_filter',\n        defaultMessage: 'By status'\n    },\n    order_confirmed: {\n        id: 'order_confirmed',\n        description: 'order_confirmed',\n        defaultMessage: 'Order confirmed'\n    },\n    dist_center_filter: {\n        id: 'dist_center_filter',\n        description: 'dist_center_filter',\n        defaultMessage: 'Distribution center'\n    },\n    order_canceled: {\n        id: 'order_canceled',\n        description: 'order_canceled',\n        defaultMessage: 'Distribution center'\n    },\n    shipping_type_filter: {\n        id: 'shipping_type_filter',\n        description: 'shipping_type_filter',\n        defaultMessage: 'Shipment type'\n    },\n    filters: {\n        id: 'filters',\n        description: 'filters',\n        defaultMessage: 'Filters'\n    }\n})\n\nlet debSearch\n\nconst OrdersHistoryFilter = props => {\n\n    const centerOptions = props.centers.reduce((p, v) => (\n        {...p, ['_' + v.centerId]: {label: v.name, isSelected: false, value: v.centerId} }),\n        {empty: {label: props.intl.formatMessage({id: 'view_all'}), value: false, isSelected: true}}\n    )\n\n    const statusTypeOptions = {\n        empty: {label: props.intl.formatMessage({id: 'view_all'}), value: false, isSelected: true},\n        order_created: {label: props.intl.formatMessage({ id: 'ORDER_CREATED' }), value: 'order_created', isSelected: false },\n        order_confirmed: {label: props.intl.formatMessage({ id: 'order_confirmed' }), value: 'order_confirmed', isSelected: false },\n        // partially_delivered: {label: props.intl.formatMessage({ id: 'order_status_partially_delivered' }), value: 'partially_delivered', isSelected: false },\n        cancelled: {label: props.intl.formatMessage({ id: 'order_canceled' }), value: 'cancelled', isSelected: false },\n        // delivered: {label: props.intl.formatMessage({ id: 'order_status_delivered' }), value: 'delivered', isSelected: false }\n    }\n\n    const [search, setSearch] = useState('')\n\n    const dateFilterMapper = {\n        output: {\n            startDate: null,\n            endDate: null,\n            typeDate: 'order_date'\n        },\n        prevOutput: {\n            startDate: null,\n            endDate: null,\n            typeDate: 'order_date'\n        },\n        onChange: {\n            changeStartDate: selectedOption => dateFilterMapper.output.startDate = selectedOption,\n            changeEndDate: selectedOption => dateFilterMapper.output.endDate = selectedOption,\n            changeTypeDate: selectedOption => dateFilterMapper.output.typeDate = selectedOption,\n        }\n    }\n\n    const formatDateLabel = (output) => {\n        const startLabel = `${output.startDate && !output.endDate ? props.intl.formatMessage({ id: 'from'}) + ' ' : ''}${output.startDate ? output.startDate.format('L') : ''}`\n        const endLabel = `${output.startDate && output.endDate ? ' - ' : ''}${!output.startDate && output.endDate ? props.intl.formatMessage({ id: 'to'}) + ' ' : ''}${output.endDate ? output.endDate.format('L') : ''}`\n\n        const label = startLabel + endLabel\n        return label === '' ? 'all' : label\n    }\n\n    const DateFilter = (mapper, _filters) => {\n\n        const startMaxDate = mapper.output.endDate ? mapper.output.endDate : moment().add(12, 'month')\n        const endMaxDate = props.isIkeaCenter ? moment(mapper.output.startDate).add(3, 'month')\n            : //RESTO DE CASOS 12 MESES\n            moment(mapper.output.startDate).add(12, 'month')\n\n        return <React.Children mapper={mapper}>\n\n            <div className=\"order__shipping__date__section\">\n                <div className=\"order__shipping__date__section--select\">\n                    <Select\n                        options={[\n                            {\n                                label: <Translation id=\"order_date\" defaultMessage=\"Order date\"/>,\n                                value: 'order_date'\n                            },\n                            {\n                                label: <Translation id=\"requested_delivery_date\"\n                                                    defaultMessage=\"Requested delivery date\"/>,\n                                value: 'requested_date'\n                            }\n                        ]}\n                        value={mapper.output.typeDate}\n                        clearable={false}\n                        onChange={selectedOption => {\n                            mapper.onChange.changeTypeDate(selectedOption, 'typeDate')\n                            _filters.label = formatDateLabel(mapper.output) ? props.intl.formatMessage({ id: selectedOption.value }) : null\n                        }}\n                    />\n                </div>\n\n                <div className=\"order__shipping__date__section--dates\">\n                    <div className=\"from\">\n                        <label htmlFor='from_order_date'>\n                            <Translation id=\"from\" defaultMessage=\"From\"/>\n                        </label>\n                        <DatePicker\n                            id={'from_order_date'}\n                            selected={mapper.output.startDate}\n                            selectsStart={true}\n                            startDate={mapper.output.startDate}\n                            endDate={mapper.output.endDate}\n                            maxDate={startMaxDate}\n                            onChange={selectedOption => {\n                                mapper.onChange.changeStartDate(selectedOption, 'startDate')\n                                _filters.filters.custom_date_filter.label = formatDateLabel(mapper.output)\n                                _filters.filters.custom_date_filter.isSelected = false\n                                //console.log('START DATE ' , _filters.filters.custom_date_filter.isSelected)\n                            }}\n                            autoComplete=\"off\"\n                            onKeyDown={e => e.preventDefault()}\n                            showMonthDropdown\n                            showYearDropdown\n                            isClearable={true}\n                            className=\"form-control form-control-sm date customDatePicker\"\n                        />\n                    </div>\n                    <div className=\"to\">\n                        <label htmlFor='to_order_date'>\n                            <Translation id=\"to\" defaultMessage=\"To\"/>\n                        </label>\n                        <DatePicker\n                            id={'to_order_date'}\n                            selected={mapper.output.endDate}\n                            selectsEnd\n                            startDate={mapper.output.startDate}\n                            endDate={mapper.output.endDate}\n                            minDate={mapper.output.startDate}\n                            maxDate={endMaxDate}\n                            onChange={selectedOption => {\n                                mapper.onChange.changeEndDate(selectedOption, 'endDate')\n                                _filters.filters.custom_date_filter.label = formatDateLabel(mapper.output)\n                                _filters.filters.custom_date_filter.isSelected = !!(mapper.output.startDate && mapper.output.endDate)\n                            }}\n                            autoComplete=\"off\"\n                            onKeyDown={e => e.preventDefault()}\n                            showMonthDropdown\n                            showYearDropdown\n                            isClearable={true}\n                            className=\"form-control form-control-sm date customDatePicker\"\n                        />\n                    </div>\n                </div>\n            </div>\n        </React.Children>\n    }\n\n    const initialFilters = {\n        by_date_filter: {\n            label: props.intl.formatMessage({ id: dateFilterMapper.output.typeDate }),\n            id: 'by_date_filter',\n            filters: {\n                custom_date_filter : {\n                    id: 'custom_date_filter',\n                    label: 'all',\n                    defaultLabel: 'all',\n                    value: cloneDeep(dateFilterMapper.output),\n                    mapper: cloneDeep(dateFilterMapper),\n                    custom: DateFilter,\n                    isSelected: false,\n                    defaultValue: {\n                        startDate: null,\n                        endDate: null,\n                        typeDate: 'order_date'\n                    },\n                    getIsSelected: (output) => !!(output.startDate || output.endDate)\n                }\n            }\n        },\n        status_type_filter: {\n            label: props.intl.formatMessage({ id: 'status_type_filter' }),\n            id: 'status_type_filter',\n            filters: statusTypeOptions\n        },\n        dist_center_filter: {\n            label: props.intl.formatMessage({ id: 'dist_center_filter' }),\n            id: 'dist_center_filter',\n            filters: centerOptions\n        }\n    }\n\n    const [filters, setFilters] = useState(cloneDeep(initialFilters))\n    const [selections, setSelections] = useState({})\n\n    const changeDateFilter = type => {\n        let startDate = moment()\n        switch (type) {\n            case 'today':\n                filters.by_date_filter.filters.custom_date_filter.value.startDate = startDate\n                filters.by_date_filter.filters.custom_date_filter.value.typeDate = 'order_date'\n                filters.by_date_filter.label = props.intl.formatMessage({ id: 'order_date' })\n                break\n            case 'last_week':\n                startDate = startDate.add(-7, 'days')\n                filters.by_date_filter.filters.custom_date_filter.value.startDate = startDate\n                filters.by_date_filter.filters.custom_date_filter.value.typeDate = 'order_date'\n                filters.by_date_filter.label = props.intl.formatMessage({ id: 'order_date' })\n                break\n            case 'last_month':\n                startDate = startDate.add(-30, 'days')\n                filters.by_date_filter.filters.custom_date_filter.value.startDate = startDate\n                filters.by_date_filter.filters.custom_date_filter.value.typeDate = 'order_date'\n                filters.by_date_filter.label = props.intl.formatMessage({ id: 'order_date' })\n                break\n            case 'last_6_months':\n                startDate = startDate.add(-180, 'days')\n                filters.by_date_filter.filters.custom_date_filter.value.startDate = startDate\n                filters.by_date_filter.filters.custom_date_filter.value.typeDate = 'order_date'\n                filters.by_date_filter.label = props.intl.formatMessage({ id: 'order_date' })\n                break\n            case 'all':\n                break\n        }\n\n        const endDate = type !== 'all' ? moment() : null\n        filters.by_date_filter.filters.custom_date_filter.label = type\n        filters.by_date_filter.filters.custom_date_filter.isSelected = type !== 'all'\n        filters.by_date_filter.filters.custom_date_filter.value.endDate = endDate\n\n        // Actualizar mappers\n        filters.by_date_filter.filters.custom_date_filter.mapper.output.startDate = startDate\n        filters.by_date_filter.filters.custom_date_filter.mapper.output.endDate = endDate\n        filters.by_date_filter.filters.custom_date_filter.mapper.prevOutput.startDate = startDate\n        filters.by_date_filter.filters.custom_date_filter.mapper.prevOutput.endDate = endDate\n        filters.by_date_filter.filters.custom_date_filter.mapper.output.typeDate = 'order_date'\n        filters.by_date_filter.filters.custom_date_filter.mapper.prevOutput.typeDate = 'order_date'\n\n        setFilters(Object.assign({}, filters))\n    }\n\n    const dateFilterActive = type => filters && filters.by_date_filter && filters.by_date_filter.filters.custom_date_filter.label === type\n\n    useEffect(() => {\n        const selections = Object.entries(filters).reduce(\n            (p, [k, v]) => ({\n                ...p, [k]: Object.entries(v.filters).reduce((_p, [_k, _v]) => ({..._p, [_k]: _v.isSelected}), {})\n            }), {}\n        )\n        const selected = {}\n        Object.entries(selections).forEach(([k, v]) => {\n            const positives = Object.keys(v).filter(_k => !!v[_k])\n            positives.forEach(v => {\n                if (filters[k] && filters[k].filters[v].value) {\n                    selected[k] = {id:v, value: filters[k].filters[v].value}}\n            })\n        })\n\n        setSelections(selected)\n    }, [filters])\n\n    useEffect(() => {\n        if (debSearch) {\n            debSearch.cancel()\n        }\n        debSearch = debounce(() => {\n            if ((search && search.length > 2) || !search || search.length === 0) {\n                props.onChange({search, selections})\n            }\n        }, 1000)\n\n        debSearch()\n    }, [search, selections])\n\n\n    const searchBar = (\n        <SearchInput\n            inputType=\"text\"\n            inputName=\"order-history-search\"\n            inputValue={search}\n            inputOnChange={e => setSearch(e.target.value)}\n            placeholder={props.intl.formatMessage({ id: 'search' })}\n            gtmLabel=\"ec_historial_pedidos_barra_busqueda\"\n            dataQa=\"query\"\n        />\n    )\n\n    const onClean = () => {\n        if (filters !== initialFilters) {\n            setFilters(cloneDeep(initialFilters))\n        }\n    }\n\n    useEffect(() => {\n        // changeDateFilter('last_month')\n    }, [])\n    \n    return (\n        <React.Fragment>\n            <div className=\"header__filters__heading\">\n                <h4><Translation id=\"filter_by_order_date\" defaultMessage=\"Filter by order date\" />:</h4>\n            </div>\n            <div className=\"header__filters\">\n                <nav className=\"header__filters__buttons\">\n                    <div className={`order-walkthrough-filter-quick header__filters__buttons--btn ${dateFilterActive('today') ? 'active' : ''}`}>\n                        <button onClick={() => changeDateFilter('today')}>\n                            <Translation id={'today'} defaultMessage={'Today'}/>\n                        </button>\n                    </div>\n                    <div className={`header__filters__buttons--btn ${dateFilterActive('last_week') ? 'active' : ''}`}>\n                        <button onClick={() => changeDateFilter('last_week')}>\n                            <Translation id={'last_week'} defaultMessage={'Last week'}/>\n                        </button>\n                    </div>\n                    <div className={`header__filters__buttons--btn ${dateFilterActive('last_month') ? 'active' : ''}`}>\n                        <button onClick={() => changeDateFilter('last_month')}>\n                            <Translation id={'last_month'} defaultMessage={'Last month'}/>\n                        </button>\n                    </div>\n                    <div className={`header__filters__buttons--btn ${dateFilterActive('last_6_months') ? 'active' : ''}`}>\n                        <button onClick={() => changeDateFilter('last_6_months')}>\n                            <Translation id={'last_6_months'} defaultMessage={'Last 6 months'}/>\n                        </button>\n                    </div>\n                    <div className={`header__filters__buttons--btn ${dateFilterActive('all') ? 'active' : ''}`}>\n                        <button onClick={() => changeDateFilter('all')}>\n                            <Translation id={'all'} defaultMessage={'All'}/>\n                        </button>\n                    </div>\n                    <div className=\"order-walkthrough-more-filter-desktop header__filters__buttons--btn-more\">\n                        <FiltersModal\n                            title={props.intl.formatMessage({ id: 'filters' })}\n                            filters={filters}\n                            customClassName=\"order__shipping__filter__modal\"\n                            onChange={_filters => setFilters(_filters)}\n                            onClean={onClean}\n                            gtmLabel=\"ec_historial_pedidos_mas_filtros\"\n                            gtmLabelModal=\"ec_historial_pedidos_filtros_popup\"\n                            gtmLabelApplyFilters=\"ec_historial_pedidos_filtros_aplicar\"\n                        />\n                    </div>\n                </nav>\n                {/* Desktop search */}\n                <div className=\"filters__search__desktop\">\n                    <div className=\"filters__search__desktop--input\">{searchBar}</div>\n                </div>\n            </div>\n            {/* Responsive search */}\n            <div className=\"filters__search__responsive\">\n                <div className=\"flex__container\">\n                    <div className=\"flex__container--input\">{searchBar}</div>\n                    {/* For mobile screen */}\n                    <div className=\"order-walkthrough-more-filter-responsive flex__container--btn\">\n                        <FiltersModal\n                            title={props.intl.formatMessage({ id: 'filters' })}\n                            filters={filters}\n                            customClassName=\"order__shipping__filter__modal\"\n                            onChange={_filters => setFilters(_filters)}\n                            onClean={onClean}\n                            gtmLabel=\"ec_historial_pedidos_mas_filtros\"\n                            gtmLabelModal=\"ec_historial_pedidos_filtros_popup\"\n                            gtmLabelApplyFilters=\"ec_historial_pedidos_filtros_aplicar\"\n                        />\n                    </div>\n                </div>\n            </div>\n\n            <div className=\"order__history__header--filter-tags\">\n                <FilterTags\n                    filters={filters}\n                    onChange={_filters => setFilters(_filters)}\n                    onClean={onClean}\n                />\n            </div>\n        </React.Fragment>\n    )\n}\n\nconst mapStateToProps = state => {\n    return {\n        isIkeaCenter: getIsIkeaCenter(state),\n        centers: getCenters(state),\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(OrdersHistoryFilter)\n)","import { injectIntl } from 'react-intl'\nimport React, { useEffect, useState } from 'react'\n\nconst FilterButton = props => {\n\n    const [ isSelected, setIsSelected] = useState(props.isSelected)\n\n    const onSelect = () => {\n        let _isSelected\n        if (props.toggle && props.isSelected) {\n            _isSelected = !isSelected\n        } else {\n            _isSelected = true\n        }\n        setIsSelected(_isSelected)\n        props.onSelect(_isSelected)\n    }\n\n    return (\n        <button className={`filter__button ${props.isSelected ? 'is-selected' : ''} `}\n                onClick={onSelect}\n        >\n            {props.label}\n        </button>\n    )\n}\n\nexport default FilterButton","import React from 'react'\n\nconst CustomFilter = props => {\n\n    if (props.onChange && props.children.props.mapper) {\n        let _onChange = {};\n        if (props.children.props.mapper.onChange) {\n            Object.entries(props.children.props.mapper.onChange).forEach(([k, fn]) => {\n                _onChange[k] = (value, key) => {\n                    if (value !== undefined && key) {\n                        const _value = (value && value.value) ? value.value : value\n                        props.children.props.mapper.output[key] = _value\n                        fn(value)\n                        props.onChange(props.children.props.mapper.output)\n                    }\n                }\n            })\n        }\n\n        props.children.props.mapper.onChange = _onChange\n    }\n\n    return (\n        <React.Fragment>\n            { props.children.props.children }\n        </React.Fragment>\n    )\n}\n\nexport default CustomFilter","import { injectIntl } from 'react-intl'\nimport React, { useEffect, useState } from 'react'\nimport FilterButton from \"./FilterButton\";\nimport CustomFilter from \"./CustomFilter\";\n\nconst FiltersRow = props => {\n\n    const [ selections, setSelections ] = useState({})\n\n    useEffect(() => {\n        setSelections(Object.entries(props.filters.filters).reduce((p, [k, v]) => ({ ...p, [k]: v.isSelected }), {}))\n    }, [props.filters.filters])\n\n    const select = (key, value, getIsSelected) => {\n        const _selections = {}\n        _selections[key] = getIsSelected ? getIsSelected(value) : !!value\n        Object.entries(selections).forEach(([_key, _value]) => {\n            if (_key !== key) _selections[_key] = !!props.multiselect ? selections[_key] : false\n        })\n\n        setSelections(_selections)\n        props.onSelect(_selections)\n    }\n\n    return (\n        <React.Fragment>\n            <div className=\"filter__label__title\">\n                <h5>\n                    {props.label}\n                </h5>\n            </div>\n            <div className=\"filter__row__content\">\n                <div className=\"filter__row__content--track-list\">\n                    {\n                        Object.entries(props.filters.filters).map(([key, f]) => (f.custom ?\n                            <CustomFilter\n                                onChange={value => {\n                                    select(key, value, f.getIsSelected)\n                                }}\n                            >\n                                {f.custom(f.mapper, props.filters)}\n                            </CustomFilter>\n                                :\n                            <FilterButton label={f.label}\n                                        toggle={props.multiselect}\n                                        key={key}\n                                        onSelect={value => select(key, value)}\n                                        isSelected={selections[key]}\n                            />\n                        ))\n                    }\n                </div>\n            </div>\n        </React.Fragment>\n    )\n}\n\nexport default FiltersRow\n\n\n","import React, { useEffect, useState } from 'react'\nimport FiltersRow from \"./FiltersRow\";\nimport Modal from \"../Modal\";\nimport Button from \"../Button\";\nimport Translation from '../Translation';\n\n/**\n *\n * @param props\n *  title : String,\n *  filters : [\n *      {\n *          filters : [\n *              {\n *                  label : String,\n *                  defaultValue : Boolean\n *              },\n *              ...,\n *              { ... }\n *          ],\n *          label : String,\n *          multiselect : Boolean\n *      },\n *      ...,\n *      { ... }\n *  ]\n * @returns {JSX.Element}\n * @constructor\n */\nconst FiltersModal = props => {\n\n    const [showFilters, setShowFilters] = useState(false)\n    // const [filters, setFilters] = useState({})\n    const [selections, setSelections] = useState({})\n\n    const initFilters = () => {\n        //console.log('FILTERS ', props.filters)\n\n        setSelections(Object.entries(props.filters).reduce(\n            (p, [k, v]) => ({\n                ...p, [k]: Object.entries(v.filters).reduce((_p, [_k, _v]) => ({..._p, [_k]: _v.isSelected}), {})\n            }), {})\n        )\n    }\n\n    useEffect(() => {\n        initFilters()\n    }, [props.filters])\n\n    const onSelect = (key, currentSelections) => {\n        const _selections = Object.assign({}, selections)\n        _selections[key] = currentSelections\n        setSelections(_selections)\n    }\n\n    const onChange = () => {\n        Object.entries(props.filters).forEach(([k, v]) => {\n            Object.entries(v.filters).forEach(([_k, _v]) => {\n                _v.isSelected = !!selections[k][_k]\n\n                if (_v.custom) {\n                    _v.mapper.prevOutput = Object.assign({}, _v.mapper.output)\n                    _v.value = Object.assign({}, _v.mapper.output)\n                }\n            })\n        })\n\n        props.onChange(Object.assign({}, props.filters))\n        setShowFilters(false)\n    }\n\n    const closeWithoutApply = () => {\n        Object.values(props.filters).forEach(f => Object.values(f.filters).forEach(_f => {\n            if (_f.custom && _f.mapper && _f.mapper.prevOutput) {\n                _f.mapper.output = Object.assign({}, _f.mapper.prevOutput)\n            }\n        }))\n        setShowFilters(false)\n    }\n\n    const onClean = () => {\n        props.onClean()\n        setShowFilters(false)\n    }\n\n    return (\n        <React.Fragment>\n\n            <Button onClick={() => {\n                    initFilters()\n                    setShowFilters(true)\n                }}\n                    icon=\"filter\"\n                    gtmLabel={props.gtmLabel}\n            >\n                <span><Translation id=\"more_filters\" defaultMessage=\"More filters\" /></span>\n            </Button>\n\n            {\n                showFilters && (\n                    <Modal title={props.title}\n                           onClose={closeWithoutApply}\n                           customClass={props.customClassName}\n                           showFooter={false}\n                           gtmLabel={props.gtmLabelModal}\n                    >\n                        <div className=\"filter__body__content\">\n                            {\n                                Object.entries(props.filters).map(([key, _filter]) => (\n                                    <FiltersRow filters={_filter}\n                                                label={_filter.label}\n                                                multiselect={_filter.multiselect}\n                                                key={key}\n                                                onSelect={selections => onSelect(key, selections)}\n                                    />\n                                ))\n                            }\n                            <div className=\"filter__body__content--footer\">\n                                <Button onClick={onClean} customClass=\"clean-filters\">\n                                    <span><Translation id=\"clean_filters\" defaultMessage=\"Clean filters\" /></span>\n                                </Button>\n                                <Button onClick={onChange} inverted gtmLabel={props.gtmLabelApplyFilters}>\n                                    <span><Translation id=\"apply_filters\" defaultMessage=\"Apply filters\" /></span>\n                                </Button>\n                            </div>\n                        </div>\n                    </Modal>\n                )\n            }\n\n        </React.Fragment>\n\n    )\n\n\n\n\n}\n\nexport default FiltersModal","import React from 'react'\nimport { injectIntl } from \"react-intl\";\n\nconst FilterTag = props => {\n\n    return (\n        <div className=\"filter__tag\">\n            <span className=\"filter__tag--text\">\n                <span>{props.label}:&nbsp;{props.intl.formatMessage({ id: props.value })}</span>\n            </span>\n            <span className=\"filter__tag--close\">\n                <button onClick={props.onClose}>\n                X\n                </button>\n            </span>\n        </div>\n    )\n}\n\nexport default injectIntl(FilterTag)","import React, { useEffect, useState } from 'react'\nimport FilterTag from \"./FilterTag\";\nimport Translation from \"../Translation\";\n\nconst FilterTags = props => {\n\n    function getTags(filters) {\n        const _tags = {}\n\n        Object.entries(filters).forEach(([k, f]) => Object.entries(f.filters).forEach(([_k, _f]) => {\n            if (_k !== 'empty' && !!_f.isSelected) {\n                _tags[_k] = {label:f.label, value: _f.label, parentId: k}\n            }\n        }))\n\n        return _tags\n    }\n\n    const [tags, setTags] = useState({})\n\n    useEffect(() => {\n        setTags(getTags(props.filters))\n    }, [props.filters])\n\n\n    const onClose = (id, parentId) => {\n        const newTags = Object.assign({}, tags)\n        delete newTags[id]\n        setTags(newTags)\n        const filters = Object.assign({}, props.filters)\n        filters[parentId].filters[id].isSelected = false\n        if (filters[parentId].filters[id].defaultLabel) filters[parentId].filters[id].label = filters[parentId].filters[id].defaultLabel\n        if (filters[parentId].filters[id].defaultValue) {\n            filters[parentId].filters[id].mapper.output = Object.assign({}, filters[parentId].filters[id].defaultValue)\n            filters[parentId].filters[id].mapper.prevOutput = Object.assign({}, filters[parentId].filters[id].defaultValue)\n        }\n\n       //console.log('TAGAS ' , filters[parentId].filters[id])\n\n        if (!!filters[parentId].filters.empty) {\n            const fromParentTags = Object.values(newTags).filter(v => v.parentId === parentId)\n            if (fromParentTags.length === 0) filters[parentId].filters.empty.isSelected = true\n        }\n\n        if (!newTags[parentId])\n        props.onChange(filters)\n    }\n\n    return Object.keys(tags).length !== 0 ? (\n            <div className=\"filters__tag\">\n                {\n                    Object.entries(tags).map(([id, value]) => {\n                        return <FilterTag id={id} label={value.label} value={value.value} onClose={() => onClose(id, value.parentId)}/>\n                    })\n                }\n                <span className=\"filters__tag--clear-all\"\n                      onClick={props.onClean}\n                >\n                    <Translation id='clean_filters' defaultMessage='Clean filters'/>\n                </span>\n            </div>\n    ) : null\n}\n\nexport default FilterTags","import React from \"react\"\n\nconst SearchInput = ({inputType, inputName, inputValue, inputRef, placeholder, inputOnChange, className, gtmLabel, dataQa, dataQas}) => {\n    return (\n        <input\n            type={inputType}\n            name={inputName}\n            value={inputValue}\n            ref={inputRef}\n            onChange={inputOnChange}\n            className={`form-control search__input__bar ` + className}\n            placeholder={placeholder}\n            gtm-label={gtmLabel}\n            data-qa={dataQa}\n            data-qas={dataQas}\n        />\n    )\n}\n\nexport default SearchInput","import React from 'react'\nimport Joyride, { ACTIONS, EVENTS } from 'react-joyride'\nimport * as CustomStyles from '../styles/CustomStyles'\nimport { connect } from 'react-redux'\nimport { submitWalkthrough } from '../../../store/ui/actions'\nimport { getHasWalkthrough } from '../../../store/login/reducers'\nimport { fetchHasWalkthrough } from '../../../store/login/actions'\nimport Translation from '../../global/Translation'\n\nconst mapStateToProps = (state) => {\n    return {\n        hasWalkthrough: getHasWalkthrough(state, 'ORDER_HISTORY')\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onSubmitWalkthrough: (type, noShowMore) => dispatch(submitWalkthrough(type, noShowMore)),\n        refreshData: () => dispatch(fetchHasWalkthrough())\n    }\n}\n\nclass OrderWalkthrough extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            stepIndex: 0,\n            type: 'ORDER_HISTORY'\n        }\n    }\n\n    /**\n     *  Body content for step one\n     */\n    stepOneContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content__main\">\n                <div className=\"walkthrough__tooltip__content__main--heading\">\n                    <h2><Translation id=\"walkthrough_welcome_to_the_new_tool\" defaultMessage=\"Welcome to the new tool: Order History!\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content__main--info\">\n                    <span><Translation id=\"walkthrough_we_have_many_improvements\" defaultMessage=\"We have many improvements and we want you to know them all. Click on start to learn more about this tool. It will only take you a few seconds.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Body content for step two\n     */\n    stepTwoContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"walkthrough_check_the_status_of_your_orders\" defaultMessage=\"Check the status of your orders and shipments simultaneously\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span><Translation id=\"walkthrough_now_you_can_see_the_status_of_your_orders\" defaultMessage=\"Now you can see the status of your orders and shipments by simply changing the view.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Body content for step three\n     */\n    stepThreeContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"walkthrough_new_quick_filters\" defaultMessage=\"New quick filters\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span><Translation id=\"walkthrough_you_can_choose_if_you_want_to_see_all\" defaultMessage=\"You can choose if you want to see all your orders or just the ones you have made today, the last week, the last month etc... with a single click.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Body content for step four\n     */\n    stepFourContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"walkthrough_and_the_usual_filters\" defaultMessage=\"And the usual filters\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span><Translation id=\"walkthrough_in_more_filters_you_can_further_filter_by\" defaultMessage=\"In More filters you can further filter by date range, order status etc...\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Body content for step five\n     */\n    stepFiveContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"walkthrough_new_quick_order_view\" defaultMessage=\"New quick order view\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span><Translation id=\"walkthrough_visualize_your_product_status_and_more\" defaultMessage=\"Visualize your product, its status and know when the estimated delivery will be.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Determines which step content to display\n     * @returns boolean\n     */\n    breakpointIndicator = () => {\n        if (window.innerWidth <= 767) return true\n        return false\n    }\n    \n    // Desktop version\n    stepFourDesktop = {\n        content: this.stepFourContent(),\n        locale: {\n            next: <span aria-label=\"next\"><Translation id=\"next\" defaultMessage=\"Next\" /></span>,\n            back: <span aria-label=\"back\"><Translation id=\"back\" defaultMessage=\"Back\" /></span>\n        },\n        target: '.order-walkthrough-more-filter-desktop',\n        styles: {\n            buttonSkip: {\n                display: 'none'\n            }\n        }\n    }\n\n    // Responsive version\n    stepFourResponsive = {\n        content: this.stepFourContent(),\n        locale: {\n            next: <span aria-label=\"next\"><Translation id=\"next\" defaultMessage=\"Next\" /></span>,\n            back: <span aria-label=\"back\"><Translation id=\"back\" defaultMessage=\"Back\" /></span>\n        },\n        target: '.order-walkthrough-more-filter-responsive',\n        styles: {\n            buttonSkip: {\n                display: 'none'\n            }\n        }\n    }\n\n    /**\n     * steps\n     */\n    steps = {\n        steps: [\n            {\n                content: this.stepOneContent(),\n                locale: {\n                    next: <span aria-label=\"next\"><Translation id=\"get_started\" defaultMessage=\"Get started\" /></span>,\n                    skip: <span aria-label=\"skip\"><Translation id=\"do_not_show_again\" defaultMessage=\"Do not show again\" /></span>\n                },\n                placement: 'center',\n                target: 'body',\n            },\n            {\n                content: this.stepTwoContent(),\n                locale: {\n                    next: <span aria-label=\"next\"><Translation id=\"next\" defaultMessage=\"Next\" /></span>,\n                    back: <span aria-label=\"back\"><Translation id=\"back\" defaultMessage=\"Back\" /></span>\n                },\n                target: '.header__tabs',\n                styles: {\n                    buttonSkip: {\n                        display: 'none'\n                    }\n                }\n            },\n            {\n                content: this.stepThreeContent(),\n                locale: {\n                    next: <span aria-label=\"next\"><Translation id=\"next\" defaultMessage=\"Next\" /></span>,\n                    back: <span aria-label=\"back\"><Translation id=\"back\" defaultMessage=\"Back\" /></span>\n                },\n                placement: 'bottom-start',\n                target: '.order-walkthrough-filter-quick',\n                styles: {\n                    buttonSkip: {\n                        display: 'none'\n                    }\n                }\n            },\n            this.breakpointIndicator() ? this.stepFourResponsive : this.stepFourDesktop,\n            {\n                content: this.stepFiveContent(),\n                locale: {\n                    last: <span aria-label=\"last\"><Translation id=\"understood\" defaultMessage=\"Understood\" /></span>,\n                    back: <span aria-label=\"back\"></span>\n                },\n                target: '.order__card',\n                styles: {\n                    buttonSkip: {\n                        display: 'none'\n                    }\n                }\n            },\n        ]\n    }\n\n    /**\n     * Callback function to manipulate the walkthrough logic\n     */\n    handleJoyrideCallback = data => {\n        const { action, index, type } = data\n\n        const endStatus = [EVENTS.TOUR_END]\n\n        if ([EVENTS.STEP_AFTER, EVENTS.TARGET_NOT_FOUND].includes(type)) {\n            this.setState({ stepIndex: index + (action === ACTIONS.PREV ? -1 : 1) })\n        }\n\n        if (index === 0) {\n            if (endStatus.includes(type)) {\n                this.props.onSubmitWalkthrough(this.state.type, true).then(() => this.props.refreshData())\n            }\n        } else if (endStatus.includes(type)) {\n            this.props.onSubmitWalkthrough(this.state.type, false).then(() => this.props.refreshData())\n        }\n    }\n\n    render() {\n        const { steps } = this.steps\n        const { hasWalkthrough } = this.props\n\n        return hasWalkthrough && hasWalkthrough.shouldShow ? (\n            <React.Fragment>\n                <Joyride\n                    callback={this.handleJoyrideCallback}\n                    continuous\n                    showProgress\n                    steps={steps}\n                    styles={{\n                        tooltip: CustomStyles.TooltipStyles,\n                        tooltipContent: CustomStyles.TooltipContentStyles,\n                        options: CustomStyles.OptionStyles,\n                        buttonNext: CustomStyles.ButtonNextStyles,\n                        buttonBack: CustomStyles.ButtonBackStyles,\n                        tooltipFooter: CustomStyles.TooltipFooterStyles,\n                        spotlight: CustomStyles.SpotlightSyles\n                    }}\n                    disableScrolling\n                    showSkipButton\n                />\n            </React.Fragment>\n        ) : null\n    }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OrderWalkthrough)","import React from 'react'\nimport ProfileContainer from '../../../profile/ProfileContainer'\nimport NavigationTabs from '../NavigationTabs'\nimport Spinner from '../../../global/Spinner'\nimport NewOrderCard from './NewOrderCard'\nimport Button from '../../../global/Button'\nimport Translation from '../../../global/Translation'\nimport GoBackButton from '../GoBackButton'\nimport OrdersHistoryFilter from './OrdersHistoryFilter'\nimport OrderWalkthrough from '../../../walkthroughs/order/OrderWalkthrough'\n\nclass NewOrderHistory extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            filters: null,\n            shouldRenderWalkthrough: false\n        }\n    }\n\n    componentDidMount() {\n        this.props.setIsOrderHistoryScreen(true)\n    }\n\n    componentWillUnmount() {\n        this.props.setIsOrderHistoryScreen(false)\n    }\n\n    mapFilters = (filters) => {\n        if (filters && (filters.selections || filters.search)) {\n            return [\n                filters.selections && filters.selections.by_date_filter && filters.selections.by_date_filter.value.startDate,\n                filters.selections && filters.selections.by_date_filter && filters.selections.by_date_filter.value.endDate,\n                filters.selections && filters.selections.by_date_filter && filters.selections.by_date_filter.value.typeDate,\n                filters.selections && filters.selections.status_type_filter && filters.selections.status_type_filter.value,\n                filters.selections && filters.selections.shipping_type_filter && filters.selections.shipping_type_filter.value,\n                filters.selections && filters.selections.dist_center_filter && filters.selections.dist_center_filter.value,\n                filters.search\n            ]\n        }\n\n        return [null, null, null, null, null, null, null]\n    }\n\n    fetchOrders = () => {\n        this.props.fetchOrders(\n            this.props.type,\n            ...this.mapFilters(this.state.filters)\n        ).then(() => this.setState({ shouldRenderWalkthrough: true }))\n    }\n\n    fetchOrdersPaginate() {\n        this.props.fetchOrdersPaginate(\n            this.props.type,\n            ...this.mapFilters(this.state.filters),\n            this.props.currentPage + 1\n        )\n    }\n\n    render() {\n        const { orders, orderStatusMap, isLoading, isIkeaCenter, redirect, currentPage, lastPage, adaptedFormat, getMeasure, replaceDotWithComma, locale } = this.props\n\n        return (\n            <React.Fragment>\n                <GoBackButton />\n                <div className=\"box-profile row\">\n                    {/* Sidebar */}\n                    <div className=\"profile-container-box col-12 col-md-4 col-lg-3\">\n                        <ProfileContainer />\n                    </div>\n\n                    <div className=\"col-12 col-xl-9 p-0\">\n                        {isLoading && <Spinner isLoading={isLoading} />}\n                        <div className=\"order-histoy-container\">\n                            <div className=\"order__history__header\">\n                                <div className=\"header__title\">\n                                    <h1>\n                                        <Translation id=\"orders_history\" defaultMessage=\"Order history\" />\n                                    </h1>\n                                </div>\n                                <div className=\"header__subtitle\">\n                                    <h4>\n                                        <Translation id=\"show\" defaultMessage=\"Show\" />\n                                    </h4>\n                                </div>\n                                <NavigationTabs />\n                                <OrdersHistoryFilter onChange={filters => this.setState({filters: filters}, this.fetchOrders)}/>\n                            </div>\n                            {/* <InfiniteScroll dataLength={orders.length} next={() => currentPage < lastPage && this.fetchOrdersPaginate()} hasMore={true} > */}\n                                {orders.length > 0 ? (\n                                    orders.map((order, idx) => (\n                                        <NewOrderCard\n                                            key={idx}\n                                            order={order}\n                                            fetchOrders={this.fetchOrders}\n                                            orderStatusMap={orderStatusMap}\n                                            isIkeaCenter={isIkeaCenter}\n                                            redirect={redirect}\n                                            adaptedFormat={adaptedFormat}\n                                            getMeasure={getMeasure}\n                                            locale={locale}\n                                            replaceDotWithComma={replaceDotWithComma}\n                                        />\n                                    ))\n                                ) : null}\n\n                                {/* Button load more */}\n                                <div className=\"d-flex align-items-center justify-content-center mt-2\">\n                                    <Button onClick={() => this.fetchOrdersPaginate()} size=\"medium\" inline disabled={currentPage >= lastPage || isLoading}>\n                                        {currentPage >= lastPage ? (\n                                            <Translation id=\"no_results\" defaultMessage=\"No results\" />\n                                        ) : (\n                                            <Translation id=\"load_more\" defaultMessage=\"Load more\" />\n                                        )}\n                                    </Button>\n                                </div>\n                           {/*  </InfiniteScroll> */}\n                        </div>\n                    </div>\n                </div>\n                {/* Order history walkthrough */}\n                {this.state.shouldRenderWalkthrough && <OrderWalkthrough /> }\n            </React.Fragment>\n        )\n    }\n}\n\nexport default NewOrderHistory\n","import { connect } from 'react-redux'\nimport NewOrderHistory from './NewOrderHistory'\nimport { injectIntl } from 'react-intl'\nimport { withRouter } from 'react-router-dom'\nimport {\n    getOrders,\n    getOrderStatusMap,\n    getOrdersLoading,\n    getOrdersCurrentPage,\n    getOrdersLastPage\n} from '../../../../store/orders/reducers'\nimport { fetchOrders, fetchOrdersPaginate } from '../../../../store/orders/actions'\nimport { getIsIkeaCenter } from '../../../../store/centers/reducers'\nimport { dispatchPushURL } from '../../../../store/ui/actions'\nimport { getAdaptedFormat, getReplaceDotWithComma, getCtsMeasures } from '../../../../helpers'\nimport { setIsOrderHistoryScreen } from '../../../../store/ui/actions'\nimport { getLanguage } from '../../../../store/ui/reducers'\n\n\nconst mapStateToProps = (state) => {\n    return {\n        orders: getOrders(state),\n        orderStatusMap: getOrderStatusMap(state),\n        isLoading: getOrdersLoading(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        currentPage: getOrdersCurrentPage(state),\n        lastPage: getOrdersLastPage(state),\n        locale: getLanguage(state),\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        replaceDotWithComma: (element, locale) => getReplaceDotWithComma(element, locale, state),\n        getMeasure: (cutToSize) => getCtsMeasures(cutToSize, state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOrders: (type, startDate, endDate, filterTypeDate, status, shippingType, supplierCenter, search) => {\n            return dispatch(fetchOrders(type, startDate, endDate, filterTypeDate, status, shippingType, supplierCenter, search))\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        fetchOrdersPaginate: (type, filterTypeDate, startDate, endDate, status, shippingType, supplierCenter, search, page) => {\n            dispatch(fetchOrdersPaginate(type, filterTypeDate, startDate, endDate, status, shippingType, supplierCenter, search, page))\n        },\n        setIsOrderHistoryScreen: isOrderHistoryScreen => {\n            dispatch(setIsOrderHistoryScreen(isOrderHistoryScreen))\n        }\n    }\n}\n\nconst NewOrderHistoryContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(NewOrderHistory)\n    )\n)\n\nexport default NewOrderHistoryContainer\n","import React from 'react'\nimport OldOrders from './OldOrders'\nimport NewOrderHistoryContainer from './new-order-history/order/NewOrderHistoryContainer'\n\nclass OrdersSelector extends React.Component {\n    render() {\n        let showOldOrders = this.props.isIkeaCenter || !this.props.canViewNewTracking\n        return showOldOrders ? <OldOrders {...this.props} /> : <NewOrderHistoryContainer />\n    }\n}\n\nexport default OrdersSelector\n","import { connect } from 'react-redux'\nimport OrdersSelector from './OrdersSelector'\nimport {\n    getOrders,\n    getOrdersLoading,\n    getOpenOrders,\n    getTransferOrders,\n    canEditOrders,\n    canDeleteOrders,\n    getStatusMap,\n    getOrdersCurrentPage,\n    getOrdersLastPage\n} from '../../store/orders/reducers'\nimport { injectIntl } from 'react-intl'\nimport { fetchOrders, fetchOrdersPaginate, rejectOrder } from '../../store/orders/actions'\nimport { withRouter } from 'react-router-dom'\nimport { getUserType, canViewPreorder } from '../../store/login/reducers'\nimport { getIsIkeaCenter, canOffer, canViewNewTracking, getCenters } from '../../store/centers/reducers'\nimport { getSelectedShippingAddressForIkea, getShippingAddresses } from '../../store/shipping-addresses/reducers'\nimport { dispatchPushURL } from '../../store/ui/actions'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        orders: getOrders(state),\n        centers: getCenters(state),\n        openOrders: getOpenOrders(state),\n        transferOrders: getTransferOrders(state),\n        type: match.params.open,\n        key: match.params.open,\n        isLoading: getOrdersLoading(state),\n        userType: getUserType(state),\n        canEditOrders: canEditOrders(state),\n        canDeleteOrders: canDeleteOrders(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        selectedShippingAddressForIkea: getSelectedShippingAddressForIkea(state),\n        shippingAddressesByUser: getShippingAddresses(state),\n        currentPage: getOrdersCurrentPage(state),\n        lastPage: getOrdersLastPage(state),\n        statusMap: getStatusMap(state),\n        canOffer: canOffer(state),\n        canViewNewTracking: canViewNewTracking(state),\n        hasPreOrder: canViewPreorder(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOrders: (type, startDate, endDate, filterTypeDate, status, shippingType, supplierCenter, search) => {\n            dispatch(fetchOrders(type, startDate, endDate, filterTypeDate, status, shippingType, supplierCenter, search))\n        },\n        fetchOrdersPaginate: (type, filterTypeDate, startDate, endDate, status, shippingType, supplierCenter, search, page) => {\n            dispatch(fetchOrdersPaginate(type, filterTypeDate, startDate, endDate, status, shippingType, supplierCenter, search, page))\n        },\n        rejectOrder: (reservationId, orderId) => {\n            dispatch(rejectOrder(reservationId, orderId))\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        }\n    }\n}\n\nconst OrdersContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(OrdersSelector)\n    )\n)\n\nexport default OrdersContainer\n","import axios from 'axios'\nimport FileDownload from \"js-file-download\";\n\nconst ApiLocation = process.env.REACT_APP_API_HOST\naxios.defaults.headers.common['Content-Type'] = 'application/json'\n\n\nexport const fetchCutToSizeMainParams = (lang, token, centerId) => {\n    return axios.get(`${ApiLocation}/cut-to-size/main_params/${centerId}?lang=${lang}`\n        ,{headers: { Authorization: `Bearer ${token}` }})\n}\n\nexport const fetchCutToSizeSecondaryParams = (elaboration, brand, color, pricingGroup, hasSoleriaDekton, token) => {\n    return axios.post(`${ApiLocation}/cut-to-size/secondary_params`,\n        { elaboration, brand, color, hasSoleriaDekton, pricingGroup },\n        {headers: { Authorization: `Bearer ${token}` }})\n}\n\nexport const askForBudget = (formData, token) => {\n    return axios.post(`${ApiLocation}/cut-to-size/ask_for_budget`, formData,\n        {headers: { Authorization: `Bearer ${token}` }})\n}\n\nexport const preOrderCts = (formData, token) => {\n    return axios.post(`${ApiLocation}/cut-to-size/pre-order-cts`, formData,\n        {headers: { Authorization: `Bearer ${token}` }})\n}\n\nexport const preOrderCtsList = (token,startDate,endDate,project,status,search,page) => {\n    const body = { project, startDate, endDate, status, search, page }\n    return axios.post(`${ApiLocation}/cut-to-size/pre-orders-cts-list`, body, {headers: { Authorization: `Bearer ${token}` }})\n}\nexport const fetchPreOrdersProjectAvailables = token => {\n           return axios.get(`${ApiLocation}/cut-to-size/pre-orders-cts-project-list`, { headers: { Authorization: `Bearer ${token}` } })\n       }\nexport const downloadPackagingTypesPdf = (token) => {\n    const FileDownload = require('js-file-download');\n    return axios.get(process.env.REACT_APP_API_HOST + `/cut-to-size/get-packaging-types-document`,\n        {\n            headers: {Authorization: `Bearer ${token}`},\n            responseType: 'blob'\n        }).then((response) => {\n        FileDownload(response.data, `PackagingTypes.pdf`);\n    });\n}\n\nexport const downloadPreorderFile = (token, file) => {\n    const FileDownload = require('js-file-download');\n    return axios.post(process.env.REACT_APP_API_HOST + `/cut-to-size/get-preorder-file`, {file_data: file},\n        {\n            headers: {Authorization: `Bearer ${token}`},\n            responseType: 'blob'\n        }).then((response) => {\n        FileDownload(response.data, file.file_name);\n    });\n}\n\nexport const sendPreorderMessage = (formData, token) => {\n    return axios.post(`${ApiLocation}/cut-to-size/send-preorder-message`, formData,\n        {headers: { Authorization: `Bearer ${token}` }})\n}\n\nexport const sendApprovePreorderMessage = (formData, token) => {\n    return axios.post(`${ApiLocation}/cut-to-size/send-approve-preorder-message`, formData,\n        {headers: { Authorization: `Bearer ${token}` }})\n}\n\nexport const markMessages = (data, token) => {\n    return axios.put(`${ApiLocation}/cut-to-size/mark-messages`, data,\n        {headers: { Authorization: `Bearer ${token}` }})\n}\n\nexport const cancelPreorder = (data, token) => {\n    return axios.post(`${ApiLocation}/cut-to-size/cancel-preorder`, data,\n        {headers: { Authorization: `Bearer ${token}` }})\n}\n\n// Configurable Bathrooms - START\nexport const fetchConfigurableModels = (lang, token) => {\n    return axios.get(ApiLocation + `/cut-to-size-configurable/get-models?lang=${lang}`, {\n        headers: { Authorization: `Bearer ${token}` }\n    })\n}\n\nexport const fetchConfigurableDrawing = (referenceCode, token) => {\n    return axios.get(`${ApiLocation}/cut-to-size-configurable/drawing/${referenceCode}`, {\n        headers: {\n            Authorization: `Bearer ${token}`\n        }\n    });\n}","import * as api from './api'\nimport {errorHandler} from '../api'\nimport {getToken} from '../login/reducers'\nimport {getLanguage} from '../ui/reducers'\nimport {BrandOptionsMap} from \"../../components/cut-to-size/CutToSizeMaps\"\nimport {getSelectedCenter} from '../centers/reducers'\nimport * as segmentation from '../segmentation/reducers'\n\n\nexport const fetchCutToSizeMainParams = () => (dispatch, getState) => {\n    const state = getState()\n    dispatch({ type: 'FETCH_CUT_TO_SIZE_MAIN_PARAMS_REQUEST' })\n    return  api.fetchCutToSizeMainParams(getLanguage(state), getToken(state), getSelectedCenter(state))\n        .then(response => {\n            // Ordenar las marcas según la posición en BrandOptionsMap\n            response.data && response.data.materials && Object.entries(response.data.materials).forEach(([k, v]) => {\n                if (k != 'CUSTOM_MOBILIARIO' && k != 'BUDGET') {\n                    response.data.materials[k] = Object.entries(v)\n                    .sort(([a],[b]) => BrandOptionsMap[a].position - BrandOptionsMap[b].position)\n                    .reduce((r, [key, value]) => ({ ...r, [key]: value }), {});\n                }                \n            })\n            dispatch({ type: 'FETCH_CUT_TO_SIZE_MAIN_PARAMS_SUCCESS', mainParams: response.data })\n            dispatch(fetchConfigurableModels())\n        })\n        .catch (error => {\n            dispatch({ type: 'FETCH_CUT_TO_SIZE_MAIN_PARAMS_FAILURE' })\n            errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchCutToSizeSecondaryParams = (elaboration, brand, color, pricingGroup, hasSoleriaDekton, callback) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_CUT_TO_SIZE_SECONDARY_PARAMS_REQUEST' })\n    return  api.fetchCutToSizeSecondaryParams(elaboration, brand, color, pricingGroup, hasSoleriaDekton, getToken(getState()))\n        .then(response => {            \n            dispatch({ type: 'FETCH_CUT_TO_SIZE_SECONDARY_PARAMS_SUCCESS', secondaryParams: response.data })\n            if (callback) {\n                callback()\n            }\n        })\n        .catch (error => {\n            dispatch({ type: 'FETCH_CUT_TO_SIZE_SECONDARY_PARAMS_FAILURE' })\n            errorHandler(dispatch, error.response)\n        })\n}\n\nexport const askForBudget = (formData, callback) => (dispatch, getState) => {\n    const state = getState()\n    const lang = getLanguage(state)\n    const centerId = getSelectedCenter(state)\n    formData.append('lang', lang)\n    formData.append('centerId', centerId)\n\n    dispatch({ type: 'CUT_TO_SIZE_ASK_FOR_BUDGET_REQUEST' })\n    return api.askForBudget(formData, getToken(state))\n        .then(response => {            \n            dispatch({ type: 'CUT_TO_SIZE_ASK_FOR_BUDGET_SUCCESS' })\n            dispatch({ type: 'RESET_SEGMENTATION' })\n            if (callback) {\n                callback()\n            }\n        })\n        .catch (error => {\n            console.log('PRE. err' , error)\n            dispatch({ type: 'CUT_TO_SIZE_ASK_FOR_BUDGET_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n            errorHandler(dispatch, error.response)\n        })\n}\n\nexport const requestPreOrder = (formData, callback, segmentationRequested = true) => (dispatch, getState) => {\n    const state = getState()\n\n    if (segmentationRequested) {\n        if (!segmentation.segmentationDone(state)) {\n            dispatch({\n                type: 'SHOW_SEGMENTATION_MODAL',\n                callback: requestPreOrder(formData, callback, false),\n                productId: 'CTS_CUOTATION',\n                outlet: false,\n                productSupplierCenter: null\n            })\n            return false\n        }\n    }\n\n    const lang = getLanguage(state)\n    const centerId = getSelectedCenter(state)\n    const fullSelectedSegmentation = segmentation.getFullSelectedSegmentation(state)\n\n    if (fullSelectedSegmentation.segmentationEvidences) {\n        fullSelectedSegmentation.segmentationEvidences.uploadedFiles.forEach(file => {\n            formData.append('segmentationEvidenceFiles[]', file)\n        })\n        formData.append('segmentationEvidencesPos', JSON.stringify(fullSelectedSegmentation.segmentationEvidences.purchaseOrders))\n    }\n\n    delete fullSelectedSegmentation.segmentationEvidences\n\n    formData.append('lang', lang)\n    formData.append('centerId', centerId)\n    formData.append('segmentation', JSON.stringify(fullSelectedSegmentation))\n\n    dispatch({ type: 'CUT_TO_SIZE_PREORDER_REQUEST' })\n    return api.preOrderCts(formData, getToken(state))\n        .then(response => {\n            dispatch({ type: 'CUT_TO_SIZE_PREORDER_REQUEST_SUCCESS' })\n            dispatch({ type: 'RESET_SEGMENTATION' })\n            if (callback) {\n                callback(response.data)\n            }\n        })\n        .catch (error => {\n            console.log('PRE. err' , error)\n            dispatch({ type: 'CUT_TO_SIZE_PREORDER_REQUEST_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n            errorHandler(dispatch, error.response)\n        })\n}\n\nexport const downloadPackagingTypesPdf = () => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n    return api.downloadPackagingTypesPdf(token)\n}\n\nexport const downloadPreorderFile = (file) => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n    return api.downloadPreorderFile(token, file)\n}\n\nexport const fetchPreOrdersCtsPaginate = (startDate, endDate, filterTypeDate, status = null, search,page, callback = null) => (dispatch, getState) => {\n   const state = getState()\n\n   dispatch({ type: 'FETCH_PRE_ORDERS_CTS_REQUEST' })\n   return api\n       .preOrderCtsList(getToken(state),startDate,endDate,filterTypeDate,status,search,page)\n       .then(response => {\n           // console.log('RESPONSE::' , response)\n           const preorderData = response.data.data.map(p => {\n               try {\n                   p.segmentation = JSON.parse(p.segmentation)\n               } catch (e) {\n                   p.segmentation = {}\n               }\n               // p.segmentation = JSON.parse(p.segmentation)\n               return p\n           })\n           dispatch({ type: 'FETCH_PRE_ORDERS_CTS_SUCCESS', data: preorderData, ordersCurrentPage: response.data.current_page, ordersLastPage: response.data.last_page })\n           if (callback) {\n               callback()\n           }\n       })\n       .catch(error => {\n           dispatch({ type: 'FETCH_PRE_ORDERS_CTS_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n           errorHandler(dispatch, error.response)\n       })\n}\nexport const fetchPreOrdersProjectAvailables = () => (dispatch,getState) => {\n dispatch({ type: 'FETCH_PRE_ORDERS_CTS_PROJECT_AVAILABLES_REQUEST' })\n return api\n     .fetchPreOrdersProjectAvailables(getToken(getState()))\n     .then(response => {\n         // console.log('RESPONSE::' , response)\n         \n         dispatch({\n             type: 'FETCH_PRE_ORDERS_CTS_PROJECT_AVAILABLES_SUCCESS',\n             projects: response.data,\n       \n         })\n     })\n     .catch(error => {\n         dispatch({ type: 'FETCH_PRE_ORDERS_CTS_PROJECT_AVAILABLES_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n     })\n}\nexport const fetchPreOrdersCts = (callback) => (dispatch, getState) => {\n   const state = getState()\n\n   dispatch({ type: 'FETCH_PRE_ORDERS_CTS_REQUEST' })\n   return api\n       .preOrderCtsList(getToken(state))\n       .then(response => {\n           const preorderData = response.data.data.map(p => {\n               p.isCancelable = p.status === 'TECHNICAL_REVIEW'\n               try {\n                   p.segmentation = JSON.parse(p.segmentation)\n               } catch (e) {\n                    p.segmentation = {}\n               }\n               // p.segmentation = JSON.parse(p.segmentation)\n               return p\n           })\n           dispatch({ type: 'FETCH_PRE_ORDERS_CTS_SUCCESS',data: preorderData})\n           if (callback) {\n               callback()\n           }\n       })\n       .catch(error => {\n           dispatch({ type: 'FETCH_PRE_ORDERS_CTS_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n           errorHandler(dispatch, error.response)\n       })\n}\n\nexport const sendPreorderMessage = (formData, callback) => (dispatch, getState) => {\n    const state = getState()\n    const lang = getLanguage(state)\n    formData.append('lang', lang)\n    dispatch({ type: 'CUT_TO_SIZE_SEND_PREORDER_MESSAGE' })\n    return api.sendPreorderMessage(formData, getToken(state))\n        .then(response => {\n            dispatch({\n                type: 'CUT_TO_SIZE_SEND_PREORDER_MESSAGE_SUCCESS',\n                preorderId: response.data.preorderId,\n                communications: response.data.communications,\n                files: response.data.files\n            })\n\n            if (callback) {\n                callback()\n            }\n        })\n        .catch (error => {\n            console.log('PRE. err' , error)\n            dispatch({ type: 'CUT_TO_SIZE_SEND_PREORDER_MESSAGE_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n            errorHandler(dispatch, error.response)\n        })\n}\n\nexport const sendApprovePreorderMessage = (formData, callback) => (dispatch, getState) => {\n    const state = getState()\n    const lang = getLanguage(state)\n    formData.append('lang', lang)\n    dispatch({ type: 'CUT_TO_SIZE_SEND_APPROVE_PREORDER_MESSAGE' })\n    return api.sendApprovePreorderMessage(formData, getToken(state))\n        .then(response => {\n            dispatch({\n                type: 'CUT_TO_SIZE_SEND_APPROVE_PREORDER_MESSAGE_SUCCESS',\n                preorderId: response.data.preorderId,\n                communications: response.data.communications,\n                files: response.data.files\n            })\n\n            if (callback) {\n                callback()\n            }\n        })\n        .catch (error => {\n            console.log('PRE. err' , error)\n            dispatch({ type: 'CUT_TO_SIZE_SEND_APPROVE_PREORDER_MESSAGE_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n            errorHandler(dispatch, error.response)\n        })\n}\n\nexport const markMessagesAsReaded = (preorderId) => (dispatch, getState) => {\n    const state = getState()\n    const data = {preorder_id: preorderId}\n    dispatch({ type: 'CUT_TO_SIZE_MARK_MESSAGES_AS_READED' })\n    return api.markMessages(data, getToken(state))\n        .then(response => {\n            dispatch({\n                type: 'CUT_TO_SIZE_MARK_MESSAGES_AS_READED_SUCCESS'\n            })\n        })\n        .catch (error => {\n            console.log('PRE. err' , error)\n            dispatch({ type: 'CUT_TO_SIZE_MARK_MESSAGES_AS_READED_FAILURE', payload: { statusText: error.response.data.err, values: error.response.data.info } })\n            errorHandler(dispatch, error.response)\n        })\n}\n\nexport const cancelPreorder = (preorderId) => async (dispatch, getState) => {\n    const state = getState()\n    const data = {preorder_id: preorderId}\n    dispatch({ type: 'CUT_TO_SIZE_CANCEL_PREORDER' })\n\n    return api.cancelPreorder(data, getToken(state))\n        .then(response => {\n            dispatch({type: 'CUT_TO_SIZE_CANCEL_PREORDER_SUCCESS'})\n            dispatch(fetchPreOrdersCts())\n            return Promise.resolve()\n        })\n        .catch (error => {\n            console.log('PRE. err' , error)\n            dispatch({ type: 'CUT_TO_SIZE_CANCEL_PREORDER_FAILURE', message: error.response.data.info })\n            errorHandler(dispatch, error.response)\n            return Promise.reject(error.response.data.info)\n        })\n}\n\n// Configurable Bathrooms - START\n\nexport const fetchConfigurableModels = () => (dispatch, getState) => {\n    const state = getState()\n    const token = getToken(state)\n    const lang = getLanguage(state)\n\n    dispatch({ type: 'FETCH_CONFIGURABLE_BATHS_MODELS_REQUEST' })\n\n    return api.fetchConfigurableModels(lang, token)\n        .then((response) => {\n            dispatch({ \n                type: 'FETCH_CONFIGURABLE_BATHS_MODELS_SUCCESS',\n                configurableModels: response.data\n            })\n    })\n    .catch ((error) => {\n        dispatch({ type: 'FETCH_CONFIGURABLE_BATHS_MODELS_FAILURE', message: error.response.data.info })\n    })\n}\n\nexport const addConfigurableInProgress = (config) => (dispatch) => {\n    const refcode = config && config.reference\n    \n    return new Promise((resolve) => {\n        dispatch({ \n            type: 'ADD_CONFIGURABLE_IN_PROGRESS', \n            refcode, \n            configData: config \n        })\n        \n        resolve()\n    })\n}\n\nexport const addConfigurablePlanAcceptanceChecked = (refcode, checked = false) => (dispatch) => {\n    return new Promise((resolve) => {\n        dispatch({ \n            type: 'ADD_CONFIGURABLE_PLAN_ACCEPTANCE_CHECKED', \n            refcode, \n            isPlanAcceptanceChecked: checked \n        })\n        \n        resolve()\n    })\n}\n\nexport const addConfigurableModifiedList = (refcode, isModified = false) => (dispatch) => {\n    dispatch({ \n        type: 'ADD_CONFIGURABLE_MODIFIED_LIST', \n        refcode, \n        isConfigurableModified: isModified \n    })\n}\n\nexport const fetchConfigurableDrawing = (referenceCode) => (dispatch, getState) => {\n    dispatch({ type: 'FETCH_CONFIGURABLE_DRAWING_REQUEST' })\n\n    const token = getToken(getState())\n\n    return api.fetchConfigurableDrawing(referenceCode, token)\n        .then((response) => {\n            dispatch({\n                type: 'FETCH_CONFIGURABLE_DRAWING_SUCCESS',\n                configurableDrawing: response.data\n            })\n            return response\n        })\n        .catch((error) => {\n            dispatch({\n                type: 'FETCH_CONFIGURABLE_DRAWING_FAILURE',\n                message: error.response.data.info\n            });\n            throw error\n        })\n}","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\n\nclass OrderTransfersStatus extends React.Component {\n    render() {\n        const { status } = this.props\n        let avion = ['A', 'B', 'C'].includes(status)\n        let lupa = ['B', 'C'].includes(status)\n        let tick = ['C'].includes(status)\n\n        return (\n            <div>\n                <div className=\"tracking-progress-bar\">\n                    {avion && (\n                        <div>\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                                                            ${avion ? 'tracking-progress-bar__item--active' : null}`}\n                            >\n                                <i className=\"fal fa-paper-plane\" />\n                            </div>\n\n                            <span className={`tracking-progress-bar__item__bar ${lupa ? 'tracking-progress-bar__item__bar--active' : null}`} />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                            ${lupa ? 'tracking-progress-bar__item--active' : null}`}\n                            >\n                                <i className=\"fal fa-search\" />\n                            </div>\n\n                            <span className={`tracking-progress-bar__item__bar ${tick ? 'tracking-progress-bar__item__bar--active' : null}`} />\n                            <div\n                                className={`tracking-progress-bar__item tracking-progress-bar__item--first\n                            ${tick ? 'tracking-progress-bar__item--active' : null}`}\n                            >\n                                <i className=\"fal fa-check\" />\n                            </div>\n                        </div>\n                    )}\n                </div>\n                {/* <span>\n                    {original.statusText &&\n                        this.props.intl.formatMessage({\n                            id: original.statusText\n                                .replace(/ /g, '_')\n                                .replace(/\\//g, '_')\n                                .toLowerCase()\n                        })}\n                </span> */}\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(OrderTransfersStatus)\n","import debounce  from 'lodash/debounce'\nimport { fetchPreOrdersCts, fetchPreOrdersCtsPaginate } from './../../store/cut-to-size/actions'\nimport React from 'react'\nimport Translation from '../global/Translation'\nimport LocalizedLink from '../global/LocalizedLink'\nimport Button from '../global/Button'\nimport { injectIntl } from 'react-intl'\nimport OrderTransfersStatus from './OrderTransfersStatus'\nimport moment from 'moment'\nimport Timeline from './Timeline'\nimport { getOrderStatusMap } from '../../store/orders/reducers'\nimport Select from 'react-select'\nimport DatePicker from 'react-datepicker'\n\nclass PreOrdersCtsFilters extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            startDate: moment().add(-90, 'days'),\n            endDate: moment(),\n            filterProject: null,\n            filterTypeOrder: null,\n            showDetails: false,\n            search:''\n        }\n    }\n\n    componentDidMount() {}\n    changeTypeOrder = e => {\n        this.setState({ filterTypeOrder: e.value }, () => this.fetchOrders())\n    }\n\n    changeStartDate = date => {\n        this.setState({ startDate: date })\n    }\n\n    changeEndDate = date => {\n        this.setState({ endDate: date }, () => this.fetchOrders())\n    }\n\n    changeTypeProject = e => {\n        this.setState({ filterProject: e.value }, () => this.fetchOrders())\n    }\n    fetchOrders = () => {\n        this.props.fetchPreOrdersCtsPaginate(this.state.startDate, this.state.endDate, this.state.filterProject, this.state.filterTypeOrder, this.state.search, 1)\n    }\n    searchDebounce = debounce(() => {\n        if ((this.state.search && this.state.search.length > 2) || (!this.state.search || this.state.search.length === 0)) {\n            this.fetchOrders()\n        }\n    }, 500)\n\n    render() {\n        const inputProjectType = (\n            <Select\n                options={\n                    this.props.projectList &&\n                    this.props.projectList.length > 0 &&\n                    this.props.projectList.map(item => {\n                        return {\n                            label: this.props.intl.formatMessage({ id: item.project }),\n                            value: item.project\n                        }\n                    })\n                }\n                value={this.state.filterProject}\n                clearable={false}\n                onChange={this.changeTypeProject}\n                className={`${this.props.isNewVersion ? 'customDropdown' : 'Select--sm form-control form-control-sm flex-grow-1'}`}\n            />\n        )\n        const inputDateFrom = (\n            <DatePicker\n                selected={this.state.startDate}\n                selectsStart={true}\n                startDate={this.state.startDate}\n                endDate={this.state.endDate}\n                maxDate={moment().add(12, 'month')}\n                onChange={selectedOption => this.changeStartDate(selectedOption, 'startDate')}\n                onFocus={() => this.setState({ endDate: null })}\n                autoComplete=\"off\"\n                onKeyDown={e => e.preventDefault()}\n                showMonthDropdown\n                showYearDropdown\n                isClearable={true}\n                className={`${this.props.isNewVersion ? 'form-control form-control-sm date customDatePicker' : 'form-control form-control-sm date'}`}\n            />\n        )\n        const inputDateTo = (\n            <DatePicker\n                selected={this.state.endDate}\n                selectsEnd\n                startDate={this.state.startDate}\n                endDate={this.state.endDate}\n                minDate={this.state.startDate}\n                maxDate={moment(this.state.startDate).add(12, 'month')}\n                onChange={selectedOption => this.changeEndDate(selectedOption, 'endDate')}\n                autoComplete=\"off\"\n                onKeyDown={e => e.preventDefault()}\n                showMonthDropdown\n                showYearDropdown\n                isClearable={true}\n                disabled={!this.state.startDate}\n                className={`${this.props.isNewVersion ? 'form-control form-control-sm date customDatePicker' : 'form-control form-control-sm date'}`}\n            />\n        )\n        const inputStatus = (\n            <Select\n                options={['REQUESTED', 'TECHNICAL_REVIEW', 'CSTMR_APPROVAL', 'ORDER_CREATED', 'CANCELLED'].map(item => {\n                    return {\n                        label: this.props.intl.formatMessage({ id: item }),\n                        value: item\n                    }\n                })}\n                value={this.state.filterTypeOrder}\n                clearable={false}\n                onChange={this.changeTypeOrder}\n                className={`${this.props.isNewVersion ? 'customDropdown' : 'Select--sm form-control form-control-sm flex-grow-1'}`}\n            />\n        )\n        const inputSearch = (\n            <input\n                type=\"text\"\n                data-qa=\"query\"\n                placeholder={this.props.intl.formatMessage({\n                    id: 'search'\n                })}\n                value={this.state.search}\n                onChange={e => this.setState({ search: e.target.value })}\n                onKeyUp={this.searchDebounce}\n                onPaste={this.searchDebounce}\n                className={`${this.props.isNewVersion ? 'form-control' : 'search-box form-control form-control-sm'}`}\n            />\n        )\n\n        return (\n            <React.Fragment>\n            {!this.props.isNewVersion ? (\n                <div className=\"row order_filters\">\n                    {this.props.type !== 'transfer' && (\n                        <React.Fragment>\n                            <div\n                                className={`col-12 col-lg-10  order-2 order-sm-1   group_date_picker justify-content-between d-sm-block my-1 ${this.state.showFilter ? '' : 'd-none'}`}\n                            >\n                                <div className=\"row\">\n                                    <div className={'col-12 col-lg-3'}>\n                                        <div className=\"name\">\n                                            <Translation id=\"project_type\" defaultMessage=\"Project type\" />\n                                        </div>\n                                        {inputProjectType}\n                                    </div>\n\n                                    <div className=\"group_date_picker__item col-6 col-lg-3\">\n                                        <div className=\"name\">\n                                            <Translation id=\"from\" defaultMessage=\"From\" /> <i className=\"fal fa-chevron-down\" />\n                                        </div>                                     \n                                        {inputDateFrom}\n                                    </div>\n\n                                    <div className=\"group_date_picker__item col-6 col-lg-3\">\n                                        <div className=\"name\">\n                                            <Translation id=\"to\" defaultMessage=\"To\" /> <i className=\"fal fa-chevron-down\" />\n                                        </div>\n                                        {inputDateTo}\n                                    </div>\n\n                                    <div className={'col-12 col-lg-3'}>\n                                        <div className=\"name\">\n                                            <Translation id=\"status\" defaultMessage=\"Status\" />\n                                        </div>                                     \n                                        {inputStatus}\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"col-12 col-lg-2  order-1 order-sm-4 order-lg-2 my-1\">\n                                <div className={'d-sm-flex align-items-end'} style={{ height: '100%' }}>\n                                    <div className=\"search-bar search-bar--thin w-100\" style={{ minWidth: 'fit-content' }}>        \n                                        {inputSearch}\n                                    </div>\n                                </div>\n                            </div>\n                        </React.Fragment>\n                    )}\n                </div>\n            ) : (\n                <div>\n                    {this.props.type !== 'transfer' && (\n                        <React.Fragment>\n                        <div className=\"row preorder__cts__filter\">\n                            <div className=\"col-12 p-0\">\n                                <div className=\"preorder__cts__filter--inputs\">\n                                    <div className=\"col-12 col-md-6 d-flex p-0 preorder__cts__filter--column1\">\n                                        <div className=\"preorder__cts--project\">                                      \n                                            <label className=\"font-bold\"><Translation id=\"filter_by\" defaultMessage=\"Filter by\" /></label>\n                                            <div>\n                                                {inputProjectType}\n                                            </div>\n                                        </div>\n                                        <div className=\"preorder__cts--datefrom\">\n                                            <label className=\"font-bold\"><Translation id=\"from\" defaultMessage=\"From\" /></label>\n                                            <div>\n                                                {inputDateFrom}\n                                            </div>                            \n                                        </div>\n                                    </div>\n                                    <div className=\"col-12 col-md-6 d-flex p-0 preorder__cts__filter--column2\">\n                                        <div className=\"preorder__cts--dateto\">\n                                            <label className=\"font-bold\"><Translation id=\"to\" defaultMessage=\"To\" /></label>\n                                            <div>\n                                                {inputDateTo}\n                                            </div>\n                                        </div>\n                                        <div className=\"preorder__cts--status\">\n                                            <label className=\"font-bold\"><Translation id=\"status\" defaultMessage=\"Status\" /></label>\n                                            <div>\n                                                {inputStatus}\n                                            </div>                                     \n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"col-12 p-0\">\n                                <div className=\"preorder__cts--search\">        \n                                    {inputSearch}\n                                    <i class=\"fa fa-search\" aria-hidden=\"true\" />\n                                </div>                           \n                            </div>\n                        </div>\n                        </React.Fragment>\n                    )}\n                </div>\n            )}\n            </React.Fragment>\n        )\n    }\n}\n\nexport default injectIntl(PreOrdersCtsFilters)\n","import InfiniteScroll from 'react-infinite-scroll-component';\nimport React from 'react'\nimport Translation from '../global/Translation'\nimport LocalizedLink from '../global/LocalizedLink'\nimport Button from '../global/Button'\nimport {defineMessages, injectIntl} from 'react-intl'\nimport moment from 'moment'\nimport Timeline from './Timeline'\nimport PreOrdersCtsFilters from \"./PreOrdersCtsFilters\";\nimport {BudgetMessages} from \"../cut-to-size/CutToSizeMaps\";\nimport confirm from \"../global/extendedConfirm\";\nimport Spinner from \"../global/Spinner\";\nimport ProfileContainer from \"../profile/ProfileContainer\"\n\ndefineMessages({\n    REQUESTED: {\n        id: 'REQUESTED',\n        description: 'REQUESTED',\n        defaultMessage: 'Order request created'\n    },\n    TECHNICAL_REVIEW: {\n        id: 'TECHNICAL_REVIEW',\n        description: 'TECHNICAL_REVIEW',\n        defaultMessage: 'Technical review'\n    },\n    CSTMR_APPROVAL: {\n        id: 'CSTMR_APPROVAL',\n        description: 'CSTMR_APPROVAL',\n        defaultMessage: 'Customer approval'\n    },\n    ORDER_CREATED: {\n        id: 'ORDER_CREATED',\n        description: 'ORDER_CREATED',\n        defaultMessage: 'Order created'\n    },\n    CANCELLED: {\n        id: 'CANCELLED',\n        description: 'CANCELLED',\n        defaultMessage: 'Order request cancelled'\n    },\n    CSTMR_CANCEL: {\n        id: 'CSTMR_CANCEL',\n        description: 'CSTMR_CANCEL',\n        defaultMessage: 'Order cancelled by customer'\n    }\n})\n\nexport const TimelinePreOrder = (props) => {\n    const orderStatusMap = {\n        REQUESTED: { textToShow: props.intl.formatMessage({id:\"REQUESTED\"}), editable: false, pos:0 },\n        TECHNICAL_REVIEW: { textToShow: props.intl.formatMessage({id:\"TECHNICAL_REVIEW\"}), editable: false, pos:1 },\n        CSTMR_APPROVAL: { textToShow: props.intl.formatMessage({id:\"CSTMR_APPROVAL\"}), editable: false, pos:2 },\n        ORDER_CREATED: { textToShow: props.intl.formatMessage({id:\"ORDER_CREATED\"}), editable: false, pos:3 },\n        CANCELLED: { textToShow: props.intl.formatMessage({id:\"CANCELLED\"}), editable: false, pos:4 },\n        CSTMR_CANCEL: { textToShow: props.intl.formatMessage({id:\"CSTMR_CANCEL\"}), editable: false, pos:5 }\n    }\n\n    const getDeliveries = () => {\n        const deliveries = []\n\n        const lastRecord = props.preOrder.records.slice(-1)[0];\n        const records = {}\n        props.preOrder.records.forEach(record => records[record.status] = record)\n\n        if (!lastRecord) return []\n\n        if (lastRecord.status === 'CANCELLED' || lastRecord.status === 'CSTMR_CANCEL') {\n            Object.entries(orderStatusMap).forEach(([k, v]) => {\n                const record = records[k]\n                if (record) {\n                    deliveries.push({\n                        active: getStepStatus(k),\n                        alert: false,\n                        date: record.created_at,\n                        statusText: k,\n                        current: props.preOrder.status === k,\n                        danger: k === 'CANCELLED' || k === 'CSTMR_CANCEL'\n                    })\n                }\n            })\n        } else {\n            Object.entries(orderStatusMap).forEach(([k, v]) => {\n                if (k !== 'CANCELLED' && k !== 'CSTMR_CANCEL') {\n                    const date = records[k] && records[k].created_at\n                    deliveries.push({\n                        active: getStepStatus(k), alert: false, date: date, statusText: k, current: props.preOrder.status === k\n                    })\n                }\n            })\n        }\n\n        return deliveries\n    }\n\n    const getStepStatus = (stepName) => {\n        const stepStatusPos = orderStatusMap[stepName].pos\n        const preOrderStatusPos = orderStatusMap[props.preOrder.status].pos\n\n        return stepStatusPos <= preOrderStatusPos\n    }\n\n    return <Timeline\n        orderStatusMap={orderStatusMap}\n        delivery={getDeliveries()}\n        withDates\n        {...props}\n    />\n}\n\nclass PreOrdersCts extends React.Component {\n    state = {\n        width: window.innerWidth\n    }\n\n    componentDidMount() {\n        this.props.clearPreOrderCts()\n        this.props.fetchPreOrdersCts()\n        this.props.fetchPreOrdersProjectAvailables()\n    }\n\n    fetchPreOrdersPaginate = () => {\n        this.props.fetchPreOrdersCtsPaginate(\n            this.state.startDate,\n            this.state.endDate,\n            this.state.filterProject,\n            this.state.filterTypeOrder,\n            this.state.search,\n            this.props.currentPage + 1\n        )\n    }\n\n    confirmRejectOrder = (preorderId) => {\n        return confirm(\n            this.props.intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER' }),\n            {\n                advise:<React.Fragment>\n                    <i className=\"fal fa-exclamation-triangle\"></i>&nbsp;\n                    {this.props.intl.formatMessage({ id: 'CONFIRM_REJECT_PREORDER_ADVISE' })}\n                </React.Fragment>,\n                textCancel:this.props.intl.formatMessage({ id: 'CONFIRM_REJECT_PREORDER_CANCEL_BUTTON' }),\n                textOk:this.props.intl.formatMessage({ id: 'CONFIRM_REJECT_PREORDER_OK_BUTTON' })\n            }\n        )\n        .then(\n            confirm => {\n                this.props.cancelPreorder(preorderId)\n                    .then(() => this.forceUpdate())\n                    // .catch(error => alert(error))\n            },\n            cancel => {\n                return Promise.reject()\n            }\n        )\n    }\n\n    render() {\n        const isMobile = this.state.width <= 768\n        const loadMoreButton = (\n            <Button\n                onClick={() => this.fetchPreOrdersPaginate()}\n                size=\"medium\"\n                disabled={this.props.currentPage >= this.props.lastPage || this.props.isLoading}\n            >\n                {this.props.currentPage >= this.props.lastPage ? (\n                    <Translation id=\"no_more_result\" defaultMessage=\"No more results\" />\n                ) : (\n                    <Translation id=\"load_more\" defaultMessage=\"Load more\" />\n                )}\n            </Button>\n        )\n        const unreadedMails = (\n            <div\n                style={{\n                    backgroundColor: '#FF6805',\n                    borderRadius: '50%',\n                    position: 'absolute',\n                    width: '28px',\n                    height: '28px',\n                    top: '-14px',\n                    right: '-12px',\n                    display: 'flex',\n                    alignItems: 'center',\n                    justifyContent: 'center'\n                }}\n                className=\"preorder-unread-msg-icon\"\n            >\n            <i style={{ color: 'white', fontSize: '16px' }} className=\"fal fa-bell\" />\n        </div>\n        )\n\n        return (\n            <React.Fragment>\n                <div className=\"box-profile row\">\n                    <div className=\"box-profile-menu col-12 col-md-4 col-lg-3\">\n                        <ProfileContainer />\n                    </div>\n                    <div className=\"col-12 col-xl-9\">\n                        <div className=\"profile-form\">\n                            <div className=\"col-12\">\n                                <PreOrdersCtsFilters\n                                    currentPage={this.props.currentPage}\n                                    fetchPreOrdersCtsPaginate={this.props.fetchPreOrdersCtsPaginate}\n                                    projectList={this.props.projectList}\n                                    orderStatusMap={this.orderStatusMap}\n                                    isNewVersion={this.props.isNewVersion}\n                                />\n                            </div>\n                        </div>\n\n                        <InfiniteScroll\n                            dataLength={this.props.preOrdersCts.length}\n                            next={() => this.props.currentPage < this.props.lastPage && this.fetchPreOrdersPaginate()}\n                            hasMore={true}\n                            loader={' '}\n                            endMessage={' '}\n                        >\n\n                        {this.props.preOrdersCts &&\n                            this.props.preOrdersCts.length > 0 &&\n                            this.props.preOrdersCts.map(preOrder => {\n                                const hasUnreadedMails = !!preOrder.communications.find(p => p.is_read == 0)\n                                    return (\n                                        <section key={'preorder-key-' + preOrder.id} className=\"preorder__history\">\n                                            <div class=\"preorder__history--header\">\n                                                <div className=\"preorder__history--header--status\">\n                                                    <h4>\n                                                        <Translation id=\"status\" defaultMessage=\"Status\" />:&nbsp;{this.props.intl.formatMessage({ id: preOrder.status })}\n                                                    </h4>\n                                                </div>\n                                                <div className=\"preorder__history--header-id\">\n                                                    <div>\n                                                        <Translation id=\"preorder_id\" defaultMessage=\"Pre-Order ID\" />\n                                                        :&nbsp;\n                                                        <span>\n                                                            {preOrder.reservation_id ? preOrder.reservation_id : <Translation id=\"pending\" defaultMessage=\"Pending\" />}\n                                                        </span>\n                                                    </div>\n                                                    <div>\n                                                        <Translation id=\"order_id\" defaultMessage=\"Order ID\" />\n                                                        :&nbsp;\n                                                        <span>\n                                                            {preOrder.order_id ? preOrder.order_id : <Translation id=\"pending\" defaultMessage=\"Pending\" />}\n                                                        </span>\n                                                    </div>\n                                                    <div>\n                                                        <Translation id=\"date\" defaultMessage=\"Date\" />\n                                                        :&nbsp;{moment(preOrder.created_at).format('L')}\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"preorder__history--content row\">\n                                                <div className=\"col-12 col-md-5 col-lg-3 p-0 preorder__history--content--summary\">\n                                                    <div>\n                                                        <h5>\n                                                            <Translation id=\"pre_order_summary\" defaultMessage=\"Pre-order summary\" />\n                                                        </h5>\n                                                    </div>\n                                                    <div>\n                                                        <span className=\"summary__project--title\"><Translation id=\"project_type\" defaultMessage=\"Project type\" /></span>\n                                                        <span className=\"summary__project--name\">:&nbsp;{this.props.intl.formatMessage(BudgetMessages[preOrder.project])}</span>\n                                                    </div>\n                                                    <div>\n                                                        <span className=\"summary__project--title\"><Translation id=\"purchase-order\" defaultMessage=\"Your reference\" /></span>\n                                                        <span className=\"summary__project--name\">:&nbsp;{preOrder.purchase_order}</span>\n                                                    </div>\n                                                </div>\n                                                <div className=\"col-12 col-md-7 col-lg-6 preorder__history--content-timeline\">\n                                                    <div><TimelinePreOrder preOrder={preOrder} intl={this.props.intl} condensed checkMark={!isMobile} /></div>\n                                                    <div>\n                                                        <span className=\"timeline--lastupdate\"><Translation id=\"last_update\" defaultMessage=\"Last update\" />\n                                                        :&nbsp;{moment(preOrder.created_at).format('L')}</span>\n                                                    </div>\n                                                </div>\n                                                <div className=\"col-12 col-md-12 col-lg-3 preorder__history--content-description\">\n                                                    {preOrder.status === 'ORDER_CREATED' && (\n                                                        <div>\n                                                            <h5>{this.props.intl.formatMessage({ id: 'ORDER_CREATED' })}</h5>\n                                                            <span><Translation id=\"ORDER_CREATED_LONG\" defaultMessage=\"This pre-Order is closed. Now you have a new order on your order history.\"/></span>\n                                                            <div>\n                                                                <LocalizedLink routeId=\"ROUTE_PROFILE\" params={{ filter: 'view-order', open: preOrder.reservation_id }} className=\"preorder__history--vieworder\">\n                                                                    <Translation id=\"click_here\" defaultMessage=\"Click here\" />\n                                                                </LocalizedLink>\n                                                            </div>\n                                                        </div>\n                                                    )}\n                                                    {preOrder.status === 'TECHNICAL_REVIEW' && (\n                                                        <div>\n                                                            <h5>{this.props.intl.formatMessage({ id: 'TECHNICAL_REVIEW' })}</h5>\n                                                            <span><Translation id=\"TECHNICAL_REVIEW_LONG\" defaultMessage=\"This pre-Order is under review.\"/></span>\n                                                        </div>\n                                                    )}\n                                                    {preOrder.status === 'CSTMR_APPROVAL' && (\n                                                        <div>\n                                                            <h5>{this.props.intl.formatMessage({ id: 'CSTMR_APPROVAL' })}</h5>\n                                                            <span><Translation id=\"CSTMR_APPROVAL_LONG\" defaultMessage=\"This pre-Order has beem approved by the customer.\"/></span>\n                                                        </div>\n                                                    )}\n                                                    {preOrder.status === 'REQUESTED' && (\n                                                        <div>\n                                                            <h5>{this.props.intl.formatMessage({ id: 'REQUESTED' })}</h5>\n                                                            <span><Translation id=\"REQUESTED_LONG\" defaultMessage=\"This pre-Order is pending confirmation.\"/></span>\n                                                        </div>\n                                                    )}\n                                                    {preOrder.status === 'CANCELLED' && (\n                                                        <div>\n                                                            <h5>{this.props.intl.formatMessage({ id: 'CANCELLED' })}</h5>\n                                                            <span><Translation id=\"CANCELLED_LONG\" defaultMessage=\"This pre-Order has been cancelled.\"/></span>\n                                                        </div>\n                                                    )}\n                                                    {preOrder.status === 'CSTMR_CANCEL' && (\n                                                        <div>\n                                                            <h5>{this.props.intl.formatMessage({ id: 'CSTMR_CANCEL' })}</h5>\n                                                            <span><Translation id=\"CANCELLED_BY_CUSTOMER\" defaultMessage=\"Order request cancelled by customer.\"/></span>\n                                                        </div>\n                                                    )}\n\n                                                    <div className=\"preorder__history--btn-container\">\n                                                        <LocalizedLink routeId=\"ROUTE_PROFILE\" params={{ filter: 'pre-orders-cts-details', open: preOrder.id }}>\n                                                            <Button className=\"bt-dark no-bo preorder__history--viewdetails\">\n                                                                <Translation id=\"preorder-details\" defaultMessage=\"Pre-order Details\" />\n                                                                <i class=\"fas fa-chevron-right\"></i>\n                                                            </Button>\n                                                        </LocalizedLink>\n                                                        {hasUnreadedMails && (unreadedMails)}\n                                                    </div>\n                                                    {\n                                                    preOrder.isCancelable && (\n                                                        <div className=\"preorder__history--cancel\" onClick={()=> this.confirmRejectOrder(preOrder.id)}>\n                                                            <i className=\"fal fa-times\"/>&nbsp;&nbsp;\n                                                            <Translation id=\"cancel_order\" defaultMessage=\"Cancel order\" />\n                                                        </div>\n                                                    )\n                                                }\n                                                </div>\n                                            </div>\n                                        </section>\n                                    )\n                                }\n                            )\n                        }\n                        </InfiniteScroll>\n                        <div className=\"row\">\n                            <div className=\"col-12 mb-4 pt-2\" style={{ display: 'flex', justifyContent: 'center' }}>\n                                {loadMoreButton}\n                            </div>\n                        </div>\n                    </div>\n                    <Spinner isLoading={this.props.isLoading}></Spinner>\n                </div>\n            </React.Fragment>\n        )\n    }\n}\n\nexport default injectIntl(PreOrdersCts)\n","import {\n    getPreOrdersCts,\n    getPreOrdersCurrentPage,\n    getPreOrdersLastPage,\n    getPreOrdersProjectAvailables,\n    isLoading\n} from '../../store/cut-to-size/reducers';\nimport {\n    fetchPreOrdersCts,\n    fetchPreOrdersCtsPaginate,\n    fetchPreOrdersProjectAvailables,\n    cancelPreorder\n} from '../../store/cut-to-size/actions';\nimport { connect } from 'react-redux'\nimport PreOrdersCts from './PreOrdersCts'\nimport {defineMessages, injectIntl} from 'react-intl'\nimport { withRouter } from 'react-router-dom'\n\n\ndefineMessages({\n    CONFIRM_REJECT_PREORDER_ADVISE: {\n        id: 'CONFIRM_REJECT_PREORDER_ADVISE',\n        description: 'CONFIRM_REJECT_PREORDER_ADVISE',\n        defaultMessage: 'If you cancel now, you’ll permanently remove this preorder.'\n    },\n    CONFIRM_REJECT_PREORDER_OK_BUTTON: {\n        id: 'CONFIRM_REJECT_PREORDER_OK_BUTTON',\n        description: 'CONFIRM_REJECT_PREORDER_OK_BUTTON',\n        defaultMessage: 'Yes, cancel this order'\n    },\n    CONFIRM_REJECT_PREORDER_CANCEL_BUTTON: {\n        id: 'CONFIRM_REJECT_PREORDER_CANCEL_BUTTON',\n        description: 'CONFIRM_REJECT_PREORDER_CANCEL_BUTTON',\n        defaultMessage: 'No, continue with this order'\n    },\n    CONFIRM_APPROVE_PREORDER: {\n        id: 'CONFIRM_APPROVE_PREORDER',\n        description: 'CONFIRM_APPROVE_PREORDER',\n        defaultMessage: 'Approve this preorder?'\n    },\n    CONFIRM_APPROVE_PREORDER_OK_BUTTON: {\n        id: 'CONFIRM_APPROVE_PREORDER_OK_BUTTON',\n        description: 'CONFIRM_APPROVE_PREORDER_OK_BUTTON',\n        defaultMessage: 'Yes, approve this preorder'\n    },\n    CONFIRM_APPROVE_PREORDER_CANCEL_BUTTON: {\n        id: 'CONFIRM_APPROVE_PREORDER_CANCEL_BUTTON',\n        description: 'CONFIRM_APPROVE_PREORDER_CANCEL_BUTTON',\n        defaultMessage: 'Reconsider'\n    },\n    CONFIRM_APPROVE_PREORDER_ADVISE_TOP: {\n        id: 'CONFIRM_APPROVE_PREORDER_ADVISE_TOP',\n        description: 'CONFIRM_APPROVE_PREORDER_ADVISE_TOP',\n        defaultMessage: 'You`ll not be able to cancel this preorder using the platform.'\n    },\n    CONFIRM_APPROVE_PREORDER_ADVISE_BOTTOM: {\n        id: 'CONFIRM_APPROVE_PREORDER_ADVISE_BOTTOM',\n        description: 'CONFIRM_APPROVE_PREORDER_ADVISE_BOTTOM',\n        defaultMessage: 'If you want to cancel it you have to contact your center.'\n    },\n    CONFIRM_DENY_PREORDER: {\n        id: 'CONFIRM_DENY_PREORDER',\n        description: 'CONFIRM_DENY_PREORDER',\n        defaultMessage: 'Need more changes?'\n    }\n})\n\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        preOrdersCts: getPreOrdersCts(state),\n        currentPage: getPreOrdersCurrentPage(state),\n        lastPage: getPreOrdersLastPage(state),\n        projectList:getPreOrdersProjectAvailables(state),\n        isLoading: isLoading(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        clearPreOrderCts: () => {\n            dispatch({ type: 'CLEAR_PRE_ORDERS_CTS' })\n        },\n        fetchPreOrdersCts: () => {\n            dispatch(fetchPreOrdersCts())\n        },\n        fetchPreOrdersCtsPaginate: (startDate, endDate, filterProject, status,search,page) => {\n            dispatch(fetchPreOrdersCtsPaginate(startDate, endDate, filterProject, status,search,page))\n        },\n        fetchPreOrdersProjectAvailables:  () => {\n            dispatch(fetchPreOrdersProjectAvailables())\n        },\n        cancelPreorder: (preorderId) => dispatch(cancelPreorder(preorderId))\n    }\n}\n\nconst PreOrdersCtsContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(PreOrdersCts)\n    )\n)\n\nexport default PreOrdersCtsContainer\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport { getProfileConfigurationEmails } from '../../store/profile-configuration/reducers'\nimport Translation from '../global/Translation'\nimport {clone} from \"lodash\";\n\nconst mapStateToProps = (state, ownProps) => {      \n    return {\n        emails: ownProps.emails ? ownProps.emails : getProfileConfigurationEmails(state),\n    }\n}\n\nclass ProfileConfigurationEmails extends React.Component {\n    constructor(props) {\n        super(props)            \n        this.email = []\n        this.state={\n            emails: []\n        }\n    }\n\n    componentDidMount() {\n        const emails = clone(this.props.emails)\n        this.setState({emails})\n    }\n   \n    addEmail = input => {\n        if (input.validity.valid && input.value !== '') {\n            let emails = clone(this.state.emails)\n            emails = emails.concat(input.value)\n            this.setState({emails})\n            this.props.change(emails)\n\n            input.value = ''\n        }\n    }\n\n    removeEmail = idRemove => {\n        const emails = clone(this.state.emails)\n        emails.splice(idRemove, 1)\n        this.setState({emails})\n        this.props.change(emails)\n    }\n\n    render() {\n        return (\n            <div>\n                <div className=\"input-group input-group-sm\">\n                    <input\n                        id={this.props.idForInput ? `input-${this.props.idForInput}` : null}\n                        type=\"email\"\n                        ref={node => {\n                            this.inputEmail = node\n                        }}\n                        onKeyPress={e => {\n                            if (e.key === 'Enter') {\n                                e.preventDefault()\n                                this.addEmail(this.inputEmail)\n                            }\n                        }}\n                        className='form-control customDropdown'\n                        placeholder=\"Email\"\n                        style={{ height: '35px' }}\n                    />\n                    <span className=\"input-group-btn input-group-append\">\n                        <button\n                            className=\"btn btn-outline-secondary btn-add\"\n                            type=\"button\"\n                            onClick={() => {\n                                this.addEmail(this.inputEmail)\n                            }}\n                        >\n                            <i className=\"fa fa-plus\" />\n                            <span style={{ marginLeft: '6px' }}><Translation id=\"add\" defaultMessage=\"Add\" /></span>\n                        </button>\n                    </span>\n                </div>\n                {this.state.emails.map((email, i) => {\n                    return (\n                        <span className=\"badge badge-secondary badge-emails\" key={email}>\n                            {email}{' '}\n                            {this.state.emails.length > 0 ? (\n                                <i\n                                    className='fa fa-times-circle'\n                                    onClick={() => {\n                                        this.removeEmail(i)\n                                    }}\n                                />\n                            ) : null}\n                        </span>\n                    )\n                })}\n            </div>\n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    null\n)(ProfileConfigurationEmails)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nclass ProfileConfigurationPromotionEmails extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            highlightCosentinoNotAllowed: false\n        }\n    }\n\n    validateAndTransformEmail(email) {\n        let transformedEmail = email.toLowerCase()\n        if (transformedEmail.includes('@cosentino')) {\n            this.setState({ highlightCosentinoNotAllowed: true })\n            return null\n        } else {\n            this.setState({ highlightCosentinoNotAllowed: false })\n            return transformedEmail\n        }\n    }\n\n    addEmail = input => {\n        const email = this.validateAndTransformEmail(input.value)\n        if (input.validity.valid && input.value !== '' && email) {\n            this.props.change(this.props.promotionEmails.concat(email).filter((value, index, self) => self.indexOf(value) === index))\n            input.value = ''\n        }\n    }\n    removeEmail = idRemove => {\n        if (this.props.promotionEmails.length > 0) {\n            this.props.change(this.props.promotionEmails.filter((email, index) => index !== idRemove))\n        }\n    }\n\n    render() {\n        return (\n            <div className=\"row\">\n                <div className=\"col-12\">\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            {this.state.highlightCosentinoNotAllowed && (\n                                <span className={`d-inline-block`}>\n                                    <Translation id=\"cosentino_emails_are_not_allowed\" defaultMessage=\"Cosentino emails are not allowed\" /> ...@cosentino.com\n                                </span>\n                            )}\n                        </div>\n                        <div className=\"col-12 col-md-6\">\n                            <div className=\"input-group input-group-sm\">\n                                <input\n                                    id={this.props.idForInput ? `input-${this.props.idForInput}` : null}\n                                    type=\"email\"\n                                    ref={node => {\n                                        this.inputEmail = node\n                                    }}\n                                    onKeyPress={e => {\n                                        if (e.key === 'Enter') {\n                                            e.preventDefault()\n                                            this.addEmail(this.inputEmail)\n                                        }\n                                    }}\n                                    className='form-control customDropdown'\n                                    placeholder=\"Email\"\n                                    style={{ height: '35px' }}\n                                />\n                                <span className=\"input-group-btn input-group-append\">\n                                    <button\n                                        className=\"btn btn-outline-secondary btn-add\"\n                                        type=\"button\"\n                                        onClick={() => {\n                                            this.addEmail(this.inputEmail)\n                                        }}\n                                    >\n                                        <i className=\"fa fa-plus\" />\n                                        <span style={{ marginLeft: '6px' }}><Translation id=\"add\" defaultMessage=\"Add\" /></span>\n                                    </button>\n                                </span>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12 my-3\">\n                            {this.props.promotionEmails &&\n                                this.props.promotionEmails.map((email, i) => {\n                                    return (\n                                        <span className=\"badge badge-secondary badge-emails\" key={email}>\n                                            {email}{' '}\n                                            {this.props.promotionEmails.length > 0 ? (\n                                                <i\n                                                    className='fa fa-times-circle'\n                                                    onClick={() => {\n                                                        this.removeEmail(i)\n                                                    }}\n                                                />\n                                            ) : null}\n                                        </span>\n                                    )\n                                })}\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default ProfileConfigurationPromotionEmails\n","import { connect } from 'react-redux'\n\nimport Alerts from './Alerts'\nimport { getAlert, getStatus } from '../../store/login/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        alert: getAlert(state),\n        status: getStatus(state)\n    }\n}\n\nconst AlertsContainer = connect(mapStateToProps, null)(Alerts)\n\nexport default AlertsContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport logo from '../../assets/img/e.cosentino.svg'\n\nimport AlertsContainer from '../alerts/AlertsContainer'\nimport Spinner from '../global/Spinner'\nclass CreateAccountForm extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { forgotPassword: null }\n    }\n    handleSubmit = e => {\n        e.preventDefault()\n        const containZero = this.usernameInput.value.slice(0, 4)\n        if (containZero === '0000') {\n            this.props.onCreateAccount(this.usernameInput.value, this.emailInput.value)\n        } else {\n            this.props.onCreateAccount('0000' + this.usernameInput.value, this.emailInput.value)\n        }\n    }\n    render() {\n        const { isLogging } = this.props\n\n        const spinner = isLogging ? <Spinner isLoading={isLogging} /> : null\n\n        return (\n            <div className=\"form-signin\">\n                <form onSubmit={this.handleSubmit}>\n                    <AlertsContainer />\n                    {spinner}\n                    <img alt=\"\" id=\"profile-img\" className=\"d-block d-lg-none profile-img-card\" src={logo} style={{ marginBottom: '30px' }} />\n                    <label htmlFor=\"email\">\n                        <Translation id=\"ask_cosentino_center_for_id\" defaultMessage=\"Ask your Cosentino Center for your unique ID #\" />\n                    </label>\n                    <input\n                        type=\"text\"\n                        id=\"inputEmail\"\n                        className=\"form-control\"\n                        placeholder={this.props.intl.formatMessage({ id: 'identifier' })}\n                        ref={node => {\n                            this.usernameInput = node\n                        }}\n                    />\n                    <label htmlFor=\"email\">\n                        <Translation id=\"Add_more_than_one_email\" defaultMessage=\"Add more than one email separating them by ';'\" />\n                    </label>\n                    <input\n                        type=\"text\"\n                        id=\"inputEmail\"\n                        className=\"form-control mb-3\"\n                        placeholder=\"Email\"\n                        ref={node => {\n                            this.emailInput = node\n                        }}\n                        onKeyPress={e => {\n                            if (e.key === 'Enter') {\n                                this.handleSubmit(e)\n                            }\n                        }}\n                    />\n                    <div id=\"remember\" className=\"checkbox\" />\n                    <input type=\"submit\" className=\"bt bt-inverted button\" value={this.props.intl.formatMessage({ id: 'create_account' })} />\n{/* \n                    <div className=\"row links\">\n                        <div className=\"col-12 col-md-7 offset-md-5 forgot-password\">\n                            <span onClick={this.props.showLogin}>\n                                <Translation id=\"login\" defaultMessage=\"Login\" />\n                            </span>\n                        </div>\n                    </div> */}\n                </form>\n            </div>\n        )\n    }\n}\nexport default injectIntl(CreateAccountForm)\n","import React from 'react'\nimport { defineMessages, injectIntl } from 'react-intl'\nimport AlertsContainer from '../alerts/AlertsContainer'\nimport Alerts from \"../alerts/Alerts\";\n\ndefineMessages({\n    user_center_placeholder: {\n        id: 'user_center_placeholder',\n        description: 'user_center_placeholder',\n        defaultMessage: 'User center'\n    },\n    email_user_center_placeholder: {\n        id: 'email_user_center_placeholder',\n        description: 'email_user_center_placeholder',\n        defaultMessage: 'Email center'\n    },\n    add_account: {\n        id: 'add_account',\n        description: 'add_account',\n        defaultMessage: 'Add account'\n    },\n    add_user_center: {\n        id: 'add_user_center',\n        description: 'add_user_center',\n        defaultMessage: 'Add center user'\n    },\n    EMAIL_ERROR_CENTER: {\n        id: 'EMAIL_ERROR_CENTER',\n        description: 'EMAIL_ERROR_CENTER',\n        defaultMessage: 'The email is incorrect, it has to be @cosentino.com'\n    },\n    EMAIL_EXISTS_CENTER: {\n        id: 'EMAIL_EXISTS_CENTER',\n        description: 'EMAIL_EXISTS_CENTER',\n        defaultMessage: 'This email is already registered in the center'\n    },\n    SUCCESS_EMAIL_CENTER: {\n        id: 'SUCCESS_EMAIL_CENTER',\n        description: 'SUCCESS_EMAIL_CENTER',\n        defaultMessage: 'Email registered in the center'\n    },\n    EMAIL_CENTER_IS_NOT_FORMAT: {\n        id: 'EMAIL_CENTER_IS_NOT_FORMAT',\n        description: 'EMAIL_CENTER_IS_NOT_FORMAT',\n        defaultMessage: 'The email has to be @cosentino.com'\n    },\n    EMAIL_CENTER_NOT_EMPTY: {\n        id: 'EMAIL_CENTER_NOT_EMPTY',\n        description: 'EMAIL_CENTER_NOT_EMPTY',\n        defaultMessage: 'The email cannot be empty'\n    },\n    USER_CENTER_NOT_EMPTY: {\n        id: 'USER_CENTER_NOT_EMPTY',\n        description: 'USER_CENTER_NOT_EMPTY',\n        defaultMessage: 'The user cannot be left empty'\n    },\n})\nclass AddAccountCenterForm extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            status: '',\n            msg: '',\n            show: false\n        }\n    }\n    validateForm(){\n        if(this.emailInput.value !== ''){\n            if(this.emailInput.value.split('@')[1] === 'cosentino.com') {\n                if(this.userInput.value !== ''){\n                    this.setState({show: false})\n                    return true\n                }else{\n                    this.emptyForm();\n                    this.setState({show: true});\n                    this.setState({status: 'warning'})\n                    this.setState({msg: 'USER_CENTER_NOT_EMPTY'})\n                    return false\n                }\n            }else{\n                this.emptyForm();\n                this.setState({show: true});\n                this.setState({status: 'warning'})\n                this.setState({msg: 'EMAIL_CENTER_IS_NOT_FORMAT'})\n                return false\n            }\n        }else{\n            this.emptyForm();\n            this.setState({show: true});\n            this.setState({status: 'warning'})\n            this.setState({msg: 'EMAIL_CENTER_NOT_EMPTY'})\n            return false\n        }\n    }\n    emptyForm(){\n        this.emailInput.value = '';\n        this.userInput.value = '';\n    }\n    handleSubmit = e => {\n        e.preventDefault()\n        if(this.validateForm()) {\n            this.props.onAddEmailCenter(this.userInput.value, this.emailInput.value)\n            this.emptyForm();\n        }\n    }\n    render() {\n        return (\n            <div className=\"form-signin\">\n                {this.state.show && (\n                    <Alerts status={this.state.status} alert={this.state.msg}/>\n                )}\n                <form onSubmit={this.handleSubmit}>\n                    <AlertsContainer />\n                    <input\n                        type=\"text\"\n                        id=\"inputUser\"\n                        className=\"form-control\"\n                        placeholder={this.props.intl.formatMessage({ id: 'user_center_placeholder' })}\n                        ref={node => {\n                            this.userInput = node\n                        }}\n                    />\n                    <input\n                        type=\"text\"\n                        id=\"inputEmail\"\n                        className=\"form-control\"\n                        placeholder={this.props.intl.formatMessage({ id: 'email_user_center_placeholder' })}\n                        ref={node => {\n                            this.emailInput = node\n                        }}\n                    />\n                    <input type=\"submit\" className=\"bt bt-inverted button\" value={this.props.intl.formatMessage({ id: 'add_account' })} />\n                </form>\n            </div>\n        )\n    }\n}\nexport default injectIntl(AddAccountCenterForm)\n","import React from 'react'\r\nimport Translation from '../global/Translation'\r\nimport { injectIntl, defineMessages } from 'react-intl'\r\nimport Spinner from '../global/Spinner'\r\nimport ProfileContainer from './ProfileContainer'\r\nimport Alerts from '../alerts/Alerts'\r\nimport ProfileConfigurationEmails from './ProfileConfigurationEmails'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport ProfileConfigurationPromotionEmails from './ProfileConfigurationPromotionEmails'\r\nimport LocalizedLink from '../global/LocalizedLink'\r\nimport Button from '../global/Button'\r\nimport CreateAccountForm from '../login-modal/CreateAccountForm'\r\nimport AddAccountCenterForm from '../login-modal/AddAccountCenterForm'\r\nimport Modal from '../global/Modal'\r\n\r\ndefineMessages({\r\n    ROUTE_HOME: {\r\n        id: 'repeat_password',\r\n        description: 'repeat_password',\r\n        defaultMessage: 'Repeat password'\r\n    }\r\n})\r\n\r\nclass ProfileConfiguration extends React.Component {\r\n    constructor(props) {\r\n        super(props)\r\n        this.state = {\r\n            alert: { mayus: undefined, contain: undefined, number: undefined, minus: undefined, equal: undefined },\r\n            canSendPassword: false,\r\n            canSendEmailsOfShippingAddress: false,\r\n            shippingAddressesEmails: {},\r\n            promotionEmails: [],\r\n            showModalSettings: false,\r\n            showModalPassword: false,\r\n            showModaNewsLetters: false,\r\n            showModalEmailCenters: false,\r\n            selectedCenter: null,\r\n            selectedWeightUnit: null,\r\n            selectedLengthUnit: null,\r\n            selectedLang: null\r\n        }\r\n    }\r\n\r\n    handleChangeCenter = e => {\r\n        this.setState({ selectedCenter: e.target.value })\r\n    }\r\n\r\n    handleChangeWeightUnit = e => {\r\n        this.setState({ selectedWeightUnit: e.target.value })\r\n    }\r\n\r\n    handleChangeLengthUnit = e => {\r\n        this.setState({ selectedLengthUnit: e.target.value })\r\n    }\r\n    \r\n    handleChangeLang = e => {\r\n        this.setState({ selectedLang: e.target.value })\r\n    }\r\n\r\n    transformEmailArr = () => {\r\n        if (this.props.profileConfiguration.email.length > 0) {\r\n            const emailsArr = this.props.profileConfiguration.email\r\n            return emailsArr.toString().replace(/,/g, ';')\r\n        }\r\n    }\r\n\r\n    toggleNotificationsCheck = checked => {\r\n        this.setState({ rejectNotifications: checked })\r\n    }\r\n\r\n    handleSubmit = e => {\r\n        e.preventDefault()\r\n        let profileConfigData = {\r\n            centerId: this.center && this.center.value !== undefined ? this.center.value : this.props.profileConfiguration.centerId,\r\n            weightUnit: this.weightUnit && this.weightUnit.value !== undefined ? this.weightUnit.value : this.props.profileConfiguration.weightUnit,\r\n            lengthUnit: this.surfaceUnit && this.surfaceUnit.value !== undefined ? this.surfaceUnit.value : this.props.profileConfiguration.lengthUnit,\r\n            email: this.emails && this.emails.length > 0 ? this.emails.join(';') : this.transformEmailArr(),\r\n            locale: this.locale && this.locale.value !== undefined ? this.locale.value : this.props.profileConfiguration.locale,\r\n            shippingAddressesEmails: this.state.shippingAddressesEmails,\r\n            rejectNotifications: this.state.rejectNotifications\r\n        }\r\n        this.props.saveProfileConfiguration(profileConfigData)\r\n        this.setState({ showModalEmailCenters: false })\r\n    }\r\n//    checkPassword = send => {\r\n//        let haveMayus = /.*[A-Z]+.*/.test(this.passwordInput.value)\r\n//        let haveMinus = /.*[a-z]+.*/.test(this.passwordInput.value)\r\n//        let haveNumber = /.*[\\d]+.*/.test(this.passwordInput.value)\r\n//        let haveContain = /.{8}/.test(this.passwordInput.value)\r\n//        let isEqual = this.passwordInput.value === this.passwordInputRepeated.value && this.passwordInput.value !== ''\r\n//\r\n//        if (haveContain) this.setState({ alert: Object.assign(this.state.alert, { contain: true }) })\r\n//        else if (send || this.state.alert.contain) this.setState({ alert: Object.assign(this.state.alert, { contain: false }) })\r\n//\r\n//        if (haveNumber) this.setState({ alert: Object.assign(this.state.alert, { number: true }) })\r\n//        else if (send || this.state.alert.number) this.setState({ alert: Object.assign(this.state.alert, { number: false }) })\r\n//\r\n//        if (haveMinus) this.setState({ alert: Object.assign(this.state.alert, { minus: true }) })\r\n//        else if (send || this.state.alert.minus) this.setState({ alert: Object.assign(this.state.alert, { minus: false }) })\r\n//\r\n//        if (haveMayus) this.setState({ alert: Object.assign(this.state.alert, { mayus: true }) })\r\n//        else if (send || this.state.alert.mayus) this.setState({ alert: Object.assign(this.state.alert, { mayus: false }) })\r\n//\r\n//        if (isEqual) this.setState({ alert: Object.assign(this.state.alert, { equal: true }) })\r\n//        else if (send || this.state.alert.equal) this.setState({ alert: Object.assign(this.state.alert, { equal: false }) })\r\n//        this.setState({ canSendPassword: haveMayus && haveMinus && haveNumber && haveContain && isEqual })\r\n//        return haveMayus && haveMinus && haveNumber && haveContain && isEqual\r\n//    }\r\n    /* handleSubmitChangePassword = e => {\r\n        e.preventDefault()\r\n        if (this.checkPassword(true))\r\n            this.props\r\n                .changePassword(this.passwordInput.value)\r\n                .then(() => {\r\n                    this.setState({\r\n                        alert: {\r\n                            mayus: undefined,\r\n                            contain: undefined,\r\n                            number: undefined,\r\n                            minus: undefined,\r\n                            equal: undefined\r\n                        },\r\n                        canSendPassword: false\r\n                    })\r\n                })\r\n                .catch()\r\n    } */\r\n    handleSubmitChangeEmailsOfShippingAddress = e => {\r\n        e.preventDefault()\r\n    }\r\n    togglePromotionNotificationsCheck = checked => {\r\n        this.setState({ acceptPromotionNotifications: checked })\r\n    }\r\n\r\n    validateAndTransformEmail(email) {\r\n        let transformedEmail = email.toLowerCase()\r\n        if (transformedEmail.includes('@cosentino')) {\r\n            this.setState({ highlightCosentinoNotAllowed: true }, () => {\r\n                setTimeout(() => this.setState({ highlightCosentinoNotAllowed: false }), 1000)\r\n            })\r\n            return null\r\n        } else {\r\n            return transformedEmail\r\n        }\r\n    }\r\n\r\n    copyOnlyEmailsValid = () => {\r\n        let emailsToConcat = []\r\n        this.emails.forEach(email => {\r\n            const transformedEmail = this.validateAndTransformEmail(email)\r\n            if (transformedEmail) {\r\n                emailsToConcat.push(transformedEmail)\r\n            }\r\n        })\r\n        this.setState({\r\n            copyEmailAddress: true,\r\n            promotionEmails: this.state.promotionEmails.concat(emailsToConcat).filter((value, index, self) => self.indexOf(value) === index)\r\n        })\r\n    }\r\n    togglePromotionPoliciesCheck = checked => {\r\n        this.setState({ acceptPolicies: checked })\r\n    }\r\n    handlePromotionsSubmit = e => {\r\n        e.preventDefault()\r\n        let profileConfigPromotion = {\r\n            promotionEmail: this.state.promotionEmails.join(';'),\r\n            acceptPromotionNotifications: this.state.acceptPromotionNotifications,\r\n            copyEmailAddress: this.state.copyEmailAddress,\r\n            acceptPolicies: this.state.acceptPolicies\r\n        }\r\n        this.props.savePromotionConfiguration(profileConfigPromotion)\r\n    }\r\n\r\n    componentDidMount() {\r\n        this.props.fetchProfileConfiguration().then(() => {\r\n            this.setState({\r\n                selectedCenter: this.props.profileConfiguration.centerId, \r\n                selectedWeightUnit: this.props.profileConfiguration.weightUnit, \r\n                selectedLengthUnit: this.props.profileConfiguration.lengthUnit, \r\n                selectedLang: this.props.profileConfiguration.locale,\r\n            })\r\n            if (!this.props.isAdmin) this.setState({ shippingAddressesEmails: this.props.profileConfiguration.shippingAddressesEmails })\r\n        })\r\n\r\n        this.props.fetchPromotionConfiguration().then(() => {\r\n            this.setState({\r\n                promotionEmails: this.props.promotionConfiguration.email,\r\n                acceptNotifications: this.props.promotionConfiguration.accept_notifications,\r\n                copyEmails: this.props.promotionConfiguration.copy_emails,\r\n                acceptPolicies: this.props.promotionConfiguration.accept_policies\r\n            })\r\n        })\r\n    }\r\n\r\n    render() {\r\n        const isLoading = this.props.isLoading\r\n        const isSending = this.props.isSending\r\n        const spinner = isLoading ? <Spinner isLoading={isLoading} /> : null\r\n        const center = this.props.profileConfiguration.centerId\r\n        const locale = this.props.profileConfiguration.locale\r\n        let filteredShippingAddresses = []\r\n        if (this.props.shippingAddresses) {\r\n            filteredShippingAddresses = [...new Map(this.props.shippingAddresses.map(shipAddress => [shipAddress['shippingAddressId'], shipAddress])).values()]\r\n        }\r\n\r\n        return (\r\n            <div className=\"box-profile row\">\r\n                <div className=\"box-profile-menu col-12 col-md-4 col-lg-3\">\r\n                    <ProfileContainer />\r\n                </div>\r\n                <div className=\"col-12 col-lg-9\">\r\n                    {isLoading ? (\r\n                        spinner\r\n                    ) : (\r\n                        <div className=\"profile-form profile-configuration-screen\" style={{ marginTop: 0, backgroundColor: 'white', padding: '1rem' }}>\r\n                            <div className=\"form user-form\">\r\n                                <div className=\"row\">\r\n                                    <div className=\"col-12 col-lg-5\">\r\n                                        <span className=\"h1-profile mb-3\">\r\n                                            <Translation id=\"configuration\" defaultMessage=\"Configuration\" />\r\n                                        </span>\r\n                                        <div className=\"d-flex flex-column mb-2\">\r\n                                            <span className=\"txt-profile\">\r\n                                                <Translation id=\"center_preferred\" defaultMessage=\"Center Preferred\"></Translation> :\r\n                                            </span>\r\n                                            <span className=\"txt-profile\" style={{ fontWeight: '500' }}>\r\n                                                {this.props.centers.map(e => {\r\n                                                    if (Number(e.centerId) === Number(this.props.profileConfiguration.centerId)) {\r\n                                                        return <React.Fragment>{e.name}</React.Fragment>\r\n                                                    }\r\n                                                })}\r\n                                            </span>\r\n                                        </div>\r\n                                        <div className=\"d-flex flex-column mb-2\">\r\n                                            <span className=\"txt-profile\">\r\n                                                <Translation id=\"favourite_lang\" defaultMessage=\"Favourite language\" />:\r\n                                            </span>\r\n                                            <span className=\"txt-profile\" style={{ fontWeight: '500' }}>\r\n                                                {this.props.availableLands.map(lang => {\r\n                                                    if (lang.localecode === this.props.profileConfiguration.locale) return <React.Fragment>{lang.name}</React.Fragment>\r\n                                                })}\r\n                                            </span>\r\n                                        </div>\r\n                                        <div className=\"d-flex flex-column mb-2\">\r\n                                            <span className=\"txt-profile\">\r\n                                                <Translation id=\"measurement_unit\" defaultMessage=\"Measurement Unit\" />:\r\n                                            </span>\r\n                                            <span className=\"txt-profile\" style={{ fontWeight: '500' }}>\r\n                                                <Translation id=\"weight\" defaultMessage=\"Weight\" />:{' '}\r\n                                                {this.props.profileConfiguration.weightUnit || <Translation id=\"default_by_language\" defaultMessage=\"Default by language\" />}\r\n                                            </span>\r\n                                            <span className=\"txt-profile\" style={{ fontWeight: '500' }}>\r\n                                                {' '}\r\n                                                <Translation id=\"surface\" defaultMessage=\"Surface\" />:{' '}\r\n                                                {this.props.profileConfiguration.lengthUnit || <Translation id=\"default_by_language\" defaultMessage=\"Default by language\" />}\r\n                                            </span>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"col-12 col-lg-7 order-notifications-box\">\r\n                                        <div>\r\n                                            <span className=\"h1-profile mb-3\">\r\n                                                <Translation id=\"orders_notifications\" defaultMessage=\"Orders notifications\" />\r\n                                            </span>\r\n                                            <span className=\"h2-profile\">\r\n                                                <Translation id=\"emails_for_your_center_by_default\" defaultMessage=\"Emails for your center by default\" />:\r\n                                            </span>\r\n                                            <span className=\"h4-profile\">\r\n                                                {this.props.profileConfiguration.rejectNotifications ? (\r\n                                                    <Translation id=\"general_notifications_for_all_orders\" defaultMessage=\"You will receive general notifications for all orders\" />\r\n                                                ) : (\r\n                                                    <Translation\r\n                                                        id=\"general_additional_notifications_for_all_orders\"\r\n                                                        defaultMessage=\"You will receive general and additional notifications for all orders\"\r\n                                                    />\r\n                                                )}\r\n                                            </span>\r\n                                        </div>\r\n                                        <div className=\"mt-2\">\r\n                                            {this.props.emails.map((value, index) => {\r\n                                                return (\r\n                                                    <span key={index} className=\"txt-email-profile\" style={{ fontWeight: 500, textTransform: 'lowercase' }}>\r\n                                                        {value}\r\n                                                    </span>\r\n                                                )\r\n                                            })}\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"mt-3\">\r\n                                    <span onClick={() => this.setState({ showModalSettings: true })} className=\"btn-link\">\r\n                                        <Translation id=\"change\" defaultMessage=\"Change\" />\r\n                                    </span>\r\n                                </div>\r\n                            </div>\r\n\r\n                            {!this.props.isAdmin && (\r\n                                <React.Fragment>\r\n                                    <hr />\r\n                                    <div>\r\n                                        <div className=\"form promotions-preferences-form\">\r\n                                            <div className=\"row\" style={{ border: 'none' }}>\r\n                                                <div className=\"col-12 \">\r\n                                                    <span className=\"h2-profile\">\r\n                                                        <Translation id={'shipping_addresses_emails'} defaultMessage=\"Shipping Addresses Emails\"></Translation>\r\n                                                    </span>\r\n                                                    <span className=\"h4-profile\">\r\n                                                        <Translation\r\n                                                            id=\"receive_notifications_about_orders_related_to_the_associated_addresses\"\r\n                                                            defaultMessage=\"You will only receive notifications about orders related to the associated addresses\"\r\n                                                        />\r\n                                                    </span>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div className=\"mt-3\">\r\n                                                {filteredShippingAddresses &&\r\n                                                    filteredShippingAddresses.map(shippingAddress => (\r\n                                                        <div className=\"txt-email-profile mt-3\" key={shippingAddress.shippingAddressId}>\r\n                                                            <span>\r\n                                                                {shippingAddress.customerName}{' - '}\r\n                                                                {shippingAddress.address}\r\n                                                            </span>\r\n                                                            <span className=\"txt-email-profile\" style={{ fontWeight: 500 }}>\r\n                                                                {this.state.shippingAddressesEmails &&\r\n                                                                    this.state.shippingAddressesEmails[shippingAddress.shippingAddressId] &&\r\n                                                                    this.state.shippingAddressesEmails[shippingAddress.shippingAddressId].map((value, index) => {\r\n                                                                        return(    \r\n                                                                            <div>{value}</div>\r\n                                                                        ) \r\n                                                                    })}\r\n                                                            </span>\r\n                                                        </div>\r\n                                                    ))}\r\n                                            </div>\r\n                                            <div className=\"mt-3\">\r\n                                                <span onClick={() => this.setState({ showModalEmailCenters: true })} className=\"btn-link\">\r\n                                                    <Translation id=\"change\" defaultMessage=\"Change\" />\r\n                                                </span>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </React.Fragment>\r\n                            )}\r\n\r\n                            <form onSubmit={this.handleSubmit}>\r\n                                {this.state.showModalSettings && (\r\n                                    <Modal\r\n                                        title={<Translation id=\"change_your_preferences\" defaultMessage=\"Change your preferences\" />}\r\n                                        onClose={() => this.setState({ showModalSettings: false })}\r\n                                        footer={\r\n                                            <div style={{ float: 'right' }}>\r\n                                                <div className=\"d-flex\">\r\n                                                    <button\r\n                                                        style={{ marginRight: '8px' }}\r\n                                                        onClick={e => {\r\n                                                            e.preventDefault()\r\n                                                            this.setState({ showModalSettings: false })\r\n                                                        }}\r\n                                                        className=\"btn-secondary-m\"\r\n                                                    >\r\n                                                        <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\r\n                                                    </button>\r\n                                                    {isSending ? (\r\n                                                        <button\r\n                                                            type=\"submit\"\r\n                                                            className=\"btn-primary-m\"\r\n                                                            value={this.props.intl.formatMessage({\r\n                                                                id: 'save_changes'\r\n                                                            })}\r\n                                                            disabled\r\n                                                            style={{ marginBottom: '0' }}\r\n                                                        >\r\n                                                            {this.props.intl.formatMessage({\r\n                                                                id: 'save_changes'\r\n                                                            })}\r\n                                                        </button>\r\n                                                    ) : (\r\n                                                        <button\r\n                                                            type=\"submit\"\r\n                                                            className=\"btn-primary-m\"\r\n                                                            value={this.props.intl.formatMessage({\r\n                                                                id: 'save_changes'\r\n                                                            })}\r\n                                                            style={{ marginBottom: '0' }}\r\n                                                        >\r\n                                                            {this.props.intl.formatMessage({\r\n                                                                id: 'save_changes'\r\n                                                            })}\r\n                                                        </button>\r\n                                                    )}\r\n                                                </div>\r\n                                            </div>\r\n                                        }\r\n                                    >\r\n                                        <Alerts alert={this.props.alert} status={this.props.status} />\r\n                                        <div className=\"row mt-3\">\r\n                                            <div className=\"col-12 col-md-6\">\r\n                                                <div className=\"form-group\">\r\n                                                    <label htmlFor=\"select-default-center\" className=\"txt-modal\">\r\n                                                        <Translation id=\"favourite_center\" defaultMessage=\"Favourite center\" />\r\n                                                    </label>\r\n                                                    <select\r\n                                                        id=\"select-default-center\"\r\n                                                        ref={node => {\r\n                                                            this.center = node\r\n                                                        }}\r\n                                                        className=\"form-control customDropdown\"\r\n                                                        value={this.state.selectedCenter}\r\n                                                        onChange={e => this.handleChangeCenter(e)}\r\n                                                    >\r\n                                                        {this.props.centers.map(center => (\r\n                                                            <option value={center.centerId} key={center.centerId}>\r\n                                                                {center.name}\r\n                                                            </option>\r\n                                                        ))}\r\n                                                    </select>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div className=\"col-12 col-md-6\">\r\n                                                <div className=\"form-group\">\r\n                                                    <label htmlFor=\"select-default-lang\" className=\"txt-modal\">\r\n                                                        <Translation id=\"favourite_lang\" defaultMessage=\"Favourite language\" />\r\n                                                    </label>\r\n                                                    <select\r\n                                                        id=\"select-default-lang\"\r\n                                                        ref={node => {\r\n                                                            this.locale = node\r\n                                                        }}\r\n                                                        className=\"form-control customDropdown\"\r\n                                                        value={this.state.selectedLang}\r\n                                                        onChange={e => this.handleChangeLang(e)}\r\n                                                    >\r\n                                                        {this.props.availableLands.map(locale => (\r\n                                                            <option value={locale.localecode} key={locale.localecode}>\r\n                                                                {locale.name}\r\n                                                            </option>\r\n                                                        ))}\r\n                                                    </select>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                        <span className=\"h1-modal\">\r\n                                            <Translation id=\"measurement_unit\" defaultMessage=\"Measurement Unit\" />\r\n                                        </span>\r\n                                        <div className=\"row\">\r\n                                            <div className=\"col-12 col-md-6\">\r\n                                                <div className=\"form-group\">\r\n                                                    <label htmlFor=\"select-weight-unit\" className=\"txt-modal\">\r\n                                                        <Translation id=\"weight\" defaultMessage=\"Weight\" />\r\n                                                    </label>\r\n                                                    <select\r\n                                                        id=\"select-weight-unit\"\r\n                                                        ref={node => {\r\n                                                            this.weightUnit = node\r\n                                                        }}\r\n                                                        className=\"form-control customDropdown\"\r\n                                                        value={this.state.selectedWeightUnit}\r\n                                                        onChange={e => this.handleChangeWeightUnit(e)}\r\n                                                    >\r\n                                                        <option value={'KG'} key={'kg'}>\r\n                                                            kg\r\n                                                        </option>\r\n                                                        <option value={'LB'} key={'pounds'}>\r\n                                                            lb\r\n                                                        </option>\r\n                                                    </select>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div className=\"col-12 col-md-6\">\r\n                                                <div className=\"form-group\">\r\n                                                    <label htmlFor=\"select-surface-unit\" className=\"txt-modal\">\r\n                                                        <Translation id=\"surface\" defaultMessage=\"Surface\" />\r\n                                                    </label>\r\n                                                    <select\r\n                                                        id=\"select-surface-unit\"\r\n                                                        ref={node => {\r\n                                                            this.surfaceUnit = node\r\n                                                        }}\r\n                                                        className=\"form-control customDropdown\"\r\n                                                        value={this.state.selectedLengthUnit}\r\n                                                        onChange={e => this.handleChangeLengthUnit(e)}\r\n                                                    >\r\n                                                        <option value={'M2'} key={'m2'}>\r\n                                                            m2\r\n                                                        </option>\r\n                                                        <option value={'FT2'} key={'ft2'}>\r\n                                                            ft2\r\n                                                        </option>\r\n                                                    </select>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                        <span className=\"h1-modal\">\r\n                                            <Translation id=\"emails_for_your_center_by_default\" defaultMessage=\"Emails for your center by default\" />\r\n                                        </span>\r\n                                        <div className=\"row\">\r\n                                            <div className=\"col-12 col-md-6\">\r\n                                                <div className=\"form-group\">\r\n                                                    <label htmlFor=\"default-email\" className=\"txt-modal\">\r\n                                                        <Translation id=\"email\" defaultMessage=\"Email\" />\r\n                                                    </label>\r\n                                                    <ProfileConfigurationEmails\r\n                                                        idForInput={'input-email-configuration'}\r\n                                                        ref={node => {\r\n                                                            this.emailsNode = node\r\n                                                        }}\r\n                                                        change={emails => {\r\n                                                            this.emails = emails\r\n                                                        }}\r\n                                                    />\r\n                                                </div>\r\n                                                <div className=\"promotions-preferences-form\">\r\n                                                    <label>\r\n                                                        <input\r\n                                                            name=\"reject_notifications_check\"\r\n                                                            type=\"checkbox\"\r\n                                                            onClick={input => this.toggleNotificationsCheck(input.target.checked)}\r\n                                                            defaultChecked={this.props.profileConfiguration.rejectNotifications}\r\n                                                        />\r\n                                                        <span>\r\n                                                            <Translation\r\n                                                                id=\"reject_notifications_check\"\r\n                                                                defaultMessage=\"I do not want to receive additional notifications about the tracking of my orders\"\r\n                                                            />\r\n                                                        </span>\r\n                                                    </label>\r\n                                                    <div>\r\n                                                        <span className=\"additional-info-msg\">\r\n                                                            (<Translation id=\"changes_in_its_status_or_delivery_date\" defaultMessage=\"As changes in its status or delivery date\" />)\r\n                                                        </span>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </Modal>\r\n                                )}\r\n                                {this.state.showModalEmailCenters && (\r\n                                    <Modal\r\n                                        title={\r\n                                            <Translation id=\"notifications_for_your_additional_centers\" defaultMessage=\"Modify your notifications for your additional centers\" />\r\n                                        }\r\n                                        onClose={() => this.setState({ showModalEmailCenters: false })}\r\n                                        showFooter={false}\r\n                                    >\r\n                                        <div className=\"row\">\r\n                                            <div className=\"col-12\">\r\n                                                <span className=\"h1-profile\"></span>\r\n                                                <span className=\"h4-profile mb-3\">\r\n                                                    (\r\n                                                    <Translation\r\n                                                        id=\"receive_notifications_about_orders_related_to_the_associated_addresses\"\r\n                                                        defaultMessage=\"You will only receive notifications about orders related to the associated addresses\"\r\n                                                    />\r\n                                                    )\r\n                                                </span>\r\n                                                <div className=\"row\">\r\n                                                    {filteredShippingAddresses &&\r\n                                                        filteredShippingAddresses.map(shippingAddress => (\r\n                                                            <div className=\"col-12\" key={shippingAddress.shippingAddressId}>\r\n                                                                <div className=\"form-group\">\r\n                                                                    <label\r\n                                                                        className=\"txt-modal\"\r\n                                                                        style={{ display: 'flex', overflow: 'hidden' }}\r\n                                                                        htmlFor=\"default-email\"\r\n                                                                        data-tip={\r\n                                                                            shippingAddress.centerName +\r\n                                                                            ' ' +\r\n                                                                            shippingAddress.customerName +\r\n                                                                            ' ' +\r\n                                                                            shippingAddress.address +\r\n                                                                            ' ' +\r\n                                                                            shippingAddress.zipCode +\r\n                                                                            ' ' +\r\n                                                                            shippingAddress.city +\r\n                                                                            ' ' +\r\n                                                                            shippingAddress.country +\r\n                                                                            ' ' +\r\n                                                                            shippingAddress.salesOrg\r\n                                                                        }\r\n                                                                    >\r\n                                                                        <span style={{ marginRight: '5px' }}>\r\n                                                                            <Translation id=\"email\" defaultMessage=\"Email\" />\r\n                                                                        </span>\r\n                                                                        <span style={{ flex: 1, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>\r\n                                                                            {shippingAddress.customerName} - {shippingAddress.centerName}\r\n                                                                        </span>\r\n                                                                        <i className=\"fal fa-info-circle\" style={{ margin: '5px', flex: '0 0 auto' }} />\r\n                                                                        <ReactTooltip bg-coloreffect=\"solid\" place=\"bottom\" />\r\n                                                                    </label>\r\n                                                                    <ProfileConfigurationEmails\r\n                                                                        key={\r\n                                                                            shippingAddress.shippingAddressId +\r\n                                                                            this.state.shippingAddressesEmails[shippingAddress.shippingAddressId]\r\n                                                                        }\r\n                                                                        idForInput={shippingAddress.shippingAddressId}\r\n                                                                        emails={\r\n                                                                            this.state.shippingAddressesEmails &&\r\n                                                                            this.state.shippingAddressesEmails[shippingAddress.shippingAddressId]\r\n                                                                                ? this.state.shippingAddressesEmails[shippingAddress.shippingAddressId]\r\n                                                                                : []\r\n                                                                        }\r\n                                                                        change={emails => {\r\n                                                                            this.setState({\r\n                                                                                shippingAddressesEmails: {\r\n                                                                                    ...this.state.shippingAddressesEmails,\r\n                                                                                    [shippingAddress.shippingAddressId]: emails\r\n                                                                                }\r\n                                                                            })\r\n                                                                        }}\r\n                                                                    />\r\n                                                                </div>\r\n                                                            </div>\r\n                                                        ))}\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                        <div style={{ float: 'right' }}>\r\n                                            <div className=\"d-flex\">\r\n                                                <button\r\n                                                    style={{ marginRight: '8px' }}\r\n                                                    onClick={e => {\r\n                                                        e.preventDefault()\r\n                                                        this.setState({ showModalEmailCenters: false })\r\n                                                    }}\r\n                                                    className=\"btn-secondary-m\"\r\n                                                >\r\n                                                    <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\r\n                                                </button>\r\n                                                {isSending ? (\r\n                                                    <button\r\n                                                        type=\"submit\"\r\n                                                        className=\"btn-primary-m\"\r\n                                                        value={this.props.intl.formatMessage({\r\n                                                            id: 'save_changes'\r\n                                                        })}\r\n                                                        disabled\r\n                                                        style={{ marginBottom: '0' }}\r\n                                                    >\r\n                                                        {this.props.intl.formatMessage({\r\n                                                            id: 'save_changes'\r\n                                                        })}\r\n                                                    </button>\r\n                                                ) : (\r\n                                                    <button\r\n                                                        id=\"send-address-mails-button\"\r\n                                                        type=\"submit\"\r\n                                                        className=\"btn-primary-m\"\r\n                                                        value={this.props.intl.formatMessage({\r\n                                                            id: 'save_changes'\r\n                                                        })}\r\n                                                        style={{ marginBottom: '0' }}\r\n                                                    >\r\n                                                        {this.props.intl.formatMessage({\r\n                                                            id: 'save_changes'\r\n                                                        })}\r\n                                                    </button>\r\n                                                )}\r\n                                            </div>\r\n                                        </div>\r\n                                    </Modal>\r\n                                )}\r\n                            </form>\r\n\r\n                            <hr />\r\n                            <div className=\"toolbar\" style={{ padding: '0' }}>\r\n                                <div className=\"container\">\r\n                                    <div className=\"row\" style={{ border: 'none' }}>\r\n                                        <div className=\"col-12 \">\r\n                                            <span className=\"h1-profile\">\r\n                                                <Translation id=\"other_notifications\" defaultMessage=\"Other notifications\" />\r\n                                            </span>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"form promotions-preferences-form\">\r\n                                <div className=\"d-flex flex-column\">\r\n                                    <div className=\"d-flex flex-column\">\r\n                                        <div className=\"d-flex flex-column mb-2\">\r\n                                            <span className=\"h3-profile\">\r\n                                                <strong>\r\n                                                    <Translation id=\"newsletter\" defaultMessage=\"Newsletter\" />\r\n                                                </strong>\r\n                                            </span>\r\n                                            {this.state.promotionEmails.length === 0 && (\r\n                                                <span className=\"h4-profile\">\r\n                                                    <Translation\r\n                                                        id=\"option_receive_promotional_offers_campaigns\"\r\n                                                        defaultMessage=\"You have not activated the option to receive promotional offers and campaigns in your Cosentino center\"\r\n                                                    />\r\n                                                </span>\r\n                                            )}\r\n                                        </div>\r\n                                        {this.state.promotionEmails.length > 0 && (\r\n                                            <div>\r\n                                                {this.state.promotionEmails.map(email => (\r\n                                                    <div\r\n                                                        style={{\r\n                                                            fontFamily: 'Roboto',\r\n                                                            fontWeight: '500',\r\n                                                            fontSize: '14px',\r\n                                                            lineHeight: ' 20px',\r\n                                                            color: '#4d4d4d'\r\n                                                        }}\r\n                                                    >\r\n                                                        {email}\r\n                                                    </div>\r\n                                                ))}\r\n                                            </div>\r\n                                        )}\r\n                                    </div>\r\n                                    <div className=\"mt-3\">\r\n                                        <span onClick={() => this.setState({ showModaNewsLetters: true })} className=\"btn-link\">\r\n                                            <Translation id=\"change\" defaultMessage=\"Change\" />\r\n                                        </span>\r\n                                    </div>\r\n                                </div>\r\n                                {this.state.showModaNewsLetters && (\r\n                                    <Modal onClose={() => this.setState({ showModaNewsLetters: false })}>\r\n                                        <form onSubmit={this.handlePromotionsSubmit}>\r\n                                            <Alerts alert={this.props.alert} status={this.props.status} />\r\n                                            <div className=\"row\">\r\n                                                <div className=\"col-12\">\r\n                                                    <label htmlFor=\"promotion-email\">\r\n                                                        <Translation id=\"email\" defaultMessage=\"Email\" />\r\n                                                    </label>\r\n                                                    {\r\n                                                        <ProfileConfigurationPromotionEmails\r\n                                                            idForInput={'promotion-email-configuration'}\r\n                                                            ref={node => {\r\n                                                                this.emailsNode = node\r\n                                                            }}\r\n                                                            promotionEmails={this.state.promotionEmails}\r\n                                                            change={emails => {\r\n                                                                this.setState({ promotionEmails: emails })\r\n                                                            }}\r\n                                                        />\r\n                                                    }\r\n                                                </div>\r\n                                            </div>\r\n                                            <div className=\"row\">\r\n                                                <div className=\"col-12\">\r\n                                                    <label className=\"CheckboxPoliciesCheck\">\r\n                                                        <input\r\n                                                            name=\"accept_policies_check\"\r\n                                                            type=\"checkbox\"\r\n                                                            onClick={input => this.togglePromotionPoliciesCheck(input.target.checked)}\r\n                                                            defaultChecked={this.state.acceptPolicies}\r\n                                                        />{' '}\r\n                                                        <Translation id=\"i_accept_the\" defaultMessage=\"I accept the\" />{' '}\r\n                                                        <LocalizedLink routeId=\"ROUTE_PRIVACY\">\r\n                                                            <Translation id=\"privacy_policy\" defaultMessage=\"Privacy policy\" />\r\n                                                        </LocalizedLink>{' '}\r\n                                                    </label>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div className=\"row\">\r\n                                                <div className=\"col\">\r\n                                                    <label className=\"CheckboxNotificationCheck\">\r\n                                                        <input\r\n                                                            name=\"accept_notifications_check\"\r\n                                                            type=\"checkbox\"\r\n                                                            onClick={input => this.togglePromotionNotificationsCheck(input.target.checked)}\r\n                                                            defaultChecked={this.state.acceptNotifications}\r\n                                                            disabled={!this.state.acceptPolicies}\r\n                                                        />{' '}\r\n                                                        <Translation\r\n                                                            id=\"promotion_preferences_accept_notifications_check\"\r\n                                                            defaultMessage=\"I want to receive notifications about promotions and offers from my center in eCosentino\"\r\n                                                        />{' '}\r\n                                                    </label>\r\n                                                </div>\r\n                                            </div>\r\n                                            <br />\r\n                                            <div style={{ float: 'right' }}>\r\n                                                <div className=\"d-flex  justify-content-end\">\r\n                                                    <button\r\n                                                        style={{ marginRight: '8px' }}\r\n                                                        onClick={e => {\r\n                                                            e.preventDefault()\r\n                                                            this.setState({ showModaNewsLetters: false })\r\n                                                        }}\r\n                                                        className=\"btn-secondary-m\"\r\n                                                    >\r\n                                                        <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\r\n                                                    </button>\r\n                                                    <button\r\n                                                        type=\"submit\"\r\n                                                        className=\"btn-primary-m\"\r\n                                                        value={this.props.intl.formatMessage({ id: 'save_changes' })}\r\n                                                        data-cy=\"change_password__form-submit\"\r\n                                                        style={{ marginBottom: '0' }}\r\n                                                    >\r\n                                                        {this.props.intl.formatMessage({ id: 'save_changes' })}\r\n                                                    </button>\r\n                                                </div>\r\n                                            </div>\r\n                                        </form>\r\n                                    </Modal>\r\n                                )}\r\n                            </div>\r\n                            {this.props.isAdmin && (\r\n                                <div>\r\n                                    <div className=\"toolbar\">\r\n                                        <div className=\"container\">\r\n                                            <div className=\"row\">\r\n                                                <div className=\"col-12 \">\r\n                                                    <h4>\r\n                                                        <Translation id=\"add_user_center\" defaultMessage=\"Add user center\" />\r\n                                                    </h4>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"container\">\r\n                                        <div className=\"row\">\r\n                                            <div className=\"col-12 \">\r\n                                                <AddAccountCenterForm onAddEmailCenter={this.props.onAddEmailCenter} userName={this.props.userName} />\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            )}\r\n                            {this.props.isAdmin && (\r\n                                <div>\r\n                                    <div className=\"toolbar\">\r\n                                        <div className=\"container\">\r\n                                            <div className=\"row\">\r\n                                                <div className=\"col-12 \">\r\n                                                    <h4>\r\n                                                        <Translation id=\"create_customer_account\" defaultMessage=\"Create customer account\" />\r\n                                                    </h4>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"container\">\r\n                                        <div className=\"row\">\r\n                                            <div className=\"col-12 \">\r\n                                                <CreateAccountForm showLogin={this.showLogin} onCreateAccount={this.props.onCreateAccount} />\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            )}\r\n                        </div>\r\n                    )}\r\n                </div>\r\n            </div>\r\n        )\r\n        \r\n    }\r\n}\r\n\r\nexport default injectIntl(ProfileConfiguration)\r\n","import { connect } from 'react-redux'\nimport ProfileConfiguration from './ProfileConfiguration'\nimport { getCenters, getIsIkeaCenter } from '../../store/centers/reducers'\nimport { getEmail, getIsAdmin, getUserName } from '../../store/login/reducers'\nimport {\n    getProfileConfiguration,\n    getProfileConfigurationLoading,\n    getProfileConfigurationAlert,\n    getProfileConfigurationStatus,\n    getProfileConfigurationSending,\n    getProfileConfigurationAlertOfPassword,\n    getProfileConfigurationStatusOfPassword,\n    getPromotionConfiguration,\n    getProfileConfigurationEmails\n} from '../../store/profile-configuration/reducers'\nimport {\n    fetchProfileConfiguration,\n    saveProfileConfiguration,\n    changePassword,\n    fetchPromotionConfiguration,\n    savePromotionConfiguration\n} from '../../store/profile-configuration/actions'\nimport { getAvailableLands } from '../../store/ui/reducers'\nimport { getShippingAddresses } from '../../store/shipping-addresses/reducers'\nimport { createAccount } from '../../store/login/actions'\nimport { addEmailCenter } from '../../store/login/actions'\n\nconst mapStateToProps = (state, ownProps) => {\n    return {\n        email: getEmail(state),\n        profileConfiguration: getProfileConfiguration(state),\n        centers: getCenters(state),\n        isLoading: getProfileConfigurationLoading(state),\n        isSending: getProfileConfigurationSending(state),\n        alert: getProfileConfigurationAlert(state),\n        alertOfPassword: getProfileConfigurationAlertOfPassword(state),\n        status: getProfileConfigurationStatus(state),\n        statusOfPassword: getProfileConfigurationStatusOfPassword(state),\n        availableLands: getAvailableLands(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        shippingAddresses: getShippingAddresses(state),\n        promotionConfiguration: getPromotionConfiguration(state),\n        isAdmin: getIsAdmin(state),\n        userName: getUserName(state),\n        emails: ownProps.emails ? ownProps.emails : getProfileConfigurationEmails(state),\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchProfileConfiguration: () => dispatch(fetchProfileConfiguration()),\n        saveProfileConfiguration: profileConfigData => {\n            dispatch(saveProfileConfiguration(profileConfigData))\n        },\n        changePassword: pass => {\n            return dispatch(changePassword(pass))\n        },\n        fetchPromotionConfiguration: () => dispatch(fetchPromotionConfiguration()),\n        savePromotionConfiguration: profileConfigPromotion => {\n            dispatch(savePromotionConfiguration(profileConfigPromotion))\n        },\n        onCreateAccount: (username, email) => {\n            dispatch(createAccount(username, email))\n        },\n        onAddEmailCenter: (user, email) => {\n            dispatch(addEmailCenter(user, email))\n        }\n    }\n}\n\nconst ProfileConfigurationContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProfileConfiguration)\n\nexport default ProfileConfigurationContainer\n","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\n\nclass DirectSlabAccessForm extends React.Component {\n    handleSubmitByInvoice = e => {\n        e.preventDefault()\n        this.props.fetchDirectSlabAccess(null, this.invoiceIdInput.value)\n    }\n    handleSubmitByReservation = e => {\n        e.preventDefault()\n        this.props.fetchDirectSlabAccess(this.reservationIdInput.value, null)\n    }\n    render() {\n        return (\n            <div className=\"row forms-search-dsa\">\n                <div className=\"col-12 col-md-6\">\n                    <form onSubmit={this.handleSubmitByInvoice} className=\"form-inline\">\n                        <input\n                            type=\"text\"\n                            id=\"invoiceIdInput\"\n                            className=\"form-control\"\n                            placeholder={this.props.intl.formatMessage({ id: 'invoice_id' })}\n                            autoFocus\n                            ref={node => {\n                                this.invoiceIdInput = node\n                            }}\n                        />\n\n                        <input type=\"submit\" className=\"bt bt-inverted loginbutton\" value={this.props.intl.formatMessage({ id: 'search' })} />\n                    </form>\n                </div>\n                <div className=\"col-12 col-md-6\">\n                    <form onSubmit={this.handleSubmitByReservation} className=\"form-inline\">\n                        <input\n                            type=\"text\"\n                            id=\"reservationIdInput\"\n                            className=\"form-control\"\n                            placeholder={this.props.intl.formatMessage({ id: 'reservation_id' })}\n                            autoFocus\n                            ref={node => {\n                                this.reservationIdInput = node\n                            }}\n                        />\n\n                        <input id=\"reservationIdSubmit\" type=\"submit\" className=\"bt bt-inverted loginbutton\" value={this.props.intl.formatMessage({ id: 'search' })} />\n                    </form>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(DirectSlabAccessForm)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport ReactTable from 'react-table'\nimport DirectSlabAccessForm from './DirectSlabAccessForm'\nimport Spinner from '../global/Spinner'\nimport Button from '../global/Button'\n\nclass DirectSlabAccess extends React.Component {\n    getOrderImagesDownloadUrl = () => {\n        const id = this.props.reservationId ? 'reservationId=' + this.props.reservationId : 'invoiceId=' + this.props.invoiceId\n        // return process.env.REACT_APP_API_HOST + '/users/order-images?' + id + '&lang=' + this.props.lang + '&authToken=' + this.props.token\n        return process.env.REACT_APP_API_HOST + '/users/order-images?' + id + '&lang=' + this.props.lang\n    }\n    render() {\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-12\">\n                        <div className=\"toolbar\">\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <div className=\"col-12 \">\n                                        <h4>\n                                            <Translation id=\"direct_slab_access\" defaultMessage=\"Direct slab access\" />\n                                        </h4>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n\n                        <DirectSlabAccessForm fetchDirectSlabAccess={this.props.fetchDirectSlabAccess} />\n                    </div>\n                </div>\n                <div className=\"row\">\n                    <div className=\"col-12\">\n                        {this.props.directSlabAccess && (\n                            <div>\n                                {(this.props.reservationId || this.props.invoiceId) && (\n                                    <div className=\"row\">\n                                        <div className=\"col-12 text-right mb-3\">\n                                            <Button inline size=\"tiny\" icon=\"download\" onClick={() => this.props.getFileByUrl(this.getOrderImagesDownloadUrl(), 'images', 'zip')}>\n                                                <Translation id=\"download_images\" defaultMessage=\"Download images\" />\n                                            </Button>\n                                        </div>\n                                    </div>\n                                )}\n                                <ReactTable\n                                    data={this.props.directSlabAccess}\n                                    columns={[\n                                        { Header: <Translation id=\"centerName\" defaultMessage=\"Center Name\" />, accessor: 'centerName' },\n                                        { Header: <Translation id=\"brand\" defaultMessage=\"Brand\" />, accessor: 'brand' },\n                                        { Header: <Translation id=\"productId\" defaultMessage=\"Product ID\" />, accessor: 'productId' },\n                                        { Header: <Translation id=\"productName\" defaultMessage=\"Product name\" />, accessor: 'productName' },\n                                        { Header: <Translation id=\"shade\" defaultMessage=\"Shade\" />, accessor: 'shade', minWidth: 60 },\n                                        { Header: <Translation id=\"lotId\" defaultMessage=\"Lot ID\" />, accessor: 'lotId' },\n                                        { Header: <Translation id=\"length\" defaultMessage=\"Length\" />, accessor: 'length', minWidth: 60 },\n                                        { Header: <Translation id=\"width\" defaultMessage=\"Width\" />, accessor: 'width', minWidth: 60 },\n                                        { Header: <Translation id=\"quality\" defaultMessage=\"Quality\" />, accessor: 'quality', minWidth: 60 },\n                                        { Header: <Translation id=\"thickness\" defaultMessage=\"Thickness\" />, accessor: 'thickness', minWidth: 60 },\n                                        { Header: <Translation id=\"qty_sqf\" defaultMessage=\"QTY-SQF\" />, accessor: 'qty_sqf' },\n                                        { Header: <Translation id=\"qty_m2\" defaultMessage=\"QTY-M2\" />, accessor: 'qty_m2' },\n                                        {\n                                            Header: <Translation id=\"download\" defaultMessage=\"Download\" />,\n                                            Cell: ({ original }) => {\n                                                if (original.lotId) {\n                                                    if (this.props.lotsImages && this.props.lotsImages[original.lotId] && this.props.lotsImages[original.lotId].dot_slab) {\n                                                        return (\n                                                            <a href={this.props.lotsImages[original.lotId].dot_slab} className=\"bt\">\n                                                                <i className=\"fal fa-download \" />\n                                                            </a>\n                                                        )\n                                                    } else return null\n                                                } else return null\n                                            }\n                                        }\n                                    ]}\n                                    defaultPageSize={8}\n                                    pageSizeOptions={[8, 16, 32, 64, 128]}\n                                    previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                    nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                    loading={this.props.isLoading}\n                                    loadingText={<Spinner isLoading={this.props.isLoading} />}\n                                    noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                                    pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                    ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                                />\n                            </div>\n                        )}\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default DirectSlabAccess\n","import { connect } from 'react-redux'\nimport DirectSlabAccess from './DirectSlabAccess'\nimport { getDirectSlabAccess, getDirectSlabAccessLoading, getReservationId, getInvoiceId } from '../../store/direct-slab-access/reducers'\nimport { injectIntl } from 'react-intl'\nimport { fetchDirectSlabAccess } from '../../store/direct-slab-access/actions'\nimport { getToken } from '../../store/login/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport { getLotsImages } from '../../store/lots/reducers'\nimport { getFileByUrl } from '../../store/orders/actions'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        directSlabAccess: getDirectSlabAccess(state),\n        key: getDirectSlabAccess(state),\n        isLoading: getDirectSlabAccessLoading(state),\n        token: getToken(state),\n        lang: getLanguage(state),\n        reservationId: getReservationId(state),\n        invoiceId: getInvoiceId(state),\n        lotsImages: getLotsImages(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchDirectSlabAccess: (reservationIdValue, invoiceIdValue) => {\n            dispatch(fetchDirectSlabAccess(reservationIdValue, invoiceIdValue))\n        },\n        getFileByUrl: url => {\n            dispatch(getFileByUrl(url))\n        }\n    }\n}\n\nconst DirectSlabAccessContainer = injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(DirectSlabAccess)\n)\n\nexport default DirectSlabAccessContainer\n","import * as api from '../api'\nimport { getToken } from '../login/reducers'\nimport { getLanguage } from '../ui/reducers'\nimport { fetchLotsImages } from '../lots/actions'\n\nexport const fetchDirectSlabAccess = (reservationId, invoiceId) => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_DIRECT_SLAB_ACCESS_REQUEST'\n    })\n    return api.fetchDirectSlabAccess(reservationId, invoiceId, getToken(getState()), getLanguage(getState())).then(\n        response => {\n            dispatch({ type: 'FETCH_DIRECT_SLAB_ACCESS_SUCCESS', response: response.data, reservationId, invoiceId })\n            let lotIds = []\n            response.data.forEach(row => {\n                if (row.lotId) lotIds.push(row.lotId)\n            })\n            dispatch(fetchLotsImages(lotIds))\n        },\n        error => {\n            dispatch({ type: 'FETCH_DIRECT_SLAB_ACCESS_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport ProfileContainer from '../profile/ProfileContainer'\nimport RectangleResultContainer from '../catalog/rectangleResult/RectangleResultContainer'\nimport LocalizedLink from '../global/LocalizedLink'\nimport Spinner from '../global/Spinner'\nimport favoritos from '../../assets/img/favoritos.png'\n\nclass ProductsFavourite extends React.Component {\n    componentDidMount() {\n        this.props.fetchProductsFavourite()\n    }\n\n    render() {\n        const { products } = this.props\n\n        return (\n            <div className=\"box-profile row\">\n                <div className=\"box-profile-menu col-12 col-md-4 col-lg-3\">\n                    <ProfileContainer />\n                </div>\n                <div className=\"box-profile-form col-12 col-xl-9\">\n                    <div className=\"profile-form\" style={{backgroundColor: 'white'}}>\n                        {this.props.isLoading && <Spinner isLoading={this.props.isLoading} />}\n\n                        {products && products.length > 0 ? (\n                            <div className=\"row last-colors\">\n                                <div className=\"col-12\">\n                                    <div className=\"container result_products_favourite\">\n                                        {products.map(product => {\n                                            return <RectangleResultContainer product={product} key={product.productId}/>\n                                        })}\n                                        <div className='box-favourite-add'>\n                                            <span className='mb-5 box-favourite-add-text'><Translation\n                                                id=\"add_more_favorite_products_here_to_find_them_more_quickly\"\n                                                defaultMessage=\"Add more favorite products here to find them more quickly\"></Translation></span>\n                                            <LocalizedLink routeId=\"ROUTE_CATALOG\" params={{outlet: ''}}>\n                                                <button className='btn-primary-m'>\n                                                    <Translation id=\"keep_buying\" defaultMessage=\"Keep Buying\"/>\n                                                </button>\n                                            </LocalizedLink>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        ) : (\n                            <div className='box-favourite'>\n                                <div className='box-image-favourite'>\n                                    <img width={'225px'} src={favoritos} alt=''/>\n                                </div>\n                                <div className='box-text-favourite'>\n                                    <h1 className='title-favourite'><Translation id=\"your_favourite_list_is_empty\"\n                                                                                 defaultMessage=\"Your favourite list is empty\"/>\n                                    </h1>\n                                    <p className='text-favourite'><Translation id=\"add_favorite_products_here_find_them\"\n                                                                               defaultMessage=\"Add your favorite products here to find them faster\"/>\n                                    </p>\n                                    <p className='text-2-favourite'><Translation\n                                        id=\"click_the_heart_icon_each_item_will_be_automatically_added\"\n                                        defaultMessage=\"Just click on the heart icon in the upper right corner of each item and it will be automatically added to this section\"/>\n                                    </p>\n                                    <LocalizedLink routeId=\"ROUTE_CATALOG\" params={{outlet: ''}}>\n                                        <button className='btn-primary-m'>\n                                            <Translation id=\"keep_buying\" defaultMessage=\"Keep Buying\"/>\n                                        </button>\n                                    </LocalizedLink>\n                                </div>\n                            </div>\n                        )}\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(ProductsFavourite)\n","import { connect } from 'react-redux'\nimport ProductsFavourite from './ProductsFavourite'\nimport { getIsLoading, getProductsFavouritesByIds } from '../../store/products/reducers'\nimport { fetchProductsFavourite } from '../../store/products/actions'\n\nconst mapStateToProps = state => {\n    return {\n        products: getProductsFavouritesByIds(state),\n        isLoading: getIsLoading(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchProductsFavourite: () => {\n            dispatch(fetchProductsFavourite())\n        }\n    }\n}\n\nconst ProductsFavouriteContainer = connect(mapStateToProps, mapDispatchToProps)(ProductsFavourite)\n\nexport default ProductsFavouriteContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport { fetchRecurringOrderDetails, add2CartRecurringOrder } from '../../store/orders/actions'\nimport { getOrderDetailsLoading, getRecurringOrderDetails, getOrdersLoadingAdd, getselectedRecurringOrder } from '../../store/orders/reducers'\nimport { getToken } from '../../store/login/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport Button from '../global/Button'\nimport Modal from '../global/Modal'\nimport Spinner from '../global/Spinner'\nimport { getBusinesSegmentOptions, getUseOptions } from '../../store/segmentation/reducers'\nimport moment from 'moment'\nimport CartLineContainer from '../cart-line/CartLineContainer'\n\nconst mapStateToProps = state => {\n    return {\n        recurringOrderDetails: getRecurringOrderDetails(state),\n        isLoading: getOrderDetailsLoading(state),\n        isLoadingAdd: getOrdersLoadingAdd(state),\n        token: getToken(state),\n        lang: getLanguage(state),\n        segmentation: getBusinesSegmentOptions(state),\n        use: getUseOptions(state),\n        selectedRecurringOrder: getselectedRecurringOrder(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchRecurringOrderDetails: reservationId => {\n            dispatch(fetchRecurringOrderDetails(reservationId))\n        },\n        add2CartRecurringOrder: num => {\n            dispatch(add2CartRecurringOrder(num))\n        }\n    }\n}\n\nclass RecurringOrderDetails extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {}\n    }\n\n    componentDidMount() {\n        this.props.fetchRecurringOrderDetails(this.props.selectedRecurringOrder)\n    }\n\n    add2CartRecurringOrder = id => {\n        this.props.add2CartRecurringOrder(id)\n    }\n\n    render() {\n        let { recurringOrderDetails, onClose, isLoadingAdd, isLoading } = this.props\n\n        if (!recurringOrderDetails.lines) return null\n        return (\n            <Modal\n                title={\n                    <span>\n                        <Translation id=\"recurring_orders\" defaultMessage=\"Recurring Orders\" />{' '}\n                        <small>\n                            <Translation id=\"order_date\" />: {moment(recurringOrderDetails.createdAt + '+00:00').calendar()}\n                        </small>\n                    </span>\n                }\n                footer={''}\n                onClose={onClose}\n                size=\"large\"\n                customClass=\"modal-recurring-orders\"\n            >\n                {(isLoadingAdd || isLoading) && <Spinner isLoading={isLoadingAdd || isLoading} />}\n                <div className=\"recurring-orders-details-scroll  products item-list\">\n                    {recurringOrderDetails.lines.map((line,index) => {\n                        line.brand = line.product.brand\n                        line.businessSegment = line.segmentation.businessSegment\n                        line.channel = line.segmentation.channel\n                        line.displayName = line.product.productName\n                        line.productId = line.product.productId\n                        line.subchannel = line.segmentation.subchannel\n                        line.thumb = line.product.thumb\n                        line.typology = line.segmentation.typology\n                        line.use = line.segmentation.use\n                        line.lineId = index +1\n                        return (\n                            <div>\n                                <CartLineContainer line={line} type=\"lowes_order_details\" />\n                                <hr />\n                            </div>\n                        )\n                    })}\n                </div>\n                <hr />\n                {!this.props.isLoading && (\n                    <div className=\"row\">\n                        <div className=\"col-8 offset-2 col-lg-4 offset-lg-8 txt-centered\">\n                            {isLoadingAdd ? (\n                                <Button inline icon=\"shopping-cart\" disabled>\n                                    <Translation id=\"add_to_cart\" />\n                                </Button>\n                            ) : (\n                                <Button\n                                    inline\n                                    icon=\"shopping-cart\"\n                                    onClick={() => {\n                                        this.add2CartRecurringOrder(recurringOrderDetails.id)\n                                    }}\n                                >\n                                    <Translation id=\"add_to_cart\" />\n                                </Button>\n                            )}\n                        </div>\n                    </div>\n                )}\n            </Modal>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(RecurringOrderDetails)\n)\n","import React,{useState} from 'react'\n\nimport Select from 'react-select'\nimport iconLocation from '../../assets/img/icons/location.svg'\nimport chevronDown from '../../assets/img/icons/chevron-down.svg'\nimport { injectIntl } from 'react-intl'\nimport confirm from '../global/confirm'\nimport Translation from '../global/Translation'\nimport Button from '../global/Button'\nimport PropTypes from 'prop-types'\nimport createClass from 'create-react-class'\nimport Modal from '../global/Modal';\n\nconst centerOption = createClass({\n    propTypes: {\n        children: PropTypes.node,\n        className: PropTypes.string,\n        isDisabled: PropTypes.bool,\n        isFocused: PropTypes.bool,\n        isSelected: PropTypes.bool,\n        onFocus: PropTypes.func,\n        onSelect: PropTypes.func,\n        option: PropTypes.object.isRequired\n    },\n    handleMouseDown(event) {\n        event.preventDefault()\n        event.stopPropagation()\n        this.props.onSelect(this.props.option, event)\n    },\n    handleMouseEnter(event) {\n        this.props.onFocus(this.props.option, event)\n    },\n    handleMouseMove(event) {\n        if (this.props.isFocused) return\n        this.props.onFocus(this.props.option, event)\n    },\n    render() {\n        let imageStyle = {\n            borderRadius: 3,\n            display: 'inline-block',\n            marginRight: 2,\n            position: 'relative',\n            top: -2,\n            verticalAlign: 'middle',\n            height: '20px',\n            background: 'transparent',\n            color: 'black'\n        }\n        const icons = { FULL_TRUCK: 'icon fal fa-truck', DIRECT_TRUCK: 'icon fal fa-truck', CONTAINER: 'icon fal fa-ship', SINGLE_SLAB: 'icon fal fa-rectangle-wide' }\n        return (\n            <div\n                className={this.props.className}\n                onMouseDown={this.handleMouseDown}\n                onMouseEnter={this.handleMouseEnter}\n                onMouseMove={this.handleMouseMove}\n                title={this.props.option.title}\n            >\n                <span>{this.props.children}</span>\n                {this.props.option.userType !== 'ADMIN'\n                    ? this.props.option.shippingMethods.map((shippingMethod, index) => <i key={index} className={icons[shippingMethod]} style={imageStyle} />)\n                    : null}\n            </div>\n        )\n    }\n})\n\nconst confirmChangeCenter = (center, onChangeCenter, intl, keepHere, userType, localizedUrl, reloadPage) => {\n    if (keepHere) {\n        onChangeCenter(parseInt(center, 10))      \n        if (reloadPage) setTimeout(() => {\n            window.location.reload()\n        }, \"1000\")         \n    } else {\n        confirm(intl.formatMessage({ id: 'CHANGE_CENTER_CONFIRM' })).then(\n            confirm => {\n                if (center !== 7777) onChangeCenter(parseInt(center, 10), localizedUrl(intl, 'ROUTE_HOME'))\n                else if (userType !== 'ADMIN') onChangeCenter(parseInt(center, 10), localizedUrl(intl, 'ROUTE_CATALOG_LOWES').replace(':filter', 'home'))\n                else onChangeCenter(parseInt(center, 10), localizedUrl(intl, 'ROUTE_CATALOG_LOWES_ADMIN' ).replace(':filter', 'home'))\n            },\n            cancel => {}\n        )\n    }\n}\n\nconst CentersV2 = ({ centers, intl, onChangeCenter, selectedCenter, keepHere, userType, dir: languageDir, employeeId, setEmployeeId, localizedUrl, reloadPage, simple, isSpanishSalesOrg, userName, naturalStoneViewingPermissions, isBetweenCenters }) => {\n    const [showModal, changeShowModal] = useState(false)\n    const [selectedCenterOnModal, changeSelectedCenter] = useState(selectedCenter)\n\n    let options = centers.map(center => {\n        return { value: center.centerId, label: center.name, shippingMethods: center.shippingTypes, userType: userType }\n    })\n\n    /**\n     * Shown to all users except distributors, not loogged, admins, supply center 1100, distribution channel 10 and 11.\n     * @param {object} state\n     * @returns {boolean}\n     */\n    const manipulateCenterOptionsValues = () => {\n        const { canViewHQ, canViewBrazil } = naturalStoneViewingPermissions\n    \n        // Case for LKARLSSON or when the user has both HQ and Brazil permissions\n        if ((canViewHQ && isSpanishSalesOrg) || userName === 'LKARLSSON') {\n            return options\n        }\n    \n        /* if (canViewBrazil && isBetweenCenters(7500) !== null) {\n            return options\n        } */\n\n        if (canViewHQ && !isSpanishSalesOrg) {\n            return options.filter((center) => center.value != 1100)\n        }\n    \n        /* if (canViewHQ && !canViewBrazil && !isSpanishSalesOrg) {\n            return options.filter((center) => center.value !== 1100)\n        } */\n\n        /* if (!canViewHQ && canViewBrazil && isBetweenCenters(7500) === null) {\n            return options.filter((center) => center.value !== 7500)\n        } */\n    \n        return options\n    }\n    \n    let currentCenter = centers.filter(center => center.centerId == selectedCenter)[0]\n    let input = (\n        <div className='center-name-header'>\n            {currentCenter ? (\n                <span>\n                    <strong style={{color: \"blue\"}}>{currentCenter.name}</strong>{' '}<span onClick={changeShowModal} style={{ color: 'rgb(0, 123, 255)', cursor: 'pointer' }} data-qas=\"global_header-select-center-dropdown-open-button\"><img alt=\"\" src={chevronDown} /></span>\n                </span>\n            ) : (\n                intl.formatMessage({ id: 'a_center_near_to_you' })\n            )}{' '}\n        </div>\n    )\n\n    const simpleInput = (\n        <div style={{\n            display: 'flex',\n            flexDirection: 'row',\n            flexWrap: 'wrap',\n            justifyContent: 'end'\n        }}>\n            <Translation id=\"you_are_ordering_from\" defaultMessage=\"You are ordering products from \"/>\n            <span style={{fontWeight:500}}>\n                &nbsp;{currentCenter && currentCenter.name}\n            </span>\n            <span onClick={changeShowModal} style={{color: \"#365BCA\", cursor: \"pointer\", fontWeight:500}}>\n                &nbsp;<Translation id=\"change\" defaultMessage=\"Change\"  />\n            </span>\n        </div>\n    )\n            \n            // let options = centers.map(center => {\n            //     return { value: center.centerId, label: center.name, shippingMethods: center.shippingTypes, userType: userType }\n            // })\n            // let input = ''\n            // if (!selectedCenter) {\n            //     input = <input type=\"text\" readOnly placeholder={intl.formatMessage({ id: 'a_center_near_to_you' })} />\n            // } else if (centers.length === 1) {\n            //     input = <input type=\"text\" readOnly value={centers[0].name !== 'IKEA' ? centers[0].name : ''} className={'center' + selectedCenter} />\n            // } else {\n            //     input = (\n            //         <Select\n            //             onChange={selectOption => {\n            //                 if (selectOption !== null) confirmChangeCenter(selectOption.value, onChangeCenter, intl, keepHere, userType)\n            //             }}\n            //             value={selectedCenter}\n            //             options={options}\n            //             optionComponent={centerOption}\n            //             clearable={false}\n            //             className={'Select_center center' + selectedCenter}\n            //             rtl={languageDir === 'rtl'}\n            //         />\n            //     )\n            // }\n\n            return (\n                <div className=\"select-center\">\n                    { simple ? simpleInput : input }\n                    {showModal && (\n                        <Modal\n                        customStyle={{'overflow-y': 'visible'}}\n                        title={<Translation id=\"showing_catalog_of_center\" defaultMessage=\"Showing catalog of {centerName}\" values={{ centerName: currentCenter.name }} />}\n                            // title={<Translation id=\"showing_catalog_of_center\" defaultMessage=\"Showing catalog of \"></Translation>>}\n                            subtitle={<Translation id=\"change_center_to_view_other_catalogs\" defaultMessage=\"Change your Cosentino center to view other products catalog\"></Translation>}\n                            onClose={() => changeShowModal()}\n                        >\n                            <div className=\"container\" style={{padding:0}}>\n                                <div className=\"form-group text-center\" data-qas=\"global_header-select-center-dropdown-button\">\n                                    <Select\n                                        onChange={selectOption => {\n                                            // if (selectOption !== null) confirmChangeCenter(selectOption.value, onChangeCenter, intl, keepHere, userType)\n                                            changeSelectedCenter(selectOption)\n                                        }}\n                                        value={selectedCenterOnModal}\n                                        options={manipulateCenterOptionsValues()}\n                                        optionComponent={centerOption}\n                                        clearable={false}\n                                        className={'Select_center center' + selectedCenter}\n                                        rtl={languageDir === 'rtl'}\n                                    />\n                                </div>\n                            </div>\n                            <Button onClick={() => {\n                                confirmChangeCenter(selectedCenterOnModal.value, onChangeCenter, intl, keepHere, userType, localizedUrl, reloadPage)\n                                \n                                console.log(selectedCenterOnModal)\n                                }} inverted dataQas=\"global_header-select-center-load-catalog-button\"><Translation id=\"load_catalog\" defaultMessage=\"Load catalog\" /></Button>\n                        </Modal>\n                    )}\n                    {/* {!keepHere && (\n                        <div className=\"icon\">\n                            <img\n                                alt=\"\"\n                                src={iconLocation}\n                                aria-hidden=\"true\"\n                            />\n                        </div>\n                    )} */}\n                </div>\n            )\n        }\n\nexport default injectIntl(CentersV2)\n","import { connect } from 'react-redux'\nimport { getCenters, getSelectedCenter, canViewCatalog, getLowesCenterId, getIsMkToolsCenter, isBetweenCenters } from '../../store/centers/reducers'\nimport { fetchProductsDiscounts } from '../../store/products/actions'\nimport { changeCenter } from '../../store/centers/actions'\nimport { getUserType, isSpanishSalesOrg, getUserName, getNaturalStoneViewingPermissions } from '../../store/login/reducers'\nimport { getLanguageDir, getLocalizedUrl } from '../../store/ui/reducers'\nimport { getEmployeeId } from '../../store/big-account/reducers'\nimport CentersV2 from \"./CentersV2\";\n\nconst mapStateToProps = (state) => {\n    return {\n        centers: getCenters(state),\n        selectedCenter: getSelectedCenter(state),\n        canViewCatalog: canViewCatalog(state),\n        key: getSelectedCenter(state),\n        userType: getUserType(state),\n        languageDir: getLanguageDir(state),\n        localizedUrl: (intl, routeId) => getLocalizedUrl(state, intl, routeId),\n        employeeId: getEmployeeId(state),\n        LowesCenterId: getLowesCenterId(),\n        isMkToolsCenter: getIsMkToolsCenter(state),\n        isSpanishSalesOrg: isSpanishSalesOrg(state),\n        userName: getUserName(state),\n        naturalStoneViewingPermissions: getNaturalStoneViewingPermissions(state),\n        isBetweenCenters: (centerId) => isBetweenCenters(centerId, state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onChangeCenter: (centerId, urlCallback) => {\n            dispatch({ type: 'CHANGE_CENTER_BY_USER', center: centerId })\n            dispatch(changeCenter(centerId, urlCallback))\n            dispatch({ type: 'REMEMBERED_CENTER' })\n            dispatch(fetchProductsDiscounts())\n        },\n        setEmployeeId: employeeId => Promise.resolve(dispatch({ type: 'SET_EMPLOYEE_ID', employeeId }))\n    }\n}\n\nconst CentersContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(CentersV2)\n\nexport default CentersContainer\n","import React from 'react'\nimport { injectIntl, FormattedMessage } from 'react-intl'\nimport { getBusinesSegmentOptions, getUseOptions, getHasSegmentationV3, getChannelOptionsV3, getTypologyOptionsV3 } from '../../store/segmentation/reducers'\nimport { getShippingMethod } from '../../store/centers/reducers'\nimport { connect } from 'react-redux'\n\nconst mapStateToProps = state => {\n    return {\n        businesSegmentOptions: getBusinesSegmentOptions(state),\n        useOptions: getUseOptions(state),\n        shippingMethod: getShippingMethod(state),\n        segmentationV3: getHasSegmentationV3(state),\n        channelOptionsV3: getChannelOptionsV3(state),\n        typologyOptionsV3: getTypologyOptionsV3(state)\n    }\n}\nclass LineSegmentationRecurring extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { showHelp: false }\n    }\n\n    render() {\n        let { line, businesSegmentOptions, useOptions, segmentationV3, channelOptionsV3, typologyOptionsV3 } = this.props\n\n        let productBS, businessSegment, channel, subchannel, salesforceId, projectId, typology, use\n        if (line.segmentation) {\n            if (!segmentationV3) {\n                productBS = line.businessSegment === null ? 'NOT' : line.businessSegment\n                businessSegment = businesSegmentOptions ? businesSegmentOptions[productBS] : undefined\n                channel = businessSegment ? businessSegment.channels[line.channel] : undefined\n                subchannel = channel ? channel.subchannels[line.subchannel] : undefined\n                typology = subchannel ? subchannel.typologies[line.typology] : undefined\n                use = useOptions ? useOptions.find(option => line.use === option.id) : undefined\n            } else {\n                channel = channelOptionsV3 ? channelOptionsV3[line.channel] : undefined\n                // subchannel = channel ? channel.subchannels[line.subchannel] : undefined //subchannel is no longer needed to retrieve the salesforceid\n                businessSegment = line.segmentation.businessSegment ? line.segmentation.businessSegment : undefined\n                productBS = line.businessSegment === null ? 'NOT' : line.businessSegment\n                salesforceId = channel ? channel.salesforceRelations[line.segmentation.salesforceId] : undefined\n                projectId = salesforceId && line.segmentation.projectId ? salesforceId.projectOptions[line.segmentation.projectId] : undefined\n                typology = typologyOptionsV3 ? typologyOptionsV3.find(option => line.typology === option.id) : undefined\n                use = useOptions ? useOptions.find(option => line.use === option.id) : undefined\n            }\n        }\n\n        return (\n            Object.values(line.segmentation).some(value => {\n                if (Array.isArray(value)) return value.length > 0\n                else return value !== null\n            }) &&\n            <React.Fragment>\n                {channel && (\n                    <React.Fragment>\n                        {channel.name}\n                    </React.Fragment>\n                )}\n                {/*{'/'}*/}\n                <br/>\n                {line.segmentation.businessSegment && (\n                    <React.Fragment>\n                        {line.segmentation.businessSegment && productBS && <FormattedMessage id={productBS} />}\n                    </React.Fragment>\n                )}\n            </React.Fragment>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(LineSegmentationRecurring)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Spinner from '../global/Spinner'\nimport ProfileContainer from '../profile/ProfileContainer'\nimport Button from '../global/Button'\nimport RecurringOrderDetails from './RecurringOrderDetails'\nimport moment from 'moment'\nimport CentersContainer from '../centers/CentersContainer'\nimport LocalizedLink from '../global/LocalizedLink'\nimport $ from 'jquery'\nimport InputNumber from '../global/InputNumber'\nimport DatePicker from 'react-datepicker'\nimport debounce from 'lodash/debounce'\nimport ProductDisplayName from '../global/ProductDisplayName'\nimport LineSegmentationRecurring from '../cart-line/LineSegmentationRecurring'\nimport ProductImage from '../catalog/ProductImage'\nimport ReactTooltip from 'react-tooltip'\nimport DisplayOutletIndicator from '../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport DisplayDiscontinued from '../catalog/rectangleResult/displays/DisplayDiscontinued'\nimport { isNewIndicator, isUpcomingIndicator, canDisplayDiscontinued } from '../../store/products/reducers'\nimport DisplayUpcomingIndicator from '../catalog/rectangleResult/displays/DisplayUpcomingIndicator'\nimport DisplayNewIndicator from '../catalog/rectangleResult/displays/DisplayNewIndicator'\n\nconst DEFAULT_PAGE_SIZE = 5\nconst DEFAULT_PAGE_OPTION = { label: '2 rows', value: 2 }\n\nclass RecurringOrders extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedRecurringdOrder: null,\n            showRecurringOrderDetails: false,\n            selectedIndex: 0,\n            currentPageSize: DEFAULT_PAGE_SIZE,\n            currentValue: DEFAULT_PAGE_OPTION,\n            dateFrom: moment().subtract(3, 'month'),\n            dateTo: moment(),\n            recurringOrdersPaginateFilter: [],\n            pagesCount: 0,\n            search: null\n        }\n    }\n\n    componentDidMount() {\n        this.fetchRecurringOrders()\n    }\n    getMin(line) {\n        return line.product.min\n    }\n    getLimit(line) {\n        if (line.extra && line.extra.mall) {\n            return this.getLimitMall(line)\n        }\n        if (line.product.discontinued) {\n            if (this.props.isMktoolsUsaCenter && this.getLimitMktool(line) < this.getLimitDiscontinued(line)) return this.getLimitMktool(line)\n            else return this.getLimitDiscontinued(line)\n        } else if (this.props.isMktoolsUsaCenter) return this.getLimitMktool(line)\n        else if (line.product.isMktool) return this.getLimitMktool(line)\n        else if (line.extra && line.extra.outlet) return this.getLimitOutlet(line)\n        else return null\n    }\n    getLimitMktool(line) {\n        let result = line.qty\n        if (line.product.isMktool) {\n            if (this.props.isMktoolsUsaCenter && (line.product.max || line.product.max === 0)) result = line.qty + line.product.max\n            else result = result + 1000\n        }\n        if (this.props.qtyProductCart[line.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[line.product.productId], 10)\n        }\n        return result\n    }\n    getLimitOutlet(line) {\n        let result = line.qty\n        if (line.product.stock_outlet) {\n            result = result + parseInt(line.product.stock_outlet, 10)\n        }\n        if (this.props.qtyProductCart[line.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[line.product.productId], 10)\n        }\n        return result\n    }\n    getLimitDiscontinued(line) {\n        let result = line.qty\n        if (line.product.stock + line.product.stock_outlet) {\n            result = result + parseInt(line.product.stock + line.product.stock_outlet, 10)\n        }\n        if (this.props.qtyProductCart[line.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[line.product.productId], 10)\n        }\n        return result\n    }\n    getLimitMall(line) {\n        let result = line.qty\n        if (line.extra && line.extra.mall && line.extra.outlet && line.product.stock_outlet > 0) {\n            result = result + parseInt(line.product.stock_outlet, 10)\n        } else {\n            result = result + parseInt(line.product.stock, 10)\n        }\n        if (this.props.qtyProductCart[line.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[line.product.productId], 10)\n        }\n        return result\n    }\n\n    fetchRecurringOrders() {\n        this.props.fetchRecurringOrders(moment(this.state.dateFrom).format('YYYY-MM-DD')).then(() => {\n            this.setState({\n                pagesCount: Math.ceil(this.props.recurringOrders.length / this.state.currentPageSize),\n                // recurringOrdersPaginateFilter: this.props.recurringOrders ? this.props.recurringOrders.slice(this.state.selectedIndex * this.state.currentPageSize, this.state.selectedIndex * this.state.currentPageSize + this.state.currentPageSize) : []\n                recurringOrdersPaginateFilter: this.props.recurringOrders ? this.props.recurringOrders : []\n            })\n        })\n    }\n\n    fetchRecurringOrdersByDate() {\n        this.props.fetchRecurringOrders(moment(this.state.dateFrom).format('YYYY-MM-DD'), moment(this.state.dateTo).format('YYYY-MM-DD'), this.state.search).then(() => {\n            this.setState({\n                pagesCount: Math.ceil(this.props.recurringOrders.length / this.state.currentPageSize),\n                recurringOrdersPaginateFilter: this.props.recurringOrders\n                    ? this.props.recurringOrders.slice(\n                          this.state.selectedIndex * this.state.currentPageSize,\n                          this.state.selectedIndex * this.state.currentPageSize + this.state.currentPageSize\n                      )\n                    : []\n            })\n        })\n    }\n\n    fetchRecurringOrdersPaginate(page) {\n        this.props.fetchRecurringOrders(moment(this.state.dateFrom).format('YYYY-MM-DD'), moment(this.state.dateTo).format('YYYY-MM-DD'), this.state.search, page).then(() => {\n            this.setState({\n                pagesCount: Math.ceil(this.props.recurringOrders.length / this.state.currentPageSize),\n                recurringOrdersPaginateFilter: this.props.recurringOrders\n                    ? this.props.recurringOrders.slice(\n                          this.state.selectedIndex * this.state.currentPageSize,\n                          this.state.selectedIndex * this.state.currentPageSize + this.state.currentPageSize\n                      )\n                    : []\n            })\n        })\n    }\n\n    fetchRecurringOrdersSearch = debounce(() => {\n        this.props.fetchRecurringOrders(moment(this.state.dateFrom).format('YYYY-MM-DD'), moment(this.state.dateTo).format('YYYY-MM-DD'), this.state.search).then(() => {\n            this.setState({\n                pagesCount: Math.ceil(this.props.recurringOrders.length / this.state.currentPageSize),\n                recurringOrdersPaginateFilter: this.props.recurringOrders\n                    ? this.props.recurringOrders.slice(\n                          this.state.selectedIndex * this.state.currentPageSize,\n                          this.state.selectedIndex * this.state.currentPageSize + this.state.currentPageSize\n                      )\n                    : []\n            })\n        })\n    }, 500)\n\n    showHiddenTr(id) {\n        if ($('.' + id).hasClass('hidden-column-v2')) {\n            $('.' + id).removeClass('hidden-column-v2')\n            $('#pAll_' + id).css('display', 'none')\n            $('#pNotAll_' + id).css('display', 'block')\n        } else {\n            $('.' + id).addClass('hidden-column-v2')\n            $('#pAll_' + id).css('display', 'block')\n            $('#pNotAll_' + id).css('display', 'none')\n        }\n    }\n\n    filterDate() {\n        if (this.state.dateFrom && !this.state.dateTo) {\n            let recurringOrdersFilter = this.props.recurringOrders.filter(recurringOrder => {\n                let dateRecurringOrder = new Date(recurringOrder.createdAt)\n                let dateFrom = this.state.dateFrom ? new Date(this.state.dateFrom) : null\n                if (this.state.dateFrom && dateRecurringOrder >= dateFrom) {\n                    return recurringOrder\n                }\n            })\n            this.setState({\n                pagesCount: Math.ceil(recurringOrdersFilter.length / this.state.currentPageSize),\n                recurringOrdersPaginateFilter: recurringOrdersFilter\n                    ? recurringOrdersFilter.slice(\n                          this.state.selectedIndex * this.state.currentPageSize,\n                          this.state.selectedIndex * this.state.currentPageSize + this.state.currentPageSize\n                      )\n                    : []\n            })\n        } else if (!this.state.dateFrom && this.state.dateTo) {\n            let recurringOrdersFilter = this.props.recurringOrders.filter(recurringOrder => {\n                let dateRecurringOrder = new Date(recurringOrder.createdAt)\n                let dateTo = this.state.dateTo ? new Date(this.state.dateTo) : null\n                if (this.state.dateTo && dateRecurringOrder <= dateTo) {\n                    return recurringOrder\n                }\n            })\n            this.setState({\n                pagesCount: Math.ceil(recurringOrdersFilter.length / this.state.currentPageSize),\n                recurringOrdersPaginateFilter: recurringOrdersFilter\n                    ? recurringOrdersFilter.slice(\n                          this.state.selectedIndex * this.state.currentPageSize,\n                          this.state.selectedIndex * this.state.currentPageSize + this.state.currentPageSize\n                      )\n                    : []\n            })\n        } else if (this.state.dateFrom && this.state.dateTo) {\n            let recurringOrdersFilter = this.props.recurringOrders.filter(recurringOrder => {\n                let dateRecurringOrder = new Date(recurringOrder.createdAt)\n                let dateFrom = this.state.dateFrom ? new Date(this.state.dateFrom) : null\n                let dateTo = this.state.dateTo ? new Date(this.state.dateTo) : null\n                if (this.state.dateFrom && dateRecurringOrder >= dateFrom) {\n                    if (this.state.dateTo && dateRecurringOrder <= dateTo) {\n                        return recurringOrder\n                    }\n                }\n            })\n            this.setState({\n                pagesCount: Math.ceil(recurringOrdersFilter.length / this.state.currentPageSize),\n                recurringOrdersPaginateFilter: recurringOrdersFilter\n                    ? recurringOrdersFilter.slice(\n                          this.state.selectedIndex * this.state.currentPageSize,\n                          this.state.selectedIndex * this.state.currentPageSize + this.state.currentPageSize\n                      )\n                    : []\n            })\n        } else {\n            this.setState({\n                pagesCount: Math.ceil(this.props.recurringOrders.length / this.state.currentPageSize),\n                recurringOrdersPaginateFilter: this.props.recurringOrders\n                    ? this.props.recurringOrders.slice(\n                          this.state.selectedIndex * this.state.currentPageSize,\n                          this.state.selectedIndex * this.state.currentPageSize + this.state.currentPageSize\n                      )\n                    : []\n            })\n        }\n    }\n\n    filterOrder(value) {\n        let recurringOrdersFilter = this.props.recurringOrders.filter(recurringOrder => {\n            let exist = 0\n            for (let line of recurringOrder.lines) {\n                if (\n                    line.productName\n                        .toString()\n                        .toLowerCase()\n                        .indexOf(value.toLowerCase()) !== -1 ||\n                    line.productId.toString().indexOf(value) !== -1\n                ) {\n                    exist++\n                }\n            }\n            if (recurringOrder.id.toString().indexOf(value) !== -1 || exist !== 0) {\n                return recurringOrder\n            }\n        })\n        this.setState({\n            pagesCount: Math.ceil(recurringOrdersFilter.length / this.state.currentPageSize),\n            recurringOrdersPaginateFilter: recurringOrdersFilter\n                ? recurringOrdersFilter.slice(\n                      this.state.selectedIndex * this.state.currentPageSize,\n                      this.state.selectedIndex * this.state.currentPageSize + this.state.currentPageSize\n                  )\n                : []\n        })\n    }\n\n    render() {\n        const { showRecurringOrderDetails, closeModalRecurringOrderDetails } = this.props\n        let image = null\n\n        let pagination = []\n        let newPagination = []\n        if (this.state.recurringOrdersPaginateFilter && this.state.recurringOrdersPaginateFilter.length !== 0) {\n            let ii = this.state.recurringOrdersPaginateFilter[0].currentPage >= 10 ? this.state.recurringOrdersPaginateFilter[0].currentPage - 5 : 1\n            for (let i = ii; i < this.state.recurringOrdersPaginateFilter[0].lastPage; i++) {\n                if (i === 10) {\n                    break\n                }\n                pagination.push(\n                    <li\n                        className={i === this.state.recurringOrdersPaginateFilter[0].currentPage ? 'page-item active' : 'page-item'}\n                        onClick={() => this.fetchRecurringOrdersPaginate(i)}\n                    >\n                        <a role=\"button\" className=\"page-link\">\n                            {i}\n                        </a>\n                    </li>\n                )\n            }\n\n            if (pagination.length > 4) {\n                if (this.state.recurringOrdersPaginateFilter[0].currentPage !== 1 && this.state.recurringOrdersPaginateFilter[0].currentPage !== pagination.length) {\n                    newPagination = [\n                        pagination[this.state.recurringOrdersPaginateFilter[0].currentPage - 2],\n                        pagination[this.state.recurringOrdersPaginateFilter[0].currentPage - 1],\n                        pagination[this.state.recurringOrdersPaginateFilter[0].currentPage],\n                        <li>\n                            <span role=\"button\" className=\"page-link\">\n                                ...\n                            </span>\n                        </li>,\n                        pagination[pagination.length - 1]\n                    ]\n                } else {\n                    if (this.state.recurringOrdersPaginateFilter[0].currentPage === 1) {\n                        newPagination = [\n                            pagination[0],\n                            pagination[1],\n                            pagination[2],\n                            <li>\n                                <span role=\"button\" className=\"page-link\">\n                                    ...\n                                </span>\n                            </li>,\n                            pagination[pagination.length - 1]\n                        ]\n                    }\n                    if (this.state.recurringOrdersPaginateFilter[0].currentPage === pagination.length) {\n                        newPagination = [\n                            pagination[0],\n                            <li>\n                                <span role=\"button\" className=\"page-link\">\n                                    ...\n                                </span>\n                            </li>,\n                            pagination[pagination.length - 2],\n                            pagination[pagination.length - 1]\n                        ]\n                    }\n                }\n            }\n        }\n        return (\n            <div className=\"box-profile row\">\n                <div className=\"profile-container-box col-12 col-md-4 col-lg-3\">\n                    <ProfileContainer />\n                </div>\n                <div className=\"col-12 col-xl-9\">\n                    <div className=\"profile-form\">\n                        {this.props.isLoading && <Spinner isLoading={this.props.isLoading} />}\n                        <div\n                            className=\"header\"\n                            style={{ justifyContent: 'space-between', display: 'flex', backgroundColor: 'white', padding: '1em', flexWrap: 'wrap', alignItems: 'center' }}\n                        >\n                            <div id=\"filter_center\" className=\"location\">\n                                <span style={{ fontWeight: 'bold' }}>\n                                    <Translation id=\"center\" defaultMessage=\"Center\" />\n                                </span>\n                                <div className=\"box-select-center\" style={{ marginTop: '0.7rem', marginBottom: '0.5rem' }}>\n                                    <CentersContainer keepHere reloadPage={true} onChangeCenter={value => window.location.reload()} />\n                                </div>\n                            </div>\n                            <div className=\"date\">\n                                <div className=\"filter_date\">\n                                    <div>\n                                        <div id=\"filter_date_from\" className=\"location\">\n                                            <span style={{ fontWeight: 'bold' }}>\n                                                <Translation id=\"from\" defaultMessage=\"From\" />\n                                            </span>\n                                            <div style={{ marginTop: '0.5rem', marginBottom: '0.5rem' }}>\n                                                <DatePicker\n                                                    selected={this.state.dateFrom}\n                                                    onChange={selectedOption => {\n                                                        this.setState(\n                                                            {\n                                                                dateFrom: selectedOption\n                                                            },\n                                                            () => {\n                                                                this.fetchRecurringOrdersByDate()\n                                                            }\n                                                        )\n                                                    }}\n                                                    className=\"form-control\"\n                                                    autoComplete=\"off\"\n                                                    onKeyDown={e => e.preventDefault()}\n                                                />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div className=\"\">\n                                        <div id=\"filter_date_to\" className=\"location\">\n                                            <span style={{ fontWeight: 'bold' }}>\n                                                <Translation id=\"to\" defaultMessage=\"To\" />\n                                            </span>\n                                            <div style={{ marginTop: '0.5rem', marginBottom: '0.5rem' }}>\n                                                <DatePicker\n                                                    selected={this.state.dateTo}\n                                                    onChange={selectedOption => {\n                                                        this.setState(\n                                                            {\n                                                                dateTo: selectedOption\n                                                            },\n                                                            () => {\n                                                                this.fetchRecurringOrdersByDate()\n                                                            }\n                                                        )\n                                                    }}\n                                                    className=\"form-control\"\n                                                    autoComplete=\"off\"\n                                                    onKeyDown={e => e.preventDefault()}\n                                                />\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"search\" style={{ display: 'grid', alignContent: 'end', maxWidth: 'inherit' }}>\n                                <div id=\"filter_order\" className=\"location\">\n                                    <div style={{ marginTop: '0.5rem', marginBottom: '0.5rem' }}>\n                                        <input\n                                            type=\"text\"\n                                            placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                            style={{\n                                                width: '100%',\n                                                borderRadius: '6px',\n                                                padding: '0.4rem',\n                                                border: '2px solid #E5E5E5'\n                                            }}\n                                            onKeyUp={e => {\n                                                this.setState(\n                                                    {\n                                                        search: e.target.value\n                                                    },\n                                                    () => {\n                                                        this.fetchRecurringOrdersSearch()\n                                                    }\n                                                )\n                                            }}\n                                        />\n                                        <i className={`fal fa-search`}></i>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        {this.state.recurringOrdersPaginateFilter && this.state.recurringOrdersPaginateFilter.length > 0 ? (\n                            <div style={{ marginTop: '1rem' }}>\n                                {this.state.recurringOrdersPaginateFilter.map(value => {\n                                    let date = moment(value.createdAt).format('LL')\n                                    return (\n                                        <div id=\"recurring_profile\" gtm-id-pedido-recurrente={value.id} className=\"d-flex flex-column v2 recurring_profile\">\n                                            <div className=\"d-flex title\" style={{ borderBottom: '1px solid #EBEBEB', fontWeight: '600', paddingBottom: '0.2em' }}>\n                                                <div>\n                                                    <Translation id=\"order_placed\" defaultMessage=\"Order placed\" />\n                                                    {': ' + date}\n                                                </div>\n                                                <div>\n                                                    <Translation id=\"order_quantity\" defaultMessage=\"Order quantity\" />\n                                                    {`: ${value.lines.length}`}\n                                                </div>\n                                            </div>\n                                            <div className=\"mt-3\">\n                                                {value.lines.map((line, index) => {\n                                                    line.brand = line.product ? line.product.brand : ''\n                                                    line.businessSegment = line.segmentation.businessSegment\n                                                    line.channel = line.segmentation.channel\n                                                    line.displayName = line.product ? line.product.productName : ''\n                                                    line.productId = line.product ? line.product.productId : ''\n                                                    line.subchannel = line.segmentation.subchannel\n                                                    line.thumb = line.product ? line.product.thumb : ''\n                                                    line.typology = line.segmentation.typology\n                                                    line.use = line.segmentation.use\n                                                    line.lineId = index + 1\n                                                    line.orderId = value.id\n                                                    let qtyToAdd = null\n                                                    if (line.extra && line.extra.type === 'custom_sample') {\n                                                        qtyToAdd = 6\n                                                    } else if (line.cutToSize) {\n                                                        qtyToAdd = 1\n                                                    } else if (line.product && (line.product.typeId === '01' || line.product.typeId === 'NEWS')) {\n                                                        qtyToAdd = 1\n                                                    } else {\n                                                        qtyToAdd = line.product.minQty[this.props.shippingMethod]\n                                                    }\n                                                    return (\n                                                        <div className=\"desktop\" style={{ marginBottom: '1em' }}>\n                                                            <div className=\"desktop-version\">\n                                                                <div\n                                                                    className={`d-flex align-items-center ${line.lineId > 3 ? 'hidden-column-v2 ' + line.orderId : ''}`}\n                                                                    style={{ gap: '16px', height: '120px' }}\n                                                                >\n                                                                    <div className=\"line-item\" style={{ height: '100%' }}>\n                                                                        <div className=\"img\">\n                                                                            <div className=\"indicators\" style={{ maxWidth: '100%' }}>\n                                                                                {canDisplayDiscontinued(line.product.webHeading, line.product.discontinued) && (\n                                                                                    <DisplayDiscontinued discontinued={line.product.discontinued} inSmallBox={true} />\n                                                                                )}\n                                                                                {line.extra && line.extra.outlet && (\n                                                                                    <DisplayOutletIndicator outletQuality={line.extra.outlet} inSmallBox={true} />\n                                                                                )}\n                                                                                {isNewIndicator(line.product.creationDate) && <DisplayUpcomingIndicator />}\n                                                                                {isUpcomingIndicator(line.product.creationDate) && <DisplayNewIndicator />}\n                                                                            </div>\n                                                                            {line.cutToSize && line.cutToSize.thumb && <img alt=\"\" src={line.cutToSize.thumb} />}\n                                                                            {((line.extra && (line.extra.type === 'wall_sample' || line.extra.type === 'custom_sample')) ||\n                                                                                (line.extra && line.extra.type === 'brochures')) && (\n                                                                                <img alt=\"\" src={this.props.getImageBackground(line.product)} />\n                                                                            )}\n                                                                            {!(line.cutToSize && line.cutToSize.thumb) &&\n                                                                                !(\n                                                                                    (line.extra && (line.extra.type === 'wall_sample' || line.extra.type === 'custom_sample')) ||\n                                                                                    (line.extra && line.extra.type === 'brochures')\n                                                                                ) && (\n                                                                                    <LocalizedLink\n                                                                                        className=\"cart_line__link_image\"\n                                                                                        routeId=\"ROUTE_PRODUCT_DETAIL\"\n                                                                                        params={{ id: line.product.productId }}\n                                                                                    >\n                                                                                        <ProductImage product={line.product} customClass=\"recurring_orders_image\" />\n                                                                                    </LocalizedLink>\n                                                                                )}\n                                                                        </div>\n                                                                        <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'baseline', gap: 0 }}>\n                                                                            <div>\n                                                                                <span className=\"title\">\n                                                                                    {line.cutToSize ? line.cutToSize.colorName : <ProductDisplayName product={line.product} />}\n                                                                                </span>\n                                                                            </div>\n                                                                            <div>\n                                                                                <span style={{ fontSize: '10px' }}>{line.productId}</span>\n                                                                                {line.product.zaddon === 'MAL' && (\n                                                                                    <span>\n                                                                                        {' '}\n                                                                                        (<Translation id=\"MAL\" />)\n                                                                                    </span>\n                                                                                )}\n                                                                            </div>\n                                                                        </div>\n                                                                    </div>\n                                                                    <div style={{ flex: 1, height: '100%' }}>\n                                                                        <div style={{ display: 'flex', flexFlow: 'column' }}>\n                                                                            <span style={{ fontSize: '14px' }}>\n                                                                                <span style={{ fontWeight: 'bold', display: 'block', fontSize: '14px' }}>\n                                                                                    <Translation id=\"segmentation\" defaultMessage=\"Segmentation\" />\n                                                                                </span>\n                                                                                <LineSegmentationRecurring line={line} />\n                                                                            </span>\n                                                                        </div>\n                                                                    </div>\n                                                                    <div style={{ flex: 1, height: '100%' }}>\n                                                                        <div style={{ display: 'flex', flexFlow: 'column' }}>\n                                                                            <span style={{ fontSize: '14px' }}>\n                                                                                <span style={{ fontWeight: 'bold', display: 'block', fontSize: '14px' }}>\n                                                                                    <Translation id=\"stock\" defaultMessage=\"Stock\" />\n                                                                                </span>\n                                                                                {line.product.stock === 0 ? (\n                                                                                    <React.Fragment>\n                                                                                        <span\n                                                                                            style={{ margin: 0 }}\n                                                                                            data-tip={this.props.intl.formatMessage({\n                                                                                                id: 'material_is_currently_out_of_stock',\n                                                                                                defaultMessage:\n                                                                                                    'This material is currently out of stock but you can add it to your cart. Delivery date may be affected.'\n                                                                                            })}\n                                                                                        >\n                                                                                            <i style={{ color: 'black' }} className=\"icon far visible fa-info-circle\"></i>{' '}\n                                                                                            {line.product.stock}{' '}\n                                                                                            <Translation\n                                                                                                id=\"tables_available_in_stock\"\n                                                                                                defaultMessage=\"Tables available in stock\"\n                                                                                            />\n                                                                                        </span>\n                                                                                        <ReactTooltip />\n                                                                                    </React.Fragment>\n                                                                                ) : (\n                                                                                    <React.Fragment>\n                                                                                        {line.product.stock}{' '}\n                                                                                        <Translation id=\"tables_available_in_stock\" defaultMessage=\"Tables available in stock\" />\n                                                                                    </React.Fragment>\n                                                                                )}\n                                                                            </span>\n                                                                        </div>\n                                                                    </div>\n                                                                    <div style={{ flex: 1, height: '100%' }}>\n                                                                        <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: '16px' }}>\n                                                                            <div>\n                                                                                <InputNumber\n                                                                                    value={line.qty}\n                                                                                    change={qty => {\n                                                                                        line.qty = qty\n                                                                                    }}\n                                                                                    size=\"small\"\n                                                                                    step={this.props.isIkeaCenter && line.product.unit === 'M2' ? 0.01 : qtyToAdd}\n                                                                                    limit={this.getLimit(line)}\n                                                                                    min={this.getMin(line)}\n                                                                                    decimals={this.props.isIkeaCenter && line.product.unit === 'M2' ? 2 : 0}\n                                                                                />\n                                                                            </div>\n                                                                            <Button onClick={() => this.props.addCartLine(line.productId, line.qty)} gtm-label=\"ec_añadir_carrito\">\n                                                                                <i className=\"icon far visible fa-shopping-cart\"></i>\n                                                                            </Button>\n                                                                        </div>\n                                                                    </div>\n                                                                </div>\n                                                            </div>\n                                                            <div className=\"responsive\">\n                                                                <div className=\"img\">\n                                                                    <div className=\"indicators\" style={{ maxWidth: '100px' }}>\n                                                                        {canDisplayDiscontinued(line.product.webHeading, line.product.discontinued) && (\n                                                                            <DisplayDiscontinued discontinued={line.product.discontinued} inSmallBox={true} />\n                                                                        )}\n                                                                        {line.extra && line.extra.outlet && (\n                                                                            <DisplayOutletIndicator\n                                                                                outletQuality={line.extra.outlet}\n                                                                                outletDeviated={\n                                                                                    this.props.isAdmin || this.props.impersonatedBy ? this.product.outletDeviated : null\n                                                                                }\n                                                                                inSmallBox={true}\n                                                                            />\n                                                                        )}\n                                                                        {isNewIndicator(line.product.creationDate) && <DisplayUpcomingIndicator />}\n                                                                        {isUpcomingIndicator(line.product.creationDate) && <DisplayNewIndicator />}\n                                                                    </div>\n                                                                    {line.cutToSize && line.cutToSize.thumb && <img alt=\"\" src={line.cutToSize.thumb} />}\n                                                                    {((line.extra && (line.extra.type === 'wall_sample' || line.extra.type === 'custom_sample')) ||\n                                                                        (line.extra && line.extra.type === 'brochures')) && (\n                                                                        <img alt=\"\" src={this.props.getImageBackground(line.product)} />\n                                                                    )}\n                                                                    {!(line.cutToSize && line.cutToSize.thumb) &&\n                                                                        !(\n                                                                            (line.extra && (line.extra.type === 'wall_sample' || line.extra.type === 'custom_sample')) ||\n                                                                            (line.extra && line.extra.type === 'brochures')\n                                                                        ) && (\n                                                                            <LocalizedLink\n                                                                                className=\"cart_line__link_image\"\n                                                                                routeId=\"ROUTE_PRODUCT_DETAIL\"\n                                                                                params={{ id: line.product.productId }}\n                                                                            >\n                                                                                <ProductImage product={line.product} customClass=\"recurring_orders_image\" />\n                                                                            </LocalizedLink>\n                                                                        )}\n                                                                </div>\n                                                                <div className=\"texts\">\n                                                                    <span className=\"title\">\n                                                                        <span style={{ fontWeight: 'bold', marginRight: '3px' }}>\n                                                                            <Translation id=\"material\" defaultMessage=\"Material\" />:{' '}\n                                                                        </span>\n                                                                        {line.cutToSize ? line.cutToSize.colorName : <ProductDisplayName product={line.product} />}\n                                                                    </span>\n                                                                    <br></br>\n                                                                    <span>\n                                                                        <span style={{ fontWeight: 'bold', marginRight: '3px' }}>\n                                                                            <Translation id=\"segmentation\" defaultMessage=\"Segmentation\" />:\n                                                                        </span>\n                                                                        <LineSegmentationRecurring line={line} />\n                                                                    </span>\n                                                                    <br></br>\n                                                                    <span>\n                                                                        <span style={{ fontWeight: 'bold', marginRight: '3px' }}>\n                                                                            <Translation id=\"stock\" defaultMessage=\"Stock\" />:{' '}\n                                                                        </span>\n                                                                        {line.product.stock === 0 ? (\n                                                                            <React.Fragment>\n                                                                                <span\n                                                                                    style={{ margin: 0 }}\n                                                                                    data-tip=\"Actualmente no hay stock de este material pero puede añadirlo al carrito. La fecha de entrega podrá verse afectada.\"\n                                                                                >\n                                                                                    <i style={{ color: 'black' }} className=\"icon far visible fa-info-circle\"></i>{' '}\n                                                                                    {line.product.stock}{' '}\n                                                                                    <Translation id=\"tables_available_in_stock\" defaultMessage=\"Tables available in stock\" />\n                                                                                </span>\n                                                                                <ReactTooltip />\n                                                                            </React.Fragment>\n                                                                        ) : (\n                                                                            <React.Fragment>\n                                                                                {line.product.stock}{' '}\n                                                                                <Translation id=\"tables_available_in_stock\" defaultMessage=\"Tables available in stock\" />\n                                                                            </React.Fragment>\n                                                                        )}\n                                                                    </span>\n                                                                    <div style={{ display: 'flex', alignItems: 'center' }} className=\"inputs\">\n                                                                        <div>\n                                                                            <InputNumber\n                                                                                value={line.qty}\n                                                                                change={qty => {\n                                                                                    line.qty = qty\n                                                                                }}\n                                                                                size=\"small\"\n                                                                                step={this.props.isIkeaCenter && line.product.unit === 'M2' ? 0.01 : qtyToAdd}\n                                                                                limit={this.getLimit(line)}\n                                                                                min={this.getMin(line)}\n                                                                                decimals={this.props.isIkeaCenter && line.product.unit === 'M2' ? 2 : 0}\n                                                                            />\n                                                                        </div>\n                                                                        <button\n                                                                            style={{ marginLeft: '1rem' }}\n                                                                            className=\"bt\"\n                                                                            onClick={() => this.props.addCartLine(line.productId, line.qty)}\n                                                                            gtm-label=\"ec_añadir_carrito\"\n                                                                        >\n                                                                            <i className=\"icon fal visible fa-shopping-cart\"></i>\n                                                                        </button>\n                                                                    </div>\n                                                                </div>\n                                                            </div>\n                                                        </div>\n                                                    )\n                                                })}\n                                            </div>\n                                            <div className=\"bottom-btns\">\n                                                {value.lines.length > 3 ? (\n                                                    <p\n                                                        id={'pAll_' + value.id}\n                                                        ref={p => {\n                                                            this.pAll = p\n                                                        }}\n                                                        style={{ fontWeight: 'bold', cursor: 'pointer' }}\n                                                        onClick={() => {\n                                                            this.showHiddenTr(value.id)\n                                                        }}\n                                                    >\n                                                        <Translation id=\"see_full_order\" defaultMessage=\"See full order\" /> ({value.lines.length})\n                                                        <i\n                                                            className=\"fal fa-angle-down\"\n                                                            style={{\n                                                                marginLeft: '0.3rem',\n                                                                fontSize: '1.5rem',\n                                                                position: 'absolute'\n                                                            }}\n                                                        ></i>\n                                                    </p>\n                                                ) : (\n                                                    ''\n                                                )}\n                                                {value.lines.length > 3 ? (\n                                                    <p\n                                                        id={'pNotAll_' + value.id}\n                                                        ref={p => {\n                                                            this.pNotAll = p\n                                                        }}\n                                                        style={{\n                                                            fontWeight: 'bold',\n                                                            display: 'none',\n                                                            cursor: 'pointer'\n                                                        }}\n                                                        onClick={() => {\n                                                            this.showHiddenTr(value.id)\n                                                        }}\n                                                    >\n                                                        <Translation id=\"see_less\" defaultMessage=\"See Less\" />\n                                                        <i\n                                                            className=\"fal fa-angle-up\"\n                                                            style={{\n                                                                marginLeft: '0.3rem',\n                                                                fontSize: '1.5rem',\n                                                                position: 'absolute'\n                                                            }}\n                                                        ></i>\n                                                    </p>\n                                                ) : (\n                                                    ''\n                                                )}\n                                                <div className=\"d-flex justify-content-end\" style={{ gap: '16px' }}>\n                                                    <LocalizedLink routeId=\"ROUTE_CHECKOUT\">\n                                                        <button\n                                                            className=\"bt\"\n                                                            style={{ padding: '7px 32px' }}\n                                                            onClick={() => {\n                                                                this.props.add2CartRecurringOrderQty(value)\n                                                            }}\n                                                            gtm-label=\"ec_comprar_ahora\"\n                                                        >\n                                                            <Translation id=\"buy_now\" defaultMessage=\"Buy now\" />\n                                                        </button>\n                                                    </LocalizedLink>\n                                                    <button\n                                                        className=\"bt bt-inverted\"\n                                                        style={{ padding: '7px 32px' }}\n                                                        onClick={() => this.props.add2CartRecurringOrderQty(value)}\n                                                        gtm-label=\"añadir_pedido_completo\"\n                                                    >\n                                                        <i className=\"icon far visible fa-shopping-cart\"></i>\n                                                        <Translation id=\"add_full_order\" defaultMessage=\"Add full order\" />\n                                                    </button>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    )\n                                })}\n                                <div className=\"paginator d-flex flex-grow-1 justify-content-center\">\n                                    <ul className=\"pagination\">\n                                        <li\n                                            className={this.state.recurringOrdersPaginateFilter[0].currentPage === 1 ? 'page-item disabled' : 'page-item'}\n                                            onClick={() => this.fetchRecurringOrdersPaginate(this.state.recurringOrdersPaginateFilter[0].currentPage - 1)}\n                                        >\n                                            <a className=\"page-link page-nav\">\n                                                <span>\n                                                    <i className=\"fas fa-chevron-left mr-3\"></i>\n                                                    <span className=\"move-btn\">\n                                                        <Translation id=\"previous\" defaultMessage=\"Previous\" />\n                                                    </span>\n                                                </span>\n                                            </a>\n                                        </li>\n                                        {newPagination.length > 0 && newPagination}\n                                        {newPagination.length === 0 && pagination}\n                                        <li\n                                            className={\n                                                this.state.recurringOrdersPaginateFilter[0].currentPage === this.state.recurringOrdersPaginateFilter[0].lastPage\n                                                    ? 'page-item disabled'\n                                                    : 'page-item'\n                                            }\n                                            onClick={() => this.fetchRecurringOrdersPaginate(this.state.recurringOrdersPaginateFilter[0].currentPage + 1)}\n                                        >\n                                            <a className=\"page-link page-nav\">\n                                                <span>\n                                                    <span className=\"move-btn\">\n                                                        <Translation id=\"next\" defaultMessage=\"Next\" />\n                                                    </span>\n                                                    <i className=\"fas fa-chevron-right ml-3\"></i>\n                                                </span>\n                                            </a>\n                                        </li>\n                                    </ul>\n                                </div>\n                            </div>\n                        ) : (\n                            <div className=\"row last-colors\">\n                                <div className=\"col-12\">\n                                    <div className=\"container\">\n                                        <section id=\"section-products-favourite\" className=\"no-padding\">\n                                            <h4>\n                                                <Translation id=\"no_recurring_orders_in_current_center\" defaultMessage=\"No recurring orders in current center\" />\n                                            </h4>\n                                            <p>\n                                                <Translation id=\"select_another_center_or_keep_buying\" defaultMessage=\"Select another center or keep buying\" />\n                                            </p>\n                                            <div className=\"row\">\n                                                <div className=\"col-12 col-sm-8 offset-sm-2 col-md-6 offset-md-3 col-lg-4 offset-lg-4\">\n                                                    <LocalizedLink routeId=\"ROUTE_CATALOG\" params={{ outlet: '' }}>\n                                                        <Button inverted>\n                                                            <Translation id=\"keep_buying\" defaultMessage=\"Keep Buying\" />\n                                                        </Button>\n                                                    </LocalizedLink>\n                                                </div>\n                                            </div>\n                                        </section>\n                                    </div>\n                                </div>\n                            </div>\n                        )}\n                        {showRecurringOrderDetails && <RecurringOrderDetails onClose={() => closeModalRecurringOrderDetails()} />}\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(RecurringOrders)\n","import { connect } from 'react-redux'\nimport RecurringOrders from './RecurringOrders'\nimport {\n    getRecurringOrder,\n    getOrdersLoading,\n    getOrdersLoadingAdd,\n    getShowRecurringOrderDetails,\n    getRecurringOrderDetails\n} from '../../store/orders/reducers'\nimport {\n    fetchRecurringOrders,\n    add2CartRecurringOrder,\n    toggleModalRecurringOrderDetails,\n    fetchRecurringOrderDetails, add2CartRecurringOrderQty\n} from '../../store/orders/actions'\nimport { addCartLineNotSegmentation } from '../../store/cart/actions'\nimport { getIsEndiCenter, getIsIkeaCenter, getIsLowesCenter, getIsMkToolsCenter, getIsMktoolsUsaCenter, getShippingMethod } from '../../store/centers/reducers'\nimport { getProductMinStock } from '../../store/landing/reducers'\nimport { getQtyProductsCart } from '../../store/cart/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        recurringOrders: getRecurringOrder(state),\n        isLoading: getOrdersLoading(state),\n        isLoadingAdd: getOrdersLoadingAdd(state),\n        showRecurringOrderDetails: getShowRecurringOrderDetails(state),\n        recurringOrderDetails: getRecurringOrderDetails(state),\n        shippingMethod: getShippingMethod(state),\n        isEndiCenter: getIsEndiCenter(state),\n        mallMinOrder: (productId) => getProductMinStock(state, productId),\n        isMktoolsCenter: getIsMkToolsCenter(state),\n        isMktoolsUsaCenter: getIsMktoolsUsaCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isLowesCenter: getIsLowesCenter(state),\n        qtyProductCart: getQtyProductsCart(state),\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchRecurringOrders: (dateFrom = null, dateTo = null, search = null, page = 1) => dispatch(fetchRecurringOrders(dateFrom, dateTo, search, page)),\n        add2CartRecurringOrder: id => {\n            dispatch(add2CartRecurringOrder(id))\n        },\n        add2CartRecurringOrderQty: value => {\n            dispatch(add2CartRecurringOrderQty(value))\n        },\n        openModalRecurringOrderDetails: selectedRecurringOrder => {\n            dispatch(toggleModalRecurringOrderDetails(selectedRecurringOrder))\n        },\n        closeModalRecurringOrderDetails: () => {\n            dispatch(toggleModalRecurringOrderDetails())\n        },\n        fetchRecurringOrderDetails: reservationId => {\n            dispatch(fetchRecurringOrderDetails(reservationId))\n        },\n        addCartLine: (productId, qty) => dispatch(addCartLineNotSegmentation(productId, qty)),\n    }\n}\n\nconst RecurringOrdersContainer = connect(mapStateToProps, mapDispatchToProps)(RecurringOrders)\n\nexport default RecurringOrdersContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { connect } from 'react-redux'\n\nimport { getCurrentSegmentation, getSelectedBusinesSegment, getBusinesSegmentOptions } from '../../store/segmentation/reducers'\nimport { toggleSegmentation, selectBusinessSegment } from '../../store/segmentation/actions'\nconst mapStateToProps = state => {\n    return {\n        show: getCurrentSegmentation(state) === 'BUSINESS_SEGMENT',\n        selected: getSelectedBusinesSegment(state),\n        options: getBusinesSegmentOptions(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggle: () => {\n            dispatch(toggleSegmentation('BUSINESS_SEGMENT'))\n        },\n        onSelect: (value, name) => {\n            dispatch(selectBusinessSegment(value, name))\n        }\n    }\n}\nconst BusinessSegment = ({ show, selected, onToggle, onSelect, options }) => {\n    if (options === undefined || (Object.keys(options).length === 1 && selected === 'NOT')) {\n        return ''\n    }\n    if (Object.keys(options).length === 1 && selected === null) {\n        Object.entries(options).map(option => onSelect(option[0], option[1].name))\n    }\n    const selectedValue = selected ? <Translation id={selected} /> : null\n    return (\n        <div>\n            <div onClick={() => onToggle()} className=\"option\">\n                <Translation id=\"business_segment\" defaultMessage=\"Business segment\" /> : {selectedValue}\n                <i className={show ? 'fa fa-caret-down' : 'fa fa-caret-right'} aria-hidden=\"true\" />\n                <br />\n            </div>\n\n            <div style={{ display: show ? 'block' : 'none' }}>\n                <div className=\"row segment-selections\">\n                    {Object.entries(options).map(option => (\n                        <span key={option[0]} onClick={() => onSelect(option[0], option[1].name)}>\n                            <Translation id={option[0]} />\n                        </span>\n                    ))}\n                </div>\n            </div>\n            <hr />\n        </div>\n    )\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BusinessSegment)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { connect } from 'react-redux'\nimport { getSelectedBusinesSegment, getCurrentSegmentation, getSelectedChannel, getChannelOptions } from '../../store/segmentation/reducers'\nimport { toggleSegmentation, selectChannel } from '../../store/segmentation/actions'\nconst mapStateToProps = state => {\n    const businessSegment = getSelectedBusinesSegment(state)\n    return {\n        show: getCurrentSegmentation(state) === 'CHANNEL',\n        selected: getSelectedChannel(state),\n        options: getChannelOptions(state, businessSegment)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggle: () => {\n            dispatch(toggleSegmentation('CHANNEL'))\n        },\n        onSelect: (value, name) => {\n            dispatch(selectChannel(value, name))\n        }\n    }\n}\n\n//DEPRECATED\nconst Channel = ({ show, selected, onToggle, onSelect, options }) => {\n    if (options === undefined) {\n        return ''\n    }\n    if (Object.keys(options).length === 1 && selected === null) {\n        Object.entries(options).map(option => onSelect(option[0], option[1].name))\n    }\n    const selectedValue = selected ? (\n        <span className=\"selected\">\n            {['A0','B0','C0','D0','E0'].includes(selected) && <img src={require(`../../assets/img/icons/${selected}.png`)} alt=\"\" className=\"segmentation-icon\" />}\n            {options[selected].name}\n        </span>\n    ) : null\n    return (\n        <div>\n            <div onClick={() => onToggle()} className=\"option\">\n                <Translation id=\"channel\" defaultMessage=\"Channel\" /> : {selectedValue}\n                <i className={show ? 'fa fa-caret-down' : 'fa fa-caret-right'} aria-hidden=\"true\" />\n                <br />\n            </div>\n\n            <div style={{ display: show ? 'block' : 'none' }}>\n                <div className=\"row segment-selections\">\n                    {Object.entries(options).map(option => (\n                        <span\n                            key={option[0]}\n                            onClick={() => {\n                                onSelect(option[0], option[1].name)\n                            }}\n                        >\n                            {['A0','B0','C0','D0','E0'].includes(option[0]) && <img src={require(`../../assets/img/icons/${option[0]}.png`)} alt=\"\" className=\"segmentation-icon\" />}\n                            {/* <img src={require(`../../assets/img/icons/${option[0]}.png`)} alt=\"\" className=\"segmentation-icon\" /> */}\n                            <span>{option[1].name}</span>\n                        </span>\n                    ))}\n                </div>\n            </div>\n            <hr />\n        </div>\n    )\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(Channel)\n","import React from 'react'\r\nimport Translation from '../global/Translation'\r\n\r\nimport { connect } from 'react-redux'\r\nimport {\r\n    getSelectedBusinesSegment,\r\n    getSelectedChannel,\r\n    getSelectedSubchannel,\r\n    getSelectedTypology,\r\n    getTypologyOptions,\r\n    getCurrentSegmentation\r\n} from '../../store/segmentation/reducers'\r\nimport { toggleSegmentation, selectTypology } from '../../store/segmentation/actions'\r\nconst mapStateToProps = state => {\r\n    const businessSegment = getSelectedBusinesSegment(state)\r\n    const channel = getSelectedChannel(state)\r\n    const subchannel = getSelectedSubchannel(state)\r\n\r\n    return {\r\n        show: getCurrentSegmentation(state) === 'TYPOLOGY',\r\n        selected: getSelectedTypology(state),\r\n        options: getTypologyOptions(state, businessSegment, channel, subchannel)\r\n    }\r\n}\r\nconst mapDispatchToProps = dispatch => {\r\n    return {\r\n        onToggle: () => {\r\n            dispatch(toggleSegmentation('TYPOLOGY'))\r\n        },\r\n        onSelect: (value, name) => {\r\n            dispatch(selectTypology(value, name))\r\n        }\r\n    }\r\n}\r\nconst Typology = ({ show, selected, onToggle, onSelect, options }) => {\r\n    if (!options || Object.entries(options).length === 0) {\r\n        return ''\r\n    }\r\n    if (Object.keys(options).length === 1 && selected === null) {\r\n        Object.entries(options).map(option => onSelect(option[0], option[1].name))\r\n    }\r\n    const selectedValue = selected ? <span>{options[selected].name}</span> : null\r\n    return (\r\n        <div>\r\n            <div onClick={onToggle} className=\"option\">\r\n                <Translation id=\"typology\" defaultMessage=\"Typology\" /> : {selectedValue}\r\n                <i className={show ? 'fa fa-caret-down' : 'fa fa-caret-right'} aria-hidden=\"true\" />\r\n                <br />\r\n            </div>\r\n\r\n            <div style={{ display: show ? 'block' : 'none' }}>\r\n                <div className=\"row segment-selections\">\r\n                    {Object.entries(options).map(option => (\r\n                        <span\r\n                            key={option[0]}\r\n                            onClick={() => {\r\n                                onSelect(option[0], option[1].name)\r\n                            }}\r\n                        >\r\n                            {option[1].name}\r\n                        </span>\r\n                    ))}\r\n                </div>\r\n            </div>\r\n            <hr />\r\n        </div>\r\n    )\r\n}\r\nexport default connect(\r\n    mapStateToProps,\r\n    mapDispatchToProps\r\n)(Typology)\r\n","import React from 'react'\r\nimport Translation from '../global/Translation'\r\n\r\nimport { connect } from 'react-redux'\r\nimport { getCurrentSegmentation, getSelectedUse, getUseOptions } from '../../store/segmentation/reducers'\r\nimport { selectUse, toggleSegmentation } from '../../store/segmentation/actions'\r\nconst mapStateToProps = state => {\r\n    return {\r\n        show: getCurrentSegmentation(state) === 'USE',\r\n        selected: getSelectedUse(state),\r\n        options: getUseOptions(state)\r\n    }\r\n}\r\nconst mapDispatchToProps = dispatch => {\r\n    return {\r\n        onToggle: () => {\r\n            dispatch(toggleSegmentation('USE'))\r\n        },\r\n        onSelect: value => {\r\n            dispatch(selectUse(value))\r\n        }\r\n    }\r\n}\r\nconst Use = ({ show, selected, onToggle, onSelect, options }) => {\r\n    if (!options || Object.entries(options).length === 0) {\r\n        return ''\r\n    }\r\n\r\n    const selectedValue = selected ? <span>{selected.name}</span> : null\r\n    return (\r\n        <div>\r\n            <div onClick={onToggle} className=\"option\">\r\n                <Translation id=\"use\" defaultMessage=\"Use\" /> : {selectedValue}\r\n                <i className={show ? 'fa fa-caret-down' : 'fa fa-caret-right'} aria-hidden=\"true\" />\r\n                <br />\r\n            </div>\r\n\r\n            <div style={{ display: show ? 'block' : 'none' }}>\r\n                <div className=\"row segment-selections\">\r\n                    {options.map(option => (\r\n                        <span\r\n                            key={option.id}\r\n                            onClick={() => {\r\n                                onSelect(option)\r\n                            }}\r\n                        >\r\n                            {option.name}\r\n                        </span>\r\n                    ))}\r\n                </div>\r\n            </div>\r\n            <hr />\r\n        </div>\r\n    )\r\n}\r\nexport default connect(\r\n    mapStateToProps,\r\n    mapDispatchToProps\r\n)(Use)\r\n","import React from 'react'\r\nimport Translation from '../global/Translation'\r\n\r\nimport { connect } from 'react-redux'\r\nimport { getSelectedSubchannel, getSubchannelOptions, getCurrentSegmentation, getSelectedBusinesSegment, getSelectedChannel } from '../../store/segmentation/reducers'\r\nimport { toggleSegmentation, selectSubChannel } from '../../store/segmentation/actions'\r\nconst mapStateToProps = state => {\r\n    const businessSegment = getSelectedBusinesSegment(state)\r\n    const channel = getSelectedChannel(state)\r\n\r\n    return {\r\n        show: getCurrentSegmentation(state) === 'SUBCHANNEL',\r\n        selected: getSelectedSubchannel(state),\r\n        options: getSubchannelOptions(state, businessSegment, channel)\r\n    }\r\n}\r\nconst mapDispatchToProps = dispatch => {\r\n    return {\r\n        onToggle: () => {\r\n            dispatch(toggleSegmentation('SUBCHANNEL'))\r\n        },\r\n        onSelect: (value, name) => {\r\n            dispatch(selectSubChannel(value, name))\r\n        }\r\n    }\r\n}\r\nconst SubChannel = ({ show, selected, onToggle, onSelect, options }) => {\r\n    if (options === undefined) {\r\n        return ''\r\n    }\r\n    if (Object.keys(options).length === 1 && selected === null) {\r\n        Object.entries(options).map(option => onSelect(option[0]))\r\n    }\r\n    const selectedValue = selected ? <span>{options[selected].name}</span> : null\r\n    return (\r\n        <div>\r\n            <div onClick={onToggle} className=\"option\">\r\n                <Translation id=\"subchannel\" defaultMessage=\"Subchannel\" /> : {selectedValue}\r\n                <i className={show ? 'fa fa-caret-down' : 'fa fa-caret-right'} aria-hidden=\"true\" />\r\n                <br />\r\n            </div>\r\n\r\n            <div style={{ display: show ? 'block' : 'none' }}>\r\n                <div className=\"row segment-selections\">\r\n                    {Object.entries(options).map(option => (\r\n                        <span\r\n                            key={option[0]}\r\n                            onClick={() => {\r\n                                onSelect(option[0], option[0].name)\r\n                            }}\r\n                        >\r\n                            {option[1].name}\r\n                        </span>\r\n                    ))}\r\n                </div>\r\n            </div>\r\n            <hr />\r\n        </div>\r\n    )\r\n}\r\nexport default connect(\r\n    mapStateToProps,\r\n    mapDispatchToProps\r\n)(SubChannel)\r\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { connect } from 'react-redux'\nimport { toggleSegmentation, selectKB } from '../../store/segmentation/actions'\nimport { getKBOptions, getSelectedKB, getCurrentSegmentation } from '../../store/segmentation/reducers'\nconst mapStateToProps = state => {\n    return {\n        show: getCurrentSegmentation(state) === 'KB',\n        selected: getSelectedKB(state),\n        options: getKBOptions(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggle: () => {\n            dispatch(toggleSegmentation('KB'))\n        },\n        onSelect: value => {\n            dispatch(selectKB(value))\n        }\n    }\n}\nconst KB = ({ show, selected, onToggle, onSelect, options }) => {\n    if (!options || options.length === 0) {\n        return ''\n    }\n    const selectedValue = selected ? <span>{selected.name}</span> : null\n    return (\n        <div>\n            <div onClick={onToggle} className=\"option\">\n                <Translation id=\"kb\" defaultMessage=\"KB\" /> : {selectedValue}\n                <i className={show ? 'fa fa-caret-down' : 'fa fa-caret-right'} aria-hidden=\"true\" />\n                <br />\n            </div>\n\n            <div style={{ display: show ? 'block' : 'none' }}>\n                <div className=\"row segment-selections\">\n                    {options.map(option => (\n                        <span\n                            key={option.id}\n                            onClick={() => {\n                                onSelect(option)\n                            }}\n                        >\n                            {option.name}\n                        </span>\n                    ))}\n                </div>\n            </div>\n            <hr />\n        </div>\n    )\n}\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(KB)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { connect } from 'react-redux'\nimport { selectBuilder, toggleSegmentation } from '../../store/segmentation/actions'\nimport { getCurrentSegmentation, getSelectedBuilder, getBuildersOptions } from '../../store/segmentation/reducers'\nconst mapStateToProps = state => {\n    return {\n        show: getCurrentSegmentation(state) === 'BUILDER',\n        selected: getSelectedBuilder(state),\n        options: getBuildersOptions(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggle: () => {\n            dispatch(toggleSegmentation('BUILDER'))\n        },\n        onSelect: value => {\n            dispatch(selectBuilder(value))\n        }\n    }\n}\nconst Builders = ({ show, selected, onToggle, onSelect, options }) => {\n    if (!options || options.length === 0) {\n        return ''\n    }\n    const selectedValue = selected ? <span>{selected.name}</span> : null\n    return (\n        <div>\n            <div onClick={onToggle} className=\"option\">\n                <Translation id=\"builder\" defaultMessage=\"Builder\" /> : {selectedValue}\n                <i className={show ? 'fa fa-caret-down' : 'fa fa-caret-right'} aria-hidden=\"true\" />\n                <br />\n            </div>\n\n            <div style={{ display: show ? 'block' : 'none' }}>\n                <div className=\"row segment-selections\">\n                    {options.map(option => (\n                        <span\n                            key={option.name}\n                            onClick={() => {\n                                onSelect(option)\n                            }}\n                        >\n                            {option.name}\n                        </span>\n                    ))}\n                </div>\n            </div>\n            <hr />\n        </div>\n    )\n}\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(Builders)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport BusinessSegment from './BusinessSegment'\nimport Channel from './Channel'\nimport Typology from './Typology'\nimport Use from './Use'\nimport SubChannel from './SubChannel'\nimport KB from './KB'\nimport Builders from './Builders'\nimport Modal from '../global/Modal'\nimport confirm from '../global/confirm'\nimport Spinner from '../global/Spinner'\nimport Alerts from '../alerts/Alerts'\n\nconst confirmDeleteSegmentation = (currentFavourite, deletePreferredSegmentation, intl) => {\n    return confirm(intl.formatMessage({ id: 'CONFIRM' }), { intl: intl }).then(\n        confirm => {\n            return deletePreferredSegmentation(currentFavourite)\n        },\n        cancel => {\n            return Promise.reject()\n        }\n    )\n}\nclass Segmentation extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            saveSegmentationPromptOpen: false,\n            active: null,\n            excuse: null\n        }\n    }\n    clearSegmentation = () => {\n        this.setState({ active: null })\n        this.props.clearSegmentation()\n    }\n    deleteSegmentation = async currentFavourite => {\n        confirmDeleteSegmentation(currentFavourite, this.props.deletePreferredSegmentation, this.props.intl).then(() => {\n            if (currentFavourite === this.state.active) this.setState({ active: null })\n        })\n    }\n    loadSegmentation = name => {\n        this.props.loadPreferredSegmentation(name)\n        this.setState({ active: name })\n    }\n    saveSegmentation = name => {\n        this.props.saveSegmentationPreferred(name)\n        this.setState({ saveSegmentationPromptOpen: false, active: name })\n    }\n    handleSubmit() {\n        const { callback } = this.props\n        if (this.poInput) {\n            const po = this.poInput.value.split(';')\n            let poTrue = po.filter(function (poItem) {\n                return poItem !== ''\n            })\n            this.props.setPO(poTrue)\n            this.poInput.value = ''\n        }\n        this.props.onSubmitSegmentation(callback)\n    }\n\n    canAddMaterial() {\n        if (this.props.isExclusiveHomeDepot) {\n            // if (exclusiveMaterialsHomeDepot.includes(this.props.segmentatingProductId)) {\n            if (!this.props.validHomeDepotSegmentation) {\n                if (!this.state.excuse) this.setState({ excuse: 'EXCLUSIVE_HOME_DEPOT' })\n                return false\n            }\n        }\n        if (this.state.excuse) this.setState({ excuse: null })\n        return true\n    }\n    componentDidMount() {\n        this.props.fetchSegmentation()\n    }\n    render() {\n        const { modal, businessSegment, channel, subchannel, use, useOptions, buildersOptions, mode, po } = this.props\n        const checkBS = ['NOT', 'KB', 'BU', 'CO', 'RE', null]\n        const useValidate = (useOptions !== undefined && use) || useOptions === undefined ? true : false\n        const builderValidate = (buildersOptions !== undefined && use) || buildersOptions === undefined ? true : false\n        const formIsFullfilled = businessSegment && channel && useValidate && builderValidate\n        const submitButton =\n            formIsFullfilled && this.canAddMaterial() ? (\n                <Button onClick={() => this.handleSubmit()} inverted>\n                    {mode === 'edit' ? <Translation id=\"edit\" defaultMessage=\"Edit\" /> : <Translation id=\"add_to_cart\" defaultMessage=\"Add to cart\" />}\n                </Button>\n            ) : (\n                <Button disabled inverted>\n                    {mode === 'edit' ? <Translation id=\"edit\" defaultMessage=\"Edit\" /> : <Translation id=\"add_to_cart\" defaultMessage=\"Add to cart\" />}\n                </Button>\n            )\n        return (\n            <div>\n                {(this.props.isSaving || this.props.isLoading) && <Spinner isLoading={this.props.isSaving || this.props.isLoading} />}\n\n                <div className=\"container-fluid\">\n                    {this.state.excuse && <Alerts alert={this.state.excuse} status=\"warning\" />}\n                    <br />\n                    <div className=\"row\">\n                        {this.props.preferredSegmentation && (\n                            <div className=\"col-12 col-lg-4\">\n                                <div className=\"form-group\">\n                                    <h6>\n                                        <Translation id=\"saved_segmentations\" defaultMessage=\"Saved segmentations\" />\n                                    </h6>\n                                    <div className=\"saved-segmentations\">\n                                        {this.props.preferredSegmentation.map(option => (\n                                            <div className=\"row\" onClick={selectedOption => this.loadSegmentation(option.name)} key={option.name}>\n                                                <div className=\"col-7 col-md-9 col-lg-6\" onClick={selectedOption => this.loadSegmentation(option.name)}>\n                                                    <span className={option.name === this.state.active ? 'active' : ''}>{option.name}</span>\n                                                </div>\n                                                <div className=\"bt-delete col-5 col-md-3 col-lg-6 text-right\">\n                                                    <i\n                                                        className=\"fal fa-clone bt-delete cy-bt-duplicate\"\n                                                        data-cy=\"modal_segmentation__bt_segmentation_duplicate\"\n                                                        onClick={() => this.setState({ saveSegmentationPromptOpen: true })}\n                                                        style={{ cursor: 'pointer' }}\n                                                    />\n                                                    <i\n                                                        className=\"fal fa-check bt-delete cy-bt-ok\"\n                                                        data-cy=\"modal_segmentation__bt_segmentation_check\"\n                                                        onClick={selectedOption => this.loadSegmentation(option.name)}\n                                                        style={{ cursor: 'pointer' }}\n                                                    />\n                                                    <i\n                                                        className=\"fal fa-times bt-delete cy-bt-del\"\n                                                        data-cy=\"modal_segmentation__bt_segmentation_delete\"\n                                                        onClick={() => this.deleteSegmentation(option.name)}\n                                                        style={{ cursor: 'pointer' }}\n                                                    />\n                                                </div>\n                                            </div>\n                                        ))}\n                                    </div>\n                                </div>\n                            </div>\n                        )}\n\n                        <div className=\"col-12 col-lg-8\">\n                            <div className=\"row\">\n                                <div className=\"form-group scroll\">\n                                    <div className=\"col-12\">\n                                        <BusinessSegment />\n                                    </div>\n                                    <div className=\"col-12\">\n                                        <Channel />\n                                    </div>\n                                    {channel != null && this.props.viewFullSegmentation && (\n                                        <div className=\"col-12\">\n                                            <SubChannel />\n                                        </div>\n                                    )}\n                                    {subchannel != null && this.props.viewFullSegmentation && (\n                                        <div className=\"col-12\">\n                                            <Typology />\n                                        </div>\n                                    )}\n                                    <div className=\"col-12\">\n                                        <Use />\n                                    </div>\n                                    {businessSegment === 'KB' && (\n                                        <div className=\"col-12\">\n                                            <KB />\n                                        </div>\n                                    )}\n                                    {businessSegment === 'BU' && (\n                                        <div className=\"col-12\">\n                                            <Builders />\n                                        </div>\n                                    )}\n                                    {!checkBS.includes(businessSegment) && (\n                                        <div className=\"col-12\">\n                                            <div className=\"form-group\">\n                                                <label htmlFor=\"input-po\">\n                                                    <Translation id=\"insert_po\" defaultMessage=\"Insert your PO#\" />\n                                                </label>\n\n                                                <input\n                                                    type=\"text\"\n                                                    className=\"form-control\"\n                                                    placeholder=\"1234;1235;1236\"\n                                                    ref={input => {\n                                                        this.poInput = input\n                                                    }}\n                                                    key={po}\n                                                    defaultValue={po}\n                                                />\n                                                <small>\n                                                    <Translation id=\"add_more_than_one_po\" defaultMessage=\"Add more than one email separating them by ';'\" />\n                                                </small>\n                                            </div>\n                                        </div>\n                                    )}\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                    <footer>\n                        <div>\n                            {formIsFullfilled ? (\n                                <Button\n                                    inverted\n                                    onClick={\n                                        this.state.active\n                                            ? () => this.saveSegmentation(this.state.active)\n                                            : () => {\n                                                this.setState({ saveSegmentationPromptOpen: true })\n                                            }\n                                    }\n                                >\n                                    <Translation id=\"save\" defaultMessage=\"Save\" />\n                                </Button>\n                            ) : (\n                                <Button inverted disabled>\n                                    <Translation id=\"save\" defaultMessage=\"Save\" />\n                                </Button>\n                            )}\n                        </div>\n                        <div>\n                            <Button inverted onClick={() => this.clearSegmentation()}>\n                                <Translation id=\"clear_segmentation\" defaultMessage=\"Clear segmentation\" />\n                            </Button>\n                        </div>\n                        {modal && <div>{submitButton}</div>}\n                    </footer>\n                </div>\n                {this.state.saveSegmentationPromptOpen && (\n                    <Modal\n                        title={<Translation id=\"segmentation_prompt_title\" defaultMessage=\"Saving segmentation\" />}\n                        onClose={() =>\n                            this.setState({\n                                saveSegmentationPromptOpen: false\n                            })\n                        }\n                        footer={\n                            <Button onClick={() => this.saveSegmentation(this.inputSegmentation.value)} inverted size=\"medium\">\n                                <Translation id=\"save\" defaultMessage=\"Save\" />\n                            </Button>\n                        }\n                    >\n                        <p>\n                            <Translation id=\"segmentation_prompt_body\" defaultMessage=\"Please choose a unique name for this configuration\" />\n                        </p>\n                        <div className=\"form-group\">\n                            <b>\n                                <small>\n                                    <Translation id=\"name\" defaultMessage=\"Name\" />\n                                </small>\n                            </b>\n                            <input\n                                ref={ref => (this.inputSegmentation = ref)}\n                                type=\"text\"\n                                className=\"form-control\"\n                                data-cy=\"modal_segmentation__input_name_save_segmentation\"\n                                placeholder={this.props.intl.formatMessage({\n                                    id: 'name'\n                                })}\n                            />\n                        </div>\n                    </Modal>\n                )}\n            </div>\n        )\n    }\n}\nexport default injectIntl(Segmentation)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Spinner from '../global/Spinner'\nimport Alerts from '../alerts/Alerts'\nimport ChannelV4 from './ChannelV4'\nimport SalesForceIdV3 from './SalesForceIdV3'\nimport ProjectIdV3 from './ProjectIdV3'\nimport UseV3 from './UseV3'\nimport TypologyV3 from './TypologyV3'\n\n\nclass SegmentationForm extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            excuse: null,\n            name: this.props.name\n        }\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (prevProps.segmentatingProductId !== this.props.segmentatingProductId) {\n            this.setState({ product: this.props.getProductById(this.props.segmentatingProductId) })\n        }\n    }\n\n    componentDidMount() {\n        this.ref.value = this.props.name\n    }\n\n    scrollDown = (e) => {\n        var element = document.getElementById(\"seg-content\")\n        element.scrollTop = element.scrollHeight\n    }\n\n    changeName = (e) => {\n        const newName = e.target && e.target.value\n        if (newName != this.state.name) {\n            this.setState({name: newName})\n            this.props.setNameInput(newName)\n        }\n    }\n\n    render() {\n\n        return (\n            <div>\n                {(this.props.isSaving || this.props.isLoading) && <Spinner isLoading={this.props.isSaving || this.props.isLoading} />}\n                <div className=\"container-fluid\">                   \n                    {this.state.excuse && <Alerts alert={this.state.excuse} status=\"warning\" />}\n                    <div id=\"seg-content\" className=\"row\" style={{ overflow: 'auto', padding: \".5em\" }}>\n                        <p>\n                            <Translation id=\"segmentation_prompt_body\" defaultMessage=\"Please choose a unique name for this configuration\" />\n                        </p>\n                        <div className=\"form-group\">\n                            <b>\n                                <small>\n                                    <Translation id=\"name\" defaultMessage=\"Name\" />\n                                </small>\n                            </b>\n                            <input\n                                ref={ref => this.ref = ref}\n                                type=\"text\"\n                                className=\"form-control\"\n                                data-cy=\"modal_segmentation__input_name_save_segmentation\"\n                                placeholder={this.props.intl.formatMessage({\n                                    id: 'name'\n                                })}\n                                onChange={this.changeName}\n                            />\n                        </div>\n\n                        <div className=\"col-12\">\n                            <div className=\"row\">\n                                <div className=\"col-12 mt-3\">\n                                    <h5>\n                                        <Translation id=\"choose_segmentation\" defaultMessage=\"Choose segmentation\"></Translation>\n                                    </h5>\n                                    <ChannelV4 intl={this.props.intl} inProfile={true} />\n                                </div>\n                            </div>\n                            <div className=\"row\">\n                                {this.props.channel != null\n                                    && this.props.channel !== 'B0'\n                                    && this.props.channel !== 'HE'\n                                    && this.props.channel !== 'PO'\n                                    && (\n                                    <div className=\"col\" onClick={this.scrollDown}>\n                                        <SalesForceIdV3 intl={this.props.intl} inProfile={true} />\n                                    </div>\n                                )}\n                                {(this.props.channel === 'C0'\n                                    || this.props.channel === 'PO'\n                                    || this.props.channel === 'BB'\n                                    || this.props.channel === 'BD'\n                                    || this.props.channel === 'B0'\n                                    || this.props.channel === 'HE'\n                                    || this.props.channel === 'DA'\n                                    || this.props.channel === 'HO'\n                                    || this.props.channel === 'nexus_retail'\n                                    || this.props.channel === 'nexus_non_retail'\n                                ) && (\n                                    <div className=\"col\" onClick={this.scrollDown}>\n                                        <ProjectIdV3 intl={this.props.intl} inProfile={true} />\n                                    </div>\n                                )}\n                            </div>\n                            {this.props.viewFullSegmentationV3 && (\n                                <div className=\"row\">\n                                    <div className=\"col\" onClick={this.scrollDown}>\n                                        <TypologyV3 intl={this.props.intl} product={this.state.product} />\n                                    </div>\n                                    <div className=\"col\" onClick={this.scrollDown}>\n                                        <UseV3 intl={this.props.intl} />\n                                    </div>\n                                </div>\n                            )}\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default injectIntl(SegmentationForm)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport {FormattedMessage, injectIntl} from 'react-intl'\n\nimport Button from '../global/Button'\nimport Modal from '../global/Modal'\nimport LineSegmentationV2 from '../cart-line/LineSegmentationV2'\nimport SegmentationForm from \"./SegmentationForm\";\nimport {isFormFullFilled} from \"./SegmentationV3\";\n\nclass SegmentationConfiguration extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            saveSegmentationPromptOpen: false,\n            active: null,\n            excuse: null,\n            expandSaved: false,\n            toErase: null,\n            editName: null\n        }\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (prevProps.segmentatingProductId !== this.props.segmentatingProductId) {\n            this.setState({ product: this.props.getProductById(this.props.segmentatingProductId) })\n        }\n    }\n\n    clearSegmentation = () => {\n        this.setState({ active: null })\n        this.props.clearSegmentation()\n    }\n\n    editSegmentation = name => {\n        this.props.loadPreferredSegmentation(name)\n        this.setState({ active: name, editName: name, saveSegmentationPromptOpen: true})\n    }\n\n    saveSegmentation = name => {\n        if (name) this.props.saveSegmentationPreferred(name)\n        if (this.state.active && this.state.active !== name) this.props.deletePreferredSegmentation(this.state.active)\n        this.setState({ saveSegmentationPromptOpen: false, active: null, editName: null })\n    }\n\n    componentDidMount() {\n        this.props.fetchSegmentation()\n    }\n\n    getBusinessSegment = businessSegment => {\n        const productBS = businessSegment === null ? 'NOT' : businessSegment\n        return <FormattedMessage id={productBS} />\n    }\n\n    getSalesforceAccount = (channelId, salesforceId) => {\n        const channel = this.props.channelOptionsV3 && this.props.channelOptionsV3[channelId]\n        const salesforce = channel ? channel.salesforceRelations[salesforceId] : undefined\n        return salesforce && salesforce.name\n    }\n\n    scrollDown = (e) => {\n        var element = document.getElementById(\"seg-content\")\n        element.scrollTop = element.scrollHeight\n    }\n\n    render() {\n        return (\n            <div>\n                <div className=\"container-fluid\">\n\n                    {this.props.savedSegmentations && this.props.savedSegmentations.length > 0 && (\n                        <div className=\"col-12\">\n                            <div className=\"form-group pb-2\" style={{ marginBottom: 0 }}>\n                                <div className=\"saved-segmentations\">\n                                    {this.props.savedSegmentations.map(option => (\n                                        <div\n                                            key={option.name}\n                                            className='row no-gutters ml-2'\n                                            style={{ cursor: 'auto'}}\n                                        >\n                                            <div className=\"col-9\" style={{display: \"flex\", flexDirection: \"column\", cursor: 'auto'}}>\n                                                <strong style={{fontWeight: \"bold\"}}>{option.name}</strong>\n                                                <small>\n                                                    <LineSegmentationV2 line={{ ...option, segmentation: option }} showAsList hideSpans showAllNexus={true}/>\n                                                </small>\n                                            </div>\n                                            <div className=\"bt-delete col-3 text-right\" style={{ cursor: 'auto'}}>\n                                                <i\n                                                    className=\"far fa-pen bt-delete cy-bt-ok text-hovered segmentation-icon2\"\n                                                    data-cy=\"modal_segmentation__bt_segmentation_check\"\n                                                    onClick={e => {\n                                                        e.stopPropagation()\n                                                        this.editSegmentation(option.name)\n                                                    }}\n                                                    style={{ cursor: 'pointer', \"&before:\": {fontSize: \"20px\"} }}\n\n                                                />\n                                                <i\n                                                    className=\"far fa-trash-alt bt-delete cy-bt-del text-hovered segmentation-icon2\"\n                                                    data-cy=\"modal_segmentation__bt_segmentation_delete\"\n                                                    onClick={e => {\n                                                        e.stopPropagation()\n                                                        // this.deleteSegmentation(option.name)\n                                                        this.setState({deleteSegmentationPromptOpen: true, toErase: option})\n                                                    }}\n                                                    style={{ cursor: 'pointer' }}\n                                                />\n                                            </div>\n                                        </div>\n                                    ))}\n                                </div>\n                            </div>\n                        </div>\n                    )}\n\n                    <hr />\n                    <footer>\n                        <div>\n                            <Button inverted\n                                style={{width:'fit-content', paddingInline:'24px'}}\n                                icon=\"plus\" fal\n                                onClick={() => {\n                                    this.setState({ saveSegmentationPromptOpen: true, active: null })\n                                    this.clearSegmentation()\n                                }}\n                            >\n                                &nbsp;\n                                <Translation id=\"create_new_segmentation\" defaultMessage=\"Create new segmentation\"/>\n                            </Button>\n                        </div>\n                    </footer>\n                </div>\n\n                {this.state.saveSegmentationPromptOpen && (\n                    <Modal\n                        title={\n                            this.state.active ?\n                            <Translation id=\"edit_segmentation\" defaultMessage=\"Edit segmentation\" />\n                            :\n                            <Translation id=\"create_new_segmentation\" defaultMessage=\"Create new segmentation\"/>\n                        }\n                        onClose={() =>\n                            this.setState({\n                                saveSegmentationPromptOpen: false,\n                                toErase: null,\n                                editName: null\n                            })\n                        }\n                        footer={\n                            <div style={{display:'flex', columnGap:'16px', width:'100%'}}>\n                                <Button style={{width:'50%', fontWeight:500}} onClick={() => this.setState({ saveSegmentationPromptOpen: false, active: null, editName: null })}>\n                                    <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\n                                </Button>\n                                <Button style={{width:'50%', fontWeight:500}} className=\"w-50\" onClick={() => this.saveSegmentation(this.state.editName)}\n                                        inverted\n                                        disabled={!this.state.editName || !isFormFullFilled(this.props)}>\n                                    {\n                                        this.state.active ?\n                                        <Translation id=\"save_changes\" defaultMessage=\"Save changes\" />\n                                        :\n                                        <Translation id=\"create_segmentation\" defaultMessage=\"Create segmentation\" />\n                                    }\n                                </Button>\n\n                            </div>\n\n                        }\n                    >\n                        <SegmentationForm {...this.props}\n                                          name={this.state.editName}\n                                          setNameInput={name => {\n                                              this.setState({editName: name})\n                                          }}\n                        />\n                    </Modal>\n                )}\n\n                {this.state.deleteSegmentationPromptOpen && (\n                    <Modal\n                        title={\n                            <Translation id=\"sure_delete_segmentation\"\n                                         defaultMessage=\"Are you sure you want to delete this segmentation?\" />\n                        }\n                        onClose={() =>\n                            this.setState({\n                                deleteSegmentationPromptOpen: false\n                            })\n                        }\n                        footer={\n                            <div style={{display:'flex', columnGap:'16px', width:'100%'}}>\n                                <Button style={{width:'50%', fontWeight:500}} onClick={\n                                    () => this.setState({deleteSegmentationPromptOpen: false, toErase: null})\n                                }>\n                                    <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\n                                </Button>\n                                <Button style={{width:'50%', fontWeight:500}}\n                                        className=\"w-50\"\n                                        onClick={() => {\n                                            this.props.deletePreferredSegmentation(this.state.toErase.name)\n                                            this.setState({deleteSegmentationPromptOpen: false, toErase: null})\n                                        }}\n                                        inverted\n                                >\n                                    <Translation id=\"clear_segmentation\" defaultMessage=\"Clear segmentation\" />\n                                </Button>\n                            </div>\n                        }\n                    >\n                        <div style={{\n                            color:'#232323',\n                            fontWeight: 400,\n                            lineHeight: '1.6em'\n                        }}>\n                            <Translation id=\"name\" defaultMessage=\"Name\"/>:&nbsp;\n                            <strong>{this.state.toErase.name}</strong>\n                            <div>\n                                <Translation id=\"business_segment\" defaultMessage=\"Business Segment\"/>:&nbsp;\n                                <strong>{this.getBusinessSegment(this.state.toErase.businessSegment)}</strong>\n                            </div>\n                            {\n                                this.state.toErase.channelName &&\n                                <div>\n                                    <Translation id=\"channel\" defaultMessage=\"Channel\"/>:&nbsp;\n                                    <strong>{this.state.toErase.channelName}</strong>\n                                </div>\n                            }\n                            {\n                                this.getSalesforceAccount(this.state.toErase.channel, this.state.toErase.salesforceId) &&\n                                <div>\n                                    <Translation id=\"account\" defaultMessage=\"Account\"/>:&nbsp;\n                                    <strong>{this.getSalesforceAccount(this.state.toErase.channel, this.state.toErase.salesforceId)}</strong>\n                                </div>\n                            }\n                        </div>\n                    </Modal>\n                )}\n            </div>\n        )\n    }\n}\nexport default injectIntl(SegmentationConfiguration)\n","import React from 'react'\n\nimport Segmentation from './Segmentation'\nimport SegmentationConfiguration from \"./SegmentationConfiguration\";\nimport SegmentationSteps from './SegmentationSteps'\n\nclass SegmentationSelector extends React.Component {\n\n    render() {\n        const isInConfiguration = !!window.location.pathname.match(/segmentation/gi)\n\n        return this.props.segmentationV3 ?\n            isInConfiguration ?\n                <SegmentationConfiguration {...this.props} />\n                :\n                <SegmentationSteps {...this.props} />\n            : <Segmentation {...this.props} />\n    }\n}\n\nexport default SegmentationSelector\n","import { connect } from 'react-redux'\nimport * as ui from '../../store/ui/actions'\nimport * as segmentation from '../../store/segmentation/actions'\n\nimport * as seg from '../../store/segmentation/reducers'\nimport { injectIntl } from 'react-intl'\nimport { getSalesOrg, getSelectedCenter } from '../../store/centers/reducers'\nimport { showingSegmentationModal, getUICallback, getMode, getLocalizedUrl } from '../../store/ui/reducers'\nimport { getImpersonatedBy } from '../../store/login/reducers'\nimport SegmentationSelector from './SegmentationSelector'\nimport { byProductId, isExclusiveHomeDepot } from '../../store/products/reducers'\nimport { getProductById } from \"../../store/products/actions\";\nimport {isOptionalBuilderProjectCenter} from \"../../store/centers/reducers\";\nimport {setSegmentationFromSuggested} from \"../../store/segmentation/actions\";\n\nconst mapStateToProps = (state, props) => {\n    const product = byProductId(state, seg.getSegmentatingProductId(state))\n    const productColorId = product && product.colorId\n    return {\n        segmentationV3: seg.getHasSegmentationV3(state),\n        key: getSelectedCenter(state),\n        mode: getMode(state),\n        isSaving: seg.getIsSaving(state),\n        isLoading: seg.getIsLoading(state),\n        show: showingSegmentationModal(state),\n        currentSegmentation: seg.getCurrentSegmentation(state),\n        callback: getUICallback(state),\n        segmentatingProductId: seg.getSegmentatingProductId(state),\n        segmentatingProductIsOutlet: seg.getSegmentatingProductIsOutlet(state),\n        validHomeDepotSegmentation: seg.validHomeDepotSegmentation(state),\n        businessSegment: seg.getSelectedBusinesSegment(state),\n        currentFavourite: seg.getCurrentFavourite(state),\n        channel: seg.getSelectedChannel(state),\n        subchannel: seg.getSelectedSubchannel(state),\n        salesforceId: seg.getSelectedSalesForceId(state),\n        projectId: seg.getSelectedProjectId(state),\n        projectOptions: seg.getProjectIdV3(state, seg.getSelectedChannel(state), seg.getSelectedSalesForceId(state)),\n        typology: seg.getSelectedTypology(state),\n        kb: seg.getSelectedKB(state),\n        builder: seg.getSelectedBuilder(state),\n        use: seg.getSelectedUse(state),\n        useOptions: seg.getUseOptions(state),\n        buildersOptions: seg.getBuildersOptions(state),\n        preferredSegmentation: seg.getPreferredSegmentation(state),\n        sfOptions: seg.getHasSegmentationV3(state) ? seg.getSalesforceRelationsV3(state) : [],\n        supplierCenterSalesOrg: getSalesOrg(state),\n        isExclusiveHomeDepot: isExclusiveHomeDepot(state, productColorId),\n        viewFullSegmentation: getSalesOrg(state) === '2011' || getSalesOrg(state) === '2032' || getSalesOrg(state) === '2037' || getImpersonatedBy(state) ? true : false,\n        viewFullSegmentationV3: getImpersonatedBy(state) ? true : false,\n        localizedUrl: (routeId) => getLocalizedUrl(state, props.intl, routeId),\n        isOptionalBuilderProjectCenter: isOptionalBuilderProjectCenter(state),\n        salesForceName: seg.getSelectedSalesForceName(state),\n        channelOptionsV3: seg.getChannelOptionsV3(state),\n        savedSegmentations: state.segmentation.preferredSegmentation,\n        evidencesType: seg.getEvidencesType(state),\n        subchannelProgram: seg.getSelectedSubchannelProgram(state),\n        suggestedSegmentations: seg.getSuggestedSegmentations(state),\n        materialProjects: seg.getMaterialProjects(state),\n        segmentationHashesSet: seg.getSegmentationHashes(state),\n        segmentationProjectsSet: seg.getSegmentationProjects(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        clearSegmentation: () => {\n            dispatch(segmentation.clearSegmentation())\n        },\n        onClose: () => {\n            dispatch(ui.closeSegmentationModal())\n        },\n        setPO: value => {\n            dispatch(segmentation.setPO(value))\n        },\n        onSubmitSegmentation: callback => {\n            dispatch(segmentation.submittSegmentationModal(callback))\n        },\n        fetchSegmentation: () => {\n            dispatch(segmentation.fetchSegmentation())\n        },\n        loadPreferredSegmentation: currentFavourite => {\n            dispatch(segmentation.loadPreferredSegmentation(currentFavourite))\n        },\n        saveSegmentationPreferred: currentFavourite => {\n            console.log('CURR', currentFavourite)\n            dispatch(segmentation.saveSegmentationPreferred(currentFavourite))\n        },\n        deletePreferredSegmentation: currentFavourite => {\n            dispatch(segmentation.deletePreferredSegmentation(currentFavourite))\n        },\n        getProductById: (productId) => dispatch(getProductById(productId)),\n        setSegmentationCurrentStep: (step) => dispatch(segmentation.setSegmentationCurrentStep(step)),\n        setSegmentationEvidence: (formData) => dispatch(segmentation.setSegmentationEvidence(formData)),\n        setSegmentationFromSuggested: (suggestedSegmentation) => dispatch(setSegmentationFromSuggested(suggestedSegmentation))\n    }\n}\nconst SegmentationContainer = injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(SegmentationSelector)\n)\n\nexport default SegmentationContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport ProfileContainer from '../profile/ProfileContainer'\nimport SegmentationContainer from './SegmentationContainer'\nimport { injectIntl } from 'react-intl'\n\nimport CentersContainer from '../centers/CentersContainer'\n\nclass ProfileSegmentation extends React.Component {\n    render() {\n        return (\n            <div className=\"box-profile row\">\n                <div className=\"col-12 col-md-4 col-lg-3\">\n                    <ProfileContainer />\n                </div>\n                <div className=\"col-12 col-xl-9\">\n                    <div className=\"profile-form\">\n                        <div id=\"segmentation-container\" className=\"segmentation\" style={{ display: 'block' }}>\n                            <div className=\"toolbar\">\n                                <div style={{display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', columnGap: '24px'}}>\n                                    <h4 style={{fontSize: '20px'}}>\n                                        <Translation id=\"saved_segmentations\" defaultMessage=\"Saved segmentations\" />\n                                    </h4>\n                                    <div style={{textAlign: 'end'}}>\n                                        <CentersContainer keepHere simple/>\n                                    </div>\n                                </div>\n                            </div>\n\n                            <div>\n                                <SegmentationContainer />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default injectIntl(ProfileSegmentation)\n","import React from 'react'\n\nimport { injectIntl, defineMessages } from 'react-intl'\nimport ReactTable from 'react-table'\nimport Spinner from '../global/Spinner'\nimport OrderTransfersStatus from './OrderTransfersStatus'\n\nimport Translation from '../global/Translation'\ndefineMessages({\n    RP: {\n        id: 'RP',\n        description: 'RP',\n        defaultMessage: 'Reserve pending confirmation'\n    },\n    RC: {\n        id: 'RC',\n        description: 'RC',\n        defaultMessage: 'Confirmed reservation'\n    },\n    PP: {\n        id: 'PP',\n        description: 'PP',\n        defaultMessage: 'Pending order to create'\n    },\n    PC: {\n        id: 'PC',\n        description: 'PC',\n        defaultMessage: 'Order created'\n    },\n    CE: {\n        id: 'CE',\n        description: 'CE',\n        defaultMessage: 'External customer'\n    },\n    ER: {\n        id: 'ER',\n        description: 'ER',\n        defaultMessage: 'Error creating order'\n    },\n    RR: {\n        id: 'RR',\n        description: 'RR',\n        defaultMessage: 'Reserve pending to cancel'\n    },\n    RE: {\n        id: 'RE',\n        description: 'RE',\n        defaultMessage: 'Cancelled reservation'\n    },\n    PM: {\n        id: 'PM',\n        description: 'PM',\n        defaultMessage: 'Order modified'\n    },\n    WL: {\n        id: 'WL',\n        description: 'WL',\n        defaultMessage: 'Reserve Wilsam'\n    },\n    SH: {\n        id: 'SH',\n        description: 'SH',\n        defaultMessage: 'Reservations Shops USA'\n    },\n    CP: {\n        id: 'CP',\n        description: 'CP',\n        defaultMessage: 'Pending changes'\n    }\n})\nclass Transfers extends React.Component {\n    state = { search: null }\n    componentDidMount() {\n        this.props.fetchOrders('transfer', this.state.startDate, this.state.endDate)\n    }\n\n    search = e => {\n        this.setState({ search: e.target.value })\n    }\n\n    render() {\n        const { intl } = this.props\n        const orders = this.props.transferOrders\n        if (!orders) return null\n        let ordersFiltered = null\n\n        if (this.state.search) {\n            ordersFiltered = orders\n            ordersFiltered = ordersFiltered.filter(row => {\n                return row.reservationId.toLowerCase().includes(this.state.search.toLowerCase()) || row.orderId.toLowerCase().includes(this.state.search.toLowerCase())\n            })\n        }\n        const dataTransferOrders = ordersFiltered !== null ? ordersFiltered : orders\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-12\">\n                        <div className=\"toolbar\">\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <div className=\"col-12 order_header\">\n                                        <div className=\"group_title\">\n                                            <h4>\n                                                <Translation id=\"transfer_orders\" defaultMessage=\"Transfer orders\" />\n                                            </h4>\n                                        </div>\n                                        <div className=\"group_date_picker\" />\n                                        <div className=\"location search-bar search-bar--thin\">\n                                            <input\n                                                type=\"text\"\n                                                data-qa=\"query\"\n                                                className=\"search-box\"\n                                                placeholder={intl.formatMessage({ id: 'search' })}\n                                                value={this.state.search}\n                                                onChange={e =>\n                                                    this.setState({\n                                                        search: e.target.value\n                                                    })\n                                                }\n                                            />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n\n                        <ReactTable\n                            data={dataTransferOrders}\n                            loading={this.props.isLoading}\n                            loadingText={<Spinner isLoading={this.props.isLoading} />}\n                            className=\"-highlight\"\n                            columns={[\n                                { Header: <Translation id=\"reservation_id\" defaultMessage=\"Reservation ID\" />, accessor: 'reservationId' },\n                                { Header: <Translation id=\"order_id\" defaultMessage=\"Order ID\" />, accessor: 'orderId' },\n                                {\n                                    Header: <Translation id=\"status\" defaultMessage=\"Status\" />,\n                                    id: 'status',\n                                    Cell: ({ original }) => {\n                                        return <OrderTransfersStatus status={original.orderStatus} />\n                                        // return original.reservationStatus\n                                    },\n                                    minWidth: 250\n                                },\n                                { Header: <Translation id=\"shippingMethod\" defaultMessage=\"Shipping method\" />, accessor: 'shippingType' },\n                                { Header: <Translation id=\"shipping_date\" defaultMessage=\"Shipping date\" />, accessor: 'preferredShippingAddress' },\n                                { Header: <Translation id=\"last_update\" defaultMessage=\"Last update\" />, accessor: 'updatedAt' }\n                            ]}\n                            defaultSorted={[\n                                {\n                                    id: 'reservationId',\n                                    desc: true\n                                }\n                            ]}\n                            defaultPageSize={8}\n                            pageSizeOptions={[8, 16, 32, 64, 128]}\n                            previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                            nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                            noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                            pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                            ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                            getTrProps={(state, rowInfo) => {\n                                let cursor = rowInfo ? 'pointer' : 'default'\n\n                                return {\n                                    // onClick: e => {\n                                    //     if (rowInfo.original.reservationId) {\n                                    //         this.showOrderDetails(rowInfo.original.reservationId)\n                                    //     }\n                                    // },\n                                    style: { cursor: cursor }\n                                }\n                            }}\n                        />\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(Transfers)\n","import { connect } from 'react-redux'\nimport Transfers from './Transfers'\nimport { getOrdersLoading, getTransferOrders } from '../../store/orders/reducers'\nimport { injectIntl } from 'react-intl'\nimport { fetchOrders } from '../../store/orders/actions'\nimport { withRouter } from 'react-router-dom'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        transferOrders: getTransferOrders(state),\n\n        isLoading: getOrdersLoading(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOrders: (type, startDate, endDate) => {\n            dispatch(fetchOrders(type, startDate, endDate))\n        }\n    }\n}\n\nconst TransfersContainer = withRouter(injectIntl(connect(mapStateToProps, mapDispatchToProps)(Transfers)))\n\nexport default TransfersContainer\n","import { connect } from 'react-redux'\n\nimport Error from './Error'\nimport { getAlert } from '../../store/error/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        alert: getAlert(state)\n    }\n}\n\nconst ErrorContainer = connect(mapStateToProps, null)(Error)\n\nexport default ErrorContainer\n","import React from 'react'\n\nimport ErrorContainer from '../components/alerts/ErrorContainer'\n\nconst Error404Screen = props => <ErrorContainer />\n\nexport default Error404Screen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport ReactTable from 'react-table'\nimport { defineMessages, injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport Modal from '../global/Modal'\nimport { connect } from 'react-redux'\nimport Spinner from '../global/Spinner'\nimport DatePicker from 'react-datepicker'\n\nimport { fetchAllLowesOrders, fetchLowesOrderDetails, fetchAllLowesLinesOrders } from '../../store/orders/actions'\nimport { getLowesOrders, getLowesOrderDetails, getOrdersLoading, getLowesLinesOrders } from '../../store/orders/reducers'\nimport { getToken, getIsLowesAdmin } from '../../store/login/reducers'\nimport { getImageBackground } from '../../store/products/actions'\nimport debounce from 'lodash/debounce'\nimport moment from 'moment'\nimport noImage from '../../assets/img/icons/no-image.svg'\n\ndefineMessages({\n    SEARCH_BY_ID_OR_NAME: {\n        id: 'search_by_id_or_name',\n        description: 'search_by_id_or_name',\n        defaultMessage: 'Search by Id or Name'\n    },\n    SEARCH_BY_NAME: {\n        id: 'search_by_name',\n        description: 'search_by_name',\n        defaultMessage: 'Search by Name'\n    }\n})\nconst mapStateToProps = state => {\n    return {\n        lowesOrders: getLowesOrders(state),\n        lowesOrderDetails: getLowesOrderDetails(state),\n        lowesLinesOrders: getLowesLinesOrders(state),\n        isLoading: getOrdersLoading(state),\n        token: getToken(state),\n        isLowesAdmin: getIsLowesAdmin(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchAllLowesOrders: () => {\n            dispatch(fetchAllLowesOrders())\n        },\n        fetchAllLowesLinesOrders: (page, pageSize, query, startDate, endDate) => dispatch(fetchAllLowesLinesOrders(page, pageSize, query, startDate, endDate)),\n        fetchLowesOrderDetails: reservationId => dispatch(fetchLowesOrderDetails(reservationId)),\n        clearLowesOrderDetails: () => dispatch({ type: 'CLEAR_LOWES_ORDER_DETAILS' }),\n        getImageBackground: product => dispatch(getImageBackground(product))\n    }\n}\nclass LowesReports extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            search: '',\n            startDate: null,\n            endDate: null,\n            page: 0,\n            selectedCSVFormat: 'xls'\n        }\n    }\n    componentDidMount() {\n        this.input.addEventListener('keydown', this.debounceInput)\n        // this.props.fetchAllLowesLinesOrders()\n    }\n    showOrderDetails(reservationId) {\n        this.props.fetchLowesOrderDetails(reservationId)\n    }\n    hiddenorderDetails() {\n        this.props.clearLowesOrderDetails()\n    }\n    changeStartDate = date => {\n        this.setState({ startDate: date })\n    }\n\n    changeEndDate = date => {\n        this.setState({ endDate: date }, () => this.fetchAllLowesLinesOrders(0, this.state.pageSize))\n    }\n\n    debounceInput = debounce(e => {\n        this.fetchAllLowesLinesOrders(0, this.state.pageSize)\n    }, 250)\n    fetchAllLowesLinesOrders = (page, pageSize) => {\n        this.setState({ page: page, pageSize: pageSize }, () => this.props.fetchAllLowesLinesOrders(page + 1, pageSize, this.input.value, this.state.startDate, this.state.endDate))\n    }\n    downloadCsv = () => {\n        if (!this.inputEmail.value) {\n            return\n        }\n\n        this.setState({ emailPromptOpen: false })\n\n        const email = this.inputEmail.value\n\n        // const header = fields.map(field => {\n        //     return intl.formatMessage({ id: `${field}` })\n        // })\n\n        // const url = `${process.env.REACT_APP_API_HOST}/lowes/orders/csv?&to=${encodeURIComponent(email)}&format=${this.state.selectedCSVFormat}&authToken=${this.props.token}`\n        const url = `${process.env.REACT_APP_API_HOST}/lowes/orders/csv?&to=${encodeURIComponent(email)}&format=${this.state.selectedCSVFormat}`\n        fetch(url, {\n            headers: {Authorization: `Bearer ${this.props.token}`}\n        })\n    }\n    getColumnsLineOrders() {\n        let img = {\n            id: 'img',\n            Header: <Translation id=\"image\" defaultMessage=\"Image\" />,\n            accessor: 'img',\n            maxWidth: 160,\n            Cell: ({ original }) => {\n                if(original.product !== null && original.product !== undefined) {\n                    const imageBackground = this.props.getImageBackground(original.product)\n                        return (\n                            <React.Fragment>\n                                <img src={imageBackground} alt=\"product-img\" width=\"75\" height=\"50\" />\n                            </React.Fragment>\n                        )\n                } else\n                return (\n                    <React.Fragment>\n                        <img src={noImage} alt=\"temporal-img\" width=\"75\" height=\"50\" />\n                    </React.Fragment>\n                )\n            }\n        }\n        let createdAt = {\n            id: 'createdAt',\n            Header: <Translation id=\"date\" defaultMessage=\"Date\" />,\n            accessor: 'createdAt'\n        }\n        let orderId = {\n            id: 'orderId',\n            Header: <Translation id=\"order_hashtag\" defaultMessage=\"Order #\" />,\n\n            accessor: 'orderId'\n        }\n\n        let storeId = {\n            id: 'storeId',\n            Header: <Translation id=\"store_hashtag\" defaultMessage=\"Store #\" />,\n            accessor: 'storeId',\n            filterable: false\n        }\n        let storeName = {\n            id: 'storeName',\n            Header: <Translation id=\"store_name\" defaultMessage=\"Store Name\" />,\n            accessor: 'storeName'\n        }\n\n        let displayName = {\n            id: 'displayName',\n            Header: <Translation id=\"description\" defaultMessage=\"Description\" />,\n            accessor: 'displayName'\n        }\n        let brand = {\n            id: 'brand',\n            Header: <Translation id=\"brand\" defaultMessage=\"Brand\" />,\n            accessor: 'brand'\n        }\n        let colorId = {\n            id: 'colorId',\n            Header: <Translation id=\"color\" defaultMessage=\"Color\" />,\n            accessor: 'colorId'\n        }\n        let cutSize = {\n            id: 'cutSize',\n            Header: <Translation id=\"cut_size\" defaultMessage=\"Cut Size\" />,\n            accessor: 'cutSize'\n        }\n        let pogType = {\n            id: 'pogType',\n            Header: <Translation id=\"pog_type\" defaultMessage=\"Pog Type\" />,\n            accessor: 'pogType'\n        }\n        let lowesReorderId = {\n            id: 'lowesReorderId',\n            Header: <Translation id=\"lowes_reorder\" defaultMessage=\"Lowe's Reorder\" />,\n            accessor: 'lowesReorderId'\n        }\n        let productId = {\n            id: 'productId',\n            Header: <Translation id=\"sap_item_id\" defaultMessage=\"Sap Item Id\" />,\n            accessor: 'productId'\n        }\n        let uom = {\n            id: 'uom',\n            Header: <Translation id=\"uom\" defaultMessage=\"UOM\" />,\n            accessor: 'uom'\n        }\n        let qty = {\n            id: 'qty',\n            Header: <Translation id=\"quantity\" defaultMessage=\"Quantity\" />,\n            accessor: 'qty'\n        }\n        // let address = {\n        //     id: 'address',\n        //     Header: <Translation id=\"address\" defaultMessage=\"Address\" />,\n        //     accessor: 'address'\n        // }\n\n        // let city = {\n        //     id: 'city',\n        //     Header: <Translation id=\"city\" defaultMessage=\"City\" />,\n        //     accessor: 'city'\n        // }\n        // let state = {\n        //     id: 'state',\n        //     Header: <Translation id=\"state\" defaultMessage=\"State\" />,\n        //     accessor: 'state'\n        // }\n        // let zip = {\n        //     id: 'zip',\n        //     Header: <Translation id=\"zipcode\" defaultMessage=\"Zip Code\" />,\n        //     accessor: 'zip'\n        // }\n        let name = {\n            id: 'name',\n            Header: <Translation id=\"name\" defaultMessage=\"Name\" />,\n            accessor: 'name'\n        }\n        let title = {\n            id: 'title',\n            Header: <Translation id=\"title\" defaultMessage=\"Title\" />,\n            accessor: 'title'\n        }\n        let email = {\n            id: 'email',\n            Header: <Translation id=\"email\" defaultMessage=\"Email\" />,\n            accessor: 'email'\n        }\n        let shipDate = {\n            id: 'shipDate',\n            Header: <Translation id=\"ship_date\" defaultMessage=\"Ship Date\" />,\n            accessor: 'shipDate'\n        }\n        let status = {\n            id: 'status',\n            Header: <Translation id=\"status\" defaultMessage=\"Status\" />,\n            accessor: 'status'\n        }\n        let shippingStatus = {\n            id: 'shippingStatus',\n            Header: <Translation id=\"shippingStatus\" defaultMessage=\"Shipping status\" />,\n            Cell: ({ original }) => {\n                return (\n                    <div>\n                        {original.status === 'Shipped' ? original.status : original.shippingStatus}\n                        {original.tscDetailsLine && (\n                            <ul style={{ paddingLeft: '0px' }}>\n                                {original.tscDetailsLine.backOrderQuantity !== original.qty && (\n                                    <ul>\n                                        {original.tscDetailsLine.quantity > 0 && (\n                                            <li>\n                                                <span>\n                                                    <Translation id=\"tracking\" defaultMessage=\"Tracking\" />{' '}\n                                                    {parseInt(original.tscDetailsLine.quantity, 10) === parseInt(original.qty, 10) ? (\n                                                        <React.Fragment>{original.relatedShipments[0] && original.relatedShipments[0].trackingNumber}</React.Fragment>\n                                                    ) : (\n                                                        original.tscDetailsLine.quantity > 0 &&\n                                                        original.relatedShipments.map(shipment => {\n                                                            return shipment.trackingNumber + ' '\n                                                        })\n                                                    )}{' '}\n                                                    - {original.tscDetailsLine.quantity} / {original.qty}\n                                                </span>\n                                            </li>\n                                        )}\n                                        {original.tscDetailsLine.backOrderQuantity > 0 && (\n                                            <li>\n                                                <span>\n                                                    {original.status === 'Shipped' ? 'Tracking' : 'Pending ' + original.tscDetailsLine.backOrderQuantity}{' '}\n                                                    {original.tscDetailsLine.backOrderQuantity > 0 &&\n                                                        original.relatedShipments.map(shipment => {\n                                                            return shipment.trackingNumber + ' '\n                                                        })}{' '}\n                                                    - {original.tscDetailsLine.backOrderQuantity} / {original.qty}\n                                                </span>\n                                            </li>\n                                        )}\n                                    </ul>\n                                )}\n                            </ul>\n                        )}\n                    </div>\n                )\n            }\n        }\n        let shippingCarrier = {\n            id: 'shippingCarrier',\n            Header: <Translation id=\"shipping_carrier\" defaultMessage=\"Shipping Carrier\" />,\n            accessor: 'shippingCarrier'\n        }\n        let trackingId = {\n            id: 'trackingId',\n            Header: <Translation id=\"tracking\" defaultMessage=\"Tracking\" />,\n            accessor: 'trackingId'\n        }\n\n        if (this.props.isLowesAdmin)\n            return [\n                createdAt,\n                orderId,\n                storeId,\n                storeName,\n                qty,\n                displayName,\n                brand,\n                colorId,\n                cutSize,\n                pogType,\n                lowesReorderId,\n                productId,\n                uom,\n                name,\n                title,\n                email,\n                shipDate,\n                status,\n                shippingStatus,\n                shippingCarrier,\n                trackingId\n            ]\n        return [\n            createdAt,\n            orderId,\n            img,\n            qty,\n            displayName,\n            brand,\n            colorId,\n            cutSize,\n            pogType,\n            lowesReorderId,\n            uom,\n            name,\n            title,\n            shipDate,\n            status,\n            shippingStatus,\n            shippingCarrier,\n            trackingId\n        ]\n    }\n\n    render() {\n        if (!this.props.lowesLinesOrders) return <Spinner isLoading={true} />\n\n        return (\n            <div className=\"container container--lowes\">\n                <div className=\"row\" style={{ paddingBottom: '15px' }}>\n                    <div className=\"col-12 order_header\">\n                        <span>\n                            <Translation id=\"for_assistance_please_email\" defaultMessage=\"For assistance please email\" /> <a href=\"mailto:lowescustomercare@cosentino.com\">lowescustomercare@cosentino.com</a>\n                        </span>\n                    </div>\n                    <div className=\"col-12  order_header\">\n                        <div className=\"group_date_picker col-12 col-lg-4\" style={{ marginRight: '0px' }}>\n                            {this.props.type !== 'transfer' && (\n                                <React.Fragment>\n                                    <div className=\"group_date_picker__item\">\n                                        <div className=\"name\">\n                                            <Translation id=\"from\" defaultMessage=\"From\" /> <i className=\"fal fa-chevron-down\" />\n                                        </div>\n                                        <DatePicker\n                                            selected={this.state.startDate}\n                                            selectsStart={true}\n                                            startDate={this.state.startDate}\n                                            endDate={this.state.endDate}\n                                            maxDate={moment()}\n                                            onChange={selectedOption => this.changeStartDate(selectedOption, 'startDate')}\n                                            onFocus={() => this.setState({ endDate: null })}\n                                            autoComplete=\"off\"\n                                            onKeyDown={e => e.preventDefault()}\n                                            showMonthDropdown\n                                            showYearDropdown\n                                            className=\"form-control form-control-sm date\"\n                                        />\n                                    </div>\n                                    <div className=\"group_date_picker__item\">\n                                        <div className=\"name\">\n                                            <Translation id=\"to\" defaultMessage=\"To\" /> <i className=\"fal fa-chevron-down\" />\n                                        </div>\n                                        <DatePicker\n                                            selected={this.state.endDate}\n                                            selectsEnd\n                                            startDate={this.state.startDate}\n                                            endDate={this.state.endDate}\n                                            minDate={this.state.startDate}\n                                            onChange={selectedOption => this.changeEndDate(selectedOption, 'endDate')}\n                                            autoComplete=\"off\"\n                                            onKeyDown={e => e.preventDefault()}\n                                            showMonthDropdown\n                                            showYearDropdown\n                                            className=\"form-control form-control-sm date\"\n                                        />\n                                    </div>\n                                </React.Fragment>\n                            )}\n                        </div>\n                        <div className=\"search-bar search-bar--thin col-10 col-lg-6\" style={{ marginRight: '0px' }}>\n                            <input\n                                type=\"text\"\n                                className=\"search-box\"\n                                placeholder={this.props.intl.formatMessage({ id: 'search_by_id_or_name' })}\n                                ref={node => {\n                                    this.input = node\n                                }}\n                            />\n                        </div>\n                        <div className=\"col-1\" style={{ marginRight: '0px' }}>\n                            {/* <a href={process.env.REACT_APP_API_HOST + `/lowes/orders/csv?authToken=${this.props.token}`} data-cy=\"impersonate__link_download_users_list\"> */}\n                            <Button\n                                icon=\"times\"\n                                customClass=\"only-icon bt--thin\"\n                                onClick={() => {\n                                    // this.startDate.value = null\n                                    // this.endDate.value = null\n                                    this.input.value = null\n                                    return this.setState({ startDate: null, endDate: null, query: null }, () => this.fetchAllLowesLinesOrders(0, this.state.pageSize))\n                                }}\n                            ></Button>\n                            {/* </a> */}\n                        </div>\n\n                        <div className=\"col-6 col-lg-1\">\n                            {/* <a href={process.env.REACT_APP_API_HOST + `/lowes/orders/csv?authToken=${this.props.token}`} data-cy=\"impersonate__link_download_users_list\"> */}\n                            <Button\n                                icon=\"download\"\n                                onClick={() => this.setState({ emailPromptOpen: true })}\n                                customClass=\"only-icon bt--thin\"\n                                data-cy=\"impersonate__link_download_users_list\"\n                            />\n                            {/* </a> */}\n                        </div>\n                    </div>\n                </div>\n                <ReactTable\n                    data={this.props.lowesLinesOrders.data}\n                    loading={this.props.isLoading}\n                    loadingText={<Spinner isLoading={this.props.isLoading} />}\n                    className=\"-highlight scroll react-table--lowes-orders mb-5\"\n                    columns={this.getColumnsLineOrders()}\n                    defaultPageSize={20}\n                    sortable={false}\n                    // pageSizeOptions={[6, 8, 16, 32, 64, 128]}\n                    previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                    nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                    noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                    pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                    ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                    manual\n                    page={this.state.page}\n                    onPageChange={page => this.setState({ page })}\n                    pages={this.props.lowesLinesOrders.last_page}\n                    onFetchData={(state, instance) => {\n                        this.fetchAllLowesLinesOrders(state.page, state.pageSize)\n                        this.setState({ loading: true })\n                    }}\n                />\n\n                {this.state.emailPromptOpen && (\n                    <Modal\n                        title={<Translation id=\"emailPromptModalTitle\" defaultMessage=\"We are preparing your listing\" />}\n                        onClose={() => this.setState({ emailPromptOpen: false })}\n                        footer={\n                            <Button onClick={() => this.downloadCsv()} inverted size=\"medium\">\n                                <Translation id=\"send\" defaultMessage=\"Send\" />\n                            </Button>\n                        }\n                    >\n                        <p>\n                            <Translation\n                                id=\"emailPromptModalBody\"\n                                defaultMessage=\"This process may take several minutes. Please, give us your email so we can send it once it is ready.\"\n                            />\n                        </p>\n                        <div className=\"container\">\n                            <Translation id=\"please_specify_the_desired_format\" defaultMessage=\"Please specify the desired format\" />\n\n                            <div className=\"col-12\" style={{ marginLeft: '10px', marginTop: '10px' }}>\n                                <span>\n                                    <form>\n                                        <div class=\"form-check\">\n                                            <input\n                                                class=\"form-check-input\"\n                                                type=\"radio\"\n                                                value=\"xls\"\n                                                checked={this.state.selectedCSVFormat === 'xls'}\n                                                onChange={e =>\n                                                    this.setState({\n                                                        selectedCSVFormat: e.target.value\n                                                    })\n                                                }\n                                            />\n                                            <label class=\"form-check-label\">\n                                                <Translation id=\"csv_optimized_for_excel\" defaultMessage=\"csv optimized for excel\"></Translation>\n                                            </label>\n                                        </div>\n                                        <div class=\"form-check\">\n                                            <input\n                                                class=\"form-check-input\"\n                                                type=\"radio\"\n                                                value=\"csv\"\n                                                checked={this.state.selectedCSVFormat === 'csv'}\n                                                onChange={e =>\n                                                    this.setState({\n                                                        selectedCSVFormat: e.target.value\n                                                    })\n                                                }\n                                            />\n                                            <label class=\"form-check-label\">csv</label>\n                                        </div>\n                                    </form>\n                                </span>\n                            </div>\n                        </div>\n                        <div className=\"form-group\">\n                            <b>\n                                <small><Translation id=\"email\" defaultMessage=\"Email\" /></small>\n                            </b>\n                            <input ref={ref => (this.inputEmail = ref)} type=\"email\" className=\"form-control\" aria-describedby=\"emailHelp\" placeholder=\"Email\" />\n                        </div>\n                    </Modal>\n                )}\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(LowesReports)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport LowesReports from '../catalog-lowes/LowesReports'\n\nclass LowesOrders extends React.Component {\n    search = e => {\n        this.setState({ search: e.target.value })\n    }\n    changeStartDate = date => {\n        this.setState({ startDate: date })\n    }\n\n    changeEndDate = date => {\n        this.setState({ endDate: date }, () => this.props.fetchOrders(this.props.type, this.state.startDate, this.state.endDate))\n    }\n    render() {\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-12\">\n                        <div className=\"toolbar\">\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <div className=\"col-12 order_header\">\n                                        <div className=\"group_title\">\n                                            <h4>\n                                                {/* {!this.props.type && <Translation id=\"orders_history\" defaultMessage=\"Orders history\" />} */}\n                                                {this.props.type === 'open' && <Translation id=\"open_orders\" defaultMessage=\"Open orders\" />}\n                                                {this.props.type === 'transfer' && <Translation id=\"transfer_orders\" defaultMessage=\"Transfer orders\" />}\n                                            </h4>\n                                        </div>\n                                        <LowesReports />\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(LowesOrders)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl, defineMessages } from 'react-intl'\nimport Spinner from '../global/Spinner'\nimport ProfileContainer from './ProfileContainer'\nimport Alerts from '../alerts/Alerts'\ndefineMessages({\n    ROUTE_HOME: {\n        id: 'repeat_password',\n        description: 'repeat_password',\n        defaultMessage: 'Repeat password'\n    },\n    STORE_INFO_NAME: {\n        id: 'store_info_Name',\n        description: 'Name',\n        defaultMessage: 'Name'\n    },\n    STORE_INFO_SHIPPINGCOUNTRY: {\n        id: 'store_info_Shippingcountry',\n        description: 'Shippingcountry',\n        defaultMessage: 'Country'\n    },\n    STORE_INFO_SHIPPINGSTREET: {\n        id: 'store_info_Shippingstreet',\n        description: 'Shippingstreet',\n        defaultMessage: 'Street'\n    },\n    STORE_INFO_SHIPPINGCITY: {\n        id: 'store_info_Shippingcity',\n        description: 'Shippingcity',\n        defaultMessage: 'City'\n    },\n    STORE_INFO_SHIPPINGSTATE: {\n        id: 'store_info_Shippingstate',\n        description: 'Shippingstate',\n        defaultMessage: 'State'\n    },\n    STORE_INFO_POSTALCODES: {\n        id: 'store_info_PostalcodeS',\n        description: 'PostalcodeS',\n        defaultMessage: 'ZP Code'\n    },\n    STORE_INFO_ZPHONE: {\n        id: 'store_info_Zphone',\n        description: 'phone',\n        defaultMessage: 'Phone'\n    }\n})\nclass ProfileLowesConfiguration extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            alert: { mayus: undefined, contain: undefined, number: undefined, minus: undefined, equal: undefined }\n        }\n    }\n\n    componentDidMount() {\n        // this.props.fetchProfileConfiguration()\n    }\n\n    render() {\n        const { intl, isLoading } = this.props\n\n        const spinner = isLoading ? <Spinner isLoading={isLoading} /> : null\n\n        return (\n            <div className=\"row\">\n                <div className=\"col-12 col-md-4 col-lg-3\">\n                    <ProfileContainer />\n                </div>\n                <div className=\"col-12 col-lg-9\">\n                    {isLoading ? (\n                        spinner\n                    ) : (\n                        <div className=\"profile-form\">\n                            <div className=\"toolbar\">\n                                <div className=\"container\">\n                                    <div className=\"row\">\n                                        <div className=\"col-12 \">\n                                            <h4>\n                                                <Translation id=\"store_info\" defaultMessage=\"Store Info\" />\n                                            </h4>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"form user-form lowesStoreData\">\n                                <Alerts alert={this.props.alert} status={this.props.status} />\n                                {this.props.lowesStoreData &&\n                                    Object.keys(this.props.lowesStoreData).map(key => {\n                                        return (\n                                            <div className=\"row\">\n                                                <div className=\"offset-1 col-4\">\n                                                    <span className=\"lowesStoreData-label\">{intl.formatMessage({ id: 'store_info_' + key })}:</span>\n                                                </div>\n                                                <div className=\"col-6\">\n                                                    <span className=\"lowesStoreData-value\">{this.props.lowesStoreData[key]}</span>\n                                                </div>\n                                            </div>\n                                        )\n                                    })}\n                            </div>\n                        </div>\n                    )}\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(ProfileLowesConfiguration)\n","import { connect } from 'react-redux'\nimport ProfileLowesConfiguration from './ProfileLowesConfiguration'\nimport { fetchProfileConfiguration } from '../../store/profile-configuration/actions'\nimport { getLowesStoreData } from '../../store/login/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        lowesStoreData: getLowesStoreData(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchProfileConfiguration: () => {\n            dispatch(fetchProfileConfiguration())\n        }\n    }\n}\n\nconst ProfileLowesConfigurationContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProfileLowesConfiguration)\n\nexport default ProfileLowesConfigurationContainer\n","import { createBrowserHistory }  from \"history\";\n\nconst history = createBrowserHistory();\n\nconst actionsMap = new Map()\n\nhistory.listen((location, action) => {\n    actionsMap.forEach(callback => callback(location, action))\n})\n\n\nexport const addHistoryAction = (key, callback) => actionsMap.set(key, callback)\nexport const removeHistoryAction = (key) => actionsMap.delete(key)\nexport default history","import React, { Component } from 'react'\nimport { injectIntl } from 'react-intl'\nimport { ElaborationOptionsMap } from './CutToSizeMaps'\nimport imageFurniture from '../../assets/img/cut-to-size/pre-order-banner.png'\nimport {connect} from \"react-redux\";\nimport {dispatchPushURL} from \"../../store/ui/actions\";\nimport history from \"../global/history\";\nimport Translation from \"../global/Translation\";\nimport Button from \"../global/Button\";\nimport {canViewPreorder} from \"../../store/login/reducers\";\nimport LocalizedLink from \"../global/LocalizedLink\";\nclass ElaborationDetails extends Component {\n\n    render () {\n        const {intl, modelImage, hasDetail, showDetail, currentModelOption} = this.props\n        const id = this.props.id === 'PREORDER' ? 'BUDGET' : this.props.id\n        const option = ElaborationOptionsMap[id]\n        const title = intl.formatMessage(option.name)\n        const image = modelImage ? (process.env.REACT_APP_API_HOST + modelImage[currentModelOption]) : option.image\n        const optionModels = modelImage && modelImage.map((m, index) => {return {image:process.env.REACT_APP_API_HOST + m, index}}).filter(m => m.index !== currentModelOption)\n\n        return (\n            <div className=\"cut_to_size_elaboration_details\">\n                <div className=\"cut_to_size_elaboration_details_model_image\" style={{ position: 'relative' }}>\n                    <h2 className=\"questa-bold\">{title}</h2>\n                    <img src={image} alt={title} width=\"100%\" />\n\n                    { id !== 'BUDGET' &&\n                        <div style={{position:\"relative\"}}>\n                            <LocalizedLink routeId={'ROUTE_CUT_TO_SIZE'} header={true} queryString={`?type=${this.props.hasPreOrder ? 'preorder' : 'budget'}`} params={{'outlet':''}}>\n                            <img className=\"mt-2\" src={imageFurniture} alt={title} width=\"100%\"/>\n                            <Button size=\"small\"\n                                    customClass=\"bt-cts-inverted my-3\"\n                                    style={{\n                                        position:\"absolute\",\n                                        top:'72%',\n                                        left:'50%',\n                                        borderColor:'white',\n                                        transform:'translateX(-50%)'\n                                    }}\n                            >\n                                <Translation id=\"request_for_preorder\" defaultMessage=\"Request an order/offer\" />\n                            </Button>\n                            </LocalizedLink>\n                        </div>\n                    }\n\n                    {hasDetail && (\n                        <div\n                            style={{\n                                position: 'absolute',\n                                top: '50%',\n                                left: '50%',\n                                transform: 'translate(-50%)',\n                                borderRadius: '100%',\n                                backgroundColor: '#D8D8D8',\n                                opacity: '0.65',\n                                width: '48px',\n                                height: '48px',\n                                cursor: 'pointer',\n                                display: 'flex',\n                                alignItems: 'center'\n                            }}\n                            onClick={showDetail}\n                        >\n                            <i className=\"fas fa-search-plus 2x\" style={{ margin: 'auto', color: 'black', fontSize: '1.4em', fontWeight: '500' }} />\n                        </div>\n                    )}\n                </div>\n                {optionModels && optionModels.length > 0 && (\n                    <div className=\"cut_to_size_elaboration_details_model_options mt-3\">\n                        {optionModels.map(option => {\n                            const key = 'option-' + option.index\n\n                            return (\n                                <div className=\"cut_to_size_elaboration_details_model_option m-2 p-2\" key={key}>\n                                    <img\n                                        src={option.image}\n                                        alt={key}\n                                        height=\"100px\"\n                                        onClick={() => {\n                                            this.props.setCurrentModelOption(option.index)\n                                        }}\n                                    />\n                                </div>\n                            )\n                        })}\n                    </div>\n                )}\n                {/* {modelInfo && (\n                    <div className=\"cut_to_size_elaboration_details_model_info mt-4 ml-2\">\n                        {\n                            modelInfo.map((v, index) => {\n                                return (\n                                    <div className=\"cut_to_size_elaboration_details_model_info_row\" key={'model_info_' + index}>\n                                        {`${v.label}: ${v.value}`}\n                                    </div>\n                                )\n                            })\n                        }                  \n                    </div>\n                )}\n\n                {genericInfo && (\n                    <div className=\"cut_to_size_elaboration_details_model_info mt-4 ml-2\">\n                        {\n                            genericInfo.map((v, index) => {\n                                return (\n                                    <div className=\"cut_to_size_elaboration_details_model_info_row\" key={'generic_info_' + index}>\n                                        {`${v.label}: ${v.value}`}\n                                    </div>\n                                )\n                            })\n                        }                  \n                    </div>\n                )} */}\n\n                {/* <p className=\"cts-detail-text\">\n                    { option.text }\n                </p> */}\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        hasPreOrder: canViewPreorder(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        goToURL: (url) => {\n            return dispatch(dispatchPushURL(url, 1))\n        }\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(ElaborationDetails)\n)","/**\n * \n * @param {string} text Texto que se mostrará en la notificación\n * @param {string} type Puede ser [\"none\", \"success\", \"error\", \"warning\" e \"info\"]. Adapta el estilo de la notificación según esto\n * @param {number} duration Tiempo durante el que se mostrará la notificación\n * @returns \n */\n\nexport const showToastNotification = (text = '', type = 'none', duration = 10000) => dispatch => {\n    const id = setTimeout(() => dispatch(removeToastNotification(id)), duration);\n    dispatch({ type: 'SHOW_TOAST_NOTIFICATION', toastNotification: { id, text, type, duration } })\n}\n\nexport const removeToastNotification = (id) => dispatch => {\n    dispatch({ type: 'REMOVE_TOAST_NOTIFICATION', toastNotification: { id } })\n}","import { getIsSending } from '../../store/cut-to-size/reducers';\nimport React, { Component, forwardRef } from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport GoBack from '../global/GoBack'\nimport Button from '../global/Button'\nimport Translation from '../global/Translation'\nimport { requestPreOrder } from '../../store/cut-to-size/actions'\nimport ElaborationDetails from './ElaborationDetails'\nimport {\n    Messages,\n    BudgetMessages\n} from './CutToSizeMaps'\nimport FloatingAlert from '../alerts/FloatingAlert'\nimport { showToastNotification } from '../../store/toast-notifications/actions'\nimport DatePicker from \"react-datepicker\";\nimport {v4 as uuidv4} from \"uuid\";\nimport {getCutToSizeMaterials} from \"../../store/cut-to-size/reducers\";\nimport moment from \"moment\";\nimport LocalizedLink from \"../global/LocalizedLink\";\n\nconst FILE_LIMIT = 4 //MB\nconst BYTES_IN_MB = 1024 * 1024\nconst BLUEPRINT_FILE_TYPE = 'BX01'\nconst LABELS_FILE_TYPE = 'BX10'\nconst EMAIL_FILE_TYPE = 'BX03'\n\n\nconst mapStateToProps = state => {\n    return {\n        materials: getCutToSizeMaterials(state),\n        isSending: getIsSending(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        requestPreOrder: (formData, callback) => dispatch(requestPreOrder(formData, callback)),\n        showToastNotification: (text = '', type = 'none', duration = 10000) => dispatch(showToastNotification(text, type, duration)),\n    }\n}\n\nexport const ACCEPTED_EXT = {\n    REQUIRED_BLUEPRINT:[\n        'image/*',\n        'application/pdf',\n        '.dxf','.dwg'\n    ],\n    BLUEPRINT_FILE_TYPE:[\n        'image/svg+xml',\n        'image/jpeg',\n        'image/png',\n        'application/dxf',\n        'application/pdf'\n    ],\n    LABELS_FILE_TYPE:[\n        'image/jpeg',\n        'image/png',\n        'application/dxf',\n        'application/pdf'\n    ],\n    EMAIL_FILE_TYPE:[\n        'application/msword',\n        'application/pdf',\n        'application/octet-stream',\n        'message/rfc822',\n        'application/vnd.ms-outlook','msg','.msg'\n    ]\n}\n\nclass CutToSizeFormPreOrder extends Component {\n\n    state = {\n        currentProjectOptions: [],\n        selectedProject: null,\n        deadline: null,\n        selectedFiles: {\n            REQUIRED_BLUEPRINT:null,\n            // BLUEPRINT_FILE_TYPE:null,\n            LABELS_FILE_TYPE:null,\n            EMAIL_FILE_TYPE:null\n        },\n        purchaseOrder: null,\n        additionalFiles: {},\n        showExceedFileSizeAlert: false,\n        comments: null,\n        showSelectFileType: false,\n        preorderId: null,\n        showCreatedModal: false\n    }\n\n\n\n    getFileOptions = () => {\n        const fileOptions = []\n        const addedFiles = this.state.additionalFiles\n\n        // if (!addedFiles.BLUEPRINT_FILE_TYPE) {\n        //     fileOptions.push(\n        //         {\n        //             label:<div>\n        //                 <i className=\"far fa-pencil-ruler mx-2 w-25 text-center\"/>{this.props.intl.formatMessage(BudgetMessages.BLUEPRINT_FILE_TYPE)}\n        //             </div>,\n        //             value:'BLUEPRINT_FILE_TYPE'\n        //         }\n        //     )\n        // }\n        if (!addedFiles.LABELS_FILE_TYPE) {\n            fileOptions.push(\n                {\n                    label:<div>\n                        <i className=\"far fa-tags mx-2 w-25 text-center\"/>{this.props.intl.formatMessage(BudgetMessages.LABELS_FILE_TYPE)}\n                    </div>,\n                    value:'LABELS_FILE_TYPE'\n                }\n            )\n        }\n        if (!addedFiles.EMAIL_FILE_TYPE) {\n            fileOptions.push(\n                {\n                    label:<div>\n                        <i className=\"far fa-envelope mx-2 w-25 text-center\"/>{this.props.intl.formatMessage(BudgetMessages.EMAIL_FILE_TYPE)}\n                    </div>,\n                    value:'EMAIL_FILE_TYPE'\n                }\n            )\n        }\n        return fileOptions\n    }\n\n    getMinDate = () => moment().add(3, 'days')\n\n    getSelectedFiles = () => {\n        const selectedFiles = {}\n        selectedFiles[BLUEPRINT_FILE_TYPE] = this.state.selectedFiles.REQUIRED_BLUEPRINT\n        // if (this.state.selectedFiles.BLUEPRINT_FILE_TYPE) selectedFiles[BLUEPRINT_FILE_TYPE] = this.state.selectedFiles.BLUEPRINT_FILE_TYPE\n        if (this.state.selectedFiles.LABELS_FILE_TYPE) selectedFiles[LABELS_FILE_TYPE] = this.state.selectedFiles.LABELS_FILE_TYPE\n        if (this.state.selectedFiles.EMAIL_FILE_TYPE) selectedFiles[EMAIL_FILE_TYPE] = this.state.selectedFiles.EMAIL_FILE_TYPE\n\n        return selectedFiles\n    }\n\n    componentDidMount() {\n        this.props.materials['BUDGET']['pre_order']['projects'].forEach(project => {\n            this.state.currentProjectOptions.push({\n                label: this.props.intl.formatMessage(BudgetMessages[project]),\n                value: project\n            })\n        })\n\n        this.forceUpdate()\n    }\n\n    disableSendButton = () => {\n        return !this.state.selectedProject || !this.state.deadline || !this.state.comments || !this.state.selectedFiles.REQUIRED_BLUEPRINT || this.props.isSending\n    }\n\n    onFileChange = async (event, type) => {\n        const file = event.target.files[0];\n\n        if (file) {\n            // if (!ACCEPTED_EXT[type].includes(file.type)) {\n            //     event.target.value = null\n            //     this.state.selectedFiles[type] = null\n            // } else\n            {\n                const fileSizeInMB = file.size / BYTES_IN_MB\n                if (fileSizeInMB > FILE_LIMIT) {\n                    this.setState({showExceedFileSizeAlert: true})\n                    event.target.value='';\n                } else {\n                    this.state.selectedFiles[type] = file\n                }\n            }\n        } else {\n            this.state.selectedFiles[type] = null\n        }\n        this.forceUpdate()\n    }\n\n    addAdditionalFile = (fileType) => {\n        const key = uuidv4()\n        this.state.additionalFiles[fileType] = true\n        // this.forceUpdate()\n    }\n\n    delAdditionalFile = fileType => {\n        // const fileType = this.state.additionalFiles[key]\n        delete this.state.selectedFiles[fileType]\n        delete this.state.additionalFiles[fileType]\n        this.forceUpdate()\n    }\n\n\n    submitData = () => {\n        const formData = new FormData()\n        formData.append('project', this.state.selectedProject)\n        formData.append('deadline', this.state.deadline)\n        formData.append('comment', this.state.comments)\n        formData.append('purchase_order', this.state.purchaseOrder)\n        const files = this.getSelectedFiles()\n        const fileKeys = []\n        Object.entries(files).forEach(([type, file]) => {\n            const key = `cts_preorder_file_${type}_0`\n            fileKeys.push(key)\n            formData.append(key, file)\n        })\n        formData.append('file_keys', fileKeys)\n\n        this.props.requestPreOrder(formData, this.showNotification)\n    }\n\n    showNotification = (response) => {\n        this.setState({showCreatedModal: true, preorderId: response.preorderId})\n    }\n\n    render() {\n        const { selectedProject, currentProjectOptions, additionalFiles } = this.state\n        const { intl, selectedElaboration } = this.props\n        if (!selectedElaboration) return null\n\n        const fileOptions = this.getFileOptions()\n        const DesiredDatePicker = forwardRef(({ value, onClick }, ref) => {\n            return (\n                <div onClick={onClick} className=\"form-control d-flex justify-content-between align-items-center\"\n                     style={{cursor: 'pointer'}}\n                >\n                    {\n                        !!value ? (\n                            <React.Fragment>\n                                {value}\n                                <i className=\"far fa-calendar-check\" style={{fontSize: \"1.4em\"}}/>\n                            </React.Fragment>\n                        ) : (\n                            <React.Fragment>\n                                <div className=\"form-control-placeholder\">\n                                    {intl.formatMessage(Messages.SET_DEADLINE)}\n                                </div>\n                                <i className=\"far fa-calendar\" style={{fontSize: \"1.4em\"}}/>\n                            </React.Fragment>\n                        )\n                    }\n                </div>\n            )\n        })\n\n        return (\n            <section className=\"cut_to_size_budget\">\n                <div className=\"cut_to_size__go_back mt-4 mb-3\">\n                    <LocalizedLink routeId={'ROUTE_CUT_TO_SIZE'} header={true} queryString={''} params={{'outlet':''}}>\n                        <GoBack\n                            text={intl.formatMessage(Messages.BACK_SELECT_ELABORATED_TYPE)}\n                            dataCY={'product_detail__go_back'}\n                        />\n                    </LocalizedLink>\n                </div>\n\n                <div className=\"container form\" >\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-7\">\n                            <div style={{ width: '100%' }}>\n                                <ElaborationDetails\n                                    id={selectedElaboration}                         \n                                />\n                            </div>\n                        </div>\n                        <div className=\"col-12 col-md-5\">\n\n                            {/**************** SELECT PROJECT **********************/}\n                            <div className=\"group__input\">\n                                <label htmlFor=\"project-select\" className=\"form-label\">\n                                    <Translation id=\"project-type\" defaultMessage=\"Project type\" />*\n                                </label>\n                                <div className=\"contain__select--project\">\n                                    <Select\n                                        id=\"project-select\"\n                                        clearable={false}\n                                        placeholder={this.props.intl.formatMessage(Messages.CHOOSE_PROJECT_TYPE)}\n                                        options={currentProjectOptions}\n                                        value={selectedProject}\n                                        onChange={selectedOption => this.setState({selectedProject: selectedOption.value})}\n                                    />\n                                </div>\n                            </div>\n\n                            {/**************** DEADLINE **********************/}\n                            <div className=\"group__input\">\n                                <label htmlFor=\"input-deadline\" className=\"form-label\">\n                                    <Translation id=\"deadline\" defaultMessage=\"Preferred delivery date\" />*\n                                </label>\n                                <div className=\"contain__set-deadline\">\n                                    <DatePicker\n                                        id=\"input-deadline\"\n                                        selected={this.state.deadline}\n                                        onChange={date => this.setState({deadline: date})}\n                                        // minDate={this.props.selectedCenter == 1100 && !this.slaDate ? getNextWorkingDay(this.props.minDeliveryDate) :  getNextWorkingDay(1)}\n                                        autoComplete=\"off\"\n                                        minDate={this.getMinDate()}\n                                        onKeyDown={e => e.preventDefault()}\n                                        dropdownMode=\"select\"\n                                        customInput={<DesiredDatePicker />}\n                                    />\n                                </div>\n                            </div>\n\n                            {/**************** PURCHASE ORDER **********************/}\n                            <div className=\"group__input\">\n                                <label htmlFor=\"input-po\" className=\"form-label\">\n                                    <Translation id=\"purchase-order\" defaultMessage=\"Your reference\" />\n                                </label>\n                                <div className=\"contain__input-po\">\n                                    <input\n                                        type=\"text\"\n                                        id=\"input-po\"\n                                        placeholder={this.props.intl.formatMessage({id: 'purchase-order'})}\n                                        value={this.state.purchaseOrder}\n                                        onChange={e => this.setState({purchaseOrder: e.target.value})}\n                                        className={`form-control`}\n                                        maxLength=\"132\"\n\n                                    />\n                                </div>\n                            </div>\n\n\n                            {/**************** ADJUNTAR DOCUMENTO **********************/}\n                            <div className=\"colgroup__input\">\n                                <label htmlFor=\"attach_packaging_document_file\" className=\"form-label\">\n                                    <Translation id=\"attached_documents\" defaultMessage=\"Attached documents\" />\n                                </label>\n                                <div className=\"row align-items-center mb-2\">\n                                    <div className=\"col-3 form-label\" style={{fontSize:'90%'}}>\n                                        <Translation id=\"blueprint\" defaultMessage=\"Blueprint\"/>*\n                                    </div>\n                                    <div className=\"col-9\">\n                                        <div className=\"attach-file\">\n                                            <input\n                                                id=\"attach_packaging_document_file\"\n                                                type=\"file\"\n                                                accept={ACCEPTED_EXT['REQUIRED_BLUEPRINT'].join()}\n                                                onChange={e => this.onFileChange(e, 'REQUIRED_BLUEPRINT')}\n                                                // accept=\"image/jpeg, image/png, application/pdf\"\n                                            />\n                                        </div>\n                                    </div>\n                                </div>\n\n                                {\n                                    Object.keys(additionalFiles).map(fileType => {\n                                        const key = 'ad_f_' + fileType\n                                        return (\n                                            <div key={key} className=\"row align-items-center mb-2\">\n                                                <div className=\"col-3 form-label\" style={{fontSize:'90%'}}>\n                                                    {intl.formatMessage(BudgetMessages[fileType])}\n                                                </div>\n                                                <div className=\"col-7 pr-0\">\n                                                    <div className=\"attach-file\">\n                                                        <input\n                                                            id=\"attach_packaging_document_file\"\n                                                            type=\"file\"\n                                                            accept={ACCEPTED_EXT[fileType].join()}\n                                                            onChange={e => this.onFileChange(e, fileType)}\n                                                            // accept=\"image/jpeg, image/png, application/pdf\"\n                                                        />\n                                                    </div>\n                                                </div>\n                                                <div className=\"col-2\">\n                                                    <div className=\"attach-file justify-content-center\"\n                                                         style={{fontSize:'16px', cursor:'pointer'}}\n                                                         onClick={() => this.delAdditionalFile(fileType)}\n                                                    >\n                                                        <i className=\"far fa-trash\"/>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        )\n                                    })\n                                }\n\n\n                                {/*<div className=\"field-info\">*/}\n                                {/*    <Translation id=\"attached_document_info\" defaultMessage={\"Add here the information you want to include within the packaging. May involve expenses and associated costs.\"} />*/}\n                                {/*</div>*/}\n\n\n                                {/**************** ADD ADDITIONAL FILE **********************/}\n                                {fileOptions.length > 0 && (\n                                    <div className=\"row\">\n                                        <div className=\"col-6 group__input mb-0\">\n                                            <div  style={{fontWeight:500, cursor:'pointer'}}\n                                                  onClick={() => this.setState({showSelectFileType: true})}\n                                            >\n                                                <i className=\"fa fa-plus\" style={{fontWeight:500}}/>\n                                                &nbsp;&nbsp;\n                                                <Translation id=\"add-additional-file\" defaultMessage=\"Add additional file\"/>\n                                            </div>\n                                        </div>\n                                        { this.state.showSelectFileType && (\n                                            <div className=\"col-6 group__input\">\n                                                <div className=\"contain__select--project\">\n                                                    <Select\n                                                        placeholder={this.props.intl.formatMessage(Messages.CHOOSE_FILE_TYPE)}\n                                                        options={fileOptions}\n                                                        onChange={selectedOption => {\n                                                            this.addAdditionalFile(selectedOption.value)\n                                                            this.setState({showSelectFileType: false})\n                                                        }}\n                                                        onBlur={() => this.setState({showSelectFileType: false})}\n                                                    />\n                                                </div>\n                                            </div>\n                                        )}\n                                    </div>\n                                )}\n\n                                <div className=\"field-info mb-1\">\n                                    <Translation style={{all:\"revert\"}} id=\"exceed_file_limit\" defaultMessage={`The file has a limit of {fileLimit} MB`} values={{ fileLimit: FILE_LIMIT }} />\n                                </div>\n                            </div>\n\n\n                            {/**************** COMENTARIOS **********************/}\n                            <div className=\"group__input\">\n                                <label htmlFor=\"input-comments\" className=\"form-label\">\n                                    <Translation id=\"comment\" defaultMessage=\"Comments\" />*\n                                </label>\n                                <textarea\n                                    className=\"form-control\"\n                                    id=\"input-comments\"\n                                    rows=\"3\"\n                                    maxLength=\"255\"\n                                    onChange={e => {\n                                        e && this.setState({ comments: e.target.value })\n                                    }}\n                                />\n                            </div>\n                            <div>\n                                <span className=\"field-info\"><strong><Translation id=\"mandatory_field_meaning\" defaultMessage=\"* Means mandatory field\" /></strong></span>\n                            </div>\n\n                            {/**************** SOLICITAR PRESUPUESTO **********************/}\n                            <div className=\"mt-1\">\n                                <Button\n                                    customClass=\"bt-dark gt\"\n                                    dataCY=\"product_detail__add\"\n                                    disabled={this.disableSendButton()}\n                                    onClick={() => (this.submitData())}\n                                >\n                                    <Translation id=\"request_for_preorder\" defaultMessage=\"Request an order/offer\" />\n                                </Button>\n                            </div>\n                        </div>{' '}\n                  \n                        {this.state.showExceedFileSizeAlert && (\n                            <FloatingAlert\n                                warningMessage={<Translation id=\"exceed_file_limit\" defaultMessage={`The file has a limit of {fileLimit} MB`} values={{ fileLimit: FILE_LIMIT }} />}\n                                onClose={() => {\n                                    this.setState({ showExceedFileSizeAlert: false })\n                                }}\n                            />\n                        )}\n\n                        {\n                            this.state.showCreatedModal && (\n                                <div className=\"preorder_created_modal\" onClick={() => this.setState({showCreatedModal: false})}>\n                                    <div className=\"modal-content\" onClick={(e) => {e.stopPropagation()}}>\n\n                                        <div className=\"success mb-2\">\n                                            <i className=\"far fa-check fa-3x\"/>\n                                        </div>\n\n                                        <div className=\"success-text big\">\n                                            <Translation id=\"success!\" defaultMessage=\"Success!\"/>\n                                        </div>\n\n                                        <div className=\"success-text big\">\n                                            <Translation id=\"preorder-sent\" defaultMessage=\"Your Order request has been sent.\"/>\n                                        </div>\n\n                                        <div className=\"success-text big\">\n                                            <Translation id=\"preorder-created\" defaultMessage=\"A new Order request has been created.\"/>\n                                        </div>\n\n                                        <div className=\"mt-2 mb-4\">\n                                            <LocalizedLink routeId=\"ROUTE_PROFILE\" params={{ filter: 'pre-orders-cts-details', open: this.state.preorderId }}>\n                                                <Button customClass=\"bt-dark gt xt-pd\" onClick={(e) => e.stopPropagation()}>\n                                                    <Translation id=\"check-preorder\" defaultMessage=\"Check your Pre-order status\"/>\n                                                </Button>\n                                            </LocalizedLink>\n                                        </div>\n\n                                        <div className=\"success-text small mt-1\">\n                                            <Translation id=\"check-preorder-advise\" defaultMessage=\"You can check the status of Pre-order at any time on your personal area\"/>\n                                        </div>\n                                    </div>\n                                </div>\n                            )\n                        }\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(CutToSizeFormPreOrder)\n)\n","import GoBack from '../global/GoBack'\nimport cosentinoMessage from '../../assets/img/icons/cosentino-message.svg'\nimport { TimelinePreOrder } from './PreOrdersCts';\nimport {\n    cancelPreorder,\n    downloadPreorderFile,\n    markMessagesAsReaded\n} from '../../store/cut-to-size/actions';\nimport React from 'react'\nimport Translation from '../global/Translation'\nimport Button from '../global/Button'\nimport Spinner from '../global/Spinner'\nimport { injectIntl } from 'react-intl'\nimport moment from 'moment'\nimport {connect} from \"react-redux\";\nimport {BudgetMessages, PreorderMessages} from \"../cut-to-size/CutToSizeMaps\";\nimport {v4 as uuidv4} from \"uuid\";\nimport {ACCEPTED_EXT} from \"../cut-to-size/CutToSizeFormPreOrder\";\nimport confirm from \"../global/extendedConfirm\";\nimport LineSegmentation from \"../cart-line/LineSegmentation\";\n\nconst FILE_LIMIT = 4 //MB\nconst BYTES_IN_MB = 1024 * 1024\nconst FILE_TYPES_MAP = {\n    BLUEPRINT_FILE_TYPE : 'BX01',\n    LABELS_FILE_TYPE : 'BX10',\n    EMAIL_FILE_TYPE : 'BX03'\n}\nconst INVERSE_FILE_TYPES_MAP = {\n    BX01 : 'BLUEPRINT_FILE_TYPE',\n    BX04 : 'BLUEPRINT_FILE_TYPE',\n    BX07 : 'BLUEPRINT_FILE_TYPE',\n    BX10 : 'LABELS_FILE_TYPE',\n    BX03 : 'EMAIL_FILE_TYPE'\n}\n\n\nconst BLUEPRINT_ICON = <i className=\"far fa-pencil-ruler\"/>\nconst LABELS_ICON = <i className=\"far fa-tags\"/>\nconst EMAIL_ICON = <i className=\"far fa-envelope\"/>\nconst FILE_ICON = <i className=\"far fa-file\"/>\n\nconst PreorderSummary = ({preOrder, intl}) => {\n    return (\n        <div className='d-flex flex-column preorder-summary-details'>\n            <div style={{ width: 'max-content' }}>\n                <span><Translation id=\"preorder_id\" defaultMessage=\"Pre-Order ID\" />\n                &nbsp;#:&nbsp;</span>\n                <strong>{preOrder.reservation_id ? preOrder.reservation_id : <Translation id=\"pending\" defaultMessage=\"Pending\" />}</strong>\n            </div>\n            <div>\n                <span><Translation id=\"order_id\" defaultMessage=\"Order ID\" />\n                &nbsp;#:&nbsp;</span>\n                <strong>{preOrder.order_id ? preOrder.order_id : <Translation id=\"pending\" defaultMessage=\"Pending\" />}</strong>\n            </div>\n            <div>\n                <span><Translation id=\"purchase-order\" defaultMessage=\"Your reference\" />\n                &nbsp;#:&nbsp;</span>\n                <strong>{preOrder.purchase_order ? preOrder.purchase_order : '----'}</strong>\n            </div>\n            <br />\n            <div>\n                <span><Translation id=\"project_type\" defaultMessage=\"Project type\" />\n                :&nbsp;</span><strong>{intl.formatMessage(BudgetMessages[preOrder.project])}</strong>\n            </div>\n            <div>\n                <span><Translation id=\"date\" defaultMessage=\"Date\" />\n                :&nbsp;</span><strong>{moment(preOrder.created_at).format('L')}</strong>\n            </div>\n            <div>\n                <span><Translation id=\"last_update\" defaultMessage=\"Last update\" />\n                :&nbsp;</span><strong>{moment(preOrder.update_at).format('L')}</strong>\n            </div>\n            <br />\n            <LineSegmentation line={{ ...preOrder.segmentation, segmentation: preOrder.segmentation }} showAsList={true} />\n        </div>\n    )\n}\n\nclass PreOrdersCtsDetails extends React.Component {\n\n    today = moment().format('L')\n\n    fileOptions = [\n        {\n            label:this.props.intl.formatMessage(BudgetMessages.BLUEPRINT_FILE_TYPE),\n            value:'BLUEPRINT_FILE_TYPE'\n        },\n        {\n            label:this.props.intl.formatMessage(BudgetMessages.LABELS_FILE_TYPE),\n            value:'LABELS_FILE_TYPE'\n        },\n        {\n            label:this.props.intl.formatMessage(BudgetMessages.EMAIL_FILE_TYPE),\n            value:'EMAIL_FILE_TYPE'\n        }\n    ]\n\n    state = {\n        showFileType : false,\n        selectedFiles: {},\n        attachedFiles : []\n    }\n\n    fileInputDialog = null;\n\n    componentDidMount() {\n        if (!this.props.preOrder) this.props.fetchPreOrdersCts(this.init)\n        else this.init()\n        window.document.getElementById('section-profile').addEventListener('click', () => this.setState({showFileType : false}), false)\n        this.fileInputDialog = window.document.createElement('input')\n        this.fileInputDialog.type = 'file'\n        this.fileInputDialog.onchange = this.onFileChange\n\n    }\n\n    componentWillUnmount() {\n        window.document.getElementById('section-profile').removeEventListener('click', () => this.setState({showFileType : false}), false)\n        this.fileInputDialog.remove()\n    }\n\n    onFileChange = async (event) => {\n        const file = event.target.files[0];\n        if (file) {\n            console.log('FILE:' , file)\n            // if (!ACCEPTED_EXT[this.fileInputDialog.docType].includes(file.type)) {\n            //     event.target.value = null\n            // } else\n            {\n                const fileSizeInMB = file.size / BYTES_IN_MB\n                if (fileSizeInMB > FILE_LIMIT) {\n                    this.setState({showExceedFileSizeAlert: true})\n                    event.target.value = '';\n                } else {\n                    const fileId = uuidv4()\n                    this.state.selectedFiles[fileId] = {\n                        fileType: this.fileInputDialog.docType,\n                        file\n                    }\n                }\n            }\n        }\n\n        // this.forceUpdate()\n    }\n\n    init = () => {\n        this.goToLastMessage()\n        this.props.markMessagesAsReaded(this.props.preOrder.id)\n    }\n\n    goToLastMessage = () => {\n        const el = window.document.getElementById('communications-panel')\n        if (el) el.scrollTop = el.scrollHeight\n    }\n\n    delFile = key => {\n        this.fileInputDialog.value = null\n        delete this.state.selectedFiles[key]\n        this.forceUpdate()\n    }\n\n    getFileTypeIntl = (fileType) => {\n        const labels = PreorderMessages[fileType] ? PreorderMessages[fileType] : PreorderMessages.GENERIC\n        return this.props.intl.formatMessage(labels)\n    }\n\n    getFileTypeIcon = (fileType) => {\n        switch (fileType) {\n            case 'BLUEPRINT_FILE_TYPE': return BLUEPRINT_ICON\n            case 'LABELS_FILE_TYPE': return LABELS_ICON\n            case 'EMAIL_FILE_TYPE': return EMAIL_ICON\n            default: return FILE_ICON\n        }\n    }\n\n    getCommunicationDate = date => {\n        const fDate = moment(date).format('L')\n        if (fDate === this.today) return this.props.intl.formatMessage({id:'today'})\n        else return fDate\n    }\n\n    sendApproveMessage = (message, deny=false) => {\n        const formData = new FormData()\n        formData.append('preorder_id', message.pre_order_id)\n        formData.append('message_id', message.id)\n        formData.append('action', deny ? 'CUSTOMR_KO' : 'CUSTOMR_OK')\n\n        this.props.sendApproveMessage(formData, () => {\n            this.setState({selectedFiles: {}}, this.goToLastMessage)\n        })\n    }\n\n    sendMessage = () => {\n        const messageInput = window.document.getElementById('send_preorder_message_input')\n        const selectedFiles = Object.values(this.state.selectedFiles)\n\n        if (!messageInput.value && selectedFiles.length === 0) return\n\n        const formData = new FormData()\n        formData.append('preorder_id', this.props.preOrder.id)\n        formData.append('message', messageInput.value)\n        formData.append('action', 'CUS_COMMEN')\n\n        const filePositionByType = {}\n        const fileKeys = []\n\n        Object.values(this.props.preOrder.files).forEach(f => {\n            if (!filePositionByType[f.file_type] || f.file_position > filePositionByType[f.file_type]) {\n                filePositionByType[f.file_type] = f.file_position\n            }\n        })\n\n        selectedFiles.forEach(f => {\n            const fileType = FILE_TYPES_MAP[f.fileType]\n            let intPosition = parseInt(filePositionByType[fileType])\n            let position = isNaN(intPosition) ? 0 : (intPosition + 1)\n            const key = `cts_preorder_file_${fileType}_${position}`\n            fileKeys.push(key)\n            formData.append(key, f.file)\n            filePositionByType[fileType] = position\n        })\n\n        formData.append('file_keys', fileKeys)\n\n        this.props.sendMessage(formData, () => {\n            messageInput.value = null\n            this.fileInputDialog.value = null\n            this.setState({selectedFiles: {}}, this.goToLastMessage)\n        })\n    }\n\n    confirmRejectOrder = (preorderId) => {\n        return confirm(\n            this.props.intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER' }),\n            {\n                advise:<React.Fragment>\n                    <i className=\"fal fa-exclamation-triangle\"></i>&nbsp;\n                    {this.props.intl.formatMessage({ id: 'CONFIRM_REJECT_PREORDER_ADVISE' })}\n                </React.Fragment>,\n                textCancel:this.props.intl.formatMessage({ id: 'CONFIRM_REJECT_PREORDER_CANCEL_BUTTON' }),\n                textOk:this.props.intl.formatMessage({ id: 'CONFIRM_REJECT_PREORDER_OK_BUTTON' })\n            }\n        )\n            .then(\n                confirm => {\n                    this.props.cancelPreorder(preorderId)\n                        .then(() => this.forceUpdate())\n                    // .catch(error => alert(error))\n                },\n                cancel => {\n                    return Promise.reject()\n                }\n            )\n    }\n\n    confirmApproveOrder = (message) => {\n        return confirm(\n            this.props.intl.formatMessage({ id: 'CONFIRM_APPROVE_PREORDER' }),\n            {\n                advise:\n                    <div className=\"d-flex align-items-center\">\n                        <i className=\"fal fa-exclamation-triangle\"></i>&nbsp;&nbsp;\n                        <span>\n                            <div>{this.props.intl.formatMessage({ id: 'CONFIRM_APPROVE_PREORDER_ADVISE_TOP' })}</div>\n                            <div>{this.props.intl.formatMessage({ id: 'CONFIRM_APPROVE_PREORDER_ADVISE_BOTTOM' })}</div>\n                        </span>\n                    </div>,\n                textCancel:this.props.intl.formatMessage({ id: 'CONFIRM_APPROVE_PREORDER_CANCEL_BUTTON' }),\n                textOk:this.props.intl.formatMessage({ id: 'CONFIRM_APPROVE_PREORDER_OK_BUTTON' })\n            }\n        )\n            .then(\n                confirm => {\n                    this.sendApproveMessage(message)\n                },\n                cancel => {}\n            )\n    }\n\n    confirmDenyOrder = (message) => {\n        return confirm(\n            this.props.intl.formatMessage({ id: 'CONFIRM_DENY_PREORDER' }),\n            {\n                textCancel:this.props.intl.formatMessage({ id: 'no' }),\n                textOk:this.props.intl.formatMessage({ id: 'yes' })\n            }\n        )\n            .then(\n                confirm => {\n                    this.sendApproveMessage(message, true)\n                },\n                cancel => {}\n            )\n    }\n\n    render() {\n        if (!this.props.preOrder) {\n            return <Spinner isLoading={true}></Spinner>\n        }\n\n        const status = this.props.preOrder.status\n        const unreadedMessages = this.props.preOrder.communications.reduce((ac, c) => {return ac + (c.is_read == 0 ? 1:0)}, 0)\n        const canSendMessages = status === 'TECHNICAL_REVIEW' || status === 'CSTMR_APPROVAL'\n\n        let provCommunicationDate\n\n        return (\n            <React.Fragment>\n                <div className=\"container preorder-details-view\">\n                    <div className=\"row\">\n                        <div className=\"col-12 px-0 pb-5 header-goback\">\n                            <GoBack />\n                        </div>\n                        <div className=\"col-12 p-0\">\n                            <div className=\"col-12 col-lg-8 p-0\">\n                                <div className=\"preoder-details-timeline\">\n                                    <TimelinePreOrder preOrder={this.props.preOrder} intl={this.props.intl} checkMark />\n                                </div>\n                            </div>\n                        </div>\n                        <div className=\"col-12 col-lg-8 preorder-chat-left\">\n                            <div className=\"preorder-details-chat-panel\">\n                                <div>\n                                    <div className=\"preorder-details-header\">\n                                        <div className=\"preorder-details-title\">\n                                            <h5>\n                                                <Translation id=\"preorder-details\" defaultMessage=\"Pre-order Details\"/>\n                                            </h5>\n                                        </div>\n                                        <div className=\"preorder-details-delete\">\n                                            {\n                                                this.props.preOrder.isCancelable && (\n                                                    <Button fal icon=\"times\" onClick={()=> this.confirmRejectOrder(this.props.preOrder.id)}>\n                                                        <Translation id=\"cancel_order\" defaultMessage=\"Cancel order\" />\n                                                    </Button>\n                                                )\n                                            }\n                                        </div>\n                                    </div>\n                                    <div className=\"preorder-details-description\">\n                                        <div>\n                                            <h3><Translation id=\"description\" defaultMessage=\"Description\"/></h3>\n                                        </div>\n                                        <div>\n                                            <span>{this.props.preOrder.comment}</span>\n                                        </div>\n                                    </div>\n                                    <div className=\"preoder-details-messages\">\n                                        <div>\n                                            <h3><Translation id=\"messages\" defaultMessage=\"Messages\"/></h3>\n                                        </div>\n                                        <div>\n                                            {unreadedMessages > 0 && <span>({unreadedMessages})</span> }\n                                        </div>\n                                    </div>\n                                </div>\n                                <div id=\"communications-panel\" className=\"preorder-communications-panel\">\n                                    {\n                                        this.props.preOrder.communications.map(message => {\n                                            const fromCosentino = message.origin === 'COSENTINO'\n                                            const className = fromCosentino ? \"message message--received cosentino-message\" : \"message message--sent\"\n                                            const currentDate = this.getCommunicationDate(message.created_at)\n                                            const sameDate = provCommunicationDate === currentDate\n                                            provCommunicationDate = currentDate\n                                            return (\n                                                <React.Fragment>\n                                                    {\n                                                        !sameDate && (\n                                                            <div className=\"row w-100 align-items-center same-date-container\">\n                                                                <div className=\"preorder-left-line\" />\n                                                                <div className=\"col-6 col-md-4 col-lg-2 preorder-current-date\">{currentDate}</div>\n                                                                <div className=\"preorder-right-line\" />\n                                                            </div>\n                                                        )\n                                                    }\n                                                    <div className={className}>\n                                                        <div className=\"preorder-communications-fromcosentino\">\n                                                            {fromCosentino &&\n                                                                <div className=\"fromcosentino-header\">\n                                                                    <div>\n                                                                        <img src={cosentinoMessage} alt=\"ecosentino-avatar\"/>\n                                                                    </div>\n                                                                    <div className=\"cosentino-name\">\n                                                                        {message.user_name ? message.user_name : 'Cosentino'}\n                                                                    </div>\n                                                                </div>\n                                                            }\n                                                            <span className=\"cosentino-message\">{['approve_preorder','deny_preorder'].includes(message.message) ? this.props.intl.formatMessage({id:message.message}): message.message}</span>\n                                                            <div className=\"preorder-communications-files\">\n                                                                {this.props.preOrder.files\n                                                                        .filter(f => f.communication_id === message.id)\n                                                                        .map(f => {\n                                                                            return (\n                                                                                <div className=\"communications-files-container\">\n                                                                                    <i className=\"fal fa-file\">\n                                                                                        <div className=\"communications-files-type\">\n                                                                                            {this.getFileTypeIcon(INVERSE_FILE_TYPES_MAP[f.file_type])}\n                                                                                        </div>\n                                                                                    </i>\n                                                                                    <div className=\"file-name-date\">                                                                                \n                                                                                        <span>{f.file_name}</span>\n                                                                                        <div>{moment(f.created_at).format('L')}</div>\n                                                                                    </div>\n                                                                                    <div className=\"download-btn-files\" onClick={() => this.props.downloadFile(f)}>\n                                                                                        <i className=\"far fa-arrow-to-bottom\" />\n                                                                                    </div>\n                                                                                </div>\n                                                                            )\n                                                                        }\n                                                                    )\n                                                                }\n                                                            </div>\n                                                        </div>\n                                                    </div>\n                                                    {\n                                                        (message.is_read == 0 && message.action === 'ASK_APPROV') && (\n                                                            <div className=\"messages-suggestions-buttons py-3\">\n                                                                <Button className=\"bt-preorder\" onClick={() => this.confirmApproveOrder(message)}>\n                                                                    <Translation id=\"approve_preorder\" defaultMessage=\"Yes, I approve the plan and quotation\"/>\n                                                                </Button>\n                                                                <Button className=\"bt-preorder\" onClick={() => this.confirmDenyOrder(message)}>\n                                                                    <Translation id=\"deny_preorder\" defaultMessage=\"No, I need to make changes\"/>\n                                                                </Button>\n                                                            </div>\n                                                        )\n                                                    }\n                                                </React.Fragment>\n                                            )\n                                        })\n                                    }\n                                </div>\n                                {/******************************** SEND INPUT ****************************************/}\n                                <div className=\"preorder-communications-send\">\n                                    <div className=\"preorder-send-input\">\n                                        <div className=\"send-input-container\" style={{border: `1px solid ${canSendMessages ? '#BABABA' : '#DADADA'}`}}>\n                                            <div>\n                                                <i className=\"far fa-paperclip px-2\"\n                                                    style={{cursor: canSendMessages ? 'pointer' : 'default', color: canSendMessages ? '#6A6A6A' : '#BABABA'}}\n                                                    onClick={(e) => {\n                                                        if (canSendMessages) {\n                                                            this.setState({showFileType: true})\n                                                        }\n                                                        e.stopPropagation()\n                                                    }}\n                                                />\n                                                {\n                                                    <div style={{\n                                                        display: this.state.showFileType ? 'block' : 'none',\n                                                        position: 'absolute',\n                                                        backgroundColor: 'white',\n                                                        boxShadow: 'rgba(0,0,0,0.2) 0 5px 10px',\n                                                        padding: '8px 16px',\n                                                        zIndex: 999\n                                                    }}\n                                                    >\n                                                        {this.fileOptions.map(fo => {\n                                                            return (\n                                                                <div onClick={() => {\n                                                                    const docType = fo.value\n                                                                    this.fileInputDialog.accept = ACCEPTED_EXT[docType].join()\n                                                                    this.fileInputDialog.docType = docType\n                                                                    this.fileInputDialog.click()\n                                                                    this.setState({showFileType: false})\n                                                                }}\n                                                                    className=\"select-file-type d-flex\"\n                                                                >\n                                                                    <div\n                                                                        style={{width: '2em', textAlign: 'center'}}>\n                                                                        {this.getFileTypeIcon(fo.value)}\n                                                                    </div>\n                                                                    <div>\n                                                                        {fo.label}\n                                                                    </div>\n                                                                </div>\n                                                            )\n                                                        })}\n                                                    </div>                                                \n                                                }\n                                            </div>\n                                            <div style={{height: '100%', borderLeft: `1px solid ${canSendMessages ? '#BABABA' : '#DADADA'}`}}/>\n                                            <input id=\"send_preorder_message_input\"\n                                                type=\"text\"\n                                                disabled={!canSendMessages}\n                                                maxLength=\"500\"\n                                                className=\"send-message-input px-2\"/>\n                                        </div>\n                                        <div style={{\n                                            cursor: canSendMessages ? 'pointer' : 'default',\n                                            fontWeight: '700',\n                                            color: canSendMessages ? '#6A6A6A' : '#BABABA',\n                                            margin: '0 8px'\n                                        }}\n                                            onClick={() => {if (canSendMessages) this.sendMessage()}}\n                                        >\n                                            <Translation id=\"send\" defaultMessage=\"Send\"/>\n                                        </div>\n                                </div>\n\n                                <div className=\"d-flex mt-2\"\n                                     style={{\n                                         columnGap:'4px',\n                                         rowGap: '4px',\n                                         flexWrap: 'wrap'\n                                    }}\n                                >\n                                    {\n                                        Object.entries(this.state.selectedFiles).map(([key, file]) =>\n                                            <div style={{\n                                                fontSize: '12px',\n                                                display: 'flex',\n                                                columnGap: '4px',\n                                                alignItems: 'center',\n                                                padding: '2px 4px',\n                                                border: '1px solid #BABABA',\n                                                borderRadius: '8px',\n                                                backgroundColor: '#DADADA'\n                                            }}>\n                                                {this.getFileTypeIcon(file.fileType)}\n                                                {file.file.name}\n                                                <i className=\"fas fa-times-circle ml-2\" onClick={() => this.delFile(key)} style={{cursor:'pointer'}}/>\n                                            </div>\n                                        )\n                                    }\n                                </div>\n                            </div>\n                            </div>\n                        </div>\n                        <div className=\"col-12 col-lg-4 preorder-sidebar-right\">\n                            <div className=\"preorder-summary-card\">\n                                <div className=\"preorder-summary-title\">\n                                    <h5><Translation id=\"pre_order_summary\" defaultMessage=\"Pre-order summary\" /></h5>\n                                </div>\n                                <div className=\"preorder-summary-container\">\n                                    <PreorderSummary {...this.props}></PreorderSummary>\n                                </div>\n                            </div>\n                            <div className=\"preorder-docs-attachments\">\n                                <div className=\"preorder-attach-title\">\n                                    <h5><Translation id=\"attached-files\" defaultMessage=\"Attached files\"/></h5>\n                                </div>                               \n                                <div className=\"preorder-attach-files\">\n                                    <div className=\"preorder-attach-container\">\n                                        {\n                                            this.props.preOrder.files.map((file) => {\n                                                return (\n                                                    <React.Fragment>\n                                                        <div className=\"preorder-attach-content\">\n                                                            <i className=\"fal fa-file\">\n                                                                <div className=\"attach-icon\">\n                                                                    {this.getFileTypeIcon(INVERSE_FILE_TYPES_MAP[file.file_type])}\n                                                                </div>\n                                                            </i>\n                                                            <div className=\"attach-file-name-container\">\n                                                                <div className=\"file-name\">\n                                                                    <div className=\"file-name-content\">\n                                                                        <strong>{file.file_name}</strong>\n                                                                        <div><Translation id=\"type\" defaultMessage=\"Type\"/>\n                                                                            : {this.getFileTypeIntl(file.file_type)}\n                                                                        </div>\n                                                                        <div>{moment(file.updated_at).format('L')}</div>\n                                                                    </div>\n                                                                </div>\n                                                                <i className=\"fal fa-download\" onClick={() => this.props.downloadFile(file)} />\n                                                            </div>\n                                                        </div>\n                                                    </React.Fragment>\n                                                )\n                                            })\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <Spinner isLoading={this.props.isLoading}></Spinner>\n                </div>\n            </React.Fragment>\n        )\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        downloadFile: (file) => dispatch(downloadPreorderFile(file)),\n        markMessagesAsReaded: (preorderId) => dispatch(markMessagesAsReaded(preorderId)),\n        cancelPreorder: (preorderId) => dispatch(cancelPreorder(preorderId))\n    }\n}\n\nexport default injectIntl(connect(\n    null,\n    mapDispatchToProps\n)(PreOrdersCtsDetails))\n","import {getCanCancelPreorder, getPreOrderById, isLoading} from './../../store/cut-to-size/reducers';\nimport {fetchPreOrdersCts, sendPreorderMessage, sendApprovePreorderMessage} from './../../store/cut-to-size/actions';\nimport { connect } from 'react-redux'\nimport PreOrdersCtsDetails from './PreOrdersCtsDetails'\nimport { injectIntl } from 'react-intl'\nimport { withRouter } from 'react-router-dom'\nimport { push } from 'connected-react-router'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        preOrder: getPreOrderById(state,match.params.open),\n        isLoading: isLoading(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchPreOrdersCts: (callback) => dispatch(fetchPreOrdersCts(callback)),\n        sendMessage: (formData, callback) => dispatch(sendPreorderMessage(formData, callback)),\n        sendApproveMessage: (formData, callback) => dispatch(sendApprovePreorderMessage(formData, callback))\n    }\n}\n\nconst PreOrdersCtsDetailsContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(PreOrdersCtsDetails)\n    )\n)\n\nexport default PreOrdersCtsDetailsContainer\n","import React from 'react'\nimport ReactTable from 'react-table'\nimport { FormattedMessage } from 'react-intl'\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport Modal from '../global/Modal'\nimport Spinner from '../global/Spinner'\nimport LocalizedLink from '../global/LocalizedLink'\n\nclass PackingListView extends React.Component {\n    render() {\n        let columns = [\n            { Header: <FormattedMessage id=\"productId\" defaultMessage=\"Product ID\" />, accessor: 'productId', className: 'text-center' },\n            { Header: <FormattedMessage id=\"product\" defaultMessage=\"Product\" />, accessor: 'productName', className: 'text-center' },\n            { Header: <FormattedMessage id=\"lot_id\" defaultMessage=\"Lot ID\" />, accessor: 'lotId', className: 'text-center' }\n        ]\n        if (this.props.isOffer) {\n            columns = [\n                ...columns,\n                { Header: <FormattedMessage id=\"center_id\" defaultMessage=\"Center ID\" />, accessor: 'centerId', className: 'text-center' },\n                { Header: <FormattedMessage id=\"qty\" defaultMessage=\"Quantity\" />, accessor: 'quantity', className: 'text-center' }\n            ]\n        } else {\n            columns = [\n                ...columns,\n                {\n                    Header: <FormattedMessage id=\"invoice_num\" defaultMessage=\"Invoice Num.\" />,\n                    Cell: ({ original }) => {\n                        return (\n                            <span\n                                onClick={() => {\n                                    this.props.getFileByUrl(this.props.getOrderInvoiceDownloadUrl(original.invoiceNum))\n                                }}\n                                style={{ color: 'blue', cursor: 'pointer' }}\n                            >\n                                {original.invoiceNum}\n                            </span>\n                        )\n                    },\n                    className: 'text-center'\n                },\n                { Header: <FormattedMessage id=\"invoice_date\" defaultMessage=\"Invoice Date\" />, accessor: 'invoiceDate', className: 'text-center' }\n            ]\n        }\n\n        return (\n            <Modal\n                title={\n                    <span>\n                        {this.props.isOffer ? (\n                            <FormattedMessage id=\"quote_overview\" defaultMessage=\"Quote overview\" />\n                        ) : (\n                            <FormattedMessage id=\"packing_list\" defaultMessage=\"Packing list\" />\n                        )}{' '}\n                        <small>\n                            <FormattedMessage id=\"reservation_id\" defaultMessage=\"Reservation ID\" />: {this.props.order}\n                        </small>\n                    </span>\n                }\n                footer={''}\n                onClose={this.props.onClose}\n                size=\"large\"\n            >\n                <div className=\"row\">\n                    <div className=\"col-12 text-right mb-3\">\n                        {this.props.canEditOrders && (\n                            <LocalizedLink\n                                routeId=\"ROUTE_PROFILE\"\n                                params={{ filter: 'edit-order', open: this.props.orderId }}\n                                onClick={e => {\n                                    if (!this.props.orderId) e.preventDefault()\n                                }}\n                            >\n                                <Button inline size=\"tiny\" icon=\"edit\" disabled={!this.props.orderId}>\n                                    <FormattedMessage id=\"edit_order\" defaultMessage=\"Edit order\" />\n                                </Button>\n                            </LocalizedLink>\n                        )}\n                        {!this.props.isOffer ? (\n                            <span style={{ margin: '0 5px' }}>\n                                <Button inline size=\"tiny\" icon=\"download\" onClick={() => this.props.getFileByUrl(this.props.getOrderImagesDownloadUrl())}>\n                                    <FormattedMessage id=\"download_images\" defaultMessage=\"Download images\" />\n                                </Button>\n                            </span>\n                        ) : null}\n                    </div>\n                </div>\n                <ReactTable\n                    data={this.props.packingList}\n                    loading={this.props.isLoading}\n                    loadingText={<Spinner isLoading={this.props.isLoading} />}\n                    columns={columns}\n                    defaultPageSize={4}\n                    pageSizeOptions={[8, 16, 32, 64, 128]}\n                    previousText={<FormattedMessage id=\"previous\" defaultMessage=\"Previous\" />}\n                    nextText={<FormattedMessage id=\"next\" defaultMessage=\"Next\" />}\n                    noDataText={<FormattedMessage id=\"no_data\" defaultMessage=\"No data available\" />}\n                    pageText={<FormattedMessage id=\"page\" defaultMessage=\"Page\" />}\n                    ofText={<FormattedMessage id=\"of\" defaultMessage=\"Of\" />}\n                />\n            </Modal>\n        )\n    }\n}\nexport default injectIntl(PackingListView)\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport { fetchOfferOverview } from '../../store/orders/actions'\nimport { getPackingList, getOrderDetailsLoading } from '../../store/orders/reducers'\nimport { getToken } from '../../store/login/reducers'\nimport { getLanguage } from '../../store/ui/reducers'\nimport PackingListView from './PackingListView'\n\nconst mapStateToProps = state => {\n    return {\n        packingList: getPackingList(state),\n        isLoading: getOrderDetailsLoading(state),\n        token: getToken(state),\n        lang: getLanguage(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOfferOverview: reservationId => {\n            dispatch(fetchOfferOverview(reservationId))\n        }\n    }\n}\n\nclass OfferOverview extends React.Component {\n    componentDidMount() {\n        this.props.fetchOfferOverview(this.props.order)\n    }\n\n    render() {\n        if (!this.props.packingList) return null\n        return <PackingListView isOffer={true} {...this.props} />\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(OfferOverview)\n)\n","import React from 'react'\nimport { FormattedMessage, injectIntl } from 'react-intl'\nimport Button from '../global/Button'\nimport confirm from '../global/confirm'\nimport DatePicker from 'react-datepicker'\nimport LocalizedLink from '../global/LocalizedLink'\nimport Modal from '../global/Modal'\nimport moment from 'moment'\nimport OrderStatus from './OrderStatus'\nimport ReactTable from 'react-table'\nimport Spinner from '../global/Spinner'\nimport Translation from '../global/Translation'\nimport OfferOverview from './OfferOverview'\nimport {align} from \"@progress/kendo-drawing\";\n\n\n\nconst confirmRejectOrder = (reservationId, orderId, onRejectOrder, intl) => {\n    return confirm(intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER' }), {intl: intl}).then(\n        confirm => {\n            return onRejectOrder(reservationId, orderId)\n        },\n        cancel => {\n            return Promise.reject()\n        }\n    )\n}\n\nconst confirmOptions = (intl) => {\n    return {\n        textCancel : intl.formatMessage({ id: 'no' }),\n        textOk : intl.formatMessage({ id: 'yes' }),\n    }\n}\n\nconst confirmRejectQuote = (offer, onRejectQuote, intl) => {\n    return confirm(intl.formatMessage({ id: 'CONFIRM_REJECT_QUOTE' }, {intl: intl}), confirmOptions(intl))\n        .then(\n        confirm => {\n            return onRejectQuote(offer)\n        },\n        cancel => {\n            return Promise.reject()\n        }\n    )\n}\n\nconst confirmAcceptQuote = (offer, onAcceptQuote, intl) => {\n    return confirm(intl.formatMessage({ id: 'CONFIRM_ACCEPT_QUOTE' }, {intl: intl}), confirmOptions(intl))\n        .then(\n        confirm => {\n            return onAcceptQuote(offer)\n        },\n        cancel => {\n            return Promise.reject()\n        }\n    )\n}\n\nclass OfferStatusHistory extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedOrder: null,\n            selectedOrderId: null,\n            showOrderDetails: false,\n            startDate: moment().add(-15, 'days'),\n            endDate: moment(),\n            installationData: null,\n            oldInstallationData: null\n        }\n    }\n\n    componentDidMount() {\n        this.props.fetchOrders('offers', this.state.startDate, this.state.endDate)\n    }\n\n    haveInstallationData = original => {\n        return original.notas\n    }\n    showOrderInstallationData = original => {\n        let installationDataSplited = original.notas.split(' // ')\n        if (installationDataSplited.length >= 6) {\n            let name = installationDataSplited[0].replace('Name: ', '')\n            let address = installationDataSplited[1].replace('Address: ', '')\n            let town = installationDataSplited[2].replace('Town: ', '')\n            let province = installationDataSplited[3].replace('Pronvince: ', '')\n            let zip = installationDataSplited[4].replace('Zip Code: ', '')\n            let phone = installationDataSplited[5].replace('Phone: ', '')\n            let comments = installationDataSplited[6].replace('Comments: ', '')\n\n            this.setState({ installationData: { name, address, town, province, zip, phone, comments } })\n        } else if (original.notas) {\n            this.setState({ oldInstallationData: original.notas })\n        }\n    }\n    showOrderDetails = (reservationId, orderId) => {\n        this.setState({ selectedOrder: reservationId, selectedOrderId: orderId, showOrderDetails: true })\n    }\n\n    acceptQuote = (original) => {\n        confirmAcceptQuote(original, this.props.acceptQuote, this.props.intl)\n    }\n\n    rejectQuote = (original) => {\n        confirmRejectQuote(original, this.props.rejectQuote, this.props.intl)\n    }\n\n    rejectOrder = (reservationId, orderId) => {\n        confirmRejectOrder(reservationId, orderId, this.props.rejectOrder, this.props.intl)\n    }\n    closeOrderDetails = () => {\n        this.setState({ selectedOrder: null, selectedOrderId: null, showOrderDetails: false })\n    }\n    search = e => {\n        this.setState({ search: e.target.value })\n    }\n    changeStartDate = date => {\n        this.setState({ startDate: date })\n    }\n\n    changeEndDate = date => {\n        this.setState({ endDate: date }, () => this.props.fetchOrders('offers', this.state.startDate, this.state.endDate))\n    }\n    canDoActions = original => {\n        if (original.statusAtRescab === 'RR') return true\n        return !['06', '07', '08', '09'].includes(original.status)\n    }\n    render() {\n        const { intl } = this.props\n        let orders = this.props.type ? this.props.openOrders : this.props.orders\n        let ordersFiltered = null\n\n        if (this.props.isIkeaCenter)\n            orders = orders.filter(row => {\n                return row.shippingAddressId.includes(this.props.selectedShippingAddressForIkea)\n            })\n\n        if (this.state.search) {\n            ordersFiltered = orders\n            ordersFiltered = ordersFiltered.filter(row => {\n                return (\n                    row.reservationId.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    row.orderId.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    row.createdDate.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    row.customerOrder.toLowerCase().includes(this.state.search.toLowerCase())\n                )\n            })\n        }\n\n        const dataOrders = ordersFiltered !== null ? ordersFiltered : orders\n        const columns = [\n            {\n                Header: <FormattedMessage id=\"actions\" defaultMessage=\"Acciones\" />,\n                id: 'assign',\n                Cell: ({ original }) => {\n                    //if (original.statusText === 'CANCELLED') original.statusText = 'QUOTE_REJECTED'\n                    //if (original.statusText === 'EXPIRED') original.statusText = 'QUOTE_EXPIRED'\n                    return (\n                        <React.Fragment>\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <Button className=\"col m-1\" offers size=\"medium\" fal icon=\"eye\" onClick={() => this.showOrderDetails(original.reservationId, original.orderId)}>\n                                        <FormattedMessage id=\"quote_overview\" defaultMessage=\"Quote overview\" />\n                                    </Button>\n                                </div>\n\n                                {original.statusText === 'OFFER_CREATED' && (\n                                    <div className=\"row\">\n                                        <Button className=\"col m-1\" offers fal redIcon size=\"medium\" icon=\"times\" onClick={() => this.rejectQuote(original)}>\n                                            <FormattedMessage id=\"reject\" defaultMessage=\"Reject\" />\n                                        </Button>\n                                        <Button className=\"col m-1\" offers fal greenIcon size=\"medium\" icon=\"check\" onClick={() => this.acceptQuote(original)}>\n                                            <FormattedMessage id=\"accept\" defaultMessage=\"Accept\" />\n                                        </Button>\n\n                                    </div>\n                                )}\n                            </div>\n                            {' '}\n                            {this.props.isIkeaCenter && this.haveInstallationData(original) && (\n                                <React.Fragment>\n                                    <div style={{ marginTop: '5px' }} />\n                                    <Button inline size=\"small\" icon=\"clipboard-list\" far onClick={() => this.showOrderInstallationData(original)}>\n                                        <FormattedMessage id=\"installation_data\" defaultMessage=\"Installation Data\" />\n                                    </Button>\n                                </React.Fragment>\n                            )}\n                            {original.rejected ? null : (\n                                <React.Fragment>\n                                    {' '}\n                                    {this.props.canEditOrders && this.canDoActions(original) && (\n                                        <LocalizedLink\n                                            routeId=\"ROUTE_PROFILE\"\n                                            params={{ filter: 'edit-order', open: original.orderId }}\n                                            onClick={e => {\n                                                if (!original.orderId) e.preventDefault()\n                                            }}\n                                        >\n                                            <Button inline size=\"small\" icon=\"edit\" disabled={!original.orderId}>\n                                                <FormattedMessage id=\"edit_order\" defaultMessage=\"Edit\" />\n                                            </Button>\n                                        </LocalizedLink>\n                                    )}{' '}\n                                    {this.props.canDeleteOrders && this.canDoActions(original) && (\n                                        <Button\n                                            inline\n                                            size=\"small\"\n                                            icon=\"trash\"\n                                            onClick={() => this.rejectOrder(original.reservationId, original.orderId)}\n                                            disabled={!original.orderId || !original.reservationId}\n                                        >\n                                            <FormattedMessage id=\"delete\" defaultMessage=\"delete\" />\n                                        </Button>\n                                    )}\n                                </React.Fragment>\n                            )}\n                        </React.Fragment>\n                    )\n                },\n                className: 'text-center',\n                headerClassName: 'text-center',\n                minWidth: 280\n            },\n\n            { Header: <FormattedMessage id=\"reservation_id\" defaultMessage=\"Reservation ID\" />, accessor: 'reservationId' },\n            { Header: <FormattedMessage id=\"order_id\" defaultMessage=\"Order ID\" />, accessor: 'orderId' },\n            { Header: <Translation id=\"quote\" defaultMessage=\"Quote\" />, accessor: 'offer' },\n            {\n                Header: <FormattedMessage id=\"customer_id\" defaultMessage=\"Customer id\" />,\n                accessor: 'customerId',\n                show: this.props.userType !== 'CUSTOMER'\n            },\n            { Header: <FormattedMessage id=\"created_date\" defaultMessage=\"Created Date\" />, accessor: 'createdDate' },\n            { Header: <FormattedMessage id=\"customer\" defaultMessage=\"Customer\" />, accessor: 'customerOrder' },\n            {\n                Header: <FormattedMessage id=\"status\" defaultMessage=\"Status\" />,\n                id: 'status',\n                Cell: ({ original }) => {\n                    return <OrderStatus original={original} rejected={original.rejected} />\n                },\n                className: 'text-center',\n                headerClassName: 'text-center',\n                minWidth: 250\n            },\n            { Header: <FormattedMessage id=\"container\" defaultMessage=\"Container\" />, accessor: 'container' },\n            {\n                Header: <FormattedMessage id=\"eta\" defaultMessage=\"ETA\" />,\n                Cell: ({ original }) => {\n                    return <span>{original.eta !== '0000-00-00' && original.eta}</span>\n                },\n                accessor: 'eta',\n                minWidth: 100\n            }\n        ]\n        const columnsOfIkea = [\n            { Header: <FormattedMessage id=\"id_employee\" defaultMessage=\"Id employee\" />, accessor: 'employeeId' },\n            { Header: <FormattedMessage id=\"addressee\" defaultMessage=\"Addressee\" />, accessor: 'customerName' }\n        ]\n        if (this.props.isIkeaCenter) columns.splice(7, 1, ...columnsOfIkea)\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-12\">\n                        <div className=\"toolbar\">\n                            <div className=\"container\">\n                                <div className=\"row\">\n                                    <div className=\"col-12 order_header\">\n                                        <div className=\"group_title\">\n                                            <h4>\n                                                {!this.props.type && <FormattedMessage id=\"quotes_history\" defaultMessage=\"Quotes history\" />}\n                                                {this.props.type === 'open' && <FormattedMessage id=\"open_orders\" defaultMessage=\"Open orders\" />}\n                                                {this.props.type === 'transfer' && <FormattedMessage id=\"transfer_orders\" defaultMessage=\"Transfer orders\" />}\n                                            </h4>\n                                        </div>\n                                        <div className=\"group_date_picker\">\n                                            {this.props.type !== 'transfer' && (\n                                                <React.Fragment>\n                                                    <div className=\"group_date_picker__item\">\n                                                        <div className=\"name\">\n                                                            <FormattedMessage id=\"from\" defaultMessage=\"From\" /> <i className=\"fal fa-chevron-down\" />\n                                                        </div>\n                                                        <DatePicker\n                                                            selected={this.state.startDate}\n                                                            selectsStart={true}\n                                                            startDate={this.state.startDate}\n                                                            endDate={this.state.endDate}\n                                                            maxDate={moment()}\n                                                            onChange={selectedOption => this.changeStartDate(selectedOption, 'startDate')}\n                                                            onFocus={() => this.setState({ endDate: null })}\n                                                            autoComplete=\"off\"\n                                                            onKeyDown={e => e.preventDefault()}\n                                                            showMonthDropdown\n                                                            showYearDropdown\n                                                            className=\"form-control form-control-sm date\"\n                                                        />\n                                                    </div>\n                                                    <div className=\"group_date_picker__item\">\n                                                        <div className=\"name\">\n                                                            <FormattedMessage id=\"to\" defaultMessage=\"To\" /> <i className=\"fal fa-chevron-down\" />\n                                                        </div>\n                                                        <DatePicker\n                                                            selected={this.state.endDate}\n                                                            selectsEnd\n                                                            startDate={this.state.startDate}\n                                                            endDate={this.state.endDate}\n                                                            minDate={this.state.startDate}\n                                                            maxDate={\n                                                                moment() < moment(this.state.startDate).add(3, 'month') ? moment() : moment(this.state.startDate).add(3, 'month')\n                                                            }\n                                                            onChange={selectedOption => this.changeEndDate(selectedOption, 'endDate')}\n                                                            autoComplete=\"off\"\n                                                            onKeyDown={e => e.preventDefault()}\n                                                            showMonthDropdown\n                                                            showYearDropdown\n                                                            className=\"form-control form-control-sm date\"\n                                                        />\n                                                    </div>\n                                                </React.Fragment>\n                                            )}\n                                        </div>\n                                        <div className=\"location search-bar search-bar--thin\">\n                                            <input\n                                                type=\"text\"\n                                                data-qa=\"query\"\n                                                className=\"search-box\"\n                                                placeholder={intl.formatMessage({\n                                                    id: 'search'\n                                                })}\n                                                value={this.state.search}\n                                                onChange={e => this.setState({ search: e.target.value })}\n                                            />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n\n                        <ReactTable\n                            data={dataOrders}\n                            loading={this.props.isLoading}\n                            loadingText={<Spinner isLoading={this.props.isLoading} />}\n                            className=\"-highlight\"\n                            columns={columns}\n                            defaultSorted={[{ id: 'reservationId', desc: true }]}\n                            defaultPageSize={8}\n                            pageSizeOptions={[8, 16, 32, 64, 128]}\n                            previousText={<FormattedMessage id=\"previous\" defaultMessage=\"Previous\" />}\n                            nextText={<FormattedMessage id=\"next\" defaultMessage=\"Next\" />}\n                            noDataText={<FormattedMessage id=\"no_data\" defaultMessage=\"No data available\" />}\n                            pageText={<FormattedMessage id=\"page\" defaultMessage=\"Page\" />}\n                            ofText={<FormattedMessage id=\"of\" defaultMessage=\"Of\" />}\n                            getTrProps={(state, rowInfo) => {\n                                let cursor = rowInfo ? 'pointer' : 'default'\n                                let clases = ''\n                                if (rowInfo) {\n                                    if (rowInfo.original.rejected) clases += 'reject '\n                                }\n                                return {\n                                    // onClick: e => {\n                                    //     if (rowInfo.original.reservationId) {\n                                    //         this.showOrderDetails(rowInfo.original.reservationId, rowInfo.original.orderId)\n                                    //     }\n                                    // },\n                                    style: { cursor: cursor },\n                                    className: clases\n                                }\n                            }}\n                        />\n                        {this.state.showOrderDetails && (\n                            <OfferOverview\n                                order={this.state.selectedOrder}\n                                orderId={this.state.selectedOrderId}\n                                onClose={() => this.closeOrderDetails()}\n                                canEditOrders={this.props.canEditOrders}\n                                isOffer={true}\n                            />\n                        )}\n                        {(this.state.installationData || this.state.oldInstallationData) && (\n                            <Modal\n                                title={<FormattedMessage id=\"installation_data\" defaultMessage=\"Installation Data\" />}\n                                onClose={() => this.setState({ installationData: null })}\n                                size=\"large\"\n                                footer={\n                                    <div className=\"modal-footer__buttons\">\n                                        <Button onClick={() => this.setState({ installationData: null, oldInstallationData: null })} inverted size=\"medium\">\n                                            <FormattedMessage id=\"ok\" defaultMessage=\"Ok\" />\n                                        </Button>\n                                    </div>\n                                }\n                            >\n                                {this.state.installationData && (\n                                    <React.Fragment>\n                                        <FormattedMessage id=\"name\" defaultMessage=\"Name\" />: <span>{this.state.installationData.name}</span> <br />\n                                        <FormattedMessage id=\"address\" defaultMessage=\"Address\" />: <span>{this.state.installationData.address}</span> <br />\n                                        <FormattedMessage id=\"town\" defaultMessage=\"Town\" />: <span>{this.state.installationData.town}</span> <br />\n                                        <FormattedMessage id=\"province\" defaultMessage=\"Province\" />: <span>{this.state.installationData.province}</span> <br />\n                                        <FormattedMessage id=\"zip\" defaultMessage=\"Zip Code\" />: <span>{this.state.installationData.zip}</span> <br />\n                                        <FormattedMessage id=\"phone\" defaultMessage=\"Phone\" />: <span>{this.state.installationData.phone}</span> <br />\n                                        <FormattedMessage id=\"comments\" defaultMessage=\"Comments\" />: <span>{this.state.installationData.comments}</span> <br />\n                                    </React.Fragment>\n                                )}\n                                {this.state.oldInstallationData && <span>{this.state.oldInstallationData}</span>}\n                            </Modal>\n                        )}\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(OfferStatusHistory)\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 13,\n    height: \"100%\",\n    viewBox: \"0 0 16 15\",\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12.8 3.2H3.2V0H12.8V3.2ZM12.8 7.6C13.0267 7.6 13.2167 7.52333 13.37 7.37C13.5233 7.21667 13.6 7.02667 13.6 6.8C13.6 6.57333 13.5233 6.38333 13.37 6.23C13.2167 6.07667 13.0267 6 12.8 6C12.5733 6 12.3833 6.07667 12.23 6.23C12.0767 6.38333 12 6.57333 12 6.8C12 7.02667 12.0767 7.21667 12.23 7.37C12.3833 7.52333 12.5733 7.6 12.8 7.6ZM11.2 12.8V9.6H4.8V12.8H11.2ZM12.8 14.4H3.2V11.2H0V6.4C0 5.72 0.233333 5.15 0.7 4.69C1.16667 4.23 1.73333 4 2.4 4H13.6C14.28 4 14.85 4.23 15.31 4.69C15.77 5.15 16 5.72 16 6.4V11.2H12.8V14.4Z\",\n    fill: \"#365BCA\"\n  })));\n};\n\nexport default __webpack_public_path__ + \"static/media/print-icon.580d21f1.svg\";\nexport { SvgComponent as ReactComponent };","import { connect } from 'react-redux'\nimport OfferStatusHistory from './OfferStatusHistory'\nimport { getOffers, getOrdersLoading, canEditOrders, canDeleteOrders } from '../../store/orders/reducers'\nimport { injectIntl } from 'react-intl'\nimport {acceptQuote, fetchOrders, rejectOrder, rejectQuote} from '../../store/orders/actions'\nimport { withRouter } from 'react-router-dom'\nimport { getUserType } from '../../store/login/reducers'\nimport {canOffer, getIsIkeaCenter} from '../../store/centers/reducers'\nimport { getSelectedShippingAddressForIkea } from '../../store/shipping-addresses/reducers'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        orders: getOffers(state),\n        type: match.params.open,\n        key: match.params.open,\n        isLoading: getOrdersLoading(state),\n        userType: getUserType(state),\n        canEditOrders: canEditOrders(state),\n        canDeleteOrders: canDeleteOrders(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        selectedShippingAddressForIkea: getSelectedShippingAddressForIkea(state),\n        canOffer: canOffer(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOrders: (type, startDate, endDate) => {\n            dispatch(fetchOrders(type, startDate, endDate))\n        },\n        rejectOrder: (reservationId, orderId) => {\n            dispatch(rejectOrder(reservationId, orderId))\n        },\n        rejectQuote: (reservationId) => {\n            dispatch(rejectQuote(reservationId))\n        },\n        acceptQuote: (reservationId, orderId) => {\n            dispatch(acceptQuote(reservationId))\n        },\n    }\n}\n\nconst OfferStatusHistoryContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(OfferStatusHistory)\n    )\n)\n\nexport default OfferStatusHistoryContainer\n","import React, { Component } from 'react'\nimport classnames from 'classnames'\nimport Translation from \"../../global/Translation\"\n\nconst defaultButton = props => (\n    <button type=\"button\" {...props} className=\"-btn\">\n        {props.children}\n    </button>\n)\n\nexport default class ReactTablePaginationCount extends Component {\n    constructor(props) {\n        super()\n        this.getSafePage = this.getSafePage.bind(this)\n        this.changePage = this.changePage.bind(this)\n        this.applyPage = this.applyPage.bind(this)\n        this.updateCurrentRows(props)\n        this.state = {\n            page: props.page\n        }\n    }\n\n    componentWillReceiveProps(nextProps) {\n        this.setState({ page: nextProps.page })\n\n        this.updateCurrentRows(nextProps)\n    }\n\n    updateCurrentRows(props) {\n        if (\n            typeof props.sortedData !== 'undefined' && \n            typeof props.page !== 'undefined' &&\n            typeof props.pageSize !== 'undefined'\n        ) {\n            this.rowCount = props.sortedData.length\n            this.rowMin = props.page * props.pageSize + 1\n            this.rowMax = Math.min((props.page + 1) * props.pageSize, this.rowCount)\n        }\n    }\n\n    getSafePage(page) {\n        if (isNaN(page)) {\n            page = this.props.page\n        }\n        return Math.min(Math.max(page, 0), this.props.pages - 1)\n    }\n\n    changePage(page) {\n        page = this.getSafePage(page)\n        this.setState({ page })\n        if (this.props.page !== page) {\n            this.props.onPageChange(page)\n        }\n\n        this.updateCurrentRows(page)\n    }\n\n    applyPage(e) {\n        if (e) {e.preventDefault()}\n        const page = this.state.page\n        this.changePage(page === '' ? this.props.page : page)\n    }\n\n    render() {\n        const {\n            pages,\n            page,\n            showPageSizeOptions,\n            pageSizeOptions,\n            pageSize,\n            showPageJump,\n            canPrevious,\n            canNext,\n            onPageSizeChange,\n            className,\n            PreviousComponent = defaultButton,\n            NextComponent = defaultButton\n        } = this.props\n\n        return (\n            <div className={classnames(className, '-pagination')} style={this.props.style}>\n                <div className=\"-previous\">\n                    <PreviousComponent\n                        onClick={() => {\n                            if (!canPrevious) return\n                            this.changePage(page - 1)\n                        }}\n                        disabled={!canPrevious}\n                    >\n                        {this.props.previousText}\n                    </PreviousComponent>\n                </div>\n                <div className=\"-center\">\n                    <span className=\"-pageInfo\">\n                        {this.props.pageText}{' '}\n                        {showPageJump ? (\n                            <div className=\"-pageJump\">\n                                <input\n                                    type={this.state.page === '' ? 'text' : 'number'}\n                                    onChange={e => {\n                                        const val = e.target.value\n                                        const page = val - 1\n                                        if (val === '') {\n                                            return this.setState({ page: val })\n                                        }\n                                        this.setState({ page: this.getSafePage(page) })\n                                    }}\n                                    value={this.state.page === '' ? '' : this.state.page + 1}\n                                    onBlur={this.applyPage}\n                                />\n                            </div>\n                        ) : (\n                            <span className=\"-currentPage\">{page + 1}</span>\n                        )}{' '}\n                        {this.props.ofText} <span className=\"-totalPages\">{pages || 1}</span>\n                    </span>\n\n                    {typeof this.rowCount !== 'undefined' ? (\n                        <span className=\"-rowInfo\">\n                            <Translation id=\"showing\" defaultMessage=\"Showing\" />&nbsp;\n                            <span>{this.rowMin}</span>\n                            {' - '}\n                            <span>{this.rowMax}</span>&nbsp;\n                            <Translation id=\"of_table_count\" defaultMessage=\"of\" />&nbsp;\n                            <span>{this.rowCount}</span>&nbsp;\n                            <Translation id=\"total_results_table_count\" defaultMessage=\"total results\" />\n                        </span>\n                    ) : (\n                        ''\n                    )}\n\n                    {showPageSizeOptions && (\n                        <span className=\"select-wrap -pageSizeOptions\">\n                            <select onChange={e => onPageSizeChange(Number(e.target.value))} value={pageSize}>\n                                {pageSizeOptions.map((option, i) => (\n                                    <option key={i} value={option}>\n                                        {option} {this.props.rowsText}\n                                    </option>\n                                ))}\n                            </select>\n                        </span>\n                    )}\n                </div>\n                <div className=\"-next\">\n                    <NextComponent\n                        onClick={() => {\n                            if (!canNext) return\n                            this.changePage(page + 1)\n                        }}\n                        disabled={!canNext}\n                    >\n                        {this.props.nextText}\n                    </NextComponent>\n                </div>\n            </div>\n        )\n    }\n}\n","import React, { useState, useEffect } from 'react'\nimport { injectIntl } from 'react-intl'\nimport { CUT_TO_SIZE_MATERIALS, addForwardSlash, getConfigLineName } from '../Utils'\nimport Translation from '../../../global/Translation'\nimport ProductImage from '../../../catalog/ProductImage'\nimport ProductDisplayName from '../../../global/ProductDisplayName'\nimport DisplayOutletIndicator from '../../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport mallLarge from '../../../../assets/img/logos/mall-large.jpg'\nimport * as CutToSizeMaps from '../../../cut-to-size/CutToSizeMaps'\nimport DisplayThickness from '../../../catalog/rectangleResult/displays/DisplayThickness'\nimport moment from 'moment'\nimport InputNumber from '../../../global/InputNumber'\nimport { ModifiedLineIndicator } from './NewOrderDetails'\nimport LineSegmentation from \"../../../cart-line/LineSegmentation\";\nimport DatePicker from \"react-datepicker\";\nimport ReactTooltip from 'react-tooltip'\nimport { getNextWorkingDay } from '../../../../helpers'\nimport { capitalizeFirstLetter } from '../../../../helpers'\nimport DisplayQuickShipIndicator from '../../../catalog/rectangleResult/displays/DisplayQuickShipIndicator'\nimport CustomProductIndicator from '../../../cart-line/indicators/CustomProductIndicator'\nimport DisplayBrand from '../../../catalog/rectangleResult/displays/DisplayBrand'\nimport NaturalStoneIndicator from '../../../cart-line/indicators/NaturalStoneIndicator'\nimport DisplayDiscontinued from '../../../catalog/rectangleResult/displays/DisplayDiscontinued'\nimport { ElaborationOptionsMapById } from '../../../cut-to-size/CutToSizeMaps'\n\nconst NewOrderDetailsEditMode = props => {\n    const {\n        orderLines, \n        orderToEdit, \n        intl, \n        isEmserUser, \n        adaptedFormat, \n        getMeasure, \n        canEditPosition, \n        onLineChangeValue, \n        locale, \n        replaceDotWithComma, \n        changeOrderInEdition,\n        orderShippingType,\n        impersonatedBy\n    } = props\n\n    const [preferredDeliveryDates, setPreferredDeliveryDates] = useState({})\n    const [globalPreferredDeliveryDate, setGlobalPreferredDeliveryDate] = useState(null)\n    const [isIndividualPreferredDeliveryDatePickerDisabled, setIsIndividualPreferredDeliveryDatePickerDisabled] = useState(false)\n\n    if (!orderToEdit) return null\n\n    const getOrderToEditLine = orderLine => {\n        return orderToEdit.find(line => line.position === orderLine.Posnr)\n    }\n\n    const thicknessFormatIntl = orderLine => {\n        if (!orderLine.product.thickness) return null\n        return replaceDotWithComma(orderLine.product.thickness, locale) + ' cm'\n    } \n\n    const finishFormatIntl = (orderLine) => {\n        if (!orderLine.product.finish) return null\n        return props.intl.formatMessage({ id: orderLine.product.finish })\n    }\n\n    const productFormatIntl = orderLine => {\n        if (!orderLine.product.format) return null\n        return adaptedFormat(orderLine.product.format, { upper: true, showUnits: true })\n    }\n\n    const subtypeFormatIntl = orderLine => {\n        if (!orderLine.product.subtypeName) return null\n        return props.intl.formatMessage({ id: orderLine.product.subtypeName })\n    }\n\n    const zaddonFormatIntl = (orderLine) => {\n        if (orderLine.product.zaddon !== 'MAL') return null\n        return props.intl.formatMessage({ id: 'MAL' })\n    }\n\n    const showPrice = () => !isEmserUser && !CUT_TO_SIZE_MATERIALS.includes(String(orderLines[0].material_id))\n\n    const displayPrice = orderLine => {\n        if (showPrice()) {\n            return (\n                parseInt(orderLine.import) === 0 ? <Translation id=\"not_available\" defaultMessage=\"Not available\" /> : orderLine.import + ' ' +  orderLine.coin\n            )\n        }\n        return <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n    }\n\n    useEffect(() => {\n        const initialDates = {}\n        orderLines && orderLines.forEach(orderLine => {\n           const orderLineId = orderLine.uuid\n           const initialDate = getInitialDate(orderLine)\n            initialDates[orderLineId] = initialDate\n        })\n\n        setPreferredDeliveryDates(initialDates)\n    }, [orderLines])\n\n    useEffect(() => {\n        if (orderShippingType && orderShippingType.toLowerCase() !== 'single_slab') {\n            setIsIndividualPreferredDeliveryDatePickerDisabled(true)\n        }\n\n    }, [isIndividualPreferredDeliveryDatePickerDisabled])\n\n    const getInitialDate = (orderLine) => {\n        return orderLine.requested_delivery_date ? moment(orderLine.requested_delivery_date) : null\n    }\n\n    const onChangePreferredDeliveryDate = (orderLineId, date, positionId) => {\n        handleUpdatedPreferredDeliveryDate(orderLineId, date)\n        updateOrderToEdit(positionId, date)\n    }\n\n    const handleUpdatedPreferredDeliveryDate = (orderLineId, date) => {\n        setPreferredDeliveryDates(prevDates => ({\n           ...prevDates,\n           [orderLineId]: date\n        }))\n    }\n\n    const updateOrderToEdit = (positionId, date) => {\n        const formattedDate = date ? date.format(\"YYYY-MM-DD\") : null\n        onLineChangeValue(positionId, 'preferredDeliveryDate', formattedDate)\n    }\n\n    const handleGlobalDateChange = (date) => {\n        setPreferredDeliveryDates(prevDates => {\n            const updatedDates = Object.keys(prevDates).reduce((acc, id) => {\n                acc[id] = date\n                return acc\n            }, {})\n            \n            return updatedDates\n        })\n\n        setGlobalPreferredDeliveryDate(date)\n\n        // Update the orderInEdition object from here when user set a global date\n        let updatedOrderInEdition = orderToEdit && orderToEdit.map(line => {\n            return { ...line, preferredDeliveryDate: date.format(\"YYYY-MM-DD\") }\n        })\n\n        changeOrderInEdition(updatedOrderInEdition)\n    }\n\n    const isImpersonateBy = () => {\n        if (impersonatedBy)  {\n            return true\n        }\n\n        return false\n    }\n\n    const handleOrderLineQuantity = (orderLine) => {\n        return (\n            <React.Fragment>\n                {orderLine.reservation_quantity ? (\n                    parseInt(orderLine.reservation_quantity) !== parseInt(orderLine.quantity) ? (\n                        orderLine.quantity ? (\n                            <React.Fragment>{parseInt(orderLine.quantity)}</React.Fragment>\n                        ) : (\n                            <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                        )\n                    ) : (\n                        <React.Fragment>{parseInt(orderLine.reservation_quantity)}</React.Fragment>\n                    )\n                ) : (\n                    <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                )}\n            </React.Fragment>\n        )\n    }\n\n    const descriptionBlockException = orderLine => {\n        return (\n            <React.Fragment>\n                <div className=\"order__shipping__details__table--description\">\n                    <div className=\"product-img\">\n                        <ProductImage product={null} />\n                    </div>\n                    <div className=\"product-description-table\">\n                        {orderLine.short_text && (\n                            <div>\n                                <span className=\"product\">\n                                    <span>{capitalizeFirstLetter(orderLine.short_text)}</span>\n                                </span>\n                            </div>\n                        )}\n                        {orderLine.material_id && (\n                            <div className=\"product-id\">\n                                <span>\n                                    <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                </span>\n                                :&nbsp;\n                                <span>\n                                    {orderLine.material_id}\n                                </span>\n                            </div>\n                        )}\n                        {orderLine.lot_id && (\n                            <div className=\"lot-id\">\n                                <span>\n                                    <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                                    :&nbsp;\n                                </span>\n                                <span>{orderLine.lot_id}</span>\n                            </div>\n                        )}\n                        <div>\n                        <span className=\"qty\">\n                            <Translation id=\"quantity\" defaultMessage=\"Quantity\" />:&nbsp;\n                            {handleOrderLineQuantity(orderLine)}\n                        </span>\n                        </div>\n                        <div className=\"price\">\n                            <span>\n                                <Translation id=\"price\" defaultMessage=\"Price\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {displayPrice(orderLine)}\n                            </span>\n                        </div>\n                        {/* For tablet screen */}\n                        <div className=\"d-block-only-tablet\">{additionalInfoBlock(orderLine)}</div>\n                    </div>\n                </div>\n                {/* For mobile screen */}\n                <div className=\"d-block-only-mobile\">\n                    <div className=\"order-divider-x\"></div>\n                    {additionalInfoBlock(orderLine)}\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    const descriptionBlock = orderLine => {\n        return (\n            <React.Fragment>\n                {orderLine.product ? (\n                    <React.Fragment>\n                        <div className=\"order__shipping__details__table--description\">\n                            <div className=\"card__item__productinfo--container\">\n                                <div className=\"product-img\">\n                                    <ProductImage product={orderLine.product} inSmallBox={true}/>\n                                </div>\n                                <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                                    {orderLine.extra && orderLine.extra.isCosentinoGlobal &&\n                                        (orderLine.extra.outlet ? (\n                                            <NaturalStoneIndicator idMessage={'outlet_in_hq'} defaultMessage=\"Outlet Spain\" inSmallBox={true} />\n                                        ) : (\n                                            <NaturalStoneIndicator idMessage={'natural_stone_hq'} defaultMessage=\"Natural stone Spain\" inSmallBox={true} />\n                                        ))}\n\n                                    {orderLine.extra && orderLine.extra.isCosentinoBrazil && (\n                                        <NaturalStoneIndicator idMessage={'natural_stone_brazil'} defaultMessage=\"Natural stone Brazil\" inSmallBox={true} />\n                                    )}\n                                </div>\n                            </div>\n\n                            <div className=\"product-description-table\">\n                                <div className=\"brand-container\">\n                                    <span className=\"brand\">\n                                        <DisplayBrand brand={orderLine.product.brand} />\n                                    </span>\n                                </div>\n\n                                <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                                    <div>\n                                        <span className=\"product\">\n                                            <ProductDisplayName product={orderLine.product} />\n                                        </span>\n                                    </div>\n                                    <div>\n                                        <span className=\"technical\">\n                                            {addForwardSlash(\n                                                subtypeFormatIntl(orderLine),\n                                                productFormatIntl(orderLine),\n                                                finishFormatIntl(orderLine),\n                                                thicknessFormatIntl(orderLine),\n                                                zaddonFormatIntl(orderLine)\n                                            )}\n                                        </span>\n                                    </div>\n                                </div>\n\n                                {orderLine.product.productId && (\n                                    <div className=\"product-id\">\n                                        <span>\n                                            <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                        </span>\n                                        :&nbsp;\n                                        <span>\n                                            {orderLine.product.productId}\n                                        </span>\n                                    </div>\n                                )}\n\n                                {orderLine.lot_id && (\n                                    <div className=\"lot-id\">\n                                        <span>\n                                            <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                                            :&nbsp;\n                                        </span>\n                                        <span>{orderLine.lot_id}</span>\n                                    </div>\n                                )}\n\n                                <div className=\"indicators-block\">\n                                    {orderLine.product.discontinued && (\n                                        <span className=\"mb-1\">\n                                            <DisplayDiscontinued discontinued={orderLine.product.discontinued} inSmallBox={true} />\n                                        </span>\n                                    )}\n                                    {orderLine.outlet_quality && (\n                                        <span className=\"mb-1\">\n                                            <DisplayOutletIndicator\n                                                outletQuality={orderLine.outlet_quality}\n                                                inSmallBox={true}\n                                            />\n                                        </span>\n                                    )}\n                                </div>\n\n                                {orderLine.mall_promotion_id && (\n                                    <div className=\"mall-logo\">\n                                        <img src={mallLarge} alt=\"logo mall\" />\n                                    </div>\n                                )}\n\n                                <div className=\"qty\">\n                                    <span>\n                                        <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                        :&nbsp;\n                                    </span>\n                                    <span>\n                                        {handleOrderLineQuantity(orderLine)}\n                                    </span>\n                                </div>\n                                <div className=\"price\">\n                                    <span>\n                                        <Translation id=\"price\" defaultMessage=\"Price\" />\n                                    </span>\n                                    :&nbsp;\n                                    <span>\n                                        {displayPrice(orderLine)}\n                                    </span>\n                                </div>\n\n                                {/* For tablet screen */}\n                                <div className=\"d-block-only-tablet\">{additionalInfoBlock(orderLine)}</div>\n                            </div>\n                        </div>\n                        {/* For mobile screen */}\n                        <div className=\"d-block-only-mobile\">\n                            <div className=\"order-divider-x\"></div>\n                            {additionalInfoBlock(orderLine)}\n                            <div className=\"order-divider-x\"></div>\n                            {editModeQuantityPosition(orderLine)}\n                            {editModeRejectPosition(orderLine)}\n                        </div>\n                    </React.Fragment>\n                ) : (\n                    <React.Fragment>{descriptionBlockException(orderLine)}</React.Fragment>\n                )}\n            </React.Fragment>\n        )\n    }\n\n    const cutToSizeDescriptionBlock = orderLine => {\n        const cts = orderLine.cut_to_size\n        const measures = getMeasure(cts)\n        const materialName =  ElaborationOptionsMapById[orderLine.material_id] ? props.intl.formatMessage(ElaborationOptionsMapById[orderLine.material_id].name) : null\n\n        return (\n            <React.Fragment>\n                <div className=\"order__shipping__details__table--description\">\n                    <div className=\"card__item__productinfo--container\">\n                        <div className=\"product-img\">\n                            <img src={cts.thumb} alt=\"Cut to size\" />\n                        </div>\n                        <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                            <CustomProductIndicator />\n                        </div>\n                    </div>\n\n                    <div className=\"product-description-table\">\n                       <div className=\"brand-container\">\n                            <span className=\"brand\">\n                                <DisplayBrand brand={cts.brand} />\n                            </span>\n                        </div>\n\n                        <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                            <div className=\"product\">\n                                <span>{capitalizeFirstLetter(cts.colorName)}</span>\n                            </div>\n                            {materialName && (\n                                <div>\n                                    <span className=\"technical\">{materialName}</span>\n                                </div>\n                            )}\n                        </div>\n\n                        {orderLine.material_id && (\n                            <div className=\"product-id\">\n                                <span>\n                                    <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                </span>\n                                :&nbsp;\n                                <span>\n                                    {orderLine.material_id}\n                                </span>\n                            </div>\n                        )}\n\n                        {cts.elaboration === 'CUSTOM_MOBILIARIO' && (\n                            <div className=\"cts-custom-mobiliario\">\n                                <span>{intl.formatMessage(CutToSizeMaps.Messages[cts.elaboration])}</span>&nbsp; (\n                                <span>\n                                    {!!cts.samePattern ? <Translation id=\"extension\" defaultMessage=\"Extension\" /> : <Translation id=\"main_piece\" defaultMessage=\"Main piece\" />}\n                                </span>\n                                )\n                            </div>\n                        )}\n\n                        {measures.format && (\n                            <div className=\"cts-format\">\n                                <span>\n                                    <Translation id=\"format\" defaultMessage=\"Format\" />\n                                </span>\n                                :&nbsp;\n                                <span>{measures.format}</span>\n                            </div>\n                        )}\n\n                        {cts && cts.finish && (\n                            <div className=\"cts-finish\">\n                                <span>\n                                    <Translation id=\"finish\" defaultMessage=\"Finish\" />\n                                </span>\n                                :&nbsp;\n                                <span>{intl.formatMessage({ id: cts.finish })}</span>\n                            </div>\n                        )}    \n\n                        <div className=\"cts-thickness\">\n                            <span>\n                                <Translation id=\"thickness\" defaultMessage=\"Thickness\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                <DisplayThickness thickness={cts.thickness} string />\n                            </span>\n                        </div>\n\n                        {measures.radius && (\n                            <div className=\"cts-radius\">\n                                <span>\n                                    <Translation id=\"radius\" defaultMessage=\"Radius\" />\n                                </span>\n                                :&nbsp;\n                                <span>{measures.radius}</span>\n                            </div>\n                        )}\n\n                        {cts.edge && (\n                            <div className=\"cts-edge\">\n                                <span>\n                                    <Translation id=\"edge\" defaultMessage=\"Edge\" />\n                                </span>\n                                :&nbsp;\n                                <span>{intl.formatMessage(CutToSizeMaps.Messages[cts.edge])}</span>\n                            </div>\n                        )}\n\n                        {cts.bevel && (\n                            <div className=\"cts-bevel\">\n                                <span>\n                                    <Translation id=\"bevel\" defaultMessage=\"Bevel\" />\n                                </span>\n                                :&nbsp;\n                                <span>{intl.formatMessage(CutToSizeMaps.Messages[cts.bevel])}</span>\n                            </div>\n                        )}\n\n                        {cts.packaging && (\n                            <div className=\"cts-packaging\">\n                                <span>\n                                    <Translation id=\"packaging\" defaultMessage=\"Packaging\" />\n                                </span>\n                                :&nbsp;\n                                <span>{intl.formatMessage(CutToSizeMaps.Messages[cts.packaging])}</span>\n                            </div>\n                        )}\n\n                        {cts.samePattern === 'YES' && (\n                            <div className=\"cts-pattern\">\n                                <span>\n                                    <Translation id=\"same_pattern\" />\n                                </span>\n                            </div>\n                        )}\n\n                        {cts.shape && (\n                            <div className=\"cts-shape\">\n                                <span>\n                                    <Translation id=\"shape\" defaultMessage=\"Shape\" />\n                                </span>\n                                :&nbsp;\n                                <span>{intl.formatMessage(CutToSizeMaps.Messages[cts.shape])}</span>\n                            </div>\n                        )}\n\n                        {measures.diameter && (\n                            <div className=\"cts-diameter\">\n                                <span>\n                                    <Translation id=\"diameter\" defaultMessage=\"Diameter\" />\n                                </span>\n                                :&nbsp;\n                                <span>{measures.diameter}</span>\n                            </div>\n                        )}\n\n                        <div>\n                            <span className=\"qty\">\n                            <Translation id=\"quantity\" defaultMessage=\"Quantity\" />:&nbsp;\n                            {handleOrderLineQuantity(orderLine)}\n                        </span>\n                        </div>\n                        <div className=\"price\">\n                            <span>\n                                <Translation id=\"price\" defaultMessage=\"Price\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {displayPrice(orderLine)}\n                            </span>\n                        </div>\n                        {/* For tablet screen */}\n                        <div className=\"d-block-only-tablet\">{additionalInfoBlock(orderLine)}</div>\n                    </div>\n                </div>\n                {/* For mobile screen */}\n                <div className=\"d-block-only-mobile\">\n                    <div className=\"order-divider-x\"></div>\n                    {additionalInfoBlock(orderLine)}\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    const descriptionBlockConfigBath = orderLine => {\n        const cts = orderLine.cut_to_size\n        return (\n            <React.Fragment>\n                <div className=\"order__shipping__details__table--description\">\n                    <div className=\"card__item__productinfo--container\">\n                        <div className=\"product-img\">\n                            {!!cts.configurable.thirdParty && <DisplayQuickShipIndicator tooltipId={cts.configurable.refcode} />}\n                            <img src={cts.thumb} alt={getConfigLineName(cts.configurable)} className=\"is-img-configurable\" />\n                        </div>\n                        <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                            <CustomProductIndicator />\n                        </div>\n                    </div>\n\n                    <div className=\"product-description-table\">\n                        <div className=\"brand-container\">\n                            <span className=\"brand\">\n                                <DisplayBrand brand={cts.configurable.material.brand} />\n                            </span>\n                        </div>\n                        <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                            <div className=\"product\">\n                                <span className=\"product-title\">\n                                    {getConfigLineName(cts.configurable)}\n                                </span>\n                            </div>\n                            <div>\n                                <span className=\"technical\">\n                                    <Translation id=\"customized\" defaultMessage=\"Custom\" />\n                                </span>\n                            </div>\n                        </div>\n\n                        {orderLine.material_id && (\n                            <div className=\"product-id\">\n                                <span>\n                                    <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                </span>\n                                :&nbsp;\n                                <span>\n                                    {orderLine.material_id}\n                                </span>\n                            </div>\n                        )}\n\n                        <div>\n                            <span className=\"qty\">\n                                <Translation id=\"quantity\" defaultMessage=\"Quantity\" />:&nbsp;\n                                {handleOrderLineQuantity(orderLine)}\n                            </span>\n                        </div>\n                        <div className=\"price\">\n                            <span>\n                                <Translation id=\"price\" defaultMessage=\"Price\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {displayPrice(orderLine)}\n                            </span>\n                        </div>\n                        {/* For tablet screen */}\n                        <div className=\"d-block-only-tablet\">{additionalInfoBlock(orderLine)}</div>\n                    </div>\n                </div>\n                {/* For mobile screen */}\n                <div className=\"d-block-only-mobile\">\n                    <div className=\"order-divider-x\"></div>\n                    {additionalInfoBlock(orderLine)}\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    const additionalInfoBlock = orderLine => {\n        return (\n            <div className=\"order__shipping__details__table--additional\">\n                <div>\n                    {\n                        orderLine.segmentation && <LineSegmentation line={orderLine} showAsList />\n                    }\n                </div>\n                <div className=\"comments\">\n                    <span>\n                        <Translation id=\"comments\" defaultMessage=\"Comments\" />\n                        :&nbsp;\n                    </span>\n                    <span>{orderLine.comments ? orderLine.comments : '--'}</span>\n                </div>\n                {editModePreferredDeliveryDatePosition(orderLine)}\n            </div>\n        )\n    }\n\n    const editModeQuantityPosition = orderLine => {\n        const editLine = getOrderToEditLine(orderLine)\n\n        if (orderLine.product) {\n            if (orderLine.product.lotId && orderLine.product.lotId !== '') {\n                return (\n                    <div className=\"lotid__editmode\">\n                        <span>\n                            <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                            :&nbsp;\n                        </span>\n                        <span>{orderLine.product.lotId}</span>\n                    </div>\n                )\n            } else if (orderLine.product.bundleId && orderLine.product.bundleId !== '') {\n                return (\n                    <div className=\"bundleid__editmode\">\n                        <span>\n                            <Translation id=\"bundle_id\" defaultMessage=\"bundle ID\" />\n                            :&nbsp;\n                        </span>\n                        <span>{orderLine.product.bundleId}</span>\n                    </div>\n                )\n            } else if (canEditPosition(orderLine.Posnr)) {\n                return (\n                    <div className=\"edit-mode-position-number\">\n                        <InputNumber key={orderLine.Posnr + '' + editLine.quantity} value={editLine.quantity} change={qty => onLineChangeValue(orderLine.Posnr, 'qty', qty)} />\n                    </div>\n                )\n            }\n        }\n\n        return editLine ? <ModifiedLineIndicator orderLine={orderLine} /> : null\n    }\n\n    const editModeRejectPosition = orderLine => {\n        const editLine = getOrderToEditLine(orderLine)\n\n        if (canEditPosition(orderLine.Posnr)) {\n            if (!editLine.rejected) {\n                return (\n                    <div className=\"edit-mode-reject-pos\">\n                        <button onClick={() => onLineChangeValue(orderLine.Posnr, 'rejected', editLine.rejected)} gtm-label=\"ec_historial_pedidos_eliminar_producto\">\n                            <i className=\"fal fa-trash-alt\" />\n                            <span>\n                                <Translation id=\"delete\" defaultMessage=\"Remove\" />\n                            </span>\n                        </button>\n                    </div>\n                )\n            } else {\n                return (\n                    <div className=\"edit-mode-undo-pos\">\n                        <button onClick={() => onLineChangeValue(orderLine.Posnr, 'rejected', editLine.rejected)}>\n                            <i className=\"fal fa-undo\" />\n                            <span>\n                                <Translation id=\"restore\" defaultMessage=\"Restore\" />\n                            </span>\n                        </button>\n                    </div>\n                )\n            }\n        } else return null\n    }\n\n    const editModePreferredDeliveryDatePosition = (orderLine) => {\n        const orderLineId = orderLine.uuid\n        const orderLinePositionId = orderLine.Posnr\n        const orderLineEstimateDeliveryDate = orderLine.status.date ? moment(orderLine.status.date) : null\n        const orderLinePreferredDeliveryDate = preferredDeliveryDates[orderLineId] || null\n\n        return (\n            <div>\n                <div className=\"individual-preferred-delivery-date\">\n                    <div>\n                        <span>\n                            <Translation id=\"prefered_delivery_date\" defaultMessage=\"Preferred delivery date\" />\n                            :&nbsp;\n                        </span>\n                    </div>\n                    <div className=\"input-date\">\n                        <span data-tip={intl.formatMessage({\n                                id: 'for_full_trucks_or_containers_desired_delivery_date_get_affect',\n                                defaultMessage: 'For full trucks or containers, the desired delivery date affects all items in your order. You can modify the delivery date for all products on the block on the left.'\n                            })}\n                                data-for={orderLineId}\n                            >\n                            <DatePicker\n                                selected={orderLinePreferredDeliveryDate}\n                                onChange={date => onChangePreferredDeliveryDate(orderLineId, date, orderLinePositionId)}\n                                className=\"form-control preferred-date-input\"\n                                onKeyDown={e => e.preventDefault()}\n                                dropdownMode=\"select\"\n                                disabled={isIndividualPreferredDeliveryDatePickerDisabled || isImpersonateBy()}\n                                placeholderText={intl.formatMessage({ id: 'select_individual_date' })}\n                                minDate={getNextWorkingDay(1)}\n                            />\n                                {isIndividualPreferredDeliveryDatePickerDisabled && (\n                                    <ReactTooltip id={orderLineId} effect=\"solid\" place=\"bottom\" className=\"delivery__date__tooltip\" />\n                                )}\n                            </span>\n                   </div>\n                </div>\n               \n                {orderLinePreferredDeliveryDate && orderLineEstimateDeliveryDate && orderLineEstimateDeliveryDate.isAfter(orderLinePreferredDeliveryDate.endOf('day')) && (\n                    <div className=\"prefered-date-advertisement\" style={{ marginTop: '8px'}}>\n                    <i className=\"mt-1 far fa-exclamation-triangle fa-1x\"></i>\n                        <Translation\n                            id=\"desired_date_advertisement\"\n                            defaultMessage=\"You have chosen a different date than the estimated delivery. We cannot guarantee this delivery date, but we will try to accommodate your request\"\n                        />\n                    </div>\n                )}\n            </div>\n        )\n    }\n\n    return (\n        <React.Fragment>\n            {orderLines && (\n                <section className=\"order__shipping__details__table edit-mode-table\">\n                    <div className=\"order__shipping__details__table--global-preferred-delivery-date\">\n                        <div className=\"label-text\">\n                            <span><Translation id=\"prefered_delivery_date\" defaultMessage=\"Preferred delivery date\" />: </span>\n                        </div>\n                        <div className=\"input-date\">\n                            <DatePicker\n                                selected={globalPreferredDeliveryDate}\n                                onChange={(date) => handleGlobalDateChange(date)}\n                                className=\"form-control preferred-date-input\"\n                                onKeyDown={e => e.preventDefault()}\n                                dropdownMode=\"select\"\n                                placeholderText={intl.formatMessage({ id: 'select_global_date' })}\n                                disabled={isImpersonateBy()}\n                                minDate={getNextWorkingDay(1)}\n                            />\n                        </div>\n                    </div>\n                    <table className=\"order__shipping__details__table--table\">\n                        <thead>\n                            <tr className=\"order__shipping__details__table--heading\">\n                                <th className=\"th-description\">\n                                    <Translation id=\"description\" defaultMessage=\"Description\" />\n                                </th>\n                                <th className=\"th-addional-info\">\n                                    <Translation id=\"additional_information\" defaultMessage=\"Additional Information\" />\n                                </th>\n                            </tr>\n                        </thead>\n                        <tbody>\n                            {orderLines.length > 0 &&\n                                orderLines.map((orderLine, idx) => {\n                                    return (\n                                        <React.Fragment>\n                                            <tr key={idx} className={`${getOrderToEditLine(orderLine) && getOrderToEditLine(orderLine).rejected ? 'position-rejected' : ''}`}>\n                                                <div className=\"order-details-divider-x\"></div>\n                                                <td className=\"td-description\">\n                                                    {orderLine.cut_to_size && orderLine.cut_to_size.configurable ? (\n                                                        descriptionBlockConfigBath(orderLine)\n                                                    ) : orderLine.cut_to_size ? (\n                                                        cutToSizeDescriptionBlock(orderLine)\n                                                    ) : (\n                                                        descriptionBlock(orderLine)\n                                                    )}\n                                                </td>\n                                                <td className=\"td-additional-info\">{additionalInfoBlock(orderLine)}</td>\n                                                <td className=\"td-position-actions\">\n                                                    {orderLine.product && (\n                                                        <React.Fragment>\n                                                            {editModeQuantityPosition(orderLine)}\n                                                            {editModeRejectPosition(orderLine)}\n                                                        </React.Fragment>\n                                                    )}\n                                                </td>\n                                            </tr>\n                                        </React.Fragment>\n                                    )\n                                })}\n                        </tbody>\n                    </table>\n                </section>\n            )}\n        </React.Fragment>\n    )\n}\n\nexport default injectIntl(NewOrderDetailsEditMode)\n","/**\n * Order status for order history\n */\nexport const OrderStatus = {\n    Created: 'CREATED',\n    Approved: 'APPROVED',\n    Pending: 'PENDING',\n    In_process: 'IN_PROCESS',\n    Partially_delivered: 'PARTIALLY_DELIVERED',\n    Delivered: 'DELIVERED',\n    Order_cancelled: 'ORDER_CANCELLED'\n}","import React from 'react'\nimport Joyride, { ACTIONS, EVENTS } from 'react-joyride'\nimport * as CustomStyles from '../styles/CustomStyles'\nimport { connect } from 'react-redux'\nimport { submitWalkthrough } from '../../../store/ui/actions'\nimport { getHasWalkthrough } from '../../../store/login/reducers'\nimport { fetchHasWalkthrough } from '../../../store/login/actions'\nimport Translation from '../../global/Translation'\n\nconst mapStateToProps = (state) => {\n    return {\n        hasWalkthrough: getHasWalkthrough(state, 'ORDER_DETAILS')\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onSubmitWalkthrough: (type, noShowMore) => dispatch(submitWalkthrough(type, noShowMore)),\n        refreshData: () => dispatch(fetchHasWalkthrough())\n    }\n}\n\nclass OrderDetailsWalkthrough extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            stepIndex: 0,\n            type: 'ORDER_DETAILS'\n        }\n    }\n\n    /**\n     *  Body content for step one\n     */\n    stepOneContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content__main\">\n                <div className=\"walkthrough__tooltip__content__main--heading\">\n                    <h2><Translation id=\"walkthrough_view_in_detail_all_the_information_of_your_order\" defaultMessage=\"View in detail all the information of your order\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content__main--info\">\n                    <span><Translation id=\"walkthrough_order_number_address_quality\" defaultMessage=\"Order number, address, quantity of products, your comments etc...\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Body content for step two\n     */\n    stepTwoContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"delivery_information\" defaultMessage=\"Delivery information\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span><Translation id=\"walkthrough_here_you_can_check_the_status_of_your_product\" defaultMessage=\"Here you can check the status of your product, its delivery date and you can even access the shipment details.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Body content for step three\n     */\n    stepThreeContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"the_content_of_your_order\" defaultMessage=\"The content of your order\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span><Translation id=\"walkthrough_viw_the_content_of_your_order_at_any_time\" defaultMessage=\"View the content of your order at any time. You will also be able to modify it if you do not have any delivery planned yet.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Determines which step content to display\n     * @returns boolean\n     */\n    breakpointIndicator = () => {\n        if (window.innerWidth <= 767) return true\n        return false\n    }\n    \n    // Desktop version\n    stepTwoDesktop = {\n        content: this.stepTwoContent(),\n        locale: {\n            next: <span aria-label=\"next\"><Translation id=\"next\" defaultMessage=\"Next\" /></span>,\n            back: <span aria-label=\"back\"><Translation id=\"back\" defaultMessage=\"Back\" /></span>\n        },\n        target: '.td-delivery-info',\n        styles: {\n            buttonSkip: {\n                display: 'none'\n            }\n        }\n    }\n\n    // Responsive version\n    stepTwoResponsive = {\n        content: this.stepTwoContent(),\n        locale: {\n            next: <span aria-label=\"next\"><Translation id=\"next\" defaultMessage=\"Next\" /></span>,\n            back: <span aria-label=\"back\"><Translation id=\"back\" defaultMessage=\"Back\" /></span>\n        },\n        target: '.order__shipping__details__table--shippings',\n        styles: {\n            buttonSkip: {\n                display: 'none'\n            }\n        }\n    }\n\n    /**\n     * steps\n     */\n    steps = {\n        steps: [\n            {\n                content: this.stepOneContent(),\n                locale: {\n                    next: <span aria-label=\"next\"><Translation id=\"get_started\" defaultMessage=\"Get started\" /></span>,\n                    skip: <span aria-label=\"skip\"><Translation id=\"do_not_show_again\" defaultMessage=\"Do not show again\" /></span>\n                },\n                target: '.order__shipping__details__boxresume',\n            },\n            this.breakpointIndicator() ? this.stepTwoResponsive : this.stepTwoDesktop,\n            {\n                content: this.stepThreeContent(),\n                locale: {\n                    last: <span aria-label=\"last\"><Translation id=\"understood\" defaultMessage=\"Understood\" /></span>,\n                    back: <span aria-label=\"back\"></span>\n                },\n                target: '.order__shipping__details__table',\n                styles: {\n                    buttonSkip: {\n                        display: 'none'\n                    }\n                }\n            }\n        ]\n    }\n\n    /**\n     * Callback function to manipulate the walkthrough logic\n     */\n    handleJoyrideCallback = data => {\n        const { action, index, type } = data\n\n        const endStatus = [EVENTS.TOUR_END]\n\n        if ([EVENTS.STEP_AFTER, EVENTS.TARGET_NOT_FOUND].includes(type)) {\n            this.setState({ stepIndex: index + (action === ACTIONS.PREV ? -1 : 1) })\n        }\n\n        if (index === 0) {\n            if (endStatus.includes(type)) {\n                this.props.onSubmitWalkthrough(this.state.type, true).then(() => this.props.refreshData())\n            }\n        } else if (endStatus.includes(type)) {\n            this.props.onSubmitWalkthrough(this.state.type, false).then(() => this.props.refreshData())\n        }\n    }\n\n    render() {\n        const { steps } = this.steps\n        const { hasWalkthrough } = this.props\n\n        return hasWalkthrough && hasWalkthrough.shouldShow ? (\n            <React.Fragment>\n                <Joyride\n                    callback={this.handleJoyrideCallback}\n                    continuous\n                    showProgress\n                    steps={steps}\n                    styles={{\n                        tooltip: CustomStyles.TooltipStyles,\n                        tooltipContent: CustomStyles.TooltipContentStyles,\n                        options: CustomStyles.OptionStyles,\n                        buttonNext: CustomStyles.ButtonNextStyles,\n                        buttonBack: CustomStyles.ButtonBackStyles,\n                        tooltipFooter: CustomStyles.TooltipFooterStyles,\n                        spotlight: CustomStyles.SpotlightSyles\n                    }}\n                    disableScrolling\n                    showSkipButton\n                />\n            </React.Fragment>\n        ) : null\n    }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OrderDetailsWalkthrough)","import React from 'react'\nimport {injectIntl, defineMessages, FormattedHTMLMessage} from 'react-intl'\nimport ProfileContainer from '../../../profile/ProfileContainer'\nimport Spinner from '../../../global/Spinner'\nimport LocalizedLink from '../../../global/LocalizedLink'\nimport Translation from '../../../global/Translation'\nimport ProductImage from '../../../catalog/ProductImage'\nimport { addForwardSlash, DisplayShippingAddress, CUT_TO_SIZE_MATERIALS, getConfigLineName } from '../Utils'\nimport ProductDisplayName from '../../../global/ProductDisplayName'\nimport { ReactComponent as ShippingTruckIcon } from '../../../../assets/img/order-history/shipping-truck.svg'\nimport { ReactComponent as PrintIcon } from '../../../../assets/img/order-history/print-icon.svg'\nimport confirm from '../../../global/extendedConfirm'\nimport moment from 'moment'\nimport Modal from '../../../global/Modal'\nimport ReactTable from 'react-table'\nimport DisplayOutletIndicator from '../../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport ReactTablePaginationCount from '../../../promotions/discounts/ReactTablePaginationCount'\nimport NewOrderDetailsEditMode from './NewOrderDetailsEditMode'\nimport * as CutToSizeMaps from '../../../cut-to-size/CutToSizeMaps'\nimport DisplayThickness from '../../../catalog/rectangleResult/displays/DisplayThickness'\nimport Timeline from \"../../Timeline\";\nimport { OrderLineStatus } from '../Enums/OrderLineStatus'\nimport { OrderStatus } from '../Enums/OrderStatus'\nimport Alerts from '../../../alerts/Alerts'\nimport OrderDetailsWalkthrough from '../../../walkthroughs/order/OrderDetailsWalkthrough'\nimport {capitalizeFirstLetter} from '../../../../helpers'\nimport {ElaborationOptionsMapById} from \"../../../cut-to-size/CutToSizeMaps\";\nimport LineSegmentation from \"../../../cart-line/LineSegmentation\";\nimport ModalConfigurationDetails from '../../../cut-to-size/configurable-baths/ModalConfigurationDetails'\nimport NaturalStoneIndicator from '../../../cart-line/indicators/NaturalStoneIndicator'\nimport DisplayBrand from '../../../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayDiscontinued from '../../../catalog/rectangleResult/displays/DisplayDiscontinued'\nimport CustomProductIndicator from '../../../cart-line/indicators/CustomProductIndicator'\nimport DisplayQuickShipIndicator from '../../../catalog/rectangleResult/displays/DisplayQuickShipIndicator'\nimport mallLarge from '../../../../assets/img/logos/mall-large.jpg'\n\n// Internal and external component\nexport const ModifiedLineIndicator = props => {\n    const { orderLine } = props\n\n    if (orderLine) {\n        let lineIndicator = null\n        let orderLineStatus = orderLine.status && orderLine.status.status\n\n        if (parseInt(orderLine.reservation_quantity) !== parseInt(orderLine.quantity)) {\n            lineIndicator = (\n                <div className=\"product__modified\">\n                    <div className=\"dot-icon\"></div>\n                    <span>\n                        <Translation id=\"product_modified\" defaultMessage=\"Product modified\" />\n                    </span>\n                </div>\n            )\n        }\n\n        if (parseInt(orderLine.reservation_quantity) === 0 && parseInt(orderLine.quantity) > 0) {\n            lineIndicator = (\n                <div className=\"product__added\">\n                    <div className=\"dot-icon\"></div>\n                    <span>\n                        <Translation id=\"product_added_by_center\" defaultMessage=\"Product added by center\" />\n                    </span>\n                </div>\n            )\n        }\n\n        if (orderLineStatus === OrderLineStatus.Order_cancelled && orderLine.reject_reason === 'D1') {\n            lineIndicator = (\n                <div className=\"product__cancelled__basic\">\n                    <div className=\"dot-icon\"></div>\n                    <span>\n                        <Translation id=\"product_canceled_by_user\" defaultMessage=\"Product canceled by user\" />\n                    </span>\n                </div>\n            )\n        }\n\n        if (orderLineStatus === OrderLineStatus.Order_cancelled && orderLine.reject_reason !== 'D1') {\n            lineIndicator = (\n                <div className=\"product__cancelled\">\n                    <div className=\"product__cancelled--icon-text\">\n                        <div className=\"dot-icon\"></div>\n                        <span>\n                            <Translation id=\"product_canceled_by_center\" defaultMessage=\"Product cancelled by center\" />\n                        </span>\n                    </div>\n                    <div className=\"product__cancelled--comment\">\n                        <span>\n                            <Translation id=\"product_canceled_by_center_comment\" defaultMessage=\"This product has been cancelled by the center at your request.\" />\n                        </span>\n                    </div>\n                </div>\n            )\n        }\n\n        return lineIndicator\n    }\n    return false\n}\n\ndefineMessages({\n    CONFIRM_REJECT_ORDER: {\n        id: 'CONFIRM_REJECT_ORDER',\n        description: 'CONFIRM_REJECT_ORDER',\n        defaultMessage: 'Are you sure you want to cancel this order completely?'\n    },\n    CONFIRM_REJECT_ORDER_SECOND_MSG: {\n        id: 'CONFIRM_REJECT_ORDER_SECOND_MSG',\n        description: 'CONFIRM_REJECT_ORDER_SECOND_MSG',\n        defaultMessage: 'By clicking on “Yes, cancel the order” your order will be canceled once we have reviewed your request'\n    },\n    CONFIRM_REJECT_ORDER_CANCEL_BUTTON: {\n        id: 'CONFIRM_REJECT_ORDER_CANCEL_BUTTON',\n        description: 'CONFIRM_REJECT_ORDER_CANCEL_BUTTON',\n        defaultMessage: 'No, keep the order'\n    },\n    CONFIRM_REJECT_ORDER_SAVE_BUTTON: {\n        id: 'CONFIRM_REJECT_ORDER_SAVE_BUTTON',\n        description: 'CONFIRM_REJECT_ORDER_SAVE_BUTTON',\n        defaultMessage: 'Yes, cancel the order'\n    },\n\n    CONFIRM_DISCARD_CHANGES_EDIT_ORDER: {\n        id: 'CONFIRM_DISCARD_CHANGES_EDIT_ORDER',\n        description: 'CONFIRM_DISCARD_CHANGES_EDIT_ORDER',\n        defaultMessage: 'Are you sure you want to discard the changes?'\n    },\n    CONFIRM_DISCARD_CHANGES_EDIT_ORDER_CANCEL_BUTTON: {\n        id: 'CONFIRM_DISCARD_CHANGES_EDIT_ORDER_CANCEL_BUTTON',\n        description: 'CONFIRM_DISCARD_CHANGES_EDIT_ORDER_CANCEL_BUTTON',\n        defaultMessage: 'No, keep changes'\n    },\n    CONFIRM_DISCARD_CHANGES_EDIT_ORDER_SAVE_BUTTON: {\n        id: 'CONFIRM_DISCARD_CHANGES_EDIT_ORDER_SAVE_BUTTON',\n        description: 'CONFIRM_DISCARD_CHANGES_EDIT_ORDER_SAVE_BUTTON',\n        defaultMessage: 'Yes, discard changes'\n    },\n    CONFIRM_SAVE_CHANGES: {\n        id: 'CONFIRM_SAVE_CHANGES',\n        description: 'CONFIRM_SAVE_CHANGES',\n        defaultMessage: 'Are you sure you want to save the changes?'\n    },\n    CONFIRM_SAVE_CHANGES_SECOND_MSG: {\n        id: 'CONFIRM_SAVE_CHANGES_SECOND_MSG',\n        description: 'CONFIRM_SAVE_CHANGES_SECOND_MSG',\n        defaultMessage: 'By clicking \"Yes, save changes\" these changes will be applied once we have reviewed your request.'\n    },\n    CONFIRM_SAVE_CHANGES_EDIT_ORDER_CANCEL_BUTTON: {\n        id: 'CONFIRM_SAVE_CHANGES_EDIT_ORDER_CANCEL_BUTTON',\n        description: 'CONFIRM_SAVE_CHANGES_EDIT_ORDER_CANCEL_BUTTON',\n        defaultMessage: 'No, keep editing'\n    },\n    CONFIRM_SAVE_CHANGES_EDIT_ORDER_SAVE_BUTTON: {\n        id: 'CONFIRM_SAVE_CHANGES_EDIT_ORDER_SAVE_BUTTON',\n        description: 'CONFIRM_SAVE_CHANGES_EDIT_ORDER_SAVE_BUTTON',\n        defaultMessage: 'Yes, save changes'\n    },\n    order_in_process_of_modification_warning: {\n        id: 'order_in_process_of_modification_warning',\n        description: 'order_in_process_of_modification_warning',\n        defaultMessage: 'Order in process of modification. Information on dates and status of materials may not be accurate.'\n    },\n    select_global_date: {\n        id: 'select_global_date',\n        description: 'select_global_date',\n        defaultMessage: 'Global date'\n    },\n    select_individual_date: {\n        id: 'select_individual_date',\n        description: 'select_individual_date',\n        defaultMessage: 'Individual date'\n    }\n})\n\nclass NewOrderDetails extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            showInvoiceModal: false,\n            editOrderMode: false,\n            orderWeightError: false,\n            showShippingsModal: false,\n            shouldRenderWalkthrough: false,\n            showConfigBathModal: false,\n            currentOrderLine: null,\n        }\n        this.getOrderInvoiceDownloadUrl = this.getOrderInvoiceDownloadUrl.bind(this)\n    }\n\n    componentDidMount() {\n        this.fetchOrderDetailsFn()\n        this.props.setIsOrderHistoryScreen(true)\n    }\n\n    fetchOrderDetailsFn() {\n        this.props.fetchOrderDetails(this.props.reservationId).then(() => {\n            this.setState({ shouldRenderWalkthrough: true })\n            this.props.fetchOrderToEdit(this.props.order.orderId)\n        })\n    }\n\n    componentWillUnmount() {\n        this.props.setIsOrderHistoryScreen(false)\n    }\n\n    getOrderInvoiceDownloadUrl(invoiceNum) {\n        // return process.env.REACT_APP_API_HOST + '/users/order-invoice/' + invoiceNum + '/?authToken=' + this.props.token\n        return process.env.REACT_APP_API_HOST + '/users/order-invoice/' + invoiceNum\n    }\n\n    showShippingsModal = () => {\n        this.setState({showShippingsModal: true})\n    }\n\n    closeShippingsModal = () => {\n        this.setState({showShippingsModal: false})\n    }\n\n    showInvoiceModal = () => {\n        this.setState({ showInvoiceModal: true })\n    }\n\n    closeInvoiceModal = () => {\n        this.setState({ showInvoiceModal: false })\n    }\n\n    writeOrderBody = printWindow => {\n        printWindow.document.write('<html><head>')\n        printWindow.document.write(document.getElementsByTagName('head')[0].innerHTML)\n        printWindow.document.write('</head><body class=\"order__shipping__details change-elements-print p-4\">')\n        printWindow.document.write(this.orderScreenBody.innerHTML)\n        printWindow.document.write('</body></html>')\n\n        return Promise.resolve(printWindow)\n    }\n\n    // Download or print order\n    downloadPdfOrderBody = () => {\n        let printWindow = window.open('', 'PRINT', 'height=400,width=600')\n        setTimeout(() => {\n            this.writeOrderBody(printWindow).then(printWindow => {\n                setTimeout(() => {\n                    printWindow.focus()\n                    printWindow.print()\n                    printWindow.close()\n                }, 2000)\n            })\n        }, 1000)\n\n        return false\n    }\n\n    // Confirm reject the whole order\n    confirmRejectOrder = (reservationId, orderId, onRejectOrder, intl) => {\n        return confirm(intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER' }), {\n            isV2: true,\n            advise: intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER_SECOND_MSG' }),\n            textCancel: intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER_CANCEL_BUTTON' }),\n            textOk: intl.formatMessage({ id: 'CONFIRM_REJECT_ORDER_SAVE_BUTTON' })\n        }).then(\n            confirm => {\n                return onRejectOrder(reservationId, orderId).then(() => {\n                    this.fetchOrderDetailsFn()\n                })\n            },\n            cancel => {\n                return Promise.reject()\n            }\n        )\n    }\n\n    showPrice = (isEmserUser, order) => !isEmserUser && !CUT_TO_SIZE_MATERIALS.includes(String(order.orderLines.material_id))\n\n    displayPrice = (isEmserUser, order, orderLine) => {\n        if (this.showPrice(isEmserUser, order)) {\n            return (\n                parseInt(orderLine.import) === 0 ? <Translation id=\"not_available\" defaultMessage=\"Not available\" /> : orderLine.import + ' ' +  orderLine.coin\n            )\n        }\n        return <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n    }\n\n    resetChangeInPositions() {\n        this.props.changeOrderInEdition(this.props.orderToEdit)\n    }\n\n    confirmDiscardChanges = intl => {\n        return confirm(intl.formatMessage({ id: 'CONFIRM_DISCARD_CHANGES_EDIT_ORDER' }), {\n            isV2: true,\n            textCancel: intl.formatMessage({ id: 'CONFIRM_DISCARD_CHANGES_EDIT_ORDER_CANCEL_BUTTON' }),\n            textOk: intl.formatMessage({ id: 'CONFIRM_DISCARD_CHANGES_EDIT_ORDER_SAVE_BUTTON' })\n        }).then(\n            (confirm) => {\n                this.resetChangeInPositions()\n                return this.setState({ editOrderMode: !this.state.editOrderMode })\n            },\n            cancel => {\n                return Promise.reject()\n            }\n        )\n    }\n\n    confirmSaveChanges = (orderInEdition, orderId, reservationId, onSaveChange, intl) => {\n        return confirm(intl.formatMessage({ id: 'CONFIRM_SAVE_CHANGES' }), {\n            isV2: true,\n            advise: intl.formatMessage({ id: 'CONFIRM_SAVE_CHANGES_SECOND_MSG' }),\n            textCancel: intl.formatMessage({ id: 'CONFIRM_SAVE_CHANGES_EDIT_ORDER_CANCEL_BUTTON' }),\n            textOk: intl.formatMessage({ id: 'CONFIRM_SAVE_CHANGES_EDIT_ORDER_SAVE_BUTTON' })\n        }).then(\n            confirm => {\n                return onSaveChange(orderInEdition, orderId, reservationId).then(() => {\n                    this.fetchOrderDetailsFn()\n                    this.setState({ editOrderMode: !this.state.editOrderMode })\n                    }\n                )\n            },\n            cancel => {\n                return Promise.reject()\n            }\n        )\n    }\n\n    onChangeValue = (positionId, input, value) => {\n        let changedOrderInEdition = this.props.orderInEdition.map(item => {\n            if (item.position === positionId) {\n                switch (input) {\n                    case 'rejected':\n                        return { ...this.props.orderInEdition.find(ele => ele.position === item.position), rejected: !value }\n                    case 'qty':\n                        if (isNaN(value) || value === '') value = 0\n                        return { ...item, quantity: value }\n                    case 'preferredDeliveryDate':\n                        return { ...item, preferredDeliveryDate: value }\n                    default:\n                        return item\n                }\n            } else return item\n        })\n\n        this.props.changeOrderInEdition(changedOrderInEdition)\n\n        if (this.props.canEditOrderMinMax()) {\n            this.setState({ orderWeightError: false })\n        } else {\n            this.setState({ orderWeightError: true })\n        }\n    }\n\n    canEditPositon = position => {\n        if (!this.props.orderToEdit) {\n            return false\n        }\n\n        let positionToEdit = this.props.orderToEdit.find(ele => ele.position === position)\n\n        if (!positionToEdit) {\n            return false\n        }\n\n        return !positionToEdit.rejected\n    }\n\n    thicknessFormatIntl = orderLine => {\n        if (!orderLine.product.thickness) return null\n        return this.props.replaceDotWithComma(orderLine.product.thickness, this.props.locale) + ' cm'\n    }\n\n    finishFormatIntl = (orderLine) => {\n        if (!orderLine.product.finish) return null\n        return this.props.intl.formatMessage({ id: orderLine.product.finish })\n    }\n\n    zaddonFormatIntl = (orderLine) => {\n        if (orderLine.product.zaddon !== 'MAL') return null\n        return this.props.intl.formatMessage({ id: 'MAL' })\n    }\n\n    productFormatIntl = orderLine => {\n        if (!orderLine.product.format) return null\n        return this.props.adaptedFormat(orderLine.product.format, { upper: true, showUnits: true })\n    }\n\n    subtypeFormatIntl = orderLine => {\n        if (!orderLine.product.subtypeName) return null\n        return this.props.intl.formatMessage({ id: orderLine.product.subtypeName })\n    }\n\n    showBtnToDetails = orderLine => {\n        if (orderLine.delivery_id && !this.props.isIkeaCenter) return true\n        return false\n    }\n\n    handleBtnToDetailsOnClick = orderLine => {\n        this.props.redirect(\n            this.props.intl\n                .formatMessage({ id: 'ROUTE_SHIPPING_DETAILS' })\n                .replace(':filter', 'view-shipping')\n                .replace(':deliveryId', orderLine.delivery_id)\n        )\n    }\n\n    deliveryStatusLinksEstimatedOn = orderLine => {\n        return (\n            <div className=\"shipping__date__url\">\n                <div className=\"shipping__date__url--content\">\n                    <div className=\"date-column\">\n                        <span>\n                            <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                        </span>\n                        :&nbsp;\n                        <span>\n                            {moment(orderLine.status.date).isSame(moment(), 'day') ? <Translation id=\"today\" defaultMessage=\"Today\" /> : moment(orderLine.status.date).format('L')}\n                        </span>\n                    </div>\n                    {this.showBtnToDetails(orderLine) && (\n                        <div className=\"delivery-id-column\">\n                            <span>\n                                <button\n                                    onClick={() => {\n                                        this.handleBtnToDetailsOnClick(orderLine)\n                                    }}\n                                >\n                                    <Translation id=\"view_shipping\" defaultMessage=\"View shipping\" />\n                                </button>\n                            </span>\n                        </div>\n                    )}\n                </div>\n            </div>\n        )\n    }\n\n    deliveryStatusLinksDeliveredOn = orderLine => {\n        return (\n            <div className=\"shipping__date__url\">\n                <div className=\"shipping__date__url--content\">\n                    <div className=\"date-column\">\n                        <span>\n                            <Translation id=\"delivered_on\" defaultMessage=\"Delivered on\" />\n                        </span>\n                        :&nbsp;\n                        <span>\n                            {moment(orderLine.status.date).isSame(moment(), 'day') ? <Translation id=\"today\" defaultMessage=\"Today\" /> : moment(orderLine.status.date).format('L')}\n                        </span>\n                    </div>\n                    {this.showBtnToDetails(orderLine) && (\n                        <div className=\"delivery-id-column\">\n                            <span>\n                                <button\n                                    onClick={() => {\n                                        this.handleBtnToDetailsOnClick(orderLine)\n                                    }}\n                                >\n                                    <Translation id=\"view_shipping\" defaultMessage=\"View shipping\" />\n                                </button>\n                            </span>\n                        </div>\n                    )}\n                </div>\n            </div>\n        )\n    }\n\n    deliveryStatusLinksPartially = (orderLine, limitDeliveries = 0) => {\n        let deliveries = orderLine.status.deliveries\n        let deliveriesEntries = deliveries && Object.entries(deliveries)\n\n        return (\n            <div className=\"shipping__date__url__partially\">\n                {(limitDeliveries ? deliveriesEntries.slice(0 , limitDeliveries) : deliveriesEntries).map((delivery, index) => {\n                    return (\n                        <div className=\"shipping__date__url__partially--container\">\n                            <div>\n                                {delivery[1].status === 'TREATED_COMPLETELLY' ? (\n                                    <React.Fragment>\n                                        <span>\n                                            <Translation id=\"delivered_on\" defaultMessage=\"Delivered on\" />\n                                        </span>\n                                        :&nbsp;\n                                        <span>\n                                            {moment(delivery[1].date).isSame(moment(), 'day') ? (\n                                                <Translation id=\"today\" defaultMessage=\"Today\" />\n                                            ) : (\n                                                moment(delivery[1].date).format('L')\n                                            )}\n                                        </span>\n                                    </React.Fragment>\n                                ) : delivery[1].status === 'TREATED_PARTIALLY' ? (\n                                    <React.Fragment>\n                                        <span>\n                                            <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                                        </span>\n                                        :&nbsp;\n                                        <span>\n                                            {moment(delivery[1].date).isSame(moment(), 'day') ? (\n                                                <Translation id=\"today\" defaultMessage=\"Today\" />\n                                            ) : (\n                                                moment(delivery[1].date).format('L')\n                                            )}\n                                        </span>\n                                    </React.Fragment>\n                                ) : delivery[1].status === 'NOT_TREATED' && delivery[1].date && delivery[1].date !== null ? (\n                                    <React.Fragment>\n                                        <span>\n                                            <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                                        </span>\n                                        :&nbsp;\n                                        <span>\n                                            {moment(delivery[1].date).isSame(moment(), 'day') ? (\n                                                <Translation id=\"today\" defaultMessage=\"Today\" />\n                                            ) : (\n                                                moment(delivery[1].date).format('L')\n                                            )}\n                                        </span>\n                                    </React.Fragment>\n                                ) : delivery[1].status === 'NOT_TREATED' && (!delivery[1].date || delivery[1].date === null) ? (\n                                    <div className=\"shipping__status__gray\">\n                                        <div>\n                                            <ShippingTruckIcon />\n                                        </div>\n                                        <div>\n                                            <span>\n                                                <Translation id=\"no_planned_delivery\" defaultMessage=\"No planned delivery\" />\n                                            </span>\n                                        </div>\n                                    </div>\n                                ) : null}\n                            </div>\n                            {delivery[0] && (\n                                <div className=\"shipping__date__url__partially--shipment\">\n                                    <span>\n                                        <button\n                                            onClick={() => {\n                                                if (!this.props.isIkeaCenter) {\n                                                    this.props.redirect(\n                                                        this.props.intl\n                                                        .formatMessage({ id: 'ROUTE_SHIPPING_DETAILS' })\n                                                        .replace(':filter', 'view-shipping')\n                                                        .replace(':deliveryId', delivery[0])\n                                                    )\n                                                }\n                                            }}\n                                        >\n                                            <Translation id=\"view_shipping\" defaultMessage=\"View shipping\" />\n                                        </button>                                     \n                                    </span>\n                                </div>\n                            )}\n                        </div>\n                    )\n                })}\n            </div>\n        )\n    }\n\n    deliveryStatusLogic = (orderLine) => {\n        let status = orderLine.status && orderLine.status.status\n        let date = orderLine.status && orderLine.status.date\n        let deliveryId = orderLine.delivery_id\n        let deliveries = orderLine.status && orderLine.status.deliveries\n        let deliveriesEntries = deliveries && Object.entries(deliveries)\n        let limitDeliveries = 3\n        const isQuickShip = !!(orderLine.cut_to_size && orderLine.cut_to_size.configurable && orderLine.cut_to_size.configurable.thirdParty)\n\n        if (isQuickShip\n            && status != OrderLineStatus.Order_cancelled\n            && status != OrderLineStatus.Delivered\n            && status != OrderLineStatus.Partially_delivered\n        ) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__gray\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <FormattedHTMLMessage\n                                    id=\"estimated_delivery_on_4_weeks\"\n                                    defaultMessage=\"Estimated delivery on <b>2-4 weeks</b>\"\n                                />\n                            </span>\n                        </div>\n                    </div>\n                </div>\n            )\n        }\n\n        if (status === OrderLineStatus.Created && date == null) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__gray\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"no_planned_delivery\" defaultMessage=\"No planned delivery\" />\n                            </span>\n                        </div>\n                    </div>\n                </div>\n            )\n        }\n\n        if (status === OrderLineStatus.Created && date !== null) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__blue\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>{moment(date).isSame(moment(), 'day') ? <Translation id=\"today\" defaultMessage=\"Today\" /> : moment(date).format('L')}</span>\n                        </div>\n                    </div>\n                    {date && deliveryId && this.deliveryStatusLinksEstimatedOn(orderLine)}\n                </div>\n            )\n        }\n\n        if (status === OrderLineStatus.Approved && date == null) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__gray\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"no_planned_delivery\" defaultMessage=\"No planned delivery\" />\n                            </span>\n                        </div>\n                    </div>\n                </div>\n            )\n        }\n\n        if (status === OrderLineStatus.Approved && date !== null) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__blue\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>{moment(date).isSame(moment(), 'day') ? <Translation id=\"today\" defaultMessage=\"Today\" /> : moment(date).format('L')}</span>\n                        </div>\n                    </div>\n                    {date && deliveryId && this.deliveryStatusLinksEstimatedOn(orderLine)}\n                </div>\n            )\n        }\n\n        if (status === OrderLineStatus.Pending && date == null) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__gray\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"no_planned_delivery\" defaultMessage=\"No planned delivery\" />\n                            </span>\n                        </div>\n                    </div>\n                </div>\n            )\n        }\n\n        if (status === OrderLineStatus.Pending && date !== null) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__blue\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>{moment(date).isSame(moment(), 'day') ? <Translation id=\"today\" defaultMessage=\"Today\" /> : moment(date).format('L')}</span>\n                        </div>\n                    </div>\n                    {date && deliveryId && this.deliveryStatusLinksEstimatedOn(orderLine)}\n                </div>\n            )\n        }\n\n        if (status === OrderLineStatus.In_process && date == null) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__gray\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"no_planned_delivery\" defaultMessage=\"No planned delivery\" />\n                            </span>\n                        </div>\n                    </div>\n                </div>\n            )\n        }\n\n        if (status === OrderLineStatus.In_process && date !== null) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__blue\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>{moment(date).isSame(moment(), 'day') ? <Translation id=\"today\" defaultMessage=\"Today\" /> : moment(date).format('L')}</span>\n                        </div>\n                    </div>\n                    {date && deliveryId && this.deliveryStatusLinksEstimatedOn(orderLine)}\n                </div>\n            )\n        }\n\n        if (status ===  OrderLineStatus.Delivered) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__green\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"entregado\" defaultMessage=\"Delivered\" />\n                            </span>\n                        </div>\n                    </div>\n                    {date && deliveryId && this.deliveryStatusLinksDeliveredOn(orderLine)}\n                </div>\n            )\n        }\n\n        if (status === OrderLineStatus.Partially_delivered) {\n            return (\n                <div className=\"shipping__status__content\">\n                    <div className=\"shipping__status__blue\">\n                        <div>\n                            <ShippingTruckIcon />\n                        </div>\n                        <div>\n                            <span>\n                                <Translation id=\"order_status_partially_delivered\" defaultMessage=\"Partially delivered\" />\n                            </span>\n                        </div>\n                    </div>\n                    {this.deliveryStatusLinksPartially(orderLine, limitDeliveries)}\n\n                    {deliveriesEntries.length > limitDeliveries && (\n                        <div className=\"partially__see__shippings\">\n                            <button onClick={this.showShippingsModal}>\n                                <span>\n                                    <Translation id=\"view_all_deliveries\" defaultMessage=\"View all deliveries\" />\n                                </span>\n                            </button>\n                        </div>\n                    )}\n\n                    {/* View all shippings Modal */}\n                    {this.state.showShippingsModal && (\n                        <Modal\n                            title={<Translation id=\"delivery_information\" defaultMessage=\"Delivery information\" />}\n                            onClose={this.closeShippingsModal}\n                            customClass=\"delivery__info__modal\"\n                        >\n                            <div>\n                                <div>\n                                    <span className=\"brand\">{orderLine.product && orderLine.product.brand ? capitalizeFirstLetter(orderLine.product.brand) + '&reg;' : ''}</span>\n                                </div>\n                                <div>\n                                    <span className=\"product\">\n                                        {orderLine.product ? (\n                                            <ProductDisplayName product={orderLine.product} />\n                                        ) : (\n                                            ''\n                                        )}\n                                    </span>\n                                </div>\n                            </div>\n                            <div className=\"delivery-divider-x\"></div>\n                            {this.deliveryStatusLinksPartially(orderLine)}\n                        </Modal>\n                    )}\n                </div>\n            )\n        }\n    }\n\n    handleOrderLineQuantity = (orderLine) => {\n        return (\n            <React.Fragment>\n                {orderLine.reservation_quantity ? (\n                    parseInt(orderLine.reservation_quantity) !== parseInt(orderLine.quantity) ? (\n                        orderLine.quantity ? (\n                            <React.Fragment>{parseInt(orderLine.quantity)}</React.Fragment>\n                        ) : (\n                            <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                        )\n                    ) : (\n                        <React.Fragment>{parseInt(orderLine.reservation_quantity)}</React.Fragment>\n                    )\n                ) : (\n                    <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                )}\n            </React.Fragment>\n        )\n    }\n\n    cutToSizeDescriptionBlock = orderLine => {\n        const cts = orderLine.cut_to_size\n        const measures = this.props.getMeasure(cts)\n        const materialName =  ElaborationOptionsMapById[orderLine.material_id] ? this.props.intl.formatMessage(ElaborationOptionsMapById[orderLine.material_id].name) : null\n\n        return (\n            <React.Fragment>\n                <div className=\"order__shipping__details__table--description\">\n                    <div className=\"card__item__productinfo--container\">\n                        <div className=\"product-img\">\n                            <img src={cts.thumb} alt=\"Cut to size\" />\n                        </div>\n                        <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                            <CustomProductIndicator />\n                        </div>\n                    </div>\n\n                    <div className=\"product-description-table\">\n                        <div className=\"brand-container\">\n                            <span className=\"brand\">\n                                <DisplayBrand brand={cts.brand} />\n                            </span>\n                        </div>\n\n                        <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                            <div className=\"product\">\n                                <span>{capitalizeFirstLetter(cts.colorName)}</span>\n                            </div>\n                            {materialName && (\n                                <div>\n                                    <span className=\"technical\">{materialName}</span>\n                                </div>\n                            )}\n                        </div>\n\n                        {orderLine.material_id && (\n                            <div className=\"product-id\">\n                                <span>\n                                    <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                </span>\n                                :&nbsp;\n                                <span>\n                                    {orderLine.material_id}\n                                </span>\n                            </div>\n                        )}\n\n                        {cts.elaboration === 'CUSTOM_MOBILIARIO' && (\n                            <div className=\"cts-custom-mobiliario\">\n                                <span>{this.props.intl.formatMessage(CutToSizeMaps.Messages[cts.elaboration])}</span>&nbsp; (\n                                <span>\n                                    {!!cts.samePattern ? <Translation id=\"extension\" defaultMessage=\"Extension\" /> : <Translation id=\"main_piece\" defaultMessage=\"Main piece\" />}\n                                </span>\n                                )\n                            </div>\n                        )}\n\n                        {measures.format && (\n                            <div className=\"cts-format\">\n                                <span>\n                                    <Translation id=\"format\" defaultMessage=\"Format\" />\n                                </span>\n                                :&nbsp;\n                                <span>{measures.format}</span>\n                            </div>\n                        )}\n\n                        <div className=\"cts-finish\">\n                            <span>\n                                <Translation id=\"finish\" defaultMessage=\"Finish\" />\n                            </span>\n                            :&nbsp;\n                            <span>{this.props.intl.formatMessage({ id: cts.finish })}</span>\n                        </div>\n\n                        {cts.addon === 'MAL' && (\n                            <div className=\"cts-addon\">\n                                <span>\n                                    {this.props.intl.formatMessage({id:'MAL'})}\n                                </span>\n                            </div>\n                        )}\n\n                        <div className=\"cts-thickness\">\n                            <span>\n                                <Translation id=\"thickness\" defaultMessage=\"Thickness\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                <DisplayThickness thickness={cts.thickness} string />\n                            </span>\n                        </div>\n\n                        {measures.radius && (\n                            <div className=\"cts-radius\">\n                                <span>\n                                    <Translation id=\"radius\" defaultMessage=\"Radius\" />\n                                </span>\n                                :&nbsp;\n                                <span>{measures.radius}</span>\n                            </div>\n                        )}\n\n                        {cts.edge && (\n                            <div className=\"cts-edge\">\n                                <span>\n                                    <Translation id=\"edge\" defaultMessage=\"Edge\" />\n                                </span>\n                                :&nbsp;\n                                <span>{this.props.intl.formatMessage(CutToSizeMaps.Messages[cts.edge])}</span>\n                            </div>\n                        )}\n\n                        {cts.bevel && (\n                            <div className=\"cts-bevel\">\n                                <span>\n                                    <Translation id=\"bevel\" defaultMessage=\"Bevel\" />\n                                </span>\n                                :&nbsp;\n                                <span>{this.props.intl.formatMessage(CutToSizeMaps.Messages[cts.bevel])}</span>\n                            </div>\n                        )}\n\n                        {cts.packaging && (\n                            <div className=\"cts-packaging\">\n                                <span>\n                                    <Translation id=\"packaging\" defaultMessage=\"Packaging\" />\n                                </span>\n                                :&nbsp;\n                                <span>{this.props.intl.formatMessage(CutToSizeMaps.Messages[cts.packaging])}</span>\n                            </div>\n                        )}\n\n                        {cts.samePattern === 'YES' && (\n                            <div className=\"cts-pattern\">\n                                <span>\n                                    <Translation id=\"same_pattern\" />\n                                </span>\n                            </div>\n                        )}\n                       \n                        {cts.shape && (\n                            <div className=\"cts-shape\">\n                                <span>\n                                    <Translation id=\"shape\" defaultMessage=\"Shape\" />\n                                </span>\n                                :&nbsp;\n                                <span>{this.props.intl.formatMessage(CutToSizeMaps.Messages[cts.shape])}</span>\n                            </div>\n                        )}\n\n                        {measures.diameter && (\n                            <div className=\"cts-diameter\">\n                                <span>\n                                    <Translation id=\"diameter\" defaultMessage=\"Diameter\" />\n                                </span>\n                                :&nbsp;\n                                <span>{measures.diameter}</span>\n                            </div>\n                        )}\n                    \n                        <div>\n                            <span className=\"qty\">\n                                <Translation id=\"quantity\" defaultMessage=\"Quantity\" />:&nbsp;\n                                {this.handleOrderLineQuantity(orderLine)}\n                            </span>\n                        </div>\n                        <div className=\"price\">\n                            <span>\n                                <Translation id=\"price\" defaultMessage=\"Price\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {this.displayPrice(this.props.isEmserUser, this.props.order, orderLine)}\n                            </span>\n                        </div>\n                        {/* For tablet screen */}\n                        <div className=\"d-block-only-tablet\">{this.additionalInfoBlock(orderLine)}</div>\n                    </div>\n                </div>\n                {/* For mobile screen */}\n                <div className=\"d-block-only-mobile\">\n                    <div className=\"order-divider-x\"></div>\n                    {this.additionalInfoBlock(orderLine)}\n                    <div className=\"order-divider-x\"></div>\n                    {this.deliveryInformationBlock(orderLine)}\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    handleOpenConfigBathModal(orderLine) {\n        this.setState({ showConfigBathModal: true })\n        this.setState({ currentOrderLine: orderLine })\n    }\n\n    handleCloseConfigBathModal() {\n        this.setState({ showConfigBathModal: false })\n        this.setState({ currentOrderLine: null })\n    }\n\n    descriptionBlockConfigBath = orderLine => {\n        const cts = orderLine.cut_to_size\n        return (\n            <React.Fragment>\n                <div className=\"order__shipping__details__table--description\">\n                    <div className=\"card__item__productinfo--container\">\n                        <div className=\"product-img\">\n                            {!!cts.configurable.thirdParty && <DisplayQuickShipIndicator tooltipId={cts.configurable.refcode} />}\n                            <img src={cts.thumb} alt={getConfigLineName(cts.configurable)} className=\"is-img-configurable\" />\n                        </div>\n\n                        <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                            <CustomProductIndicator />\n                        </div>\n                    </div>\n\n                    <div className=\"product-description-table\">\n                        <div className=\"brand-container\">\n                            <span className=\"brand\">\n                                <DisplayBrand brand={cts.configurable.material.brand} />\n                            </span>\n                        </div>\n                        <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                            <div className=\"product\">\n                                <span className=\"product-title\">\n                                    {getConfigLineName(cts.configurable)}\n                                </span>\n                            </div>\n                            <div>\n                                <span className=\"technical\">\n                                    <Translation id=\"customized\" defaultMessage=\"Custom\" />\n                                </span>\n                            </div>\n                        </div>\n\n                        {orderLine.material_id && (\n                            <div className=\"product-id\">\n                                <span>\n                                    <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                </span>\n                                :&nbsp;\n                                <span>\n                                    {orderLine.material_id}\n                                </span>\n                            </div>\n                        )}\n\n                        <div>\n                            <span className=\"qty\">\n                                <Translation id=\"quantity\" defaultMessage=\"Quantity\" />:&nbsp;\n                                {this.handleOrderLineQuantity(orderLine)}\n                            </span>\n                        </div>\n                        <div className=\"price\">\n                            <span>\n                                <Translation id=\"price\" defaultMessage=\"Price\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {this.displayPrice(this.props.isEmserUser, this.props.order, orderLine)}\n                            </span>\n                        </div>\n                        <div className=\"configurable-bath-btn-orders\">\n                            <button onClick={() => this.handleOpenConfigBathModal(orderLine)}>\n                                <Translation id=\"view_customization_details\" defaultMessage=\"View customization details\" />\n                            </button>\n                        </div>\n                        {/* For tablet screen */}\n                        <div className=\"d-block-only-tablet\">{this.additionalInfoBlock(orderLine)}</div>\n                    </div>\n                </div>\n                {/* For mobile screen */}\n                <div className=\"d-block-only-mobile\">\n                    <div className=\"order-divider-x\"></div>\n                    {this.additionalInfoBlock(orderLine)}\n                    <div className=\"order-divider-x\"></div>\n                    {this.deliveryInformationBlock(orderLine)}\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    descriptionBlockException = orderLine => {\n        return (\n            <React.Fragment>\n                <div className=\"order__shipping__details__table--description\">\n                    <div className=\"product-img\">\n                        <ProductImage product={null} />\n                    </div>\n                    <div className=\"product-description-table\">\n                        {orderLine.short_text && (\n                            <div>\n                                <span className=\"product\">\n                                    <span>{capitalizeFirstLetter(orderLine.short_text)}</span>\n                                </span>\n                            </div>\n                        )}\n                        {orderLine.material_id && (\n                            <div className=\"product-id\">\n                                <span>\n                                    <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                </span>\n                                :&nbsp;\n                                <span>\n                                    {orderLine.material_id}\n                                </span>\n                            </div>\n                        )}\n                        {orderLine.lot_id && (\n                            <div className=\"lot-id\">\n                                <span>\n                                    <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                                    :&nbsp;\n                                </span>\n                                <span>{orderLine.lot_id}</span>\n                            </div>\n                        )}\n                        <div>\n                            <span className=\"qty\">\n                                <Translation id=\"quantity\" defaultMessage=\"Quantity\" />:&nbsp;\n                                {this.handleOrderLineQuantity(orderLine)}\n                            </span>\n                        </div>\n                        <div className=\"price\">\n                            <span>\n                                <Translation id=\"price\" defaultMessage=\"Price\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {this.displayPrice(this.props.isEmserUser, this.props.order, orderLine)}\n                            </span>\n                        </div>\n                        {/* For tablet screen */}\n                        <div className=\"d-block-only-tablet\">{this.additionalInfoBlock(orderLine)}</div>\n                    </div>\n                </div>\n                {/* For mobile screen */}\n                <div className=\"d-block-only-mobile\">\n                    <div className=\"order-divider-x\"></div>\n                    {this.additionalInfoBlock(orderLine)}\n                    <div className=\"order-divider-x\"></div>\n                    {this.deliveryInformationBlock(orderLine)}\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    descriptionBlock = orderLine => {\n        return (\n            <React.Fragment>\n                {orderLine.product ? (\n                    <React.Fragment>\n                        <div className=\"order__shipping__details__table--description\">\n                            <div className=\"card__item__productinfo--container\">\n                                <div className=\"product-img\">\n                                    <ProductImage product={orderLine.product} inSmallBox={true}/>\n                                </div>\n                                <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                                    {orderLine.extra && orderLine.extra.isCosentinoGlobal &&\n                                        (orderLine.extra.outlet ? (\n                                            <NaturalStoneIndicator idMessage={'outlet_in_hq'} defaultMessage=\"Outlet Spain\" inSmallBox={true} />\n                                        ) : (\n                                            <NaturalStoneIndicator idMessage={'natural_stone_hq'} defaultMessage=\"Natural stone Spain\" inSmallBox={true} />\n                                        ))}\n\n                                    {orderLine.extra && orderLine.extra.isCosentinoBrazil && (\n                                        <NaturalStoneIndicator idMessage={'natural_stone_brazil'} defaultMessage=\"Natural stone Brazil\" inSmallBox={true} />\n                                    )}\n                                </div>\n                            </div>\n                            <div className=\"product-description-table\">\n                                <div className=\"brand-container\">\n                                    <span className=\"brand\">\n                                        <DisplayBrand brand={orderLine.product.brand} />\n                                    </span>\n                                </div>\n\n                                <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                                    <div>\n                                        <span className=\"product\">\n                                            <ProductDisplayName product={orderLine.product} />\n                                        </span>\n                                    </div>\n                                    <div>\n                                        <span className=\"technical\">\n                                            {addForwardSlash(\n                                                this.subtypeFormatIntl(orderLine),\n                                                this.productFormatIntl(orderLine),\n                                                this.finishFormatIntl(orderLine),\n                                                this.thicknessFormatIntl(orderLine),\n                                                this.zaddonFormatIntl(orderLine)\n                                            )}\n                                        </span>\n                                    </div>\n                                </div>\n\n                                {orderLine.product.productId && (\n                                    <div className=\"product-id\">\n                                        <span>\n                                            <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                        </span>\n                                        :&nbsp;\n                                        <span>\n                                            {orderLine.product.productId}\n                                        </span>\n                                    </div>\n                                )}\n\n                                {orderLine.lot_id && (\n                                    <div className=\"lot-id\">\n                                        <span>\n                                            <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                                            :&nbsp;\n                                        </span>\n                                        <span>{orderLine.lot_id}</span>\n                                    </div>\n                                )}\n\n                                <div className=\"indicators-block\">\n                                    {orderLine.product.discontinued && (\n                                        <span className=\"mb-1\">\n                                            <DisplayDiscontinued discontinued={orderLine.product.discontinued} inSmallBox={true} />\n                                        </span>\n                                    )}\n                                    {orderLine.outlet_quality && (\n                                        <span className=\"mb-1\">\n                                            <DisplayOutletIndicator\n                                                outletQuality={orderLine.outlet_quality}\n                                                inSmallBox={true}\n                                            />\n                                        </span>\n                                    )}\n                                </div>\n                                {orderLine.mall_promotion_id && (\n                                    <div className=\"mall-logo\">\n                                        <img src={mallLarge} alt=\"logo mall\" />\n                                    </div>\n                                )}\n\n                                <div className=\"qty\">\n                                    <span>\n                                        <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                        :&nbsp;\n                                    </span>\n                                    <span>\n                                        {this.handleOrderLineQuantity(orderLine)}\n                                    </span>\n                                </div>\n                                <div className=\"price\">\n                                    <span>\n                                        <Translation id=\"price\" defaultMessage=\"Price\" />\n                                    </span>\n                                    :&nbsp;\n                                    <span>\n                                        {this.displayPrice(this.props.isEmserUser, this.props.order, orderLine)}\n                                    </span>\n                                </div>\n                                {/* For tablet screen */}\n                                <div className=\"d-block-only-tablet\">{this.additionalInfoBlock(orderLine)}</div>\n                            </div>\n                        </div>\n                        {/* For mobile screen */}\n                        <div className=\"d-block-only-mobile\">\n                            <div className=\"order-divider-x\"></div>\n                            {this.additionalInfoBlock(orderLine)}\n                            <div className=\"order-divider-x\"></div>\n                            {this.deliveryInformationBlock(orderLine)}\n                        </div>\n                    </React.Fragment>\n                ) : (\n                    this.descriptionBlockException(orderLine)\n                )}\n            </React.Fragment>\n        )\n    }\n\n    additionalInfoBlock = orderLine => {\n        return (\n            <div className=\"order__shipping__details__table--additional\">\n                <div>\n                    {\n                        orderLine.segmentation && <LineSegmentation line={orderLine} showAsList />\n                    }\n                </div>\n                <div className=\"comments\">\n                    <span>\n                        <Translation id=\"comments\" defaultMessage=\"Comments\" />\n                        :&nbsp;\n                    </span>\n                    <span>{orderLine.comments ? orderLine.comments : '--'}</span>\n                </div>\n                <div>\n                    <span>\n                        <Translation id=\"prefered_delivery_date\" defaultMessage=\"Preferred delivery date\" />\n                        :&nbsp;\n                    </span>\n                    <span>\n                        {orderLine.requested_delivery_date ? (\n                            moment(orderLine.requested_delivery_date).isSame(moment(), 'day') ? (\n                                <Translation id=\"today\" defaultMessage=\"Today\" />\n                            ) : (\n                                moment(orderLine.requested_delivery_date).format('L')\n                            )\n                        ) : (\n                            '--'\n                        )}\n                    </span>\n                </div>\n            </div>\n        )\n    }\n\n    deliveryInformationBlock = orderLine => {\n        return (\n            <React.Fragment>\n                {orderLine && (\n                    <div className=\"order__shipping__details__table--shippings\">\n                        <ModifiedLineIndicator orderLine={orderLine} />\n                        {this.deliveryStatusLogic(orderLine)}\n                    </div>\n                )}\n            </React.Fragment>\n        )\n    }\n\n    render() {\n        const {\n            order,\n            orderStatusMap,\n            reservationId,\n            orderInEdition,\n            saveOrderToEdit,\n            rejectOrder,\n            orderToEdit,\n            isLoading,\n            shippingAddressesByUser,\n            invoices,\n            getFileByUrl,\n            intl,\n            isEmserUser,\n            adaptedFormat,\n            getMeasure,\n            locale,\n            replaceDotWithComma,\n            impersonatedBy\n        } = this.props\n\n        const editOrderModeOnClick = () => {\n            this.setState({ editOrderMode: !this.state.editOrderMode })\n        }\n\n        const headerButtonsGroup = (\n            <React.Fragment>\n                {order && order.orderLines && (\n                    <div>\n                        <button onClick={this.downloadPdfOrderBody} gtm-label=\"ec_historial_pedidos_imprimir_detalle\">\n                            <PrintIcon />\n                            <span>\n                                <Translation id=\"print_order_details\" defaultMessage=\"Print my order details\" />\n                            </span>\n                        </button>\n                    </div>\n                )}\n                {invoices && invoices.length > 0 && (\n                    <div className=\"download-invoice\" gtm-label=\"ec_historial_pedidos_descargar_factura\">\n                        <button onClick={this.showInvoiceModal}>\n                            <i class=\"fas fa-download\"></i>\n                            <span>\n                                <Translation id=\"download_invoices\" defaultMessage=\"Download invoices\" />\n                            </span>\n                        </button>\n                    </div>\n                )}\n                {order && order.ecosentino_is_deletable && order.reservationStatus !== 'PENDING_CANCELLATION' && order.reservationStatus !== 'PENDING_CHANGES' && (\n                    <div>\n                        <button onClick={() => this.confirmRejectOrder(order.reservationId, order.orderId, rejectOrder, intl)}>\n                            <i class=\"fas fa-trash-alt\"></i>\n                            <span>\n                                <Translation id=\"cancel_complete_order\" defaultMessage=\"Cancel complete order\" />\n                            </span>\n                        </button>\n                    </div>\n                )}\n            </React.Fragment>\n        )\n\n        const timelineOrderStatusColor = () => {\n            let orderStatus = order && order.orderStatusV3.status\n            if (orderStatus === OrderStatus.Created) return '--position-created'\n            if (orderStatus === OrderStatus.Approved) return '--position-confirmed'\n            if (orderStatus === OrderStatus.Pending) return '--position-pending'\n            if (orderStatus === OrderStatus.In_process) return '--position-in-process'\n            if (orderStatus === OrderStatus.Partially_delivered) return '--position-partially-delivered'\n            if (orderStatus === OrderStatus.Delivered) return '--position-delivered'\n            if (orderStatus === OrderStatus.Order_cancelled) return '--position-cancelled'\n        }\n\n        const timelineOrderStatusMsg = (\n            <div className={`timeline__order__status ${order && (order.ecosentino_status === 'PENDING_CHANGES' || order.reservationStatus === 'PENDING_CANCELLATION') ? '--position-changes' : timelineOrderStatusColor()}`}>\n                <span className=\"order__status--dot\"></span>\n                <span className=\"order__status--status\"><Translation id=\"status\" defaultMessage=\"Status\" /></span>:&nbsp;\n                <span>\n                    {order && order.reservationStatus === 'PENDING_CANCELLATION' ? (\n                        <span className=\"order__status--text\">{intl.formatMessage({ id: orderStatusMap[order.reservationStatus].textToShow })}</span>\n                    ) : order && order.ecosentino_status === 'PENDING_CHANGES' ? (\n                        <span className=\"order__status--text\">{intl.formatMessage({ id: orderStatusMap[order.ecosentino_status].textToShow })}</span>\n                    ) : order && order.orderStatusV3.status ? (\n                        <span className=\"order__status--text\">{intl.formatMessage({ id: orderStatusMap[order.orderStatusV3.status].textToShow })}</span>\n                    ) : (\n                        <span>--</span>\n                    )}\n                </span>\n            </div>\n        )\n\n        return (\n            <div className=\"box-profile row\">\n                {/* Sidebar */}\n                <div className=\"profile-container-box col-12 col-md-4 col-lg-3\">\n                    <ProfileContainer />\n                </div>\n\n                <div className=\"col-12 col-xl-9 order__shipping__details p-0\">\n                    {isLoading && <Spinner isLoading={isLoading} />}\n\n                    {order && (\n                        <div ref={element => (this.orderScreenBody = element)} className=\"position-relative\">\n                            {/* Header */}\n                            <header className=\"order__shipping__details__header\">\n                                <div className=\"order__shipping__details__header--goback\">\n                                    <i class=\"fas fa-chevron-left\"></i>\n                                    <LocalizedLink routeId=\"ROUTE_PROFILE\" params={{ filter: 'orders', open: '' }}>\n                                        <span>\n                                            <Translation id=\"return_order_history\" defaultMessage=\"Return to order history\" />\n                                        </span>\n                                    </LocalizedLink>\n                                </div>\n                                <div className=\"order__shipping__details__header--title\">\n                                    <div className=\"main-title\">\n                                        <h1>\n                                            <Translation id=\"order_detail\" defaultMessage=\"Order detail\" />\n                                            &nbsp;\n                                            {order.orderId ? <span>{order.orderId}</span> : <span>--</span>}\n                                        </h1>\n                                    </div>\n                                    {/* Desktop screen */}\n                                    <div className=\"d-none d-xl-block details-btn-group\">\n                                        <div className=\"desktop-screen\">{headerButtonsGroup}</div>\n                                    </div>\n                                </div>\n                                <div className=\"d-none d-xl-block\">\n                                    <div className=\"order-divider-x\"></div>\n                                </div>\n\n                                {timelineOrderStatusMsg}\n\n                                <div>\n                                    <Timeline\n                                      isHorizontal={true}\n                                      delivery={order.newTimeline}\n                                      orderStatusMap={orderStatusMap}\n                                      withDates={true}\n                                    />\n                                </div>\n\n                                {/* Responsive screen */}\n                                <div className=\"d-block d-xl-none\">\n                                    <div className=\"order-divider-x\"></div>\n                                </div>\n\n                                <div className=\"d-block d-xl-none details-btn-group\">\n                                    <div className=\"mobile-screen\">{headerButtonsGroup}</div>\n                                </div>\n                            </header>\n\n                            {/* Box resume */}\n                            <h3 className=\"order__shipping__boxresume__title\">\n                                <Translation id=\"resume\" defaultMessage=\"Resume\" />\n                            </h3>\n                            <section className=\"order__shipping__details__boxresume\">\n                                <div className=\"order__shipping__details__boxresume--title\">\n                                    <h4>\n                                        <Translation id=\"order_number\" defaultMessage=\"Order number\" />\n                                        :&nbsp;\n                                        {order.orderId ? <span>{order.orderId}</span> : <span>--</span>}\n                                    </h4>\n                                </div>\n                                <div className=\"order-divider-x\"></div>\n                                <div className=\"order__shipping__details__boxresume--content\">\n                                    <div>\n                                        <div>\n                                            <span>\n                                                <Translation id=\"reservation_code\" defaultMessage=\"Reservation code\" />\n                                                :&nbsp;\n                                            </span>\n                                            {reservationId ? <span>{reservationId}</span> : <span>--</span>}\n                                        </div>\n\n                                        <div>\n                                            <span>\n                                                <Translation id=\"order_date\" defaultMessage=\"Order date\" />\n                                                :&nbsp;\n                                            </span>\n                                            {order.orderCreationDate ? (\n                                                moment(order.orderCreationDate).isSame(moment(), 'day') ? (\n                                                    <span>\n                                                        <Translation id=\"today\" defaultMessage=\"Today\" />\n                                                    </span>\n                                                ) : (\n                                                    <span>{moment(order.orderCreationDate).format('L')}</span>\n                                                )\n                                            ) : order.createdDate ? (\n                                                moment(order.createdDate).isSame(moment(), 'day') ? (\n                                                    <span>\n                                                        <Translation id=\"today\" defaultMessage=\"Today\" />\n                                                    </span>\n                                                ) : (\n                                                    <span>{moment(order.createdDate).format('L')}</span>\n                                                )\n                                            ) : (\n                                                <span>--</span>\n                                            )}\n                                        </div>\n\n                                        {/* <div>\n                                            <span>\n                                                <Translation id=\"prefered_delivery_date\" defaultMessage=\"Preferred delivery date\" />\n                                                :&nbsp;\n                                            </span>\n                                            {order.preferredDeliveryDate ? (\n                                                moment(order.preferredDeliveryDate).isSame(moment(), 'day') ? (\n                                                    <span>\n                                                        <Translation id=\"today\" defaultMessage=\"Today\" />\n                                                    </span>\n                                                ) : (\n                                                    <span>{moment(order.preferredDeliveryDate).format('L')}</span>\n                                                )\n                                            ) : (\n                                                <span>--</span>\n                                            )}\n                                        </div> */}\n                                        <div>\n                                            <span>\n                                                <Translation id=\"shipping_address\" defaultMessage=\"Shipping address\" />\n                                                :&nbsp;\n                                            </span>\n                                            <span>\n                                                <DisplayShippingAddress\n                                                    shippingAddress={order.shippingAddress}\n                                                    shippingAddressId={order.shippingAddressId}\n                                                    shippingAddressesByUser={shippingAddressesByUser}\n                                                />\n                                            </span>\n                                        </div>\n                                    </div>\n                                    <div>\n                                        <div>\n                                            <span>\n                                                <Translation id=\"number_of_products_in_order\" defaultMessage=\"Number of products in the order\" />\n                                                :&nbsp;\n                                            </span>\n                                            {order.orderLines ? <span>{order.orderLines.length}</span> : <span>--</span>}\n                                        </div>\n                                        <div>\n                                            <span>\n                                                <Translation id=\"order_type\" defaultMessage=\"Order Type\" />\n                                                :&nbsp;\n                                            </span>\n                                            {order.shippingType ? (\n                                                <span>\n                                                    <Translation id={order.shippingType} />\n                                                </span>\n                                            ) : (\n                                                <span>--</span>\n                                            )}\n                                        </div>\n                                        <div>\n                                            <span>\n                                                <Translation id=\"supplier_center\" defaultMessage=\"Supplier center\" />\n                                                :&nbsp;\n                                            </span>\n                                            {order.centerName && order.centerId ? (\n                                                <span>\n                                                    {order.centerName}&nbsp;({order.centerId})\n                                                </span>\n                                            ) : (\n                                                <span>--</span>\n                                            )}\n                                        </div>\n                                        <div>\n                                            <span>PO:&nbsp;</span>\n                                            {order.po ? <span>{order.po}</span> : <span>--</span>}\n                                        </div>\n                                    </div>\n                                </div>\n                                <div className=\"order-divider-x\"></div>\n                                <div className=\"order__shipping__details__boxresume--comments\">\n                                    <span className=\"title\">\n                                        <Translation id=\"comments_on_this_order\" defaultMessage=\"Comments on this order\" />\n                                        :&nbsp;\n                                    </span>\n                                    <span className=\"comment\">{order.comments ? order.comments : '--'}</span>\n                                </div>\n                            </section>\n\n                            <div className=\"order__shipping__boxcontent__title\">\n                                <div>\n                                    <h3>\n                                        <Translation id=\"order_content\" defaultMessage=\"Order content\" />\n                                    </h3>\n                                </div>\n                                {!this.state.editOrderMode && order.ecosentino_is_editable && order.reservationStatus !== 'PENDING_CANCELLATION' && order.reservationStatus !== 'PENDING_CHANGES' && orderToEdit !== null && (\n                                    <div className=\"order__shipping__boxcontent__title--edit\">\n                                        <button\n                                            className=\"edit-positions\"\n                                            gtm-label=\"ec_historial_pedidos_modificar\"\n                                            onClick={() => {\n                                                editOrderModeOnClick()\n                                            }}\n                                        >\n                                            <i class=\"fas fa-pen\"></i>\n                                            <span>\n                                                <Translation id=\"modify\" defaultMessage=\"Modify\" />\n                                            </span>\n                                        </button>\n                                    </div>\n                                )}\n                                {this.state.editOrderMode && (\n                                    <div className=\"order__shipping__boxcontent__title--btn-actions\">\n                                        <button\n                                            className=\"discard-changes\"\n                                            onClick={() => {\n                                                this.confirmDiscardChanges(intl)\n                                            }}\n                                        >\n                                            <Translation id=\"discard_changes\" defaultMessage=\"Discard changes\" />\n                                        </button>\n                                        <button\n                                            className=\"save-changes\"\n                                            onClick={() => this.confirmSaveChanges(orderInEdition, order.orderId, reservationId, saveOrderToEdit, intl)}\n                                            disabled={this.state.orderWeightError}\n                                        >\n                                            <Translation id=\"save\" defaultMessage=\"Save\" />\n                                        </button>\n                                    </div>\n                                )}\n                            </div>\n                            {(order.ecosentino_status === 'PENDING_CHANGES' || order.reservationStatus === 'PENDING_CANCELLATION') && (\n                                <div>\n                                    <Alerts status='warning'\n                                            alert='order_in_process_of_modification_warning'\n                                            cssIcon='fas fa-exclamation-triangle'\n                                            iconSize='16px'\n                                            className='order__alert__warning'   \n                                    />\n                                </div>\n                            )}\n\n                            {!this.state.editOrderMode && (\n                                <section className=\"order__shipping__details__table\">\n                                    <table className=\"order__shipping__details__table--table\">\n                                        <thead>\n                                            <tr className=\"order__shipping__details__table--heading\">\n                                                <th className=\"th-description\">\n                                                    <Translation id=\"description\" defaultMessage=\"Description\" />\n                                                </th>\n                                                <th className=\"th-addional-info\">\n                                                    <Translation id=\"additional_information\" defaultMessage=\"Additional Information\" />\n                                                </th>\n                                                <th className=\"th-delivery-info\">\n                                                    <Translation id=\"delivery_information\" defaultMessage=\"Delivery information\" />\n                                                </th>\n                                            </tr>\n                                        </thead>\n                                        <tbody>\n                                            {order.orderLines &&\n                                                order.orderLines.length > 0 &&\n                                                order.orderLines.map((orderLine, idx) => {\n                                                    return (\n                                                        <React.Fragment>\n                                                            <tr key={idx}>\n                                                                <div className=\"order-details-divider-x\"></div>\n                                                                <td className=\"td-description\">\n                                                                    {orderLine.cut_to_size && orderLine.cut_to_size.configurable ? (\n                                                                        this.descriptionBlockConfigBath(orderLine)\n                                                                    ) : orderLine.cut_to_size ? (\n                                                                        this.cutToSizeDescriptionBlock(orderLine)\n                                                                    ) : (\n                                                                        this.descriptionBlock(orderLine)\n                                                                    )}\n                                                                </td>\n                                                                <td className=\"td-additional-info\">{this.additionalInfoBlock(orderLine)}</td>\n                                                                <td className=\"td-delivery-info\">{this.deliveryInformationBlock(orderLine)}</td>\n                                                            </tr>\n                                                        </React.Fragment>\n                                                    )\n                                                })}\n                                                {this.state.showConfigBathModal && (\n                                                    <ModalConfigurationDetails\n                                                        config={this.state.currentOrderLine.cut_to_size && this.state.currentOrderLine.cut_to_size.configurable}\n                                                        showBtnEdit={false}\n                                                        showBtnDownload={true}\n                                                        onClose={() => this.handleCloseConfigBathModal()}\n                                                    />\n                                                )}\n                                        </tbody>\n                                    </table>\n                                </section>\n                            )}\n                        </div>\n                    )}\n\n                    {/* Edit Order Mode */}\n                    {this.state.editOrderMode && (\n                        <React.Fragment>\n                            {this.state.orderWeightError && (\n                                <div className=\"weight__limit__excedeed\">\n                                    <div className=\"weight__limit__excedeed--content\">\n                                        <div className=\"dot-icon\"></div>\n                                        <div>\n                                            <span>\n                                                <Translation id=\"edit_order_weight_limit_excedeed\" defaultMessage=\"Weight limits for this order type have been exceeded.\" />\n                                            </span>\n                                        </div>\n                                    </div>\n                                </div>\n                            )}\n\n                            <NewOrderDetailsEditMode\n                                orderLines={order.orderLines}\n                                orderToEdit={orderInEdition}\n                                canEditPosition={this.canEditPositon}\n                                onLineChangeValue={this.onChangeValue}\n                                intl={intl}\n                                adaptedFormat={adaptedFormat}\n                                getMeasure={getMeasure}\n                                isEmserUser={isEmserUser}\n                                locale={locale}\n                                replaceDotWithComma={replaceDotWithComma}\n                                changeOrderInEdition={this.props.changeOrderInEdition}\n                                orderShippingType={order.shippingType}\n                                impersonatedBy={impersonatedBy}\n                            />\n                        </React.Fragment>\n                    )}\n\n                    {/* Invoices Modal */}\n                    {this.state.showInvoiceModal && (\n                        <Modal title={<Translation id=\"invoices\" defaultMessage=\"Invoices\" />} onClose={this.closeInvoiceModal} customClass=\"modal__invoice__orders\" gtmLabel=\"ec_historial_pedidos_facturas_popup\">\n                            <ReactTable\n                                data={invoices}\n                                columns={[\n                                    {\n                                        Header: <Translation id=\"invoice_num\" defaultMessage=\"Invoice Num.\" />,\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <span\n                                                    className=\"invoice-number\"\n                                                    gtm-label=\"ec_historial_pedidos_facturas_popup_descargar\"\n                                                    onClick={e => {\n                                                        e.preventDefault()\n                                                        getFileByUrl(this.getOrderInvoiceDownloadUrl(original.invoiceNum))\n                                                    }}\n                                                >\n                                                    {original.invoiceNum}\n                                                </span>\n                                            )\n                                        }\n                                    },\n                                    {\n                                        Header: <Translation id=\"invoice_date\" defaultMessage=\"Invoice Date\" />,\n                                        Cell: ({ original }) => {\n                                            return <span className=\"invoice-date\">{moment(original.invoiceDate).format('YYYY-MM-DD')}</span>\n                                        }\n                                    }\n                                ]}\n                                defaultPageSize={3}\n                                pageSizeOptions={[8, 16, 32, 64, 128]}\n                                previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                                pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                                PaginationComponent={ReactTablePaginationCount}\n                            />\n                        </Modal>\n                    )}\n                </div>\n                {/* Order details walkthrough */}\n                {this.state.shouldRenderWalkthrough && <OrderDetailsWalkthrough /> }\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(NewOrderDetails)\n","import { connect } from 'react-redux'\nimport NewOrderDetails from './NewOrderDetails'\nimport { injectIntl } from 'react-intl'\nimport { withRouter } from 'react-router-dom'\nimport {\n    getOrder,\n    getInvoices,\n    getOrderDetailsLoading,\n    getOrderStatusMap,\n    getOrderToEdit,\n    getOrderInEdition,\n} from '../../../../store/orders/reducers'\nimport { fetchOrderDetails, getFileByUrl, rejectOrder, fetchOrderToEdit, saveOrderToEdit, canEditOrderMinMax, changeOrderInEdition } from '../../../../store/orders/actions'\nimport { getToken, isEmserUser, getImpersonatedBy } from '../../../../store/login/reducers'\nimport { getShippingAddresses } from '../../../../store/shipping-addresses/reducers'\nimport { getAdaptedFormat, getCtsMeasures, getReplaceDotWithComma } from '../../../../helpers'\nimport { dispatchPushURL, setIsOrderHistoryScreen } from '../../../../store/ui/actions'\nimport { getLanguage } from '../../../../store/ui/reducers'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        order: getOrder(state),\n        isLoading: getOrderDetailsLoading(state),\n        reservationId: match.params.reservationId,\n        shippingAddressesByUser: getShippingAddresses(state),\n        orderStatusMap: getOrderStatusMap(state),\n        isEmserUser: isEmserUser(state),\n        invoices: getInvoices(state),\n        token: getToken(state),\n        orderToEdit: getOrderToEdit(state),\n        orderInEdition: getOrderInEdition(state),\n        locale: getLanguage(state),\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        getMeasure: (cutToSize) => getCtsMeasures(cutToSize, state),\n        replaceDotWithComma: (element, locale) => getReplaceDotWithComma(element, locale, state),\n        impersonatedBy: getImpersonatedBy(state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOrderDetails: reservationId => {\n            return dispatch(fetchOrderDetails(reservationId))\n        },\n        fetchOrderToEdit: orderId => dispatch(fetchOrderToEdit(orderId)),\n        saveOrderToEdit: (order, orderId, reservationId) => dispatch(saveOrderToEdit(order, orderId, reservationId)),\n        canEditOrderMinMax: () => dispatch(canEditOrderMinMax()),\n        changeOrderInEdition: orderInEdition => dispatch(changeOrderInEdition(orderInEdition)),\n        rejectOrder: (reservationId, orderId) => dispatch(rejectOrder(reservationId, orderId)),\n        getFileByUrl: url => dispatch(getFileByUrl(url)),\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        setIsOrderHistoryScreen: isOrderHistoryScreen => {\n            dispatch(setIsOrderHistoryScreen(isOrderHistoryScreen))\n        }\n    }\n}\n\nconst NewOrderDetailsContainer = withRouter(injectIntl(connect(mapStateToProps, mapDispatchToProps)(NewOrderDetails)))\n\nexport default NewOrderDetailsContainer\n","import React from 'react'\nimport ProductImage from '../../../catalog/ProductImage'\nimport ProductDisplayName from '../../../global/ProductDisplayName'\nimport { addForwardSlash } from '../Utils'\nimport Translation from '../../../global/Translation'\nimport { capitalizeFirstLetter } from '../../../../helpers'\nimport { getConfigLineName } from '../Utils'\nimport NaturalStoneIndicator from '../../../cart-line/indicators/NaturalStoneIndicator'\nimport DisplayBrand from '../../../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayDiscontinued from '../../../catalog/rectangleResult/displays/DisplayDiscontinued'\nimport DisplayOutletIndicator from '../../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport DisplayQuickShipIndicator from '../../../catalog/rectangleResult/displays/DisplayQuickShipIndicator'\nimport CustomProductIndicator from '../../../cart-line/indicators/CustomProductIndicator'\n\nclass NewShippingCardItem extends React.Component {\n    blockQuantity = orderLine => {\n        return (\n            <span className=\"qty\">\n                <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                :&nbsp;\n                {orderLine.delivery_qty == 0 ? (\n                    <Translation id=\"product_canceled_by_center\" defaultMessage=\"Product cancelled by center\" />\n                ) : (\n                    <React.Fragment>{parseInt(orderLine.delivery_qty)}</React.Fragment>\n                )}\n            </span>\n        )\n    }\n    render() {\n        const { orderLine, adaptedFormat, intl, locale, replaceDotWithComma } = this.props\n\n        const thicknessFormatIntl = orderLine => {\n            if (!orderLine.product.thickness) return null\n            return replaceDotWithComma(orderLine.product.thickness, locale) + ' cm'\n        }\n\n        const finishFormatIntl = (orderLine) => {\n            if (!orderLine.product.finish) return null\n            return this.props.intl.formatMessage({ id: orderLine.product.finish })\n        }\n\n        const productFormatIntl = orderLine => {\n            if (!orderLine.product.format) return null\n            return adaptedFormat(orderLine.product.format, { upper: true, showUnits: true })\n        }\n\n        const subtypeFormatIntl = orderLine => {\n            if (!orderLine.product.subtypeName) return null\n            return this.props.intl.formatMessage({ id: orderLine.product.subtypeName })\n        }\n\n        const zaddonFormatIntl = orderLine => {\n            if (orderLine.product.zaddon !== 'MAL') return null\n            return this.props.intl.formatMessage({ id: 'MAL' })\n        }\n\n        const descriptionBlock = () => {\n            return (\n                <div className=\"order__card__item\">\n                    <div className=\"order__card__item--shipping-content\">\n                        <div>\n                            <div className=\"card__item__productinfo\">\n                                <div className=\"card__item__productinfo--container\">\n                                    <div className=\"card__item__productinfo--img\">\n                                        <ProductImage product={orderLine.product} inSmallBox={true} />\n                                    </div>\n                                    <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                                        {orderLine.extra && orderLine.extra.isCosentinoGlobal &&\n                                            (orderLine.extra.outlet ? (\n                                                <NaturalStoneIndicator idMessage={'outlet_in_hq'} defaultMessage=\"Outlet Spain\" inSmallBox={true} />\n                                            ) : (\n                                                <NaturalStoneIndicator idMessage={'natural_stone_hq'} defaultMessage=\"Natural stone Spain\" inSmallBox={true} />\n                                            ))}\n\n                                        {orderLine.extra && orderLine.extra.isCosentinoBrazil && (\n                                            <NaturalStoneIndicator idMessage={'natural_stone_brazil'} defaultMessage=\"Natural stone Brazil\" inSmallBox={true} />\n                                        )}\n                                    </div>\n                                </div>\n\n                                <div className=\"card__item__productinfo--text\">\n                                    <div className=\"brand-container\">\n                                        <span className=\"brand\">\n                                            <DisplayBrand brand={orderLine.product.brand} />\n                                        </span>\n                                    </div>\n\n                                    <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                                        <div>\n                                            <span className=\"product\">\n                                                <ProductDisplayName product={orderLine.product} />\n                                            </span>\n                                        </div>\n                                        <div>\n                                            <span className=\"technical\">\n                                                {addForwardSlash(\n                                                    subtypeFormatIntl(orderLine),\n                                                    productFormatIntl(orderLine),\n                                                    finishFormatIntl(orderLine),\n                                                    thicknessFormatIntl(orderLine),\n                                                    zaddonFormatIntl(orderLine)\n                                                )}\n                                            </span>\n                                        </div>\n                                    </div>\n\n                                    {orderLine.product.productId && (\n                                        <div className=\"product-id\">\n                                            <span>\n                                                <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                            </span>\n                                            :&nbsp;\n                                            <span>\n                                                {orderLine.product.productId}\n                                            </span>\n                                        </div>\n                                    )}\n\n                                    <div className=\"indicators-block\">\n                                        {orderLine.product.discontinued && (\n                                            <span className=\"mb-1\">\n                                                <DisplayDiscontinued discontinued={orderLine.product.discontinued} inSmallBox={true} />\n                                            </span>\n                                        )}\n                                        {orderLine.outlet_quality && (\n                                            <span className=\"mb-1\">\n                                                <DisplayOutletIndicator\n                                                    outletQuality={orderLine.outlet_quality}\n                                                    inSmallBox={true}\n                                                />\n                                            </span>\n                                        )}\n                                    </div>\n\n                                    {/* Mobile screen */}\n                                    <div className=\"mobile-screen\">{this.blockQuantity(orderLine)}</div>\n                                </div>\n                            </div>\n                        </div>\n                        {/* Desktop screen */}\n                        <div className=\"desktop-screen\">{this.blockQuantity(orderLine)}</div>\n                    </div>\n                </div>\n            )\n        }\n\n        const descriptionBlockConfigBath = () => {\n            const cts = orderLine.cut_to_size\n            return (\n                <div className=\"order__card__item\">\n                    <div className=\"order__card__item--shipping-content\">\n                        <div>\n                            <div className=\"card__item__productinfo\">\n                                <div className=\"card__item__productinfo--container\">\n                                    <div className=\"card__item__productinfo--img\">\n                                        {!!cts.configurable.thirdParty && <DisplayQuickShipIndicator tooltipId={cts.configurable.refcode} />}\n                                        <img src={cts.thumb} alt={getConfigLineName(cts.configurable)} className=\"is-img-configurable\" />\n                                    </div>\n\n                                    <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                                        <CustomProductIndicator />\n                                    </div>\n                                </div>\n\n                                <div className=\"card__item__productinfo--text\">\n                                    <div className=\"brand-container\">\n                                        <span className=\"brand\">\n                                            <DisplayBrand brand={cts.configurable.material.brand} />\n                                        </span>\n                                    </div>\n\n                                    <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                                        <div>\n                                            <span className=\"product\">\n                                                <span className=\"product-title\">{getConfigLineName(cts.configurable)}</span>\n                                            </span>\n                                        </div>\n                                        <div>\n                                            <span className=\"technical\">\n                                                <Translation id=\"customized\" defaultMessage=\"Custom\" />\n                                            </span>\n                                        </div>\n                                    </div>\n\n                                    {orderLine.material_id && (\n                                        <div className=\"product-id\">\n                                            <span>\n                                                <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                            </span>\n                                            :&nbsp;\n                                            <span>\n                                                {orderLine.material_id}\n                                            </span>\n                                        </div>\n                                    )}\n\n                                    {/* Mobile screen */}\n                                    <div className=\"mobile-screen\">{this.blockQuantity(orderLine)}</div>\n                                </div>\n                            </div>\n                        </div>\n                        {/* Desktop screen */}\n                        <div className=\"desktop-screen\">{this.blockQuantity(orderLine)}</div>\n                    </div>\n                </div>\n            )\n        }\n\n        const descriptionBlockException = () => {\n            return (\n                <div className=\"order__card__item\">\n                    <div className=\"order__card__item--shipping-content\">\n                        <div className=\"card__item__productinfo\">\n                            <div className=\"card__item__productinfo--img\">\n                                <ProductImage product={null} />\n                            </div>\n                            <div className=\"card__item__productinfo--text\">\n                                {orderLine.short_text && (\n                                    <div>\n                                        <span className=\"product\">\n                                            <span>{capitalizeFirstLetter(orderLine.short_text)}</span>\n                                        </span>\n                                    </div>\n                                )}\n                                {orderLine.material_id && (\n                                    <div className=\"product-id\">\n                                        <span>\n                                            <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                        </span>\n                                        :&nbsp;\n                                        <span>\n                                            {orderLine.material_id}\n                                        </span>\n                                    </div>\n                                )}\n                                {orderLine.lot_id && (\n                                    <div className=\"lot-id\">\n                                        <span>\n                                            <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                                            :&nbsp;\n                                        </span>\n                                        <span>{orderLine.lot_id}</span>\n                                    </div>\n                                )}\n                                {/* Mobile screen */}\n                                <div className=\"mobile-screen\">{this.blockQuantity(orderLine)}</div>\n                            </div>\n                        </div>\n                        {/* Desktop screen */}\n                        <div className=\"desktop-screen\">{this.blockQuantity(orderLine)}</div>\n                    </div>\n                </div>\n            )\n        }\n\n        const renderContent = () => {\n            if (orderLine.product) {\n                return descriptionBlock()\n            }\n        \n            if (orderLine.cut_to_size && orderLine.cut_to_size.configurable) {\n                return descriptionBlockConfigBath()\n            }\n        \n            return descriptionBlockException()\n        }\n\n        return (\n            <React.Fragment>\n                <div>\n                    <div className=\"order-divider-x\"></div>\n                    {renderContent()}\n                </div>\n            </React.Fragment>\n        )\n    }\n}\n\nexport default NewShippingCardItem\n","/**\n * Delivery status for shipping history\n */\nexport const DeliveryStatus = {\n    Treated_partially: 'TREATED_PARTIALLY',\n    Treated_completelly: 'TREATED_COMPLETELLY',\n    Not_treated: 'NOT_TREATED'\n}","import React from 'react'\nimport { injectIntl, defineMessages } from 'react-intl'\nimport NewShippingCardItem from './NewShippingCardItem'\nimport Button from '../../../global/Button'\nimport Translation from '../../../global/Translation'\nimport moment from 'moment'\nimport Slider from 'react-slick'\nimport { SliderNextArrow, SliderPrevArrow } from '../Utils'\nimport Timeline from '../../Timeline'\nimport { DeliveryStatus } from '../Enums/DeliveryStatus'\n\ndefineMessages({\n    planned_transportation: {\n        id: 'planned_transportation',\n        description: 'planned_transportation',\n        defaultMessage: 'Planned transportation'\n    }\n})\n\nclass NewShippingCard extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            showMoreProducts: false\n        }\n    }\n\n    showBtnToDetails = delivery => {\n        if (delivery && delivery.delivery_id && delivery.order_lines.length > 0 && !this.props.isIkeaCenter) return true\n        return false\n    }\n    render() {\n        const { delivery, redirect, adaptedFormat, intl, deliveryStatusMap, locale, replaceDotWithComma } = this.props\n\n        let orderLinesByDeliveryLength = Object.keys(delivery.order_lines).length\n\n        const positionsByDeliveryMap = delivery =>\n            delivery.order_lines &&\n            delivery.order_lines.length > 0 &&\n            delivery.order_lines.map((orderLine, idx) => {\n                return <NewShippingCardItem key={idx} orderLine={orderLine} intl={intl} adaptedFormat={adaptedFormat} locale={locale} replaceDotWithComma={replaceDotWithComma} />\n            })\n\n        const sliderSettings = {\n            arrows: true,\n            nextArrow: <SliderNextArrow />,\n            prevArrow: <SliderPrevArrow />,\n            swipeToSlide: true,\n            dots: true,\n            speed: 300,\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            infinite: false,\n            variableWidth: false\n        }\n\n        const handleBtnToDetailsOnClick = (delivery) => {\n            redirect(\n                intl\n                    .formatMessage({ id: 'ROUTE_SHIPPING_DETAILS' })\n                    .replace(':filter', 'view-shipping')\n                    .replace(':deliveryId', delivery.delivery_id)\n            )\n        }\n\n        const showMoreLessProducts = () => {\n            this.setState({ showMoreProducts: !this.state.showMoreProducts })\n        }\n\n        const deliveryStatusText = deliveryStatus => {\n            if (deliveryStatus === DeliveryStatus.Treated_partially) return intl.formatMessage({ id: 'order_status_shipped' })\n            if (deliveryStatus === DeliveryStatus.Treated_completelly) return intl.formatMessage({ id: 'entregado' })\n            if (deliveryStatus === DeliveryStatus.Not_treated) return intl.formatMessage({ id: 'planned_transportation' })\n            return false\n        }\n\n        return (\n            <React.Fragment>\n                {delivery.order_lines && delivery.order_lines.length > 0 && (\n                    <div className=\"order__card\" key={delivery.delivery_id}>\n                        <header className=\"order__card__header\">\n                            <div className=\"col-12 col-md-9 col-xl-9 p-0 order__card__header__info\">\n                                <div className=\"card__header__text\">\n                                    <div className=\"card__header__text--title\">\n                                        <span>\n                                            <Translation id=\"status\" defaultMessage=\"Status\" />\n                                            :&nbsp;\n                                        </span>\n                                    </div>\n                                    <div className=\"card__header__text--subtitle\">\n                                        {delivery.delivery_status ? <span>{deliveryStatusText(delivery.delivery_status)}</span> : <span>--</span>}\n                                    </div>\n                                </div>\n                                <div className=\"card__header__text\">\n                                    {delivery.delivery_status && delivery.delivery_status === DeliveryStatus.Treated_completelly ? (\n                                        <React.Fragment>\n                                            <div className=\"card__header__text--title\">\n                                                <span>\n                                                    <Translation id=\"delivered_on\" defaultMessage=\"Delivered on\" />\n                                                    :&nbsp;\n                                                </span>\n                                            </div>\n                                            <div className=\"card__header__text--subtitle\">\n                                                <span>\n                                                    {moment(delivery.delivery_date).isSame(moment(), 'day') ? (\n                                                        <Translation id=\"today\" defaultMessage=\"Today\" />\n                                                    ) : (\n                                                        moment(delivery.delivery_date).format('L')\n                                                    )}\n                                                </span>\n                                            </div>\n                                        </React.Fragment>\n                                    ) : (\n                                        <React.Fragment>\n                                            <div className=\"card__header__text--title\">\n                                                <span>\n                                                    <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                                                    :&nbsp;\n                                                </span>\n                                            </div>\n                                            <div className=\"card__header__text--subtitle\">\n                                                <span>\n                                                    {moment(delivery.expected_delivery_date).isSame(moment(), 'day') ? (\n                                                        <Translation id=\"today\" defaultMessage=\"Today\" />\n                                                    ) : (\n                                                        moment(delivery.expected_delivery_date).format('L')\n                                                    )}\n                                                </span>\n                                            </div>\n                                        </React.Fragment>\n                                    )}\n                                </div>\n\n                                <div className=\"card__header__text\">\n                                    <div className=\"card__header__text--title\">\n                                        <span>\n                                            <Translation id=\"shipment_number\" defaultMessage=\"Shipment number\" />\n                                            :&nbsp;\n                                        </span>\n                                    </div>\n                                    <div className=\"card__header__text--subtitle\">{delivery.delivery_id ? <span>{delivery.delivery_id}</span> : <span>--</span>}</div>\n                                </div>\n\n                                <div className=\"card__header__text\">\n                                    <div className=\"card__header__text--title\">\n                                        <span>\n                                            <Translation id=\"number_of_products\" defaultMessage=\"Number of products\" />\n                                            :&nbsp;\n                                        </span>\n                                    </div>\n                                    <div className=\"card__header__text--subtitle\">\n                                        {delivery.order_lines ? <span>{Object.keys(delivery.order_lines).length}</span> : <span>--</span>}\n                                    </div>\n                                </div>\n                            </div>\n\n                            {this.showBtnToDetails(delivery) && (\n                                <div className=\"col-12 col-md-3 col-xl-3 p-0 order__card__header--btn\">\n                                    <Button\n                                        className=\"bt bt-inverted\"\n                                        gtmLabel=\"ec_historial_envios_detalles\"\n                                        onClick={() => {\n                                            handleBtnToDetailsOnClick(delivery)\n                                        }}\n                                    >\n                                        <Translation id=\"view_details\" defaultMessage=\"View details\" />\n                                    </Button>\n                                </div>\n                            )}\n                        </header>\n\n                        <section className=\"order__card__item--container\">\n                            <div className=\"order-divider-x\"></div>\n                            <div className=\"order__card__item--subcontainer\">\n                                <div className=\"w-100\">\n                                    <div className=\"d-none d-md-block\">\n                                        <div className={`${this.state.showMoreProducts ? '' : 'show-more-less-shipping'}`}>{positionsByDeliveryMap(delivery)}</div>\n                                    </div>\n\n                                    <div className=\"d-block d-md-none\">\n                                        <Slider ref={s => (this.slider = s)} {...sliderSettings}>\n                                            {positionsByDeliveryMap(delivery)}\n                                        </Slider>\n                                    </div>\n\n                                    {orderLinesByDeliveryLength > 3 && (\n                                        <div className=\"show__more__less\">\n                                            <button onClick={() => showMoreLessProducts()}>\n                                                {this.state.showMoreProducts ? (\n                                                    <React.Fragment>\n                                                        <span>\n                                                            <Translation id=\"view_less\" defaultMessage=\"View less\" />\n                                                        </span>\n                                                        <i class=\"fas fa-chevron-up\"></i>\n                                                    </React.Fragment>\n                                                ) : (\n                                                    <React.Fragment>\n                                                        <span>\n                                                            <Translation id=\"view_all_products\" defaultMessage=\"View all products\" />\n                                                        </span>\n                                                        &nbsp;\n                                                        <span>&#40;{orderLinesByDeliveryLength}&#41;</span>\n                                                        <i class=\"fas fa-chevron-down\"></i>\n                                                    </React.Fragment>\n                                                )}\n                                            </button>\n                                        </div>\n                                    )}\n                                </div>\n                                <div className=\"order-divider-y__flex\"></div>\n                                <div className=\"d-flex flex-nowrap vertical-timeline-container\">\n                                    <Timeline delivery={delivery.timeline} orderStatusMap={deliveryStatusMap} withDates={true} isVertical />\n                                    {/* This code is just for accomodation. Don't delete */}\n                                    <div className=\"timeline-text-div__vertical\">\n                                        <div>\n                                            <Translation id={deliveryStatusMap[delivery.timeline[0].statusText].textToShow} />\n                                        </div>\n                                        <div>\n                                            <Translation id={deliveryStatusMap[delivery.timeline[1].statusText].textToShow} />\n                                        </div>\n                                        <div>\n                                            <Translation id={deliveryStatusMap[delivery.timeline[2].statusText].textToShow} />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </section>\n\n                        {this.showBtnToDetails(delivery) && (\n                            <footer className=\"order__card__footer\">\n                                <div>\n                                    <Button\n                                        className=\"bt bt-inverted\"\n                                        gtmLabel=\"ec_historial_envios_detalles\"\n                                        onClick={() => {\n                                            handleBtnToDetailsOnClick(delivery)\n                                        }}\n                                    >\n                                        <Translation id=\"view_details\" defaultMessage=\"View details\" />\n                                    </Button>\n                                </div>\n                            </footer>\n                        )}\n                    </div>\n                )}\n            </React.Fragment>\n        )\n    }\n}\n\nexport default injectIntl(NewShippingCard)\n","import React, { useEffect, useState } from 'react'\nimport FiltersModal from \"../../../global/Filters/FiltersModal\";\nimport Translation from \"../../../global/Translation\";\nimport DatePicker from \"react-datepicker\";\nimport moment from \"moment\";\nimport {getCenters, getIsIkeaCenter} from \"../../../../store/centers/reducers\";\nimport {injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport FilterTags from \"../../../global/Filters/FilterTags\";\nimport debounce from \"lodash/debounce\";\nimport {cloneDeep} from \"lodash\";\nimport SearchInput from '../../../global/SearchInput';\n\nlet debSearch\n\nconst ShippingHistoryFilter = props => {\n\n    const shippingTypeOptions = {\n        empty: {label: props.intl.formatMessage({id: 'view_all'}), value: false, isSelected: true},\n        CONTAINER: {\n            value: 'CONTAINER',\n            label: <Translation id=\"CONTAINER\" defaultMessage=\"Container\" />,\n            isSelected: false\n        },\n        SINGLE_SLAB: {\n            value: 'SINGLE_SLAB',\n            label: <Translation id=\"SINGLE_SLAB\" defaultMessage=\"Single slab\" />,\n            isSelected: false\n        },\n        DIRECT_TRUCK: {\n            value: 'DIRECT_TRUCK',\n            label: <Translation id=\"DIRECT_TRUCK\" defaultMessage=\"Direct truck\" />,\n            isSelected: false\n        },\n        FULL_TRUCK: {\n            value: 'FULL_TRUCK',\n            label: <Translation id=\"FULL_TRUCK\" defaultMessage=\"Full truck\" />,\n            isSelected: false\n        }\n    }\n\n    const statusTypeOptions = {\n        empty: {label: props.intl.formatMessage({id: 'view_all'}), value: false, isSelected: true},\n        NOT_TREATED: {label: props.intl.formatMessage({ id: 'planned_transportation' }), value: 'NOT_TREATED', isSelected: false },\n        TREATED_PARTIALLY: {label: props.intl.formatMessage({ id: 'order_status_shipped' }), value: 'TREATED_PARTIALLY', isSelected: false },\n        TREATED_COMPLETELLY: {label: props.intl.formatMessage({ id: 'order_status_delivered' }), value: 'TREATED_COMPLETELLY', isSelected: false }\n    }\n\n    const [search, setSearch] = useState('')\n\n    const dateFilterMapper = {\n        output: {\n            startDate: null,\n            endDate: null\n        },\n        prevOutput: {\n            startDate: null,\n            endDate: null\n        },\n        onChange: {\n            changeStartDate: selectedOption => dateFilterMapper.output.startDate = selectedOption,\n            changeEndDate: selectedOption => dateFilterMapper.output.endDate = selectedOption\n        }\n    }\n\n    const formatDateLabel = (output) => {\n        const startLabel = `${output.startDate && !output.endDate ? props.intl.formatMessage({ id: 'from'}) + ' ' : ''}${output.startDate ? output.startDate.format('L') : ''}`\n        const endLabel = `${output.startDate && output.endDate ? ' - ' : ''}${!output.startDate && output.endDate ? props.intl.formatMessage({ id: 'to'}) + ' ' : ''}${output.endDate ? output.endDate.format('L') : ''}`\n\n        const label = startLabel + endLabel\n        return label === '' ? 'all' : label\n    }\n\n    const DateFilter = (mapper, _filters) => {\n\n        const startMaxDate = mapper.output.endDate ? mapper.output.endDate : moment().add(12, 'month')\n        const endMaxDate = props.isIkeaCenter ? moment(mapper.output.startDate).add(3, 'month')\n            : //RESTO DE CASOS 12 MESES\n            moment(mapper.output.startDate).add(12, 'month')\n\n        return <React.Children mapper={mapper}>\n\n            <div className=\"order__shipping__date__section\">\n                <div className=\"order__shipping__date__section--dates\">\n                    <div className=\"from\">\n                        <label htmlFor='from_shipping_date'>\n                            <Translation id=\"from\" defaultMessage=\"From\"/>\n                        </label>\n                        <DatePicker\n                            id={'from_shipping_date'}\n                            selected={mapper.output.startDate}\n                            selectsStart={true}\n                            startDate={mapper.output.startDate}\n                            endDate={mapper.output.endDate}\n                            maxDate={startMaxDate}\n                            onChange={selectedOption => {\n                                mapper.onChange.changeStartDate(selectedOption, 'startDate')\n                                _filters.filters.custom_date_filter.label = formatDateLabel(mapper.output)\n                                _filters.filters.custom_date_filter.isSelected = false\n                            }}\n                            autoComplete=\"off\"\n                            onKeyDown={e => e.preventDefault()}\n                            showMonthDropdown\n                            showYearDropdown\n                            isClearable={true}\n                            className=\"form-control form-control-sm date customDatePicker\"\n                        />\n                    </div>\n                    <div className=\"to\">\n                        <label htmlFor='to_shipping_date'>\n                            <Translation id=\"to\" defaultMessage=\"To\"/>\n                        </label>\n                        <DatePicker\n                            id={'to_shipping_date'}\n                            selected={mapper.output.endDate}\n                            selectsEnd\n                            startDate={mapper.output.startDate}\n                            endDate={mapper.output.endDate}\n                            minDate={mapper.output.startDate}\n                            maxDate={endMaxDate}\n                            onChange={selectedOption => {\n                                mapper.onChange.changeEndDate(selectedOption, 'endDate')\n                                _filters.filters.custom_date_filter.label = formatDateLabel(mapper.output)\n                                _filters.filters.custom_date_filter.isSelected = !!(mapper.output.startDate && mapper.output.endDate)\n                            }}\n                            autoComplete=\"off\"\n                            onKeyDown={e => e.preventDefault()}\n                            showMonthDropdown\n                            showYearDropdown\n                            isClearable={true}\n                            className=\"form-control form-control-sm date customDatePicker\"\n                        />\n                    </div>\n                </div>\n            </div>\n        </React.Children>\n    }\n\n    const initialFilters = {\n        by_date_filter: {\n            label: props.intl.formatMessage({ id: 'by_estimated_delivery_date' }),\n            id: 'by_date_filter',\n            filters: {\n                custom_date_filter : {\n                    id: 'custom_date_filter',\n                    label: 'all',\n                    defaultLabel: 'all',\n                    value: cloneDeep(dateFilterMapper.output),\n                    mapper: cloneDeep(dateFilterMapper),\n                    custom: DateFilter,\n                    isSelected: false,\n                    defaultValue: {\n                        startDate: null,\n                        endDate: null,\n                    },\n                    getIsSelected: (output) => !!(output.startDate || output.endDate)\n                }\n            }\n        },\n        status_type_filter: {\n            label: props.intl.formatMessage({ id: 'status_type_filter' }),\n            id: 'status_type_filter',\n            filters: statusTypeOptions\n        },\n        shipping_type_filter: {\n            label: props.intl.formatMessage({ id: 'shipping_type_filter' }),\n            id: 'shipping_type_filter',\n            filters: shippingTypeOptions\n        }\n    }\n\n    const [filters, setFilters] = useState(cloneDeep(initialFilters))\n    const [selections, setSelections] = useState({})\n\n    const changeDateFilter = type => {\n        let endDate = moment()\n        switch (type) {\n            case 'arrive_today':\n                filters.by_date_filter.filters.custom_date_filter.value.endDate = endDate\n                break\n            case 'arrive_this_week':\n                endDate = endDate.add(7, 'days')\n                filters.by_date_filter.filters.custom_date_filter.value.endDate = endDate\n                break\n            case 'arrive_this_month':\n                endDate = endDate.add(30, 'days')\n                filters.by_date_filter.filters.custom_date_filter.value.endDate = endDate\n                break\n            case 'all':\n                break\n        }\n\n        const startDate = type !== 'all' ? moment() : null\n        filters.by_date_filter.filters.custom_date_filter.label = type\n        filters.by_date_filter.filters.custom_date_filter.isSelected = type !== 'all'\n        filters.by_date_filter.filters.custom_date_filter.value.startDate = startDate\n\n        // Actualizar mappers\n        filters.by_date_filter.filters.custom_date_filter.mapper.output.startDate = startDate\n        filters.by_date_filter.filters.custom_date_filter.mapper.output.endDate = endDate\n        filters.by_date_filter.filters.custom_date_filter.mapper.prevOutput.startDate = startDate\n        filters.by_date_filter.filters.custom_date_filter.mapper.prevOutput.endDate = endDate\n\n        setFilters(Object.assign({}, filters))\n    }\n\n    const dateFilterActive = type => filters && filters.by_date_filter && filters.by_date_filter.filters.custom_date_filter.label === type\n\n    useEffect(() => {\n        const selections = Object.entries(filters).reduce(\n            (p, [k, v]) => ({\n                ...p, [k]: Object.entries(v.filters).reduce((_p, [_k, _v]) => ({..._p, [_k]: _v.isSelected}), {})\n            }), {}\n        )\n        const selected = {}\n        Object.entries(selections).forEach(([k, v]) => {\n            const positives = Object.keys(v).filter(_k => !!v[_k])\n            positives.forEach(v => {\n                if (filters[k] && filters[k].filters[v].value) {\n                    selected[k] = {id:v, value: filters[k].filters[v].value}}\n            })\n        })\n\n        setSelections(selected)\n    }, [filters])\n\n    useEffect(() => {\n        if (debSearch) {\n            debSearch.cancel()\n        }\n        debSearch = debounce(() => {\n            if ((search && search.length > 2) || !search || search.length === 0) {\n                props.onChange({search, selections})\n            }\n        }, 1000)\n\n        debSearch()\n    }, [search, selections])\n\n\n    const searchBar = (\n        <SearchInput\n            inputType=\"text\"\n            inputName=\"shipping-history-search\"\n            inputValue={search}\n            inputOnChange={e => setSearch(e.target.value)}\n            placeholder={props.intl.formatMessage({ id: 'search' })}\n            gtmLabel=\"ec_historial_envios_barra_busqueda\"\n            dataQa=\"query\"\n        />\n    )\n\n    const onClean = () => {\n        setFilters(cloneDeep(initialFilters))\n    }\n\n    /* useEffect(() => {\n        changeDateFilter('arrive_this_week')\n    }, []) */\n    \n    return (\n        <React.Fragment>\n            <div className=\"header__filters__heading\">\n                <h4><Translation id=\"filter_by_estimated_delivery_date\" defaultMessage=\"Filter by estimated delivery date\" />:</h4>\n            </div>\n            <div className=\"header__filters\">\n                <nav className=\"header__filters__buttons\">\n                    <div className={`shipping-walkthrough-filter-quick header__filters__buttons--btn ${dateFilterActive('arrive_today') ? 'active' : ''}`}>\n                        <button onClick={() => changeDateFilter('arrive_today')}>\n                            <Translation id={'arrive_today'} defaultMessage={'Arrive today'}/>\n                        </button>\n                    </div>\n                    <div className={`header__filters__buttons--btn ${dateFilterActive('arrive_this_week') ? 'active' : ''}`}>\n                        <button onClick={() => changeDateFilter('arrive_this_week')}>\n                            <Translation id={'arrive_this_week'} defaultMessage={'Arrive this week'}/>\n                        </button>\n                    </div>\n                    <div className={`header__filters__buttons--btn ${dateFilterActive('arrive_this_month') ? 'active' : ''}`}>\n                        <button onClick={() => changeDateFilter('arrive_this_month')}>\n                            <Translation id={'arrive_this_month'} defaultMessage={'Arrive this month'}/>\n                        </button>\n                    </div>\n                    <div className={`header__filters__buttons--btn ${dateFilterActive('all') ? 'active' : ''}`}>\n                        <button onClick={() => changeDateFilter('all')}>\n                            <Translation id={'all'} defaultMessage={'All'}/>\n                        </button>\n                    </div>\n                    <div className=\"header__filters__buttons--btn-more\">\n                        <FiltersModal\n                            title={props.intl.formatMessage({ id: 'filters' })}\n                            filters={filters}\n                            customClassName=\"order__shipping__filter__modal\"\n                            onChange={_filters => setFilters(_filters)}\n                            onClean={onClean}\n                            gtmLabel=\"ec_historial_envios_mas_filtros\"\n                            gtmLabelModal=\"ec_historial_envios_filtros_popup\"\n                            gtmLabelApplyFilters=\"ec_historial_envios_filtros_aplicar\"\n                        />\n                    </div>\n                </nav>\n                {/* Desktop search */}\n                <div className=\"filters__search__desktop\">\n                    <div className=\"filters__search__desktop--input\">{searchBar}</div>\n                </div>\n            </div>\n            {/* Responsive search */}\n            <div className=\"filters__search__responsive\">\n                <div className=\"flex__container\">\n                    <div className=\"flex__container--input\">{searchBar}</div>\n                    {/* For mobile screen */}\n                    <div className=\"flex__container--btn\">\n                        <FiltersModal\n                            title={props.intl.formatMessage({ id: 'filters' })}\n                            filters={filters}\n                            customClassName=\"order__shipping__filter__modal\"\n                            onChange={_filters => setFilters(_filters)}\n                            onClean={onClean}\n                            gtmLabel=\"ec_historial_envios_mas_filtros\"\n                            gtmLabelModal=\"ec_historial_envios_filtros_popup\"\n                            gtmLabelApplyFilters=\"ec_historial_envios_filtros_aplicar\"\n                        />\n                    </div>\n                </div>\n            </div>\n\n            <div className=\"order__history__header--filter-tags\">\n                <FilterTags\n                    filters={filters}\n                    onChange={_filters => setFilters(_filters)}\n                    onClean={onClean}\n                />\n            </div>\n        </React.Fragment>\n    )\n}\n\nconst mapStateToProps = state => {\n    return {\n        isIkeaCenter: getIsIkeaCenter(state),\n        centers: getCenters(state),\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(ShippingHistoryFilter)\n)","import React from 'react'\nimport Joyride, { ACTIONS, EVENTS } from 'react-joyride'\nimport * as CustomStyles from '../styles/CustomStyles'\nimport { connect } from 'react-redux'\nimport { submitWalkthrough } from '../../../store/ui/actions'\nimport { getHasWalkthrough } from '../../../store/login/reducers'\nimport { fetchHasWalkthrough } from '../../../store/login/actions'\nimport Translation from '../../global/Translation'\n\nconst mapStateToProps = (state) => {\n    return {\n        hasWalkthrough: getHasWalkthrough(state, 'SHIPPING_HISTORY')\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onSubmitWalkthrough: (type, noShowMore) => dispatch(submitWalkthrough(type, noShowMore)),\n        refreshData: () => dispatch(fetchHasWalkthrough())\n    }\n}\n\nclass ShippingWalkthrough extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            stepIndex: 0,\n            type: 'SHIPPING_HISTORY'\n        }\n    }\n\n    /**\n     *  Body content for step one\n     */\n    stepOneContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content__main\">\n                <div className=\"walkthrough__tooltip__content__main--heading\">\n                    <h2><Translation id=\"walkthrough_new_shipments_view\" defaultMessage=\"New Shipments view\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content__main--info\">\n                    <span><Translation id=\"walkthrough_where_you_will_be_able_to_check_the_status\" defaultMessage=\"Where you will be able to check the status of the shipments you are going to receive, the delivery date and the details of the materials included in the shipment.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Body content for step two\n     */\n    stepTwoContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"walkthrough_new_quick_filters\" defaultMessage=\"New quick filters\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span><Translation id=\"walkthrough_you_can_choose_if_you_want_to_see_all_shipments\" defaultMessage=\"You can choose if you want to see all shipments, only the ones that will arrive today, only the last week etc... with a single click.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Body content for step three\n     */\n    stepThreeContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"walkthrough_what_products_are_included_in_this_shipment\" defaultMessage=\"What products are included in this shipment?\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span><Translation id=\"walkthrough_check_the_products_coming_in_the_next_shipment\" defaultMessage=\"Check the products coming in the next shipment.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Body content for step four\n     */\n    stepFourContent = () => {\n        return (\n            <div className=\"walkthrough__tooltip__content\">\n                <div className=\"walkthrough__tooltip__content--heading\">\n                    <h2><Translation id=\"status_and_estimated_delivery_date\" defaultMessage=\"Status and estimated delivery date\" /></h2>\n                </div>\n                <div className=\"walkthrough__tooltip__content--info\">\n                    <span><Translation id=\"walkthrough_view_the_status_of_your_shipment_and_the_estimated_delivery_date\" defaultMessage=\"View the status of your shipment and the estimated delivery date.\" /></span>\n                </div>\n            </div>\n        )\n    }\n\n    /**\n     * Determines which step content to display\n     * @returns boolean\n     */\n    breakpointIndicator = () => {\n        if (window.innerWidth <= 767) return true\n        return false\n    }\n\n    // Desktop version\n    stepThreeDesktop = {\n        content: this.stepThreeContent(),\n        locale: {\n            next: <span aria-label=\"next\"><Translation id=\"next\" defaultMessage=\"Next\" /></span>,\n            back: <span aria-label=\"back\"><Translation id=\"back\" defaultMessage=\"Back\" /></span>\n        },\n        target: '.show-more-less-shipping',\n        styles: {\n            buttonSkip: {\n                display: 'none'\n            }\n        }\n    }\n\n    stepThreeResponsive = {\n        content: this.stepThreeContent(),\n        locale: {\n            next: <span aria-label=\"next\"><Translation id=\"next\" defaultMessage=\"Next\" /></span>,\n            back: <span aria-label=\"back\"><Translation id=\"back\" defaultMessage=\"Back\" /></span>\n        },\n        target: '.slick-slide.slick-active.slick-current .order__card__item',\n        styles: {\n            buttonSkip: {\n                display: 'none'\n            }\n        }\n    }\n\n    /**\n     * steps\n     */\n    steps = {\n        steps: [\n            {\n                content: this.stepOneContent(),\n                locale: {\n                    next: <span aria-label=\"next\"><Translation id=\"get_started\" defaultMessage=\"Get started\" /></span>,\n                    skip: <span aria-label=\"skip\"><Translation id=\"do_not_show_again\" defaultMessage=\"Do not show again\" /></span>\n                },\n                placement: 'center',\n                target: 'body',\n            },\n            {\n                content: this.stepTwoContent(),\n                locale: {\n                    next: <span aria-label=\"next\"><Translation id=\"next\" defaultMessage=\"Next\" /></span>,\n                    back: <span aria-label=\"back\"><Translation id=\"back\" defaultMessage=\"Back\" /></span>\n                },\n                placement: 'bottom-start',\n                target: '.shipping-walkthrough-filter-quick',\n                styles: {\n                    buttonSkip: {\n                        display: 'none'\n                    }\n                }\n            },\n            this.breakpointIndicator() ? this.stepThreeResponsive : this.stepThreeDesktop,\n            {\n                content: this.stepFourContent(),\n                locale: {\n                    last: <span aria-label=\"last\"><Translation id=\"understood\" defaultMessage=\"Understood\" /></span>,\n                    back: <span aria-label=\"back\"></span>\n                },\n                target: '.vertical-timeline-container',\n                styles: {\n                    buttonSkip: {\n                        display: 'none'\n                    }\n                }\n            },\n        ]\n    }\n\n    /**\n     * Callback function to manipulate the walkthrough logic\n     */\n    handleJoyrideCallback = data => {\n        const { action, index, type } = data\n\n        const endStatus = [EVENTS.TOUR_END]\n\n        if ([EVENTS.STEP_AFTER, EVENTS.TARGET_NOT_FOUND].includes(type)) {\n            this.setState({ stepIndex: index + (action === ACTIONS.PREV ? -1 : 1) })\n        }\n\n        if (index === 0) {\n            if (endStatus.includes(type)) {\n                this.props.onSubmitWalkthrough(this.state.type, true).then(() => this.props.refreshData())\n            }\n        } else if (endStatus.includes(type)) {\n            this.props.onSubmitWalkthrough(this.state.type, false).then(() => this.props.refreshData())\n        }\n    }\n\n    render() {\n        const { steps } = this.steps\n        const { hasWalkthrough } = this.props\n\n        return hasWalkthrough && hasWalkthrough.shouldShow ? (\n            <React.Fragment>\n                <Joyride\n                    callback={this.handleJoyrideCallback}\n                    continuous\n                    showProgress\n                    steps={steps}\n                    styles={{\n                        tooltip: CustomStyles.TooltipStyles,\n                        tooltipContent: CustomStyles.TooltipContentStyles,\n                        options: CustomStyles.OptionStyles,\n                        buttonNext: CustomStyles.ButtonNextStyles,\n                        buttonBack: CustomStyles.ButtonBackStyles,\n                        tooltipFooter: CustomStyles.TooltipFooterStyles,\n                        spotlight: CustomStyles.SpotlightSyles\n                    }}\n                    disableScrolling\n                    showSkipButton\n                />\n            </React.Fragment>\n        ) : null\n    }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ShippingWalkthrough)","import React from 'react'\nimport Spinner from '../../../global/Spinner'\nimport Translation from '../../../global/Translation'\nimport ProfileContainer from '../../../profile/ProfileContainer'\nimport NavigationTabs from '../NavigationTabs'\nimport NewShippingCard from './NewShippingCard'\nimport InfiniteScroll from 'react-infinite-scroll-component'\nimport Button from '../../../global/Button'\nimport GoBackButton from '../GoBackButton'\nimport ShippingHistoryFilter from \"./ShippingHistoryFilter\";\nimport ShippingWalkthrough from '../../../walkthroughs/shipping/ShippingWalkthrough'\n\nclass NewShippingHistory extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            filters: null,\n            shouldRenderWalkthrough: false\n        }\n    }\n    componentDidMount() {\n        this.props.setIsShippingHistoryScreen(true)\n    }\n\n    componentWillUnmount() {\n        this.props.setIsShippingHistoryScreen(false)\n    }\n\n    fetchOrderDeliveries(paginate=false) {\n        this.props.fetchOrderDeliveriesPaginate(...this.mapFilters(this.state.filters), paginate ? (this.props.currentPage + 1) : 1).then(() => this.setState({ shouldRenderWalkthrough: true }))\n    }\n\n    mapFilters = (filters) => {\n        if (filters && (filters.selections || filters.search)) {\n            return [\n                filters.selections && filters.selections.status_type_filter && filters.selections.status_type_filter.value,\n                filters.selections && filters.selections.by_date_filter && filters.selections.by_date_filter.value.startDate,\n                filters.selections && filters.selections.by_date_filter && filters.selections.by_date_filter.value.endDate,\n                filters.search,\n                filters.selections && filters.selections.shipping_type_filter && filters.selections.shipping_type_filter.value,\n            ]\n        }\n\n        return [null, null, null, null, null]\n    }\n\n    updateFilters = filters => {\n        const prevFilters = this.mapFilters(this.state.filters)\n        const currentFilters = this.mapFilters(filters)\n        let update = false\n\n        currentFilters.every((v, index) => {\n            if (prevFilters[index] !== v) {\n                update = true\n                return false\n            }\n            return true\n        })\n\n        if (update) this.fetchOrderDeliveries()\n    }\n\n    render() {\n        const { deliveries, isLoading, currentPage, lastPage, redirect, isIkeaCenter, deliveryStatusMap, adaptedFormat, locale, replaceDotWithComma } = this.props\n\n        return (\n            <React.Fragment>\n                <GoBackButton />\n                <div className=\"box-profile row\">\n                    {/* Sidebar */}\n                    <div className=\"profile-container-box col-12 col-md-4 col-lg-3\">\n                        <ProfileContainer />\n                    </div>\n\n                    <div className=\"col-12 col-xl-9 p-0\">\n                        {isLoading && <Spinner isLoading={isLoading} />}\n                        <div className=\"order-histoy-container\">\n                            <div className=\"order__history__header\">\n                                <div className=\"header__title\">\n                                    <h1>\n                                        <Translation id=\"shipping_history\" defaultMessage=\"Shipping history\" />\n                                    </h1>\n                                </div>\n                                <div className=\"header__subtitle\">\n                                    <h4>\n                                        <Translation id=\"show\" defaultMessage=\"Show\" />\n                                    </h4>\n                                </div>\n                                <NavigationTabs />\n\n                                <ShippingHistoryFilter onChange={filters => this.setState({filters: filters}, this.fetchOrderDeliveries)}/>\n                            </div>\n\n                            {/* <InfiniteScroll dataLength={deliveries.length} next={() => currentPage < lastPage && this.fetchOrderDeliveries(true)} hasMore={true}> */}\n                                {deliveries.length > 0 ? (\n                                    deliveries.map((delivery, idx) => (\n                                        <NewShippingCard \n                                            key={idx}\n                                            delivery={delivery}\n                                            redirect={redirect}\n                                            isIkeaCenter={isIkeaCenter}\n                                            adaptedFormat={adaptedFormat}\n                                            deliveryStatusMap={deliveryStatusMap}\n                                            locale={locale}\n                                            replaceDotWithComma={replaceDotWithComma}\n                                        />\n                                    ))\n                                ) : null}\n\n                                {/* Button load more */}\n                                <div className=\"d-flex align-items-center justify-content-center mt-2\">\n                                    <Button onClick={() => this.fetchOrderDeliveries(true)} size=\"medium\" inline disabled={currentPage >= lastPage || isLoading}>\n                                        {currentPage >= lastPage ? (\n                                            <Translation id=\"no_results\" defaultMessage=\"No results\" />\n                                        ) : (\n                                            <Translation id=\"load_more\" defaultMessage=\"Load more\" />\n                                        )}\n                                    </Button>\n                                </div>\n                            {/*  </InfiniteScroll> */}\n                        </div>\n                    </div>\n                </div>\n                {this.state.shouldRenderWalkthrough && <ShippingWalkthrough />}\n            </React.Fragment>\n        )\n    }\n}\n\nexport default NewShippingHistory\n","import { connect } from 'react-redux'\nimport NewShippingHistory from './NewShippingHistory'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport { getDeliveries, getDeliveriesCurrentPage, getDeliveriesLastPage, getDeliveriesLoading } from '../../../../store/deliveries/reducers'\nimport { fetchOrderDeliveriesPaginate } from '../../../../store/deliveries/actions'\nimport { getIsIkeaCenter } from '../../../../store/centers/reducers'\nimport { dispatchPushURL, setIsShippingHistoryScreen } from '../../../../store/ui/actions'\nimport { getAdaptedFormat, getReplaceDotWithComma } from '../../../../helpers'\nimport { getDeliveryStatusMap } from \"../../../../store/orders/reducers\";\nimport { getLanguage } from '../../../../store/ui/reducers'\n\nconst mapStateToProps = (state) => {\n    return {\n        deliveries: getDeliveries(state),\n        currentPage: getDeliveriesCurrentPage(state),\n        lastPage: getDeliveriesLastPage(state),\n        isLoading: getDeliveriesLoading(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        deliveryStatusMap: getDeliveryStatusMap(state),\n        locale: getLanguage(state),\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        replaceDotWithComma: (element, locale) => getReplaceDotWithComma(element, locale, state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOrderDeliveriesPaginate: (status, startDate, endDate, search, type, page) => {\n            return dispatch(fetchOrderDeliveriesPaginate(status, startDate, endDate, search, type, page))\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        setIsShippingHistoryScreen: isShippingHistoryScreen => {\n            dispatch(setIsShippingHistoryScreen(isShippingHistoryScreen))\n        }\n    }\n}\n\nconst NewShippingHistoryContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(NewShippingHistory)\n    )\n)\n\nexport default NewShippingHistoryContainer\n","import * as api from '../api'\nimport { getLanguage } from '../ui/reducers'\n\nexport const fetchOrderDeliveriesPaginate = (status, startDate, endDate, search, type, page) => (dispatch, getState) => {\n    const token = getState().login.token\n    const locale = getLanguage(getState())\n    dispatch({type: 'FETCH_ORDER_DELIVERIES_PAGINATE_REQUEST'})\n    \n    return api.fetchOrderDeliveriesPaginate(token, status, startDate, endDate, search, locale, type, page).then(\n        response => dispatch({\n            type: 'FETCH_ORDER_DELIVERIES_PAGINATE_SUCCESS',\n            deliveries: response.data.data.data,\n            deliveriesCurrentPage: response.data.data.current_page,\n            deliveriesLastPage: response.data.data.last_page\n        }),\n        error => dispatch({\n            type: 'FETCH_ORDER_DELIVERIES_PAGINATE_FAILURE',\n            statusText: error.response.data.err\n        })\n    )\n}\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport ProfileContainer from '../../../profile/ProfileContainer'\nimport Spinner from '../../../global/Spinner'\nimport LocalizedLink from '../../../global/LocalizedLink'\nimport { ReactComponent as PrintIcon } from '../../../../assets/img/order-history/print-icon.svg'\nimport { ReactComponent as ShippingTruckIcon } from '../../../../assets/img/order-history/shipping-truck.svg'\nimport { addForwardSlash } from '../Utils'\nimport Translation from '../../../global/Translation'\nimport ProductImage from '../../../catalog/ProductImage'\nimport ProductDisplayName from '../../../global/ProductDisplayName'\nimport Timeline from '../../Timeline'\nimport moment from 'moment'\nimport { DeliveryStatus } from '../Enums/DeliveryStatus'\nimport { capitalizeFirstLetter } from '../../../../helpers'\nimport { getConfigLineName } from '../Utils'\nimport ModalConfigurationDetails from '../../../cut-to-size/configurable-baths/ModalConfigurationDetails'\nimport NaturalStoneIndicator from '../../../cart-line/indicators/NaturalStoneIndicator'\nimport DisplayBrand from '../../../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayDiscontinued from '../../../catalog/rectangleResult/displays/DisplayDiscontinued'\nimport DisplayOutletIndicator from '../../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport CustomProductIndicator from '../../../cart-line/indicators/CustomProductIndicator'\nimport DisplayQuickShipIndicator from '../../../catalog/rectangleResult/displays/DisplayQuickShipIndicator'\n\nclass NewShippingDetails extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            showConfigBathModal: false,\n            selectedOrderLine: null\n        }\n    }\n\n    componentDidMount() {\n        this.props.fetchOrderDeliveriesById(this.props.deliveryId)\n        this.props.setIsShippingHistoryScreen(true)\n    }\n\n    componentWillUnmount() {\n        this.props.setIsShippingHistoryScreen(false)\n    }\n\n    writeOrderBody = printWindow => {\n        printWindow.document.write('<html><head>')\n        printWindow.document.write(document.getElementsByTagName('head')[0].innerHTML)\n        printWindow.document.write('</head><body class=\"order__shipping__details change-elements-print p-4\">')\n        printWindow.document.write(this.orderScreenBody.innerHTML)\n        printWindow.document.write('</body></html>')\n\n        return Promise.resolve(printWindow)\n    }\n\n    downloadPdfShippingBody = () => {\n        let printWindow = window.open('', 'PRINT', 'height=400,width=600')\n        setTimeout(() => {\n            this.writeOrderBody(printWindow).then(printWindow => {\n                setTimeout(() => {\n                    printWindow.focus()\n                    printWindow.print()\n                    printWindow.close()\n                }, 2000)\n            })\n        }, 1000)\n\n        return false\n    }\n\n    thicknessFormatIntl = orderLine => {\n        if (!orderLine.product.thickness) return null\n        return this.props.replaceDotWithComma(orderLine.product.thickness, this.props.locale) + ' cm'\n    }\n\n    finishFormatIntl = (orderLine) => {\n        if (!orderLine.product.finish) return null\n        return this.props.intl.formatMessage({ id: orderLine.product.finish })\n    }\n\n    productFormatIntl = orderLine => {\n        if (!orderLine.product.format) return null\n        return this.props.adaptedFormat(orderLine.product.format, { upper: true, showUnits: true })\n    }\n\n    subtypeFormatIntl = orderLine => {\n        if (!orderLine.product.subtypeName) return null\n        return this.props.intl.formatMessage({ id: orderLine.product.subtypeName })\n    }\n\n    zaddonFormatIntl = (orderLine) => {\n        if (orderLine.product.zaddon !== 'MAL') return null\n        return this.props.intl.formatMessage({ id: 'MAL' })\n    }\n\n    showBtnToDetails = orderLine => {\n        if (orderLine.order_id && orderLine.reservation_id && !this.props.isIkeaCenter) return true\n        return false\n    }\n\n    handleBtnToDetailsOnClick = orderLine => {\n        this.props.redirect(\n            this.props.intl\n                .formatMessage({ id: 'ROUTE_ORDER_DETAILS' })\n                .replace(':filter', 'view-order')\n                .replace(':reservationId', orderLine.reservation_id)\n        )\n    }\n\n    handleOpenConfigBathModal(orderLine) {\n        this.setState({\n            showConfigBathModal: true,\n            selectedOrderLine: orderLine\n        })\n    }\n\n    handleCloseConfigBathModal() {\n        this.setState({\n            showConfigBathModal: false,\n            selectedOrderLine: null\n        })\n    }\n\n    descriptionBlockException = orderLine => {\n        return (\n            <React.Fragment>\n                <div className=\"order__shipping__details__table--description\">\n                    <div className=\"product-img\">\n                        <ProductImage product={null} />\n                    </div>\n                    <div className=\"product-description-table\">\n                        {orderLine.short_text && (\n                            <div>\n                                <span className=\"product\">\n                                    <span>{capitalizeFirstLetter(orderLine.short_text)}</span>\n                                </span>\n                            </div>\n                        )}\n                        {orderLine.material_id && (\n                            <div className=\"product-id\">\n                                <span>\n                                    <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                </span>\n                                :&nbsp;\n                                <span>\n                                    {orderLine.material_id}\n                                </span>\n                            </div>\n                        )}\n                        {orderLine.lot_id && (\n                            <div className=\"lot-id\">\n                                <span>\n                                    <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                                    :&nbsp;\n                                </span>\n                                <span>{orderLine.lot_id}</span>\n                            </div>\n                        )}\n                        <div className=\"qty\">\n                            <span>\n                                <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                :&nbsp;\n                            </span>\n                            <span>{orderLine.delivery_qty ? parseInt(orderLine.delivery_qty) : '--'}</span>\n                        </div>\n                        {/* For tablet screen */}\n                        <div className=\"d-block-only-tablet\">{this.additionalInfoBlock(orderLine)}</div>\n                    </div>\n                </div>\n                {/* For mobile screen */}\n                <div className=\"d-block-only-mobile\">\n                    <div className=\"order-divider-x\"></div>\n                    {this.additionalInfoBlock(orderLine)}\n                    <div className=\"order-divider-x\"></div>\n                    {this.orderInformationBlock(orderLine)}\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    descriptionBlock = orderLine => {\n        return (\n            <React.Fragment>\n                <div className=\"order__shipping__details__table--description\">\n                    <div className=\"card__item__productinfo--container\">\n                        <div className=\"product-img\">\n                            <ProductImage product={orderLine.product} inSmallBox={true}/>\n                        </div>\n                        <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                            {orderLine.extra && orderLine.extra.isCosentinoGlobal &&\n                                (orderLine.extra.outlet ? (\n                                    <NaturalStoneIndicator idMessage={'outlet_in_hq'} defaultMessage=\"Outlet Spain\" inSmallBox={true} />\n                                ) : (\n                                    <NaturalStoneIndicator idMessage={'natural_stone_hq'} defaultMessage=\"Natural stone Spain\" inSmallBox={true} />\n                                ))}\n\n                            {orderLine.extra && orderLine.extra.isCosentinoBrazil && (\n                                <NaturalStoneIndicator idMessage={'natural_stone_brazil'} defaultMessage=\"Natural stone Brazil\" inSmallBox={true} />\n                            )}\n                        </div>\n                    </div>\n\n                    <div className=\"product-description-table\">\n                        <div className=\"brand-container\">\n                            <span className=\"brand\">\n                                <DisplayBrand brand={orderLine.product.brand} />\n                            </span>\n                        </div>\n\n                        <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                            <div>\n                                <span className=\"product\">\n                                    <ProductDisplayName product={orderLine.product} />\n                                </span>\n                            </div>\n                            <div>\n                                <span className=\"technical\">\n                                    {addForwardSlash(\n                                        this.subtypeFormatIntl(orderLine),\n                                        this.productFormatIntl(orderLine),\n                                        this.finishFormatIntl(orderLine),\n                                        this.thicknessFormatIntl(orderLine),\n                                        this.zaddonFormatIntl(orderLine)\n                                    )}\n                                </span>\n                            </div>\n                        </div>\n\n                        {orderLine.product.productId && (\n                            <div className=\"product-id\">\n                                <span>\n                                    <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                </span>\n                                :&nbsp;\n                                <span>\n                                    {orderLine.product.productId}\n                                </span>\n                            </div>\n                        )}\n\n                        {orderLine.lot_id && (\n                            <div className=\"lot-id\">\n                                <span>\n                                    <Translation id=\"lot_id\" defaultMessage=\"Lot ID\" />\n                                    :&nbsp;\n                                </span>\n                                <span>{orderLine.lot_id}</span>\n                            </div>\n                        )}\n\n                        <div className=\"indicators-block\">\n                            {orderLine.product.discontinued && (\n                                <span className=\"mb-1\">\n                                    <DisplayDiscontinued discontinued={orderLine.product.discontinued} inSmallBox={true} />\n                                </span>\n                            )}\n                            {orderLine.outlet_quality && (\n                                <span className=\"mb-1\">\n                                    <DisplayOutletIndicator\n                                        outletQuality={orderLine.outlet_quality}\n                                        inSmallBox={true}\n                                    />\n                                </span>\n                            )}\n                        </div>\n\n                        <div className=\"qty\">\n                            <span>\n                                <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                :&nbsp;\n                            </span>\n                            <span>{orderLine.delivery_qty ? parseInt(orderLine.delivery_qty) : '--'}</span>\n                        </div>\n                        {/* For tablet screen */}\n                        <div className=\"d-block-only-tablet\">{this.additionalInfoBlock(orderLine)}</div>\n                    </div>\n                </div>\n                {/* For mobile screen */}\n                <div className=\"d-block-only-mobile\">\n                    <div className=\"order-divider-x\"></div>\n                    {this.additionalInfoBlock(orderLine)}\n                    <div className=\"order-divider-x\"></div>\n                    {this.orderInformationBlock(orderLine)}\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    descriptionBlockConfigBath = orderLine => {\n        const cts = orderLine.cut_to_size\n        return (\n            <React.Fragment>\n                <div className=\"order__shipping__details__table--description\">\n                    <div className=\"card__item__productinfo--container\">\n                        <div className=\"product-img\">\n                            {!!cts.configurable.thirdParty && <DisplayQuickShipIndicator tooltipId={cts.configurable.refcode} />}\n                            <img src={cts.thumb} alt={getConfigLineName(cts.configurable)} className=\"is-img-configurable\" />\n                        </div>\n\n                        <div className=\"d-flex align-items-start flex-column\" style={{ gap: '4px' }}>\n                            <CustomProductIndicator />\n                        </div>\n                    </div>\n\n                    <div className=\"product-description-table\">\n                        <div className=\"brand-container\">\n                            <span className=\"brand\">\n                                <DisplayBrand brand={cts.configurable.material.brand} />\n                            </span>\n                        </div>\n\n                        <div className=\"d-flex align-items-center flex-wrap\" style={{ gap: '3px' }}>\n                            <div className=\"product\">\n                                <span className=\"product-title\">\n                                    {getConfigLineName(cts.configurable)}\n                                </span>\n                            </div>\n                            <div>\n                                <span className=\"technical\">\n                                    <Translation id=\"customized\" defaultMessage=\"Custom\" />\n                                </span>\n                            </div>\n                        </div>\n\n                        {orderLine.material_id && (\n                            <div className=\"product-id\">\n                                <span>\n                                    <Translation id=\"material_id\" defaultMessage=\"Material ID\" />\n                                </span>\n                                :&nbsp;\n                                <span>\n                                    {orderLine.material_id}\n                                </span>\n                            </div>\n                        )}\n\n                        <div className=\"qty\">\n                            <span>\n                                <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                :&nbsp;\n                            </span>\n                            <span>{orderLine.delivery_qty ? parseInt(orderLine.delivery_qty) : '--'}</span>\n                        </div>\n                        <div className=\"configurable-bath-btn-orders\">\n                            <button onClick={() => this.handleOpenConfigBathModal(orderLine)}>\n                                <Translation id=\"view_customization_details\" defaultMessage=\"View customization details\" />\n                            </button>\n                        </div>\n                        {/* For tablet screen */}\n                        <div className=\"d-block-only-tablet\">{this.additionalInfoBlock(orderLine)}</div>\n                    </div>\n                </div>\n                {/* For mobile screen */}\n                <div className=\"d-block-only-mobile\">\n                    <div className=\"order-divider-x\"></div>\n                    {this.additionalInfoBlock(orderLine)}\n                    <div className=\"order-divider-x\"></div>\n                    {this.orderInformationBlock(orderLine)}\n                </div>\n            </React.Fragment>\n        )\n    }\n\n    additionalInfoBlock = orderLine => {\n        return (\n            <div className=\"order__shipping__details__table--additional\">\n                <div className=\"comments\">\n                    <span>\n                        <Translation id=\"comments\" defaultMessage=\"Comments\" />\n                        :&nbsp;\n                    </span>\n                    <span>{orderLine.comments ? orderLine.comments : '--'}</span>\n                </div>\n            </div>\n        )\n    }\n\n    orderInformationBlock = orderLine => {\n        if (this.showBtnToDetails(orderLine)) {\n            return (\n                <div className=\"order__shipping__details__table--order\">\n                    <div>\n                        <span>\n                            <Translation id=\"belongs_to_order\" defaultMessage=\"Belongs to order\" />\n                            :&nbsp;\n                        </span>\n                    </div>\n                    <div>\n                        <button onClick={() => this.handleBtnToDetailsOnClick(orderLine)} className=\"btn-to-order-details\">\n                            {orderLine.order_id}\n                        </button>\n                    </div>\n                </div>\n            )\n        }\n        return false\n    }\n\n    displayShippingAddress = () => {\n        let delivery = this.props.delivery\n        let deliveryOrderLines = this.props.delivery.order_lines\n        let shippingAddrByUser = this.props.shippingAddressesByUser\n\n        let availableShippingAddrId =\n            delivery &&\n            deliveryOrderLines &&\n            deliveryOrderLines.filter(orderLine => {\n                return orderLine.shipping_address_id !== null\n            })\n\n        if (deliveryOrderLines && availableShippingAddrId[0]) {\n            let newShippingAddrId = availableShippingAddrId[0]\n\n            let orderLineShippingAddrId = newShippingAddrId.shipping_address_id\n\n            let shippingAddress =\n                shippingAddrByUser && orderLineShippingAddrId\n                    ? shippingAddrByUser.filter(shippingAddress => {\n                          return parseInt(shippingAddress.shippingAddressId) === parseInt(orderLineShippingAddrId)\n                      })[0]\n                    : null\n\n            return shippingAddress ? (\n                <span>\n                    {shippingAddress.customerName}&nbsp;{shippingAddress.address}&nbsp;{shippingAddress.zipCode}&nbsp;{shippingAddress.city}&nbsp;{shippingAddress.country}\n                </span>\n            ) : (\n                '--'\n            )\n        }\n    }\n\n    render() {\n        const { deliveryId, delivery, isLoading, deliveryStatusMap } = this.props\n\n        const headerButtonsGroup = (\n            <React.Fragment>\n                {delivery && delivery.order_lines && (\n                    <div>\n                        <button onClick={this.downloadPdfShippingBody} gtm-label=\"ec_historial_envios_imprimir_detalle\">\n                            <PrintIcon />\n                            <span>\n                                <Translation id=\"print_shipping_details\" defaultMessage=\"Print my shipping details\" />\n                            </span>\n                        </button>\n                    </div>\n                )}\n            </React.Fragment>\n        )\n\n        const timelineDeliveryStatusColor = () => {\n            let deliveryStatus = delivery && delivery.delivery_status\n            if (deliveryStatus === DeliveryStatus.Treated_partially) return '--status-treated-partially'\n            if (deliveryStatus === DeliveryStatus.Treated_completelly) return '--status--treated--completelly'\n            if (deliveryStatus === DeliveryStatus.Not_treated) return '--status--not-treated'\n        }\n\n        const timelineDeliveryStatusLogic = () => {\n            const deliveryStatus = delivery && delivery.delivery_status\n            const deliveryDate = delivery && delivery.delivery_date\n            const expectedDeliveryDate = delivery && delivery.expected_delivery_date\n\n            return (\n                <span className=\"timeline__delivery__status__text\">\n                    {deliveryStatus === DeliveryStatus.Treated_completelly ? (\n                        <React.Fragment>\n                            <span>\n                                <Translation id=\"delivered_on\" defaultMessage=\"Delivered on\" />\n                            </span>\n                            :&nbsp;\n                            <span>{moment(deliveryDate).isSame(moment(), 'day') ? <Translation id=\"today\" defaultMessage=\"Today\" /> : moment(deliveryDate).format('L')}</span>\n                        </React.Fragment>\n                    ) : deliveryStatus === DeliveryStatus.Treated_partially ? (\n                        <React.Fragment>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {moment(expectedDeliveryDate).isSame(moment(), 'day') ? (\n                                    <Translation id=\"today\" defaultMessage=\"Today\" />\n                                ) : (\n                                    moment(expectedDeliveryDate).format('L')\n                                )}\n                            </span>\n                        </React.Fragment>\n                    ) : deliveryStatus === DeliveryStatus.Not_treated ? (\n                        <React.Fragment>\n                            <span>\n                                <Translation id=\"estimated_delivery\" defaultMessage=\"Estimated delivery\" />\n                            </span>\n                            :&nbsp;\n                            <span>\n                                {moment(expectedDeliveryDate).isSame(moment(), 'day') ? (\n                                    <Translation id=\"today\" defaultMessage=\"Today\" />\n                                ) : (\n                                    moment(expectedDeliveryDate).format('L')\n                                )}\n                            </span>\n                        </React.Fragment>\n                    ) : null}\n                </span>\n            )\n        }\n\n        const timelineDeliveryContentMsg = (\n            <div className={'timeline__delivery__status ' + timelineDeliveryStatusColor()}>\n                <span>\n                    <ShippingTruckIcon />\n                </span>\n                {timelineDeliveryStatusLogic()}\n            </div>\n        )\n\n        return (\n            <div className=\"box-profile row\">\n                {/* Sidebar */}\n                <div className=\"profile-container-box col-12 col-md-4 col-lg-3\">\n                    <ProfileContainer />\n                </div>\n                <div className=\"col-12 col-xl-9 order__shipping__details p-0\">\n                    {isLoading && <Spinner isLoading={isLoading} />}\n\n                    <div ref={element => (this.orderScreenBody = element)} className=\"position-relative\">\n                        <header className=\"order__shipping__details__header\">\n                            <div className=\"order__shipping__details__header--goback\">\n                                <i class=\"fas fa-chevron-left\"></i>\n                                <LocalizedLink routeId=\"ROUTE_PROFILE\" params={{ filter: 'shipping-history', open: '' }}>\n                                    <span>\n                                        <Translation id=\"return_shipment_history\" defaultMessage=\"Return to shipment history\" />\n                                    </span>\n                                </LocalizedLink>\n                            </div>\n                            <div className=\"order__shipping__details__header--title\">\n                                <div className=\"main-title\">\n                                    <h1>\n                                        <Translation id=\"shipping_details\" defaultMessage=\"Shipping details\" />\n                                        &nbsp;\n                                        {deliveryId ? <span>{deliveryId}</span> : <span>--</span>}\n                                    </h1>\n                                </div>\n                                {/* Desktop screen */}\n                                <div className=\"d-none d-xl-block details-btn-group\">\n                                    <div className=\"desktop-screen\">{headerButtonsGroup}</div>\n                                </div>\n                            </div>\n                            <div className=\"d-none d-xl-block\">\n                                <div className=\"order-divider-x\"></div>\n                            </div>\n\n                            {timelineDeliveryContentMsg}\n\n                            {delivery && delivery.timeline && (\n                                <div>\n                                    <Timeline delivery={delivery.timeline} orderStatusMap={deliveryStatusMap} withDates isHorizontal />\n                                </div>\n                            )}\n\n                            {/* Responsive screen */}\n                            <div className=\"d-block d-xl-none\">\n                                <div className=\"order-divider-x\"></div>\n                            </div>\n\n                            <div className=\"d-block d-xl-none details-btn-group\">\n                                <div className=\"mobile-screen\">{headerButtonsGroup}</div>\n                            </div>\n                        </header>\n\n                        {/* Box resume */}\n                        <h3 className=\"order__shipping__boxresume__title\">\n                            <Translation id=\"resume\" defaultMessage=\"Resume\" />\n                        </h3>\n                        <section className=\"order__shipping__details__boxresume\">\n                            <div className=\"order__shipping__details__boxresume--title\">\n                                <h4>\n                                    <Translation id=\"shipment_number\" defaultMessage=\"Shipment number\" />\n                                    :&nbsp;\n                                    {deliveryId ? <span>{deliveryId}</span> : <span>--</span>}\n                                </h4>\n                            </div>\n                            <div className=\"order-divider-x\"></div>\n                            <div className=\"order__shipping__details__boxresume--content shipping-view\">\n                                <div>\n                                    {delivery && delivery.container_number && (\n                                        <div>\n                                            <span>\n                                                <Translation id=\"container_number\" defaultMessage=\"Container number\" />\n                                                :&nbsp;\n                                            </span>\n                                            <span>{delivery.container_number}</span>\n                                        </div>\n                                    )}\n                                    {delivery && delivery.container_provider && (\n                                        <div>\n                                            <span>\n                                                <Translation id=\"container_provider\" defaultMessage=\"Container provider\" />\n                                                :&nbsp;\n                                            </span>\n                                            <span>{delivery.container_provider}</span>\n                                        </div>\n                                    )}\n                                    <div>\n                                        <span>\n                                            <Translation id=\"delivery_address\" defaultMessage=\"Delivery address\" />\n                                            :&nbsp;\n                                        </span>\n                                        <span>{this.displayShippingAddress()}</span>\n                                    </div>\n                                </div>\n                                <div>\n                                    <div>\n                                        <span>\n                                            <Translation id=\"number_products_shipment\" defaultMessage=\"Number of products in the shipment\" />\n                                            :&nbsp;\n                                        </span>\n                                        {delivery.order_lines ? <span>{Object.keys(delivery.order_lines).length}</span> : <span>--</span>}\n                                    </div>\n                                </div>\n                            </div>\n                        </section>\n                        <h3 className=\"order__shipping__boxresume__title\">\n                            <Translation id=\"shipment_contents\" defaultMessage=\"Shipment contents\" />\n                        </h3>\n                        <section className=\"order__shipping__details__table shipping-details\">\n                            <table className=\"order__shipping__details__table--table\">\n                                <tbody>\n                                    {delivery &&\n                                        delivery.order_lines &&\n                                        delivery.order_lines.map((orderLine, idx) => {\n                                            return (\n                                                <React.Fragment>\n                                                    <tr key={idx}>\n                                                        <div className=\"order-details-divider-x\"></div>\n                                                        <td className=\"td-description\">\n                                                            {orderLine.cut_to_size && orderLine.cut_to_size.configurable ? (\n                                                                this.descriptionBlockConfigBath(orderLine)\n                                                            ) : orderLine.product ? (\n                                                                this.descriptionBlock(orderLine)\n                                                            ) : (\n                                                                this.descriptionBlockException(orderLine)\n                                                            )}\n                                                        </td>\n                                                        <td className=\"td-additional-info\">{this.additionalInfoBlock(orderLine)}</td>\n                                                        <td className=\"td-delivery-info\">{this.orderInformationBlock(orderLine)}</td>\n                                                    </tr>\n                                                </React.Fragment>\n                                            )\n                                        })}\n                                        {this.state.showConfigBathModal && this.state.selectedOrderLine && (\n                                            <ModalConfigurationDetails\n                                                config={this.state.selectedOrderLine.cut_to_size && this.state.selectedOrderLine.cut_to_size.configurable}\n                                                showBtnEdit={false}\n                                                showBtnDownload={true}\n                                                onClose={() => this.handleCloseConfigBathModal()}\n                                            />\n                                        )}\n                                </tbody>\n                            </table>\n                        </section>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(NewShippingDetails)\n","import { connect } from 'react-redux'\nimport NewShippingDetails from './NewShippingDetails'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport { getShippingAddresses } from '../../../../store/shipping-addresses/reducers'\nimport { getFileByUrl } from '../../../../store/orders/actions'\nimport { getToken } from '../../../../store/login/reducers'\nimport { getIsIkeaCenter } from '../../../../store/centers/reducers'\nimport { dispatchPushURL, setIsShippingHistoryScreen } from '../../../../store/ui/actions'\nimport { getAdaptedFormat, getReplaceDotWithComma } from '../../../../helpers'\nimport { fetchOrderDeliveriesById } from '../../../../store/delivery/actions'\nimport { getDelivery, getDeliveryIsLoading } from '../../../../store/delivery/reducers'\nimport { getDeliveryStatusMap } from \"../../../../store/orders/reducers\"\nimport { getLanguage } from '../../../../store/ui/reducers'\n\nconst mapStateToProps = (state, {match}) => {\n    return {\n        delivery: getDelivery(state),\n        isLoading: getDeliveryIsLoading(state),\n        deliveryId: match.params.deliveryId,\n        shippingAddressesByUser: getShippingAddresses(state),\n        token: getToken(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        deliveryStatusMap: getDeliveryStatusMap(state),\n        locale: getLanguage(state),\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        replaceDotWithComma: (element, locale) => getReplaceDotWithComma(element, locale, state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchOrderDeliveriesById: deliveryId => {\n            dispatch(fetchOrderDeliveriesById(deliveryId))\n        },\n        getFileByUrl: url => dispatch(getFileByUrl(url)),\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        setIsShippingHistoryScreen: isShippingHistoryScreen => {\n            dispatch(setIsShippingHistoryScreen(isShippingHistoryScreen))\n        }\n    }\n}\n\nconst NewShippingDetailsContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(NewShippingDetails)\n    )\n)\n\nexport default NewShippingDetailsContainer\n","import * as api from '../api'\n\nexport const fetchOrderDeliveriesById = (deliveryId) => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({type: 'FETCH_ORDER_DELIVERY_ID_REQUEST'})\n\n    api.fetchOrderDeliveriesById(token, deliveryId).then(\n        response => dispatch({\n            type: 'FETCH_ORDER_DELIVERY_ID_SUCCESS',\n            delivery: response.data.data\n        }),\n        error => dispatch({\n            type: 'FETCH_ORDER_DELIVERY_ID_FAILURE',\n            statusText: error.response.data.err\n        })\n    )\n}","import React from 'react'\nimport { connect } from 'react-redux'\nimport { Route, Switch } from 'react-router-dom'\nimport OrdersContainer from '../components/orders/OrdersContainer'\nimport PreOrdersCtsContainer from '../components/orders/PreOrdersCtsContainer'\nimport ProfileConfigurationContainer from '../components/profile/ProfileConfigurationContainer'\nimport DirectSlabAccessContainer from '../components/direct-slab-access/DirectSlabAccessContainer'\nimport { injectIntl } from 'react-intl'\nimport { getUserType } from '../store/login/reducers'\nimport ProductsFavouriteContainer from '../components/products-favourite/ProductFavouriteContainer'\nimport RecurringOrdersContainer from '../components/recurring-orders/RecurringOrdersContainer'\nimport ProfileSegmentation from '../components/segmentation/ProfileSegmentation'\nimport TransfersContainer from '../components/orders/TransfersContainer'\nimport { getIsMkToolsCenter, getIsIkeaCenter, getIsLowesCenter, canOffer } from '../store/centers/reducers'\nimport Error404Screen from '../screens/Error404Screen'\nimport LowesOrders from '../components/orders/LowesOrders'\nimport ProfileLowesConfigurationContainer from '../components/profile/ProfileLowesConfigurationContainer'\nimport PreOrdersCtsDetailsContainer from '../components/orders/PreOrdersCtsDetailsContainer'\nimport OfferStatusHistoryContainer from '../components/orders/OfferStatusHistoryContainer'\nimport { getLocalizedUrl, showMenuSelector, showPersonalDataSelector, getIsOrderHistoryScreen, getIsShippingHistoryScreen } from '../store/ui/reducers'\nimport { toggleMenu, showPersonalData } from '../store/ui/actions'\nimport Translation from '../components/global/Translation'\nimport NewOrderDetailsContainer from '../components/orders/new-order-history/order/NewOrderDetailsContainer'\nimport NewShippingHistoryContainer from '../components/orders/new-order-history/shipping/NewShippingHistoryContainer'\nimport NewShippingDetailsContainer from '../components/orders/new-order-history/shipping/NewShippingDetailsContainer'\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggleMenu: active => {\n            dispatch(toggleMenu(active))\n        },\n        onTogglePersonalData: active => {\n            dispatch(showPersonalData(active))\n        },\n    }\n}\n\nconst mapStateToProps = (state, props) => {\n    return {\n        showMenu: showMenuSelector(state),\n        showPersonalData: showPersonalDataSelector(state),\n        userType: getUserType(state),\n        isMkToolsCenter: getIsMkToolsCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isLowesCenter: getIsLowesCenter(state),\n        canOffer: canOffer(state),\n        localizedUrl: (routeId) => getLocalizedUrl(state, props.intl, routeId),\n        isOrderHistoryScreen: getIsOrderHistoryScreen(state),\n        isShippingHistoryScreen: getIsShippingHistoryScreen(state)\n    }\n}\nclass ProfileScreen extends React.Component {\n    canRouteConfiguration = () => true\n    canRouteOrders = () => this.props.userType === 'CUSTOMER' || this.props.isLowesCenter\n    canRouteEditOrder = () => !this.props.isLowesCenter\n    canRouteTransfers = () => this.props.isMkToolsCenter && this.props.userType === 'ADMIN'\n    canRouteDirectSlabAccess = () => !this.props.isIkeaCenter && !this.props.isLowesCenter\n    canRouteProductsFavourite = () => !this.props.isLowesCenter\n    canRouteRecurringOrders = () => !this.props.isLowesCenter\n    canRouteSegmentation = () => !this.props.isLowesCenter\n    canRouteOfferStatusHistory = () => this.props.canOffer\n\n    render() {\n        const globalGoBackProfile = (\n            <div className=\"go-back-profile\">\n                <i className=\"fal fa-chevron-left\"></i>\n                <span\n                    className=\"label label-v2\"\n                    onClick={() => {                    \n                        if (!this.props.showMenu) this.props.onToggleMenu(this.props.showMenu)\n                        if (this.props.showMenu && this.props.showPersonalData) {\n                            this.props.onToggleMenu(this.props.showMenu)\n                        }\n                    this.props.onTogglePersonalData(this.props.showPersonalData)}}>\n                    <Translation id=\"back_to_personal_area\" defaultMessage=\"Back to personal area\"/>\n                </span>\n            </div>\n        )\n        return (\n            <div>\n                <section id=\"section-profile\">\n                    <div className=\"container\">\n                        <div className=\"row\" />\n                        <div className=\"row\">\n                            <div className=\"col-12 col-md-12\">\n                                <br />                              \n                                <div className=\"profile-form\">\n                                    {!this.props.isOrderHistoryScreen && !this.props.isShippingHistoryScreen && (\n                                        globalGoBackProfile\n                                    )}\n                                    <Switch>\n                                        {this.canRouteConfiguration() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'configuration')} component={this.props.isLowesCenter ? ProfileLowesConfigurationContainer : ProfileConfigurationContainer} />\n                                        )}\n                                        {this.canRouteOrders() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'orders')} component={this.props.isLowesCenter ? LowesOrders : OrdersContainer} />\n                                        )}                  \n                                        {/* New Order History Start */}\n                                        {/* {this.canRouteOrders() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'orders')} component={NewOrderHistoryContainer} />\n                                        )} */}\n                                        {this.canRouteOrders() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_ORDER_DETAILS').replace(':filter', 'view-order')} component={NewOrderDetailsContainer} />\n                                        )}\n                                        {this.canRouteOrders() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'shipping-history')} component={NewShippingHistoryContainer} />\n                                        )}\n                                        {this.canRouteOrders() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_SHIPPING_DETAILS').replace(':filter', 'view-shipping')} component={NewShippingDetailsContainer} />\n                                        )}\n                                        {/* New Order History End */}\n                                        {this.canRouteOrders() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'pre-orders-cts')} component={PreOrdersCtsContainer} />\n                                        )}           \n                                        {this.canRouteOrders() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'pre-orders-cts-details')} component={PreOrdersCtsDetailsContainer} />\n                                        )}\n                                        {this.canRouteTransfers() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'transfers')} component={TransfersContainer} />\n                                        )}\n                                        {this.canRouteDirectSlabAccess() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'direct-slab-access')} component={DirectSlabAccessContainer} />\n                                        )}\n                                        {this.canRouteProductsFavourite() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'products-favourite')} component={ProductsFavouriteContainer} />\n                                        )}\n                                        {this.canRouteRecurringOrders() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'recurring-orders')} component={RecurringOrdersContainer} />\n                                        )}\n                                        {this.canRouteSegmentation() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'segmentation')} component={ProfileSegmentation} />\n                                        )}\n                                        {this.canRouteOfferStatusHistory() && (\n                                            <Route path={this.props.localizedUrl('ROUTE_PROFILE').replace(':filter', 'offers')} component={OfferStatusHistoryContainer} />\n                                        )}\n                                        <Route component={Error404Screen} />\n                                    </Switch>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </section>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(ProfileScreen)\n)\n","import { connect } from 'react-redux'\n\nimport { addCartLineLot } from '../../store/cart/actions'\nimport {getIsLogged, getIsAdmin, getImpersonatedBy} from '../../store/login/reducers'\nimport LotImageViewer from './LotImageViewer'\nimport withRouter from 'react-router-dom/withRouter'\nimport {getProfileConfiguration, getUnit} from \"../../store/profile-configuration/reducers\";\nimport {showingSegmentationModal} from \"../../store/ui/reducers\";\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        isLogged: getIsLogged(state),\n        isAdmin: getIsAdmin(state),\n        impersonatedBy: getImpersonatedBy(state),\n        parentUrl: match.params.parentUrl,\n        productId: match.params.productId,\n        centerId: match.params.center,\n        lotId: match.params.lotId,\n        quarryBlock: match.params.quarryBlock,\n        quality: match.params.quality,\n        outlet: match.params.outlet,\n        unit: getUnit(state),\n        showSegmentation: showingSegmentationModal(state)\n    }\n}\n\n// const mapDispatchToProps = dispatch => {\n//     return {\n//         buyLot: (productId, lotId, callbackCenter) => {\n//             dispatch(addCartLineLot(productId, lotId, callbackCenter))\n//         },\n//         buyTables: (productId, tableData, centerId) => {\n//\n//         }\n//     }\n// }\n\nexport default withRouter(connect(mapStateToProps, null)(LotImageViewer))\n","import React from 'react'\n\nclass CosentinoSingleSignOn extends React.Component {\n    constructor(props) {\n        super(props)\n\n        window.addEventListener(\n            'message',\n            e => {\n                if (e.origin === 'https://sso.cosentino.com') {\n                    if (e.data && e.data.success) {\n                        props.onSuccess(e.data)\n                    } else {\n                        props.onError(e.data)\n                    }\n                }\n            },\n            false\n        )\n    }\n\n    start = () => {\n        const params = {}\n\n        const query = Object.keys(params)\n            .map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))\n            .join('&')\n\n        window.open('https://sso.cosentino.com/start?' + query, 'Salesforce')\n    }\n\n    render() {\n        return <div onClick={this.start}>{this.props.children}</div>\n    }\n}\n\nexport default CosentinoSingleSignOn\n","import React from 'react'\nimport dangerIcon from '../../assets/img/icons/danger-icon.svg';\n\nclass InfoBox extends React.Component {\n  logo;\n  boxStyle;\n\n  componentDidMount() {\n    switch (this.props.alertType){\n      case 'danger':\n        this.logo = dangerIcon;\n        this.boxStyle = 'bg-danger';\n        break;\n      default:\n        this.logo = dangerIcon;\n        this.boxStyle = 'bg-danger';\n    }\n  }\n\n  render() {\n    return (\n      <React.Fragment>\n        <div className={'alert-box ' + this.boxStyle}>\n\n          <div className='alert-icon'>\n            <img alt=\"\" src={this.logo} />\n          </div>\n          <div className='alert-text'>\n            {this.props.children}\n          </div>\n          <div className='alert-close' style={{cursor: \"pointer\"}} onClick={this.props.onClose}>\n            <i className='fal fa-times'/>\n          </div>\n        </div>\n      </React.Fragment>\n    );\n  }\n}\nexport default InfoBox\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport logo from '../../assets/img/e.cosentino.svg'\n// import logo from '../../assets/img/DKTN.svg'\n\nimport AlertsContainer from '../alerts/AlertsContainer'\nimport Spinner from '../global/Spinner'\nimport Modal from '../global/Modal'\nimport CosentinoSingleSignOn from './CosentinoSingleSignOn'\nimport Alerts from '../alerts/Alerts'\nimport { MsalContext } from '@azure/msal-react'\nimport { withMsal } from '@azure/msal-react'\nimport { PublicClientApplication, EventType, InteractionRequiredAuthError,BrowserAuthError } from '@azure/msal-browser'\nimport axios from 'axios'\nimport InfoBox from \"../global/InfoBox\";\n\nclass SignInForm extends React.Component {\n    static contextType = MsalContext\n\n    state = { error: null, showOldLogin:false, isInfoHidden: false }\n    handleSubmit = e => {\n        e.preventDefault()\n        this.props.onLogin(this.usernameInput.value, this.passwordInput.value, this.props.callback, this.props.callbackCenter, this.props.intl, null, this.props.callbackSalesOrg)\n    }\n\n    handleSubmitAD = (ssoData) => {\n        let accountsSortedByLastLogin = []\n        if (this.props.msalContext.accounts && this.props.msalContext.accounts.length > 0){\n            accountsSortedByLastLogin = this.props.msalContext.accounts.sort((a, b) => {\n                //sort descending, last logged in on position 0\n                return b.idTokenClaims.auth_time - a.idTokenClaims.auth_time\n            })\n        }\n            \n            this.setState({ lastLoginAccount: accountsSortedByLastLogin && accountsSortedByLastLogin[0] && accountsSortedByLastLogin[0].name })\n        var request = {\n            scopes: [process.env.REACT_APP_APP_ID + ' openid offline_access'],\n            account: accountsSortedByLastLogin && accountsSortedByLastLogin[0],\n            // grant_type: 'client_credentials',\n            // client_id: 'f920199a-0f95-4bad-8256-0f60b16ed1ac',\n            // client_secret: '00C6FKE13rRpT5CxP1.-w2j.-cWs~c1mh8',\n            // resource: 'https://graph.microsoft.com'\n        }\n        // console.log('aqcuiring token',request)\n        this.props.msalContext.instance\n            .acquireTokenSilent(request)\n            .then(tokenResponse => {\n                // Do something with the tokenResponse\n                // console.log('token ad')\n                // console.log('tokenResponse.accessToken: ', tokenResponse.accessToken)\n\n                axios\n                    .get(process.env.REACT_APP_INSTANCE + process.env.REACT_APP_TENANT_NAME + '/' + process.env.REACT_APP_SIGN_IN_POLICY + '/openid/v2.0/userinfo', {\n                        headers: { Authorization: `Bearer ${tokenResponse.accessToken}` }\n                    })\n                    .then(response => {\n                        // console.log(response)\n                        ssoData.type = 'AD'\n                        ssoData.username = response.data.email\n                        ssoData.azureToken = tokenResponse.accessToken\n                        this.setState({ lastLoginAccount: response.data.email })\n                        this.props.onLogin(ssoData.username, null, this.props.callback, this.props.callbackCenter, this.props.intl, ssoData, this.props.callbackSalesOrg)\n                    })\n            })\n            .catch(async error => {\n                // console.log('error')\n                // console.log(error)\n                if (error instanceof InteractionRequiredAuthError) {\n                    // fallback to interaction when silent call fails\n                    return this.props.msalContext.instance.acquireTokenPopup(request)\n                }\n                if(error instanceof BrowserAuthError){\n                    this.context.instance.loginRedirect()\n                }\n            })\n            .catch(error => {\n                // console.log('error')\n\n                // handleError(error)\n            })\n    }\n    componentDidMount = () => {\n        const msalInstance = this.props.msalContext.instance\n        const isAuthenticated = this.props.msalContext.accounts.length > 0\n        // if (this.context.inProgress === 'none'){\n        // console.log('llamando a loginAD desde didmount and account available')\n        // console.log(document.referrer)\n        if (\n            (document.referrer.includes('we.cosentino.com') || document.referrer.includes('pro.cosentino.com') || document.referrer.includes('qas-cosentino')) &&\n            !this.props.isLogged\n        ) {\n            this.handleSubmitAD({})\n        }\n\n        this.setState({...this.state, isInfoHidden: false});\n         \n        // } \n        // console.log('context info')\n        // console.log(this.props.msalContext.instance.getAllAccounts())\n        // msalInstance.addEventCallback(event => {\n        //     if (event.eventType === EventType.LOGIN_SUCCESS && event.payload.account) {\n        //         const account = event.payload.account\n        //         console.log(event.payload)\n        //         console.log('llamando a loginAD desde mount addeventcallback')\n        //         this.handleSubmitAD(account)\n        //     }\n        // })\n        // if (this.props.msalContext.accounts && this.props.msalContext.accounts && this.props.msalContext.accounts[0]) {\n        //     console.log('llamando a loginAD desde didmount and account available')\n        //     this.handleSubmitAD(this.props.msalContext.accounts[0])\n        // }\n        // if(isAuthenticatedOnAD,handleSubmitAD)\n    }\n    // trickSSO = ssoData => {\n    //     console.log(ssoData)\n    //     ssoData.type = 'SSO'\n    //     this.props.onLogin(ssoData.sapId, null, this.props.callback, this.props.callbackCenter, this.props.intl, ssoData)\n    // }\n    componentDidUpdate = prevProps => {\n        if (prevProps.msalContext.accounts !== this.props.msalContext.accounts && this.props.msalContext.accounts && this.props.msalContext.accounts[0]) {\n            // console.log('llamando a loginAD desde didupdate and account available')\n            if (this.context.inProgress !== 'none' && !this.props.isLogged) {\n                this.handleSubmitAD({})\n            }\n        }\n        if(prevProps.isLogged !== this.props.isLogged){\n            this.setState({...this.state, isInfoHidden: false})\n        }\n    }\n    render() {\n        const { isLogging } = this.props\n        const spinner = isLogging || this.context.inProgress !== 'none' ? <Spinner isLoading={isLogging} /> : null\n        const isAuthenticated = this.props.msalContext.accounts.length > 0\n        const msalInstance = this.props.msalContext.instance\n\n        // console.log('context')\n        //console.log('this.props.msalContext: ', this.props.msalContext)\n        return (\n            <div className=\"form-signin\">\n                <form onSubmit={this.handleSubmit}>\n                    <AlertsContainer values={{ lastLoginAccount: this.state.lastLoginAccount }} />\n                    {this.state.error && <Alerts alert={this.state.error} status=\"404\" />}\n                    {spinner}\n                    <div className=\"d-block d-lg-none\">\n                        <img alt=\"\" id=\"profile-img\" className=\"profile-img-card\" src={logo} style={{ marginBottom: '30px' }} />\n                    </div>\n                    <div className=\"azure-login\">\n                        <h6 htmlFor=\"email\" style={{ color: 'black' }}>\n                            <Translation id=\"new_access\" defaultMessage=\"New Access\" />\n                        </h6>\n\n                        {this.props.alert == 'WRONG_CREDENTIALS_AZURE' ? (\n                            <input\n                                type=\"button\"\n                                className=\"bt bt-we bt-login loginbutton\"\n                                onClick={() => this.context.instance.loginRedirect({ prompt: 'login' })}\n                                value={this.props.intl.formatMessage({ id: 'login_with_another_account' })}\n                                style={{ width: '100%' }}\n                            />\n                        ) : (\n                            <input\n                                type=\"button\"\n                                className=\"bt bt-we bt-login loginbutton\"\n                                onClick={() => this.context.instance.loginRedirect()}\n                                value={this.props.intl.formatMessage({ id: 'login_with_your_email' })}\n                            />\n                        )}\n\n                        {/* <div className=\"text-center\">\n                            <Translation id=\"dont_have_a_registered_email_yet\" defaultMessage=\"Dont have a registered email yet?\" />\n                            &nbsp;\n                            <a href=\"https://we.cosentino.com/s/register?language=en_GB\" target=\"_blank\" style={{ color: '#007bff', textDecoration: 'underline !important' }}>\n                                <Translation id=\"update_your_account_now\" defaultMessage=\"Update your account now!\" />\n                            </a>\n                        </div> */}\n                    </div>\n\n                    {process.env.NODE_ENV !== 'production' && (\n                        <React.Fragment>\n\n                            <span style={{ textDecoration: 'underline', cursor: 'pointer' }} onClick={() => this.setState({ showOldLogin: !this.state.showOldLogin })}>\n                                <Translation id=\"click_here_\" defaultMessage=\"Click here!\" />\n                            </span>\n\n                            <div className={`identifier-login ${this.state.showOldLogin ? '' : 'd-none'}`}>\n                                <label htmlFor=\"email\">\n                                    <Translation id=\"identifier\" defaultMessage=\"Identifier\" />\n                                </label>\n                                <input\n                                    type=\"text\"\n                                    id=\"inputEmail\"\n                                    className=\"form-control\"\n                                    placeholder={this.props.intl.formatMessage({ id: 'identifier' })}\n                                    autoFocus\n                                    ref={node => {\n                                        this.usernameInput = node\n                                    }}\n                                />\n                                <label htmlFor=\"email\">\n                                    <Translation id=\"password\" defaultMessage=\"Password\" />\n                                </label>\n                                <input\n                                    type=\"password\"\n                                    id=\"inputPassword\"\n                                    className=\"form-control mb-3\"\n                                    placeholder={this.props.intl.formatMessage({ id: 'password' })}\n                                    ref={node => {\n                                        this.passwordInput = node\n                                    }}\n                                    onKeyPress={e => {\n                                        if (e.key === 'Enter') {\n                                            this.handleSubmit(e)\n                                        }\n                                    }}\n                                />\n                            </div>\n                        </React.Fragment>\n                    )}\n                </form>\n            </div>\n        )\n    }\n}\nexport default withMsal(injectIntl(SignInForm))\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport logo from '../../assets/img/e.cosentino.svg'\n\nimport AlertsContainer from '../alerts/AlertsContainer'\nimport Spinner from '../global/Spinner'\nclass ForgotPasswordForm extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.state = { forgotPassword: null }\n    }\n    handleSubmit = e => {\n        e.preventDefault()\n        this.props.onRecoverPassword(this.usernameInput.value, this.emailInput.value)\n    }\n    render() {\n        const { isLogging } = this.props\n\n        const spinner = isLogging ? <Spinner isLoading={isLogging} /> : null\n\n        return (\n            <div className=\"form-signin\">\n                <form onSubmit={this.handleSubmit}>\n                    <AlertsContainer />\n                    {spinner}\n                    <img alt=\"\" id=\"profile-img\" className=\"d-block d-lg-none profile-img-card\" src={logo} style={{ marginBottom: '30px' }} />\n                    <label htmlFor=\"email\">\n                        <Translation id=\"identifier\" defaultMessage=\"Identifier\" />\n                    </label>\n                    <input\n                        type=\"text\"\n                        id=\"inputEmail\"\n                        className=\"form-control\"\n                        placeholder={this.props.intl.formatMessage({ id: 'identifier' })}\n                        autoFocus\n                        ref={node => {\n                            this.usernameInput = node\n                        }}\n                    />\n                    <label htmlFor=\"email\">\n                        <Translation id=\"email\" defaultMessage=\"Email\" />\n                    </label>\n                    <input\n                        type=\"email\"\n                        id=\"inputEmail\"\n                        className=\"form-control mb-3\"\n                        placeholder=\"Email\"\n                        ref={node => {\n                            this.emailInput = node\n                        }}\n                        onKeyPress={e => {\n                            if (e.key === 'Enter') {\n                                this.handleSubmit(e)\n                            }\n                        }}\n                    />\n                    <div id=\"remember\" className=\"checkbox\" />\n                    <input type=\"submit\" className=\"bt bt-dark bt-login loginbutton\" value={this.props.intl.formatMessage({ id: 'recover_password' })} />\n\n                    <div className=\"row links\">\n                        <div className=\"col-12 col-md-7 offset-md-5 forgot-password\">\n                            <span onClick={this.props.showLogin}>\n                                <Translation id=\"login\" defaultMessage=\"Login\" />\n                            </span>\n                        </div>\n                    </div>\n                </form>\n            </div>\n        )\n    }\n}\nexport default injectIntl(ForgotPasswordForm)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport AlertsContainer from '../alerts/AlertsContainer'\n\nclass MandatoryChangePasswordForm extends React.Component {\n    handleSubmit = e => {\n        e.preventDefault()\n        this.props.onMandatoryChangePassword(this.passwordInput.value, this.passwordRepeatInput.value)\n    }\n\n    render() {\n        return (\n            <div className=\"form-signin\">\n                <form onSubmit={this.handleSubmit}>\n                    <AlertsContainer />\n\n                    <div className=\"text-white py-3\">\n                        <b>\n                            <Translation id=\"your_new_password_must_meet\" defaultMessage=\"Your new password must meet the following requirements:\" />\n                        </b>\n                        <ul>\n                            <li>\n                                <Translation id=\"password_not_number\" defaultMessage=\"At least one numeral\" />\n                            </li>\n                            <li>\n                                <Translation id=\"password_not_minus\" defaultMessage=\"At least one lower case letter\" />\n                            </li>\n                            <li>\n                                <Translation id=\"password_not_mayus\" defaultMessage=\"At least one upper case letter\" />\n                            </li>\n                            <li>\n                                <Translation id=\"password_should_contain\" defaultMessage=\"Minimum 8 characters\" />\n                            </li>\n                        </ul>\n                    </div>\n\n                    <label htmlFor=\"email\">\n                        <Translation id=\"password\" defaultMessage=\"Password\" />\n                    </label>\n                    <input\n                        type=\"password\"\n                        id=\"inputPassword\"\n                        className=\"form-control\"\n                        placeholder={this.props.intl.formatMessage({ id: 'password', defaultMessage: 'Password' })}\n                        ref={node => {\n                            this.passwordInput = node\n                        }}\n                    />\n                    <label htmlFor=\"email\">\n                        <Translation id=\"repeat_password\" defaultMessage=\"Repeat Password\" />\n                    </label>\n                    <input\n                        type=\"password\"\n                        id=\"inputRepeatPassword\"\n                        className=\"form-control\"\n                        placeholder={this.props.intl.formatMessage({ id: 'repeat_password', defaultMessage: 'Repeat Password' })}\n                        ref={node => {\n                            this.passwordRepeatInput = node\n                        }}\n                        onKeyPress={e => {\n                            if (e.key === 'Enter') {\n                                this.handleSubmit(e)\n                            }\n                        }}\n                    />\n                    <br />\n                    <input\n                        type=\"submit\"\n                        className=\"bt bt-inverted loginbutton\"\n                        value={this.props.intl.formatMessage({ id: 'change_password', defaultMessage: 'Change Password' })}\n                    />\n                </form>\n            </div>\n        )\n    }\n}\nexport default injectIntl(MandatoryChangePasswordForm)\n","import React from 'react'\n\nimport {FormattedHTMLMessage, FormattedMessage, injectIntl} from 'react-intl'\n\nimport logo from '../../assets/img/e.cosentino.svg'\nimport SignInForm from './SignInForm'\n// import OldSignInForm from './OldSignInForm'\nimport ForgotPasswordForm from './ForgotPasswordForm'\nimport CreateAccountForm from './CreateAccountForm'\nimport MandatoryChangePasswordForm from './MandatoryChangePasswordForm'\nimport Translation from \"../global/Translation\";\nimport {Link} from \"react-router-dom\";\n\nclass LoginModal extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { currentView: 'AD_LOGIN' }\n    }\n    showCreateAccount = () => {\n        this.setState({ currentView: 'CREATE' })\n    }\n    showForgotPassword = () => {\n        this.setState({ currentView: 'PASSWORD_RECOVERY' })\n    }\n    showLogin = () => {\n        this.setState({ currentView: 'AD_LOGIN' })\n    }\n    render() {\n        const { show, onClose, isLogging } = this.props\n\n        // console.log(this.state)\n\n        let form = null\n\n        if (this.state.currentView === 'CREATE') {\n            form = <CreateAccountForm showLogin={this.showLogin} onCreateAccount={this.props.onCreateAccount} />\n        } else if (this.state.currentView === 'PASSWORD_RECOVERY') {\n            form = <ForgotPasswordForm showLogin={this.showLogin} onRecoverPassword={this.props.onRecoverPassword} />\n        } else if (this.state.currentView === 'MANDATORY_CHANGE_PASSWORD') {\n            form = <MandatoryChangePasswordForm onMandatoryChangePassword={this.props.onMandatoryChangePassword} />\n        } else {\n            form = (\n                <SignInForm\n                    isLogging={this.props.isLogging}\n                    isLogged={this.props.isLogged}\n                    onLogin={this.props.onLogin}\n                    showForgotPassword={this.showForgotPassword}\n                    showCreateAccount={this.showCreateAccount}\n                    showLogin={this.showLogin}\n                    callback={this.props.callback}\n                    callbackCenter={this.props.callbackCenter}\n                    callbackSalesOrg={this.props.callbackSalesOrg}\n                    alert={this.props.alert}\n                />\n            )\n        }\n        return (\n            <div>\n                <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} onClick={onClose} />\n                <div id=\"modal-login-container\" className=\"modal-login\" style={{ display: show ? 'block' : 'none' }}>\n                    <div className=\"container-fluid\">\n                        <div className=\"row\">\n                            <div className=\"col-12 col-lg-5 logo-container d-none d-lg-flex flex-column p-0\">\n                                <div>\n                                    <img alt=\"\" id=\"profile-img-fixed\" className=\"profile-img-card\" src={logo} />\n                                    <div className=\"my-4 horizontal-line\" />\n                                    {/* <span className=\"text-left px-5 mt-2\" style={{ color: 'black', fontWeight: '700' }}>\n                                        <Translation id=\"new_changes\" defaultMessage=\"New changes!\" />\n                                    </span>\n                                    <div className=\"px-5 mt-3\" style={{ fontWeight: '400' }}>\n                                        <p>\n                                            <FormattedHTMLMessage id=\"unify_advise\" defaultMessage=\"We are unifying access to all our Cosentino platforms to improve:\" />\n                                        </p>\n                                        <ul className=\"pl-4 list-unstyled\">\n                                            <li className=\"mb-2\">\n                                                - <Translation id=\"security_matters\" defaultMessage=\"Security matters\" />\n                                            </li>\n                                            <li className=\"mb-2\">\n                                                - <Translation id=\"ease_of_use\" defaultMessage=\"Ease of use\" />\n                                            </li>\n                                        </ul>\n                                    </div> */}\n                                    <span className=\"text-left px-5 mt-2\" style={{ color: 'black', fontWeight: '700' }}>\n                                        <Translation id=\"how_to_acces_now\" defaultMessage=\"How to access now?\" />\n                                    </span>\n                                    <div className=\"px-5 mt-3 mb-5\" style={{ fontWeight: '400' }}>\n                                        <ul className=\"pl-4 list-unstyled\">\n                                            <li className=\"mb-2\">\n                                                - <Translation id=\"use_the_new_access\" defaultMessage=\"Use the new access\" />\n                                            </li>\n                                            <li className=\"mb-2\">\n                                                - <Translation id=\"enter_your_work_email_address\" defaultMessage=\"Enter your work email address\" />\n                                            </li>\n                                            <li className=\"mb-2\">\n                                                - <Translation id=\"enter_your_current_password\" defaultMessage=\"Enter your current password\" />\n                                            </li>\n                                            <li>\n                                                - <Translation id=\"your_account_will_be_updated_automatically\" defaultMessage=\"Your account will be updated automatically\" />\n                                            </li>\n                                        </ul>\n                                    </div>\n                                </div>\n\n                                {/* <div className=\"sky mt-auto text-center py-5\" style={{\"color\":\"black\",\"fontWeight\":\"400\"}}>\n                                    <p className=\"mb-0\">\n                                        <FormattedHTMLMessage id=\"dont-have-we\" defaultMessage=\"Don't have a <strong>Cosentino We</strong> account yet?\"/>\n                                    </p>\n                                    <a href=\"#\" style={{\"color\":\"#235F7D\"}}>\n                                        <Translation id=\"create-account-now\" defaultMessage=\"Create an account now!\"/>\n                                    </a>\n                                </div> */}\n                            </div>\n                            <div className=\"col-12 col-lg-7 card-container\">\n                                <header className=\"container-fluid\">\n                                    <div className=\"row\">\n                                        <div className=\"col-3 offset-9 my-auto text-right\">\n                                            <div className=\"bt-close\" onClick={onClose}>\n                                                <i className=\"fal fa-times\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                </header>\n                                <div className=\"col-12\" style={{ justifyContent: 'center', aligItems: 'center', display: 'flex', flexDirection: 'column', minHeight: '70%' }}>\n                                    {form}\n                                </div>\n                                <footer />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default injectIntl(LoginModal)\n","import { connect } from 'react-redux'\nimport LoginModal from './LoginModal'\nimport {\n    getCallbackCenter,\n    getIsLogging,\n    getLoginCallback,\n    mandatoryChangePassword,\n    showModalSelector,\n    getIsLogged,\n    getAlert,\n    getCallbackSalesOrg\n} from '../../store/login/reducers'\nimport { createAccount, login, mandatoryChangePasswordRequest, recoverPassword } from '../../store/login/actions'\nimport * as ui from '../../store/ui/actions'\nimport { getEmployeeId } from '../../store/big-account/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        show: showModalSelector(state),\n        alert: getAlert(state),\n        showBigAccount: true,\n        callback: getLoginCallback(state),\n        callbackCenter: getCallbackCenter(state),\n        callbackSalesOrg: getCallbackSalesOrg(state),\n        isLogging: getIsLogging(state),\n        employeeId: getEmployeeId(state),\n        mandatoryChangePassword: mandatoryChangePassword(state),\n        isLogged: getIsLogged(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onLogin: (username, password, callback, callbackCenter, intl, ssoData, callbackSalesOrg) => {\n            dispatch(login(username, password, callback, callbackCenter, intl, ssoData, callbackSalesOrg))\n        },\n        onRecoverPassword: (username, email) => {\n            dispatch(recoverPassword(username, email))\n        },\n        onCreateAccount: (username, email) => {\n            dispatch(createAccount(username, email))\n        },\n        onMandatoryChangePassword: (newPassword, newPasswordRepeat) => {\n            dispatch(mandatoryChangePasswordRequest(newPassword, newPasswordRepeat))\n        },\n        onClose: () => {\n            dispatch(ui.closeLoginModal())\n        }\n    }\n}\n\nconst LoginModalContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(LoginModal)\n\nexport default LoginModalContainer\n","import { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        userPreferences: getProfileConfiguration(state)\n    }\n}\nconst LengthLotMeasure = ({ userPreferences, intl, original }) => {\n    const localeWithft2 = ['en-US', 'fr-CA', 'en-CA']\n    const userLengthPrefer = userPreferences.lengthUnit === 'M2' ? original.length_m : original.length_ft\n    const lengthDefault = localeWithft2.includes(intl.locale) ? original.length_ft : original.length_m\n    const meters2 = userPreferences.lengthUnit ? parseFloat(userLengthPrefer).toFixed(2) : parseFloat(lengthDefault).toFixed(2)\n    return meters2\n}\n\nexport default injectIntl(connect(mapStateToProps, null)(LengthLotMeasure))\n","import { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\n\nconst mapStateToProps = state => {\n    return { userPreferences: getProfileConfiguration(state) }\n}\nconst WidthLotMeasure = ({ userPreferences, intl, original }) => {\n    const localeWithft2 = ['en-US', 'fr-CA', 'en-CA']\n    const userLengthPrefer = userPreferences.lengthUnit === 'M2' ? original.width_m : original.width_ft\n    const lengthDefault = localeWithft2.includes(intl.locale) ? original.width_ft : original.width_m\n    const meters2 = userPreferences.lengthUnit ? parseFloat(userLengthPrefer).toFixed(2) : parseFloat(lengthDefault).toFixed(2)\n    return meters2\n}\n\nexport default injectIntl(connect(mapStateToProps, null)(WidthLotMeasure))\n","import { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\n\nconst mapStateToProps = state => {\n    return { userPreferences: getProfileConfiguration(state) }\n}\n\nconst QtyMeasure = ({ userPreferences, intl, original }) => {\n    const localeWithft2 = ['en-US', 'fr-CA', 'en-CA']\n    const userLengthPrefer = userPreferences.lengthUnit === 'M2' ? original.qty_m2 : original.qty_ft2\n    const lengthDefault = localeWithft2.includes(intl.locale) ? original.qty_ft2 : original.qty_m2\n    const meters2 = userPreferences.lengthUnit ? parseFloat(userLengthPrefer).toFixed(2) : parseFloat(lengthDefault).toFixed(2)\n    return meters2\n}\n\nexport default injectIntl(connect(mapStateToProps, null)(QtyMeasure))\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport { injectIntl } from 'react-intl'\n\nimport ReactTable from 'react-table'\nimport LengthLotMeasure from '../global/LengthLotMeasure'\nimport WidthLotMeasure from '../global/WidthLotMeasure'\nimport QtyLotMeasure from '../global/QtyLotMeasure'\nimport LengthMeasureTranslation from '../global/LengthMeasureTranslation'\n\nclass BundleContent extends React.Component {\n    render() {\n        const { show, onClose, bundleContent, center } = this.props\n\n        return (\n            <div>\n                <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} onClick={onClose} />\n                <div className=\"modal-login bundle-content-modal\" style={{ display: show ? 'block' : 'none' }}>\n                    <div className=\"container-fluid\">\n                        <div className=\"row\">\n                            <div className=\"col-12 \">\n                                <header className=\"container-fluid\">\n                                    <div className=\"row\">\n                                        <div className=\"col-3 offset-9 my-auto text-right\">\n                                            <div className=\"bt-close\" onClick={onClose}>\n                                                <i className=\"fal fa-times\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                </header>\n                                <div className=\"row\">\n                                    <div className=\"col-12\">\n                                        <ReactTable\n                                            data={bundleContent}\n                                            columns={[\n                                                {\n                                                    Header: '',\n                                                    Cell: ({ original }) => {\n                                                        // loadingText={<Spinner isLoading={isLoading} />} // loading={isLoading}\n\n                                                        const lotImageResult = this.props.lotsImages[parseInt(original.lotId, 10)]\n\n                                                        if (lotImageResult && lotImageResult.thumb) {\n                                                            return (\n                                                                <LocalizedLink\n                                                                    target=\"_blank\"\n                                                                    routeId=\"ROUTE_LOT_IMAGE_VIEWER\"\n                                                                    params={{\n                                                                        productId: original.productId,\n                                                                        lotId: original.lotId,\n                                                                        center: center,\n                                                                        quarryBlock: original.quarryBlock.replace('/', '-'),\n                                                                        quality: original.quality.replace('/', '-')\n                                                                    }}\n                                                                >\n                                                                    <img src={lotImageResult.thumb} className=\"lot-thumb\" alt=\"\" style={{ width: '50px' }} />\n                                                                </LocalizedLink>\n                                                            )\n                                                        } else {\n                                                            return <img src={this.props.original.thumb} className=\"lot-thumb\" alt=\"\" style={{ width: '50px' }} />\n                                                        }\n                                                    },\n                                                    minWidth: 60\n                                                },\n                                                {\n                                                    id: 'quarryBlock',\n                                                    Header: <Translation id=\"quarryBlock\" defaultMessage=\"Quarry Block\" />,\n                                                    Cell: ({ original }) => {\n                                                        if (original.lots) {\n                                                            return (\n                                                                <span className=\"bundle-tag\">\n                                                                    BUNDLE\n                                                                    <span className=\"count-container\">\n                                                                        <span className=\"count\">{original.lots.length} lots</span>\n                                                                    </span>\n                                                                </span>\n                                                            )\n                                                        } else {\n                                                            return original.quarryBlock\n                                                        }\n                                                    },\n                                                    minWidth: 90\n                                                },\n                                                { Header: <Translation id=\"shade\" defaultMessage=\"Shade\" />, accessor: 'shade', minWidth: 40 },\n                                                {\n                                                    Header: <Translation id=\"bundleId\" defaultMessage=\"Bundle ID\" />,\n                                                    Cell: ({ original }) => {\n                                                        return <b>{original.bundleId}</b>\n                                                    },\n                                                    minWidth: 90\n                                                },\n                                                {\n                                                    Header: <Translation id=\"lotId\" defaultMessage=\"Lot ID\" />,\n                                                    Cell: ({ original }) => {\n                                                        if (original.lots) {\n                                                            return ''\n                                                        } else {\n                                                            return original.lotId\n                                                        }\n                                                    },\n                                                    minWidth: 90,\n                                                    show: !!(this.props.isAdmin || this.props.isLatinaVitoria || this.props.impersonatedBy)\n                                                },\n                                                {\n                                                    Header: <Translation id=\"length\" defaultMessage=\"Length\" />,\n                                                    Cell: ({ original }) => {\n                                                        return (\n                                                            <React.Fragment>\n                                                                <LengthLotMeasure original={original} /> <LengthMeasureTranslation smaller={true} />\n                                                            </React.Fragment>\n                                                        )\n                                                    },\n                                                    className: 'text-right',\n                                                    headerClassName: 'text-right',\n                                                    minWidth: 50\n                                                },\n                                                {\n                                                    Header: <Translation id=\"width\" defaultMessage=\"Width\" />,\n                                                    Cell: ({ original }) => {\n                                                        return (\n                                                            <React.Fragment>\n                                                                <WidthLotMeasure original={original} /> <LengthMeasureTranslation smaller={true} />\n                                                            </React.Fragment>\n                                                        )\n                                                    },\n                                                    className: 'text-right',\n                                                    headerClassName: 'text-right',\n                                                    minWidth: 50\n                                                },\n                                                { Header: <Translation id=\"quality\" defaultMessage=\"Quality\" />, accessor: 'quality', minWidth: 40 },\n                                                {\n                                                    Header: <Translation id=\"qty\" defaultMessage=\"Quantity\" />,\n                                                    Cell: ({ original }) => {\n                                                        return (\n                                                            <React.Fragment>\n                                                                <QtyLotMeasure original={original} /> <LengthMeasureTranslation square={true} />\n                                                            </React.Fragment>\n                                                        )\n                                                    },\n                                                    className: 'text-right',\n                                                    headerClassName: 'text-right',\n                                                    minWidth: 40\n                                                },\n                                                { Header: <Translation id=\"location\" defaultMessage=\"Location\" />, accessor: 'location', minWidth: 80 },\n                                                { Header: <Translation id=\"qualityOutlet\" defaultMessage=\"Outlet Quality\" />, accessor: 'qualityOutlet', minWidth: 80 }\n                                            ]}\n                                            defaultPageSize={10}\n                                            pageSizeOptions={[4, 8, 16, 32]}\n                                            previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                            nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                            noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                                            pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                            ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                                        />\n                                    </div>\n                                </div>\n                                <footer />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default injectIntl(BundleContent)\n","import { connect } from 'react-redux'\nimport BundleContent from './BundleContent'\nimport { getLotsImages } from '../../store/lots/reducers'\nimport { fetchLotsImages } from '../../store/lots/actions'\nimport * as ui from '../../store/ui/actions'\nimport { showBundleContent, getBundleContent, getOriginalBundle } from '../../store/ui/reducers'\nimport {getSelectedCenter, isLatinaVitoria} from '../../store/centers/reducers'\nimport {getImpersonatedBy, getIsAdmin} from \"../../store/login/reducers\";\n\nconst mapStateToProps = state => {\n    return {\n        show: showBundleContent(state),\n        bundleContent: getBundleContent(state),\n        lotsImages: getLotsImages(state),\n        original: getOriginalBundle(state),\n        center: getSelectedCenter(state),\n        isAdmin: getIsAdmin(state),\n        impersonatedBy: getImpersonatedBy(state),\n        isLatinaVitoria: isLatinaVitoria(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closeBundleContent())\n        },\n        fetchLotsImages: lotIds => {\n            dispatch(fetchLotsImages(lotIds))\n        }\n    }\n}\n\nconst BundleContentContainer = connect(mapStateToProps, mapDispatchToProps)(BundleContent)\n\nexport default BundleContentContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport { showingSegmentationModal } from '../../store/ui/reducers'\nimport * as ui from '../../store/ui/actions'\nimport { connect } from 'react-redux'\nimport SegmentationContainer from './SegmentationContainer'\nimport { getSegmentationCurrentStep } from '../../store/segmentation/reducers'\nimport {\n    SAVED_SEGMENTATIONS_STEP, SAVING_SEGMENTATION_STEP,\n    SEGMENTATION_EVIDENCE_STEP, SEGMENTATION_SUCCESSFULLY_SAVED,\n    SEGMENTATION_V3_STEP,\n    SUGGESTED_SEGMENTATIONS_STEP\n} from \"./SegmentationSteps\";\n\nconst mapStateToProps = state => {\n    return {\n        show: showingSegmentationModal(state),\n        segmentationCurrentStep: getSegmentationCurrentStep(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closeSegmentationModal())\n        }\n    }\n}\n\nclass SegmentationModal extends React.Component {\n    render() {\n        const { show, onClose, segmentationCurrentStep } = this.props\n\n        let modalLabel\n        switch (segmentationCurrentStep) {\n            case SAVED_SEGMENTATIONS_STEP:\n                modalLabel =  <Translation id=\"choose_saved_segmentation\" defaultMessage=\"Choose saved segmentation\" />\n                break\n            case SAVING_SEGMENTATION_STEP:\n                modalLabel =  <Translation id=\"saving_segmentation\" defaultMessage=\"Saving segmentation\" />\n                break\n            case SEGMENTATION_EVIDENCE_STEP:\n                modalLabel = <Translation id=\"attach_evidence\" defaultMessage=\"Attach evidence\" />\n                break\n            case SEGMENTATION_SUCCESSFULLY_SAVED:\n                modalLabel = <Translation id=\"segmentation_successfully_saved\" defaultMessage=\"Segmentation successfully saved\" />\n                break\n            case SEGMENTATION_V3_STEP:\n                modalLabel = <Translation id=\"choose_segmentation_manually\" defaultMessage=\"Choose segmentation manually\" />\n                break\n            case SUGGESTED_SEGMENTATIONS_STEP:\n            default:\n                modalLabel = <Translation id=\"choose_segmentation\" defaultMessage=\"Choose segmentation\" />\n        }\n\n        if (!show) return (\n            <React.Fragment/>\n        )\n\n        return (\n            <div>\n                <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} onClick={onClose} />\n                {show &&\n                    <div id=\"modal-segmentation-container\" className=\"modal-segmentation container segmentation\">\n                        <header>\n                            <div className=\"d-flex align-items-center justify-content-between pb-3\">\n                                <div>\n                                    <h4 className=\"m-0\">\n                                        {modalLabel}\n                                    </h4>\n                                </div>\n                                <div>\n                                    <div className=\"bt-close\" onClick={onClose}>\n                                        <i className=\"fal fa-times\" />\n                                    </div>\n                                </div>\n                            </div>\n                        </header>\n                        <SegmentationContainer modal />\n                    </div>\n                }\n            </div>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(SegmentationModal)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Button from './Button'\nimport Modal from './Modal'\nimport { connect } from 'react-redux'\nimport { toggleIsObsolete } from '../../store/ui/actions'\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        toggleIsObsolete: () => {\n            dispatch(toggleIsObsolete())\n        }\n    }\n}\nclass AppObsolete extends React.Component {\n    hardRefresh = () => {\n        this.props.toggleIsObsolete()\n\n        window.location.reload(true)\n    }\n    render() {\n        return (\n            <div className=\"container\">\n                <Modal\n                    title={<Translation id=\"please_reload\" defaultMessage=\"Please Reload\" />}\n                    footer={\n                        <Button onClick={() => this.hardRefresh()} inverted size=\"medium\">\n                            <Translation id=\"reload\" defaultMessage=\"Reload\" />\n                        </Button>\n                    }\n                    onClose={() => this.hardRefresh()}\n                >\n                    <div className=\"container\">\n                        <div className=\"col-12\">\n                            <span>\n                                <Translation\n                                    id=\"we_think_you_may_be_using_an_old_version_of_the_web\"\n                                    defaultMessage=\"You may be using an old version of e.Cosentino, please reload in order to continue.\"\n                                />\n                            </span>\n                            <br />\n                            <span>\n                                <Translation id=\"if_problem_persist_please_contact_us\" defaultMessage=\"If problem persist please contact us.\" />\n                            </span>\n                        </div>\n                    </div>\n                </Modal>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        null,\n        mapDispatchToProps\n    )(AppObsolete)\n)\n","import { getSuccessMessage, getFailureMessage, getValues } from '../../store/floating-alerts/reducers'\nimport { closeMessage } from '../../store/floating-alerts/actions'\nimport { connect } from 'react-redux'\nimport FloatingAlert from './FloatingAlert'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        sucessMessage: getSuccessMessage(state),\n        failureMessage: getFailureMessage(state),\n        values: getValues(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(closeMessage())\n        }\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(FloatingAlert)\n","export const closeMessage = () => {\n    return { type: 'CLOSE_FLOATING_ALERT' }\n}\n","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\n\nimport Modal from './Modal'\nimport Button from './Button'\nimport { getShowInsertTranslation, getIdTranslation, getDefaultMessageTranslation, getLanguage } from '../../store/ui/reducers'\nimport { connect } from 'react-redux'\n\nimport { getTranslation, sendTranslation } from '../../store/ui/actions'\nimport Translation from './Translation'\n\nconst mapStateToProps = state => {\n    return {\n        showInsertTranslation: getShowInsertTranslation(state),\n        id: getIdTranslation(state),\n        defaultMessage: getDefaultMessageTranslation(state),\n        language: getLanguage(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        closeModalTranslation: () => {\n            dispatch({ type: 'CLOSE_MODAL_TRANSLATION' })\n        },\n        sendTranslation: (termId, translation) => {\n            dispatch(sendTranslation(termId, translation)).then(() => dispatch({ type: 'CLOSE_MODAL_TRANSLATION' }))\n        },\n        getTranslation: () => dispatch(getTranslation())\n    }\n}\nclass ModalFormattedMessage extends React.Component {\n    state = { showInsertTranslation: false, translations: {} }\n    componentDidMount() {\n        // this.props.getTranslation()\n    }\n\n    render() {\n        return (\n            this.props.showInsertTranslation && (\n                <Modal\n                    style={{ fontSize: '16px' }}\n                    title={<Translation id=\"translationInsertTitle\" defaultMessage=\"Not correctly translated?\" />}\n                    onClose={() => this.props.closeModalTranslation()}\n                    footer={\n                        <Button onClick={() => this.props.sendTranslation(this.props.id, this.inputTranslate.value)} inverted size=\"medium\">\n                            <Translation id=\"translate\" defaultMessage=\"Translate\" />\n                        </Button>\n                    }\n                >\n                    <div style={{ fontSize: '14px' }}>\n                        <ul>\n                            <li><Translation id=\"id\" defaultMessage=\"ID\" />: {this.props.id}</li>\n                            <li><Translation id=\"default_text\" defaultMessage=\"Default text\" />: {this.props.defaultMessage}</li>\n                            <li><Translation id=\"translate\" defaultMessage=\"Translate\" />: {this.props.intl.formatMessage({ id: this.props.id })}</li>\n                        </ul>\n                        <p>\n                            <Translation\n                                id=\"translationInsertBody\"\n                                defaultMessage=\"This translation not correspond to actual term or not fitting the display? update it please!.\"\n                            />\n                        </p>\n                        <div className=\"form-group\">\n                            <small><Translation id=\"showing\" defaultMessage=\"Showing\" /></small>\n                            <input ref={ref => (this.inputTranslate = ref)} type=\"email\" className=\"form-control\" aria-describedby=\"emailHelp\" placeholder=\"translate\" />\n                        </div>\n                    </div>\n                </Modal>\n            )\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(ModalFormattedMessage)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport { connect } from 'react-redux'\nimport { getShowBigAccountModal } from '../../store/ui/reducers'\nimport { getEmployeeId } from '../../store/big-account/reducers'\nimport { fetchCart } from '../../store/cart/actions'\nimport logo from '../../assets/img/e.cosentino.svg'\nimport { setUserEmailAAD } from '../../store/profile-configuration/actions'\n\nconst mapStateToProps = state => {\n    return {\n        showBigAccountModal: getShowBigAccountModal(state),\n        employeeId: getEmployeeId(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        setEmployeeId: employeeId => Promise.resolve(dispatch({ type: 'SET_EMPLOYEE_ID', employeeId: employeeId })),\n        fetchCart: () => dispatch(fetchCart()),\n        toggleShowIkeaModalEmployeeId: open => Promise.resolve(dispatch({ type: 'TOGGLE_SHOW_BIG_ACCOUNT_MODAL', open: open })),\n        setUserEmailAAD: email => {\n            return dispatch(setUserEmailAAD(email))\n        },\n    }\n}\nclass IkeaModalEmployeeId extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { isLoading: false, employeeId: props.employeeId }\n        this.form = React.createRef()\n    }\n    setEmployeeId() {\n        if ((!HTMLFormElement.prototype.reportValidity && /[0-9]{8}/.test(this.state.employeeId)) || this.form.current.reportValidity())\n            this.props.setEmployeeId(this.state.employeeId).then(() => {\n                this.props.setUserEmailAAD(this.state.employeeId)\n                this.setState({ isLoading: true })\n                this.props\n                    .fetchCart()\n                    .then(() => {\n                        this.setState({ isLoading: false })\n                        this.props.toggleShowIkeaModalEmployeeId(false)\n                    })\n                    .catch(() => this.setState({ isLoading: false }))\n            })\n    }\n    render() {\n        const { showBigAccountModal, employeeId } = this.props\n\n        if (!showBigAccountModal) return null\n        return (\n            <div>\n                <div className=\"full-overlay\" style={{ display: showBigAccountModal ? 'block' : 'none' }} />\n                <div id=\"modal-login-container\" className=\"modal-login\" style={{ display: showBigAccountModal ? 'block' : 'none' }}>\n                    <div className=\"container-fluid\">\n                        <div className=\"row\">\n                            <div className=\"col-12 col-lg-5 logo-container d-none d-lg-block\">\n                                <img alt=\"\" id=\"profile-img\" className=\"profile-img-card\" src={logo} />\n                            </div>\n                            <div className=\"col-12 col-lg-7 card-container\">\n                                <header className=\"container-fluid\">\n                                    <div className=\"row\">\n                                        <div className=\"col-3 offset-9 my-auto text-right\">\n                                            {/* <div className=\"bt-close\" onClick={() => {}}>\n                                                <i className=\"fal fa-times\" />\n                                            </div> */}\n                                        </div>\n                                    </div>\n                                </header>\n\n                                <div className=\"form-signin\">\n                                    <div className=\"col-12\">\n                                        <div className=\"form-group employee-id\">\n                                            <form\n                                                ref={this.form}\n                                                onSubmit={e => {\n                                                    e.preventDefault()\n                                                    this.setEmployeeId()\n                                                }}\n                                            >\n                                                <label>\n                                                    <Translation\n                                                        id=\"your_account_has_the_multicart_feature_active_so_please_enter_your_email_address\"\n                                                        defaultMessage=\"Your account has the multicart feature active so please enter your email address\"\n                                                    />\n                                                </label>{' '}\n                                                <input\n                                                    data-cy=\"ikea__input_employeeId-start\"\n                                                    className=\"form-control\"\n                                                    defaultValue={employeeId}\n                                                    onKeyPress={e => {\n                                                        if (e.key === 'Enter') {\n                                                            this.setEmployeeId()\n                                                        }\n                                                    }}\n                                                    onChange={e => this.setState({ employeeId: e.target.value })}\n                                                    type=\"email\"\n                                                />\n                                                <Button\n                                                    disabled={!(this.state.employeeId && this.state.employeeId !== '') || this.state.isLoading}\n                                                    onClick={() => this.setEmployeeId()}\n                                                    inverted\n                                                    size=\"medium\"\n                                                    type=\"submit\"\n                                                    className=\"bt bt-inverted loginbutton\"\n                                                >\n                                                    <Translation id=\"login\" defaultMessage=\"Login\"></Translation>\n                                                </Button>\n                                            </form>\n                                        </div>\n                                    </div>\n                                    <footer />\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(IkeaModalEmployeeId)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Button from './Button'\nimport Modal from './Modal'\nimport { connect } from 'react-redux'\nimport { getShowIkeaModalEmployeeId } from '../../store/ui/reducers'\nimport { getEmployeeId } from '../../store/big-account/reducers'\nimport { getIsIkeaCenter } from '../../store/centers/reducers'\nimport { fetchCart } from '../../store/cart/actions'\nimport Spinner from './Spinner'\n\nconst mapStateToProps = state => {\n    return {\n        showIkeaModalEmployeeId: getShowIkeaModalEmployeeId(state),\n        employeeId: getEmployeeId(state),\n        isIkeaCenter: getIsIkeaCenter(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        setEmployeeId: employeeId => Promise.resolve(dispatch({ type: 'SET_EMPLOYEE_ID', employeeId: employeeId })),\n        fetchCart: () => dispatch(fetchCart()),\n        toggleShowIkeaModalEmployeeId: open => Promise.resolve(dispatch({ type: 'TOGGLE_SHOW_IKEA_MODAL_EMPLOYEE_ID', open: open }))\n    }\n}\nclass IkeaModalEmployeeId extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { isLoading: false, employeeId: props.employeeId }\n        this.form = React.createRef()\n    }\n    setEmployeeId() {\n        if ((!HTMLFormElement.prototype.reportValidity && /[0-9]{8}/.test(this.state.employeeId)) || this.form.current.reportValidity())\n            this.props.setEmployeeId(this.state.employeeId).then(() => {\n                this.setState({ isLoading: true })\n                this.props\n                    .fetchCart()\n                    .then(() => {\n                        this.setState({ isLoading: false })\n                        this.props.toggleShowIkeaModalEmployeeId(false)\n                    })\n                    .catch(() => this.setState({ isLoading: false }))\n            })\n    }\n    render() {\n        const { isIkeaCenter, showIkeaModalEmployeeId, employeeId, toggleShowIkeaModalEmployeeId } = this.props\n\n        if (!isIkeaCenter || !showIkeaModalEmployeeId) return null\n        return (\n            <div className=\"container\">\n                <Modal\n                    title={<Translation id=\"please_complete_the_form\" defaultMessage=\"Please complete the form\" />}\n                    footer={\n                        <Button\n                            disabled={!(this.state.employeeId && this.state.employeeId !== '') || this.state.isLoading}\n                            onClick={() => this.setEmployeeId()}\n                            inverted\n                            size=\"medium\"\n                        >\n                            <Translation id=\"accept\" defaultMessage=\"Accept\" />\n                        </Button>\n                    }\n                    onClose={() => toggleShowIkeaModalEmployeeId()}\n                >\n                    <div className=\"container\">\n                        <Spinner isLoading={this.state.isLoading} />\n                        <div className=\"col-12\">\n                            <div className=\"employee-msg\">\n                                <Translation id=\"please_add_the_employee_id_in_order\" defaultMessage=\"Please add the employee id in order\" />\n                            </div>\n                            <div className=\"form-group employee-id\">\n                                <form\n                                    ref={this.form}\n                                    onSubmit={e => {\n                                        e.preventDefault()\n                                        this.setEmployeeId()\n                                    }}\n                                >\n                                    <label>\n                                        <Translation id=\"employee_id\" defaultMessage=\"Employee Id\" />:\n                                    </label>{' '}\n                                    <input\n                                        data-cy=\"ikea__input_employeeId-start\"\n                                        pattern=\"[0-9]{8}\"\n                                        title=\"8 digits (12345678)\"\n                                        placeholder=\"12345678\"\n                                        defaultValue={employeeId}\n                                        onKeyPress={e => {\n                                            if (e.key === 'Enter') {\n                                                this.setEmployeeId()\n                                            }\n                                        }}\n                                        onChange={e => this.setState({ employeeId: e.target.value })}\n                                        type=\"text\"\n                                    />\n                                </form>\n                            </div>\n                        </div>\n                    </div>\n                </Modal>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(IkeaModalEmployeeId)\n)\n","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport { showingDektonGripModal, getLinkTechnicalDektonGrip, getLinkMaintenanceDektonGrip } from '../../../store/ui/reducers'\nimport * as ui from '../../../store/ui/actions'\nimport { connect } from 'react-redux'\nimport Modal from '../../global/Modal'\nimport Button from '../../global/Button'\nimport { submitDektonGripModal } from '../../../store/ui/actions'\n\nconst mapStateToProps = state => {\n    return {\n        show: showingDektonGripModal(state),\n        linkTechnicalDektonGrip: getLinkTechnicalDektonGrip(state),\n        linkMaintenanceDektonGrip: getLinkMaintenanceDektonGrip(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closeDektonGripModal())\n        },\n        submitDektonGripModal: () => {\n            dispatch(submitDektonGripModal())\n        }\n    }\n}\n\nclass DektonGripModal extends React.Component {\n\n    render() {\n        const { show, onClose, submitDektonGripModal, linkTechnicalDektonGrip, linkMaintenanceDektonGrip } = this.props\n\n        return show ? (\n            <Modal\n                title={\n                    <h5 style={{ textAlign: 'center', flexGrow: '1' }}>\n                        <Translation id=\"are_you_sure_add_to_cart_a_dekton_and\" defaultMessage=\"Are you sure add to cart a dekton Grip + ?\" />\n                    </h5>\n                }\n                onClose={onClose}\n                footer={\n                    <div className=\"group_buttons\" style={{ width: '100%', display: 'flex', justifyContent: 'space-around' }}>\n                        <Button onClick={onClose} size=\"medium\" customClass=\"m-1\">\n                            <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\n                        </Button>\n                        <Button onClick={submitDektonGripModal} inverted size=\"medium\" customClass=\"m-1\">\n                            <Translation id=\"add_to_cart\" defaultMessage=\"Add to cart\" />\n                        </Button>\n                    </div>\n                }\n                customClass=\"dekton-grip-modal\"\n            >\n                <div className=\"p-2\">\n                    <p>\n                        <Translation\n                            id=\"dekton_grip_is_the_anti_slip_treatment_for_those_areas_that_require_a_higher_grip_due_to_local_standard_and_is_not_recommended_for_areas_where_it_is_not_necessary\"\n                            defaultMessage=\"Dekton Grip + is the anti-slip treatment for those areas that require a higher grip due to local standard, and is not recommended for areas where it is not necessary.​\"\n                        />\n                    </p>\n                    <p>\n                        <Translation\n                            id=\"for_a_succesfull_installation_we_share_with_you_all_the_information_in_these_links\"\n                            defaultMessage=\"For a succesfull installation, we share with you all the information in these links ...\"\n                        />\n                    </p>\n                    <p>\n                        <a href={linkTechnicalDektonGrip} target=\"_blank\" rel=\"noopener noreferrer\" size=\"small\">\n                            <Translation id=\"technical_information\" defaultMessage=\"Technical Information\" />\n                        </a>{' '}\n                        <Translation id=\"and\" defaultMessage=\"and\" />{' '}\n                        <a href={linkMaintenanceDektonGrip} target=\"_blank\" rel=\"noopener noreferrer\" size=\"small\">\n                            <Translation id=\"cleaning_&_maintenance\" defaultMessage=\"Cleaning & Maintenance\" />\n                        </a>\n                    </p>\n                </div>\n            </Modal>\n        ) : null\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(DektonGripModal)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport {FormattedHTMLMessage, injectIntl} from 'react-intl'\n\nimport Button from '../global/Button'\nimport { connect } from 'react-redux'\nimport warning from '../../assets/img/warning.jpg'\nimport { getShowAskForEmailModal } from '../../store/login/reducers'\nimport { setUserEmailAAD } from '../../store/profile-configuration/actions'\nimport Alerts from '../alerts/Alerts'\nimport { getErrorOnSetEmail } from '../../store/profile-configuration/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        showAskForEmailModal: getShowAskForEmailModal(state),\n        errorOnSetEmail: getErrorOnSetEmail(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        setUserEmailAAD: email => {\n            return dispatch(setUserEmailAAD(email))\n        }\n    }\n}\n\nclass AskForEmailModal extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { isLoading: false, email: '', error: '' }\n        this.form = React.createRef()\n    }\n    validateEmail = email => {\n        const re = /^(([^<>()[\\]\\\\.,;:\\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,}))$/\n        return re.test(email)\n    }\n    setUserEmailAAD = input => {\n        if (input.validity.valid && input.value !== '' && this.validateEmail(this.state.email)) {\n            this.props\n                .setUserEmailAAD(this.state.email)\n                .then(() => {\n                    // this.props.toggleModal(true) //moved to ui reducer\n                })\n                .catch(() => {})\n        } else {\n            this.setState({ error: 'MUST_BE_A_VALID_EMAIL' })\n        }\n    }\n    render() {\n        const { showAskForEmailModal } = this.props\n\n        if (!showAskForEmailModal) return null\n        return (\n            <div>\n                <div className=\"full-overlay\" style={{ display: showAskForEmailModal ? 'block' : 'none' }} />\n                <div id=\"modal-login-container\" className=\"modal-login modal-ask-for-email\" style={{ display: showAskForEmailModal ? 'block' : 'none' }}>\n                    <div className=\"\">\n                        <div className=\"row no-gutters\">\n                            <div className=\"col-12 \">\n                                <div className=\"logo-container\" style={{ backgroundImage: `url(${warning})` }} />\n                            </div>\n                            <div className=\"col-12 card-container\">\n                                <header className=\"container-fluid\">\n                                    <div className=\"row\">\n                                        <div className=\"col-3 offset-9 my-auto text-right\">\n                                            {/* <div className=\"bt-close\" onClick={() => {}}>\n                                                <i className=\"fal fa-times\" />\n                                            </div> */}\n                                        </div>\n                                    </div>\n                                </header>\n\n                                <div className=\"form-signin\">\n                                    <div className=\"col-12\">\n                                        <div className=\"form-group employee-id\" style={{ textAlign: 'center' }}>\n                                            <form\n                                                ref={this.form}\n                                                onSubmit={e => {\n                                                    e.preventDefault()\n                                                    // this.setUserEmailAAD()\n                                                }}\n                                            >\n                                                <h3>\n                                                   <Translation\n                                                        id=\"remember\"\n                                                        defaultMessage=\"REMEMBER!\"\n                                                    />\n                                                    </h3>\n                                                <label>\n                                                    <FormattedHTMLMessage\n                                                        id=\"remember_for_email_azure_active_directory_modal_text\"\n                                                        defaultMessage=\"In the following weeks you won´t be able to access <i><b>eCosentino</b></i> using your <b>SAP</b> id. Ensure you have an email account to access through our new and improved unified access\"\n                                                    />\n                                                </label>{' '}\n                                                {(this.state.error || this.props.errorOnSetEmail) && <Alerts alert={this.state.error || this.props.errorOnSetEmail} status=\"404\" />}\n                                                <div className=\"mt-2 form-group\" style={{display:'flex',alignItems:'center',justifyContent:'center'}}>\n                                                    <input\n                                                        className=\"form-control col-9\"\n                                                        placeholder={'example@email.com'}\n                                                        defaultValue={this.state.email}\n                                                        onKeyPress={e => {\n                                                            if (e.key === 'Enter') {\n                                                                this.setUserEmailAAD(this.inputEmail)\n                                                            }\n                                                        }}\n                                                        ref={node => {\n                                                            this.inputEmail = node\n                                                        }}\n                                                        onChange={e => this.setState({ email: e.target.value })}\n                                                        type=\"email\"\n                                                    />\n                                                    <Button\n                                                        disabled={!(this.state.email && this.state.email !== '') || this.state.isLoading}\n                                                        onClick={() => this.setUserEmailAAD(this.inputEmail)}\n                                                        inverted\n                                                        type=\"submit\"\n                                                        className=\"bt bt-inverted loginbutton form-control\"\n                                                    >\n                                                        <Translation id=\"send\" defaultMessage=\"Send\" />\n                                                    </Button>\n                                                </div>\n                                            </form>\n                                        </div>\n                                    </div>\n                                    <footer />\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(AskForEmailModal)\n)\n","import React from 'react'\nimport Translation from './Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Button from './Button'\nimport Modal from './Modal'\nimport { connect } from 'react-redux'\nimport { getEmployeeId } from '../../store/big-account/reducers'\nimport { getIsIkeaCenter } from '../../store/centers/reducers'\nimport { emptyCart, fetchCart } from '../../store/cart/actions'\nimport Spinner from './Spinner'\nimport mallDiscount from '../../assets/img/logos/mall-discount-bg-green.svg'\nimport { showIncompatibleTypesExceptionModal } from '../../store/cart/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        showIncompatibleTypesExceptionModal: showIncompatibleTypesExceptionModal(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        emptyCart: () => dispatch(emptyCart()),\n        toggleIncompatibleTypesExceptionModal: open => Promise.resolve(dispatch({ type: 'TOGGLE_INCOMPATIBLE_TYPES_EXCEPTION_MODAL', open: open }))\n    }\n}\nclass IncompatibleTypesExceptionModal extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { isLoading: false }\n    }\n\n    render() {\n        const { emptyCart, toggleIncompatibleTypesExceptionModal, showIncompatibleTypesExceptionModal } = this.props\n\n        if (!showIncompatibleTypesExceptionModal) {\n            return null\n        }\n        return (\n            <div className=\"container\">\n                <Modal\n                    // title={\n\n                    // }\n                    customClass={'mall-discount'}\n                    footer={\n                        <div className=\"modal-footer__buttons row\" style={{ display: 'flex', justifyContent: 'space-evenly', alignItems: 'center', width: '100%' }}>\n                            <Button\n                                onClick={() => {\n                                    emptyCart()\n                                    toggleIncompatibleTypesExceptionModal()\n                                }}\n                                size=\"medium\"\n                            >\n                                <Translation id=\"yes\" defaultMessage=\"Yes\" />,{' '}\n                                <span style={{ textTransform: 'lowercase' }}>\n                                    <Translation id=\"empty_cart\" defaultMessage=\"Empty cart\" />\n                                </span>\n                            </Button>\n\n                            <Button onClick={() => toggleIncompatibleTypesExceptionModal()} inverted size=\"medium\">\n                                <Translation id=\"no\" defaultMessage=\"No\" />,{' '}\n                                <span style={{ textTransform: 'lowercase' }}>\n                                    <Translation id=\"keep_buying\" defaultMessage=\"Keep Buying\" />\n                                </span>\n                            </Button>\n                        </div>\n                    }\n                    onClose={() => toggleIncompatibleTypesExceptionModal()}\n                >\n                    <div className=\"container\">\n                        <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', marginBottom: '20px' }}>\n                            <img alt=\"\" src={mallDiscount} className=\"mall-discount-image\" />\n                        </div>\n\n                        <Spinner isLoading={this.state.isLoading} />\n                        <div className=\"row\" style={{ textAlign: 'center' }}>\n                            <div className=\"col-12\">\n                                <Translation\n                                    id=\"mall_cart_type_incompatible_exception_header\"\n                                    defaultMessage=\"It is not possible to combine Mall products and normal items from your portfolio in the same cart.\"\n                                />\n                            </div>\n\n                            <div className=\"col-12\">\n                                <strong style={{ fontWeight: 600 }}>\n                                    <Translation id=\"mall_cart_type_incompatible_exception_body\" defaultMessage=\"Do you want to empty your cart?\" />\n                                </strong>\n                            </div>\n                        </div>\n                    </div>\n                </Modal>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(IncompatibleTypesExceptionModal)\n)\n","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport { injectIntl } from 'react-intl'\nimport newsletter from '../../../assets/img/newsletter.jpg'\nimport { showingEmailPromotionsModal } from '../../../store/ui/reducers'\nimport {\n    getPromotionConfigurationEmails,\n    getPromotionConfigurationAcceptPromotionNotifications,\n    getPromotionConfigurationAcceptPromotionPolicies,\n    getPromotionConfigurationPreviousPreferences\n} from '../../../store/profile-configuration/reducers'\nimport * as ui from '../../../store/ui/actions'\nimport { connect } from 'react-redux'\nimport Button from '../../global/Button'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport Alerts from '../../alerts/Alerts'\nimport { noShowMoreSubscribeModal } from '../../../store/ui/actions'\n\nconst mapStateToProps = state => {\n    return {\n        show: showingEmailPromotionsModal(state),\n        previousPreferences: getPromotionConfigurationPreviousPreferences(state),\n        promotionEmails: getPromotionConfigurationEmails(state),\n        acceptPromotionNotifications: getPromotionConfigurationAcceptPromotionNotifications(state),\n        acceptPolicies: getPromotionConfigurationAcceptPromotionPolicies(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closeEmailPromotionsModal())\n        },\n        submitEmailPromotionsModal: (acceptPromotionNotifications, promotionEmails, acceptPolicies) => {\n            if (acceptPromotionNotifications && promotionEmails.length !== 0 && acceptPolicies) {\n                return dispatch(ui.submitEmailPromotionsModal(acceptPromotionNotifications, promotionEmails, acceptPolicies))\n            }\n        },\n        dontShowMore: () => {\n            dispatch(noShowMoreSubscribeModal())\n            dispatch(ui.closeEmailPromotionsModal())\n        }\n    }\n}\n\nclass EmailPromotionsModal extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            promotionEmails: this.props.promotionEmails,\n            acceptPromotionNotifications: this.props.acceptPromotionNotifications,\n            acceptPolicies: this.props.acceptPolicies\n        }\n    }\n    validateEmail = email => {\n        const re = /^(([^<>()[\\]\\\\.,;:\\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,}))$/\n        return re.test(email)\n    }\n    setUserEmail = input => {\n        if (input.validity.valid && input.value !== '' && this.validateEmail(this.state.email)) {\n            this.props\n                .submitEmailPromotionsModal(this.state.acceptPromotionNotifications, this.state.email, this.state.acceptPolicies)\n                .then(() => {\n                    this.props.onClose() //moved to ui reducer\n                })\n                .catch(() => {})\n        } else {\n            this.setState({ error: 'MUST_BE_A_VALID_EMAIL' })\n        }\n    }\n    render() {\n        const { show, onClose } = this.props\n        return show && !this.props.previousPreferences ? (\n            <div>\n                <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} />\n                <div id=\"modal-login-container\" className=\"modal-login modal-newsletter\" style={{ display: show ? 'block' : 'none' }}>\n                    <div className=\"\">\n                        <div className=\"row no-gutters\">\n                            <div className=\"col-12 logo-container\">\n                                <header className=\"container-fluid\" style={{ position: 'absolute', zIndex: '5', color: 'white' }}>\n                                    <div className=\"row\">\n                                        <div className=\"col-3 offset-9 my-auto text-right\">\n                                            <div className=\"bt-close\" onClick={onClose}>\n                                                <i className=\"fal fa-times\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                </header>\n                                <img alt=\"\" id=\"profile-img\" className=\"profile-img-card\" src={newsletter} />\n                            </div>\n                            <div className=\"col-12 card-container\">\n                                <div className=\"form-signin\">\n                                    <div className=\"col-12\">\n                                        <header className=\"container-fluid\">\n                                            <h3 style={{ textAlign: 'center' }}>\n                                                <Translation id=\"join_our_newsletter\" defaultMessage=\"Join our newsletter\" />\n                                            </h3>\n                                            <label style={{ textAlign: 'center' }}>\n                                                <Translation\n                                                    id=\"receive_news_about_offers_and_promotions_from_your_center_on_email\"\n                                                    defaultMessage=\"Receive news about offers and promotions from your center on email\"\n                                                />\n                                            </label>\n                                            {this.state.error && <Alerts alert={this.state.error} status=\"404\" />}\n                                        </header>\n                                        <div className=\"form-group employee-id\" style={{ textAlign: 'center' }}>\n                                            <div className=\"container\">\n                                                <div className=\"row\" style={{ textAlign: 'left' }}>\n                                                    <div className=\"col-12\">\n                                                        <div className=\"form-group\" style={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n                                                            <input\n                                                                className=\"form-control col-9\"\n                                                                placeholder={'example@email.com'}\n                                                                defaultValue={this.state.email}\n                                                                ref={node => {\n                                                                    this.inputEmail = node\n                                                                }}\n                                                                onChange={e => this.setState({ email: e.target.value })}\n                                                                type=\"email\"\n                                                            />\n                                                            <Button\n                                                                disabled={\n                                                                    !(this.state.email && this.state.email !== '') ||\n                                                                    this.state.isLoading ||\n                                                                    !this.state.acceptPromotionNotifications ||\n                                                                    !this.state.acceptPolicies\n                                                                }\n                                                                onClick={() => this.setUserEmail(this.inputEmail)}\n                                                                inverted\n                                                                type=\"submit\"\n                                                                className=\"bt bt-inverted loginbutton form-control\"\n                                                            >\n                                                                <Translation id=\"send\" defaultMessage=\"Send\" />\n                                                            </Button>\n                                                        </div>\n                                                    </div>\n                                                    <div className=\"col-12\">\n                                                        <label className=\"CheckboxLinkSaleConditions\">\n                                                            <input\n                                                                name=\"accept_policies_check\"\n                                                                type=\"checkbox\"\n                                                                onClick={() => this.setState({ acceptPolicies: !this.state.acceptPolicies })}\n                                                                defaultChecked={this.state.acceptPolicies}\n                                                            />{' '}\n                                                            <Translation id=\"i_accept_the\" defaultMessage=\"I accept the\" />{' '}\n                                                            <LocalizedLink routeId=\"ROUTE_PRIVACY\">\n                                                                <b>\n                                                                    <Translation id=\"privacy_policy\" defaultMessage=\"Privacy policy\" />\n                                                                </b>\n                                                            </LocalizedLink>\n                                                        </label>\n                                                    </div>\n                                                    <div className=\"col-12\">\n                                                        <label className=\"CheckboxLinkSaleConditions\">\n                                                            <input\n                                                                name=\"accept_notifications_check\"\n                                                                type=\"checkbox\"\n                                                                onClick={() => this.setState({ acceptPromotionNotifications: !this.state.acceptPromotionNotifications })}\n                                                                defaultChecked={this.state.acceptPromotionNotifications}\n                                                                disabled={!this.state.acceptPolicies}\n                                                            />{' '}\n                                                            <Translation\n                                                                id=\"promotion_preferences_accept_notifications_check\"\n                                                                defaultMessage=\"I want to receive notifications about promotions and offers from my center in eCosentino\"\n                                                            />\n                                                        </label>\n                                                    </div>\n                                                    <div className=\"col-12 mt-4\">\n                                                        <span>\n                                                            <small>\n                                                                <Translation\n                                                                    id=\"remember_you_can_set_these_and_other_configurations_on_your_profile\"\n                                                                    defaultMessage=\"* Remember you can set these and also other configuration options on your profile\"\n                                                                />\n                                                            </small>\n                                                        </span>\n                                                    </div>\n                                                    <div className=\"col-12 text-right mt-4\">\n                                                        <span onClick={() => this.props.dontShowMore()} style={{ cursor: 'pointer' }}>\n                                                            <small>\n                                                                <Translation id=\"dont_show_more\" defaultMessage=\"Don't show more.\" />\n                                                            </small>\n                                                        </span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <footer />\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        ) : null\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(EmailPromotionsModal)\n)\n","import { submitWhatsappOptinModal, noShowMoreWhatsappModal } from './../../store/ui/actions'\nimport { submitWhatsappOptin } from './../../store/api'\nimport { showingWhatsappModal } from './../../store/ui/reducers'\nimport { getSapId, getUserName, getEmailUsedToLogin, getName, getSalesOrg } from './../../store/login/reducers'\nimport React from 'react'\nimport Translation from '../global/Translation'\nimport axios from 'axios'\nimport { injectIntl } from 'react-intl'\nimport whatsappEcosentinoLogo from '../../assets/img/logos/brands/whatsapp-ecosentino-logo.svg'\nimport { showingPhonePromotionsModal } from '../../store/ui/reducers'\nimport {\n    getPromotionConfigurationPhones,\n    getPromotionConfigurationAcceptPromotionNotifications,\n    getPromotionConfigurationAcceptPromotionPolicies,\n    getPromotionConfigurationPreviousPreferences\n} from '../../store/profile-configuration/reducers'\nimport * as ui from '../../store/ui/actions'\nimport { connect } from 'react-redux'\nimport Button from '../global/Button'\nimport LocalizedLink from '../global/LocalizedLink'\nimport Alerts from '../alerts/Alerts'\nimport { isMobile, isBrowser } from 'react-device-detect'\nconst mapStateToProps = state => {\n    return {\n        show: showingWhatsappModal(state),\n        // show: true,\n        userName: getUserName(state),\n        name: getName(state),\n        email: getEmailUsedToLogin(state),\n        userSalesOrg: getSalesOrg(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closeWhatsappModal())\n        },\n        submitWhatsappOptinModal: (phone, email, acceptPolicies, onClose) => {\n            return dispatch(ui.submitWhatsappOptinModal(phone, email, acceptPolicies, onClose))\n        },\n        dontShowMore: () => {\n            dispatch(noShowMoreWhatsappModal())\n            dispatch(ui.closeWhatsappModal())\n        }\n    }\n}\n\nclass WhatsappOptin extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {}\n    }\n    desktopSubmit = () => {\n        const endpointsBySalesOrg = {\n            '2000': 'https://messages.landbot.io/wa/W-2341-X538NFLM6LRXV5M8/opt_in',\n            '2001': 'https://messages.landbot.io/wa/W-1211-MALKZOSEK5MFNYX2/opt_in',\n            '2014': 'https://messages.landbot.io/wa/W-1211-MALKZOSEK5MFNYX2/opt_in'\n        }\n\n        axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*'\n        axios.defaults.headers.common['Content-Type'] = 'application/json'\n\n        let token = 'dHJ1c3RlZF9jbGllbnRlX3BpOnNlY3JldA'\n        const phone = this.state.phone.replace('+', '')\n        this.props.submitWhatsappOptinModal(phone, this.props.email, true, this.props.onClose)\n        axios\n            .post(endpointsBySalesOrg[this.props.userSalesOrg] + '?phone=' + phone + '&name=' + this.props.name + '&email=' + this.props.email + '&sapId=' + this.props.userName, {\n                headers: { Authorization: `Bearer ${token}` }\n            })\n            .then(\n                response => {\n                    if (response.data.error) {\n                        this.setState({ error: response.data.error.code })\n                    } else {\n                        console.log('sent messages.landbot > todo correcto')\n                    }\n                },\n                error => {\n                    // this.setState({ error: error.error.code })\n                }\n            )\n    }\n\n    /**\n     * Show a different placeholder message depending on user sales org\n     * 2000: holland, 2001: germany, 2014: austria\n     * @type {object}\n     */\n    placeholderMap = {\n        '2000': '+31xxxxxxxxx',\n        '2001': '+49xxxxxxxxx',\n        '2014': '+43xxxxxxxxx'\n    }\n\n    render() {\n        const { show, onClose, userSalesOrg } = this.props\n        return show ? (\n            <div>\n                <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} />\n                <div\n                    id=\"modal-login-container\"\n                    className=\"modal-login whatsapp-optin \"\n                    style={{ display: show ? 'block' : 'none', top: '15%', bottom: 'auto', maxWidth: '680px' }}\n                    gtm-label=\"ec_whatsapp_optin_modal\"\n                >\n                    <div className=\"\">\n                        <div className=\"row no-gutters\">\n                            <div className=\"col-12 logo-container\">\n                                <header className=\"container-fluid\" style={{ position: 'absolute', zIndex: '5', color: 'white' }}>\n                                    <div className=\"row\">\n                                        <div className=\"col-3 offset-9 my-auto text-right\">\n                                            <div className=\"bt-close\" onClick={onClose} style={{ color: 'black' }}>\n                                                <i className=\"fal fa-times\" style={{ fontSize: '24px' }} />\n                                            </div>\n                                        </div>\n                                    </div>\n                                </header>\n                                <img alt=\"\" id=\"profile-img\" className=\"profile-img-card\" src={whatsappEcosentinoLogo} />\n                            </div>\n                            <div className=\"col-12 card-container\" style={{ background: 'white' }}>\n                                <div className=\"\">\n                                    <div className=\"col-12\">\n                                        <header className=\"container-fluid\">\n                                            <h3 style={{ textAlign: 'center' }}>\n                                                <Translation id=\"join_our_whatsapp\" defaultMessage=\"Join our Whatsapp channel of eCosentino\" />\n                                            </h3>\n                                            <label className=\"d-lg-block d-none\">\n                                                <Translation\n                                                    id=\"add_your_phone_number_to_receive_information_whatsapp\"\n                                                    defaultMessage=\"Add your phone number to receive information and exclusive access to our eCosentino promotional campaigns via Whatsapp.\"\n                                                />\n                                            </label>\n                                            <label className=\"d-block d-lg-none text-center\">\n                                                <Translation\n                                                    id=\"click_on_subscribe_to_receive_information_whatsapp\"\n                                                    defaultMessage=\"Click on subscribe to receive information and exclusive access to our eCosentino promotional campaigns via Whatsapp.\"\n                                                />\n                                            </label>\n\n                                            <Button\n                                                // onClick={() => this.desktopSubmit(this.inputPhone)}\n                                                inverted\n                                                type=\"submit\"\n                                                className=\"bt bt-inverted loginbutton form-control d-lg-none d-block mt-4\"\n                                                gtmLabel=\"ec_mobile_whatsapp_optin\"\n                                                onClick={() => this.props.submitWhatsappOptinModal(this.state.phone, this.props.email, true)}\n                                            >\n                                                <a\n                                                    href=\"http://wa.me/34648849972?text=Whatsapp+von+Cosentino+abonnieren\"\n                                                    target=\"_blank\"\n                                                    onClick={() => this.props.submitWhatsappOptinModal(this.state.phone, this.props.email, true)}\n                                                >\n                                                    <Translation id=\"send\" defaultMessage=\"Send\" />\n                                                </a>\n                                            </Button>\n                                            {this.state.error && <Alerts alert={this.state.error} status=\"404\" />}\n                                        </header>\n\n                                        <div className=\"form-group employee-id d-lg-block d-none\">\n                                            <div className=\"container\">\n                                                <div className=\"row\" style={{ textAlign: 'left' }}>\n                                                    <div className=\"col-12\">\n                                                        <strong>\n                                                            <label>\n                                                                <Translation id=\"phone_number\" defaultMessage=\"Phone number\"></Translation>*\n                                                            </label>\n                                                        </strong>\n                                                        <div className=\"form-group\" style={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n                                                            <input\n                                                                className=\"form-control col-9\"\n                                                                placeholder={this.placeholderMap[userSalesOrg]}\n                                                                defaultValue={this.state.phone}\n                                                                ref={node => {\n                                                                    this.inputPhone = node\n                                                                }}\n                                                                onChange={e => this.setState({ phone: e.target.value })}\n                                                                style={{ marginRight: '16px' }}\n                                                                type=\"phone\"\n                                                                onKeyPress={e => {\n                                                                    const value = e.target.value + e.key\n                                                                    if (!/^[\\+]?[0-9]*$/.test(value)) e.preventDefault()\n                                                                    // if (!/[+0-9]/.test(e.key)) e.preventDefault()\n                                                                }}\n                                                            />\n                                                            <Button\n                                                                disabled={!(this.state.phone && this.state.phone !== '') || this.state.isLoading || !this.state.acceptPolicies}\n                                                                onClick={() => this.desktopSubmit(this.inputPhone)}\n                                                                inverted\n                                                                type=\"submit\"\n                                                                gtmLabel=\"ec_desktop_whatsapp_optin\"\n                                                                className=\"bt bt-inverted loginbutton form-control\"\n                                                            >\n                                                                <Translation id=\"send\" defaultMessage=\"Send\" />\n                                                            </Button>\n                                                        </div>\n                                                    </div>\n                                                    <div className=\"col-12\">\n                                                        <p>\n                                                            <small>\n                                                                <Translation\n                                                                    id=\"whatsapp_legal\"\n                                                                    defaultMessage=\"Your data will be processed by COSENTINO GLOBAL, S.L.U. in order to inform you about our advantages, promotions, events\n                                                            and other products. You may exercise your rights of access, rectification, cancellation, opposition, restriction and\n                                                            portability or revoke your consent by writing to Ctra. Baza a Huércal - Overa, Km. 59 - 04860 Cantoria (Almería), or by\n                                                            e-mail to gdpr@cosentino.com, stating your identity and the nature of your request. For more information about the\n                                                            treatment of your data, please refer to the Privacy Policy. By joining our WhatsApp channel, you consent to the\n                                                            processing of your personal data\"\n                                                                />\n                                                            </small>\n                                                        </p>\n                                                        <label className=\"CheckboxLinkSaleConditions\">\n                                                            <input\n                                                                name=\"accept_policies_check\"\n                                                                type=\"checkbox\"\n                                                                onClick={() => this.setState({ acceptPolicies: !this.state.acceptPolicies })}\n                                                                defaultChecked={this.state.acceptPolicies}\n                                                            />{' '}\n                                                            <Translation id=\"i_accept_the\" defaultMessage=\"I accept the\" />{' '}\n                                                            <LocalizedLink routeId=\"ROUTE_PRIVACY\" target={'_blank'}>\n                                                                <b>\n                                                                    <Translation id=\"privacy_policy\" defaultMessage=\"Privacy policy\" />\n                                                                </b>\n                                                            </LocalizedLink>\n                                                        </label>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n\n                                        <div className=\"col-12 text-right mt-4\">\n                                            <span onClick={() => this.props.dontShowMore()} className=\"dont_show_more\" style={{ cursor: 'pointer' }}>\n                                                <small>\n                                                    <Translation id=\"dont_show_more\" defaultMessage=\"Don't show more.\" />\n                                                </small>\n                                            </span>\n                                        </div>\n                                    </div>\n\n                                    <footer />\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        ) : null\n    }\n}\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(WhatsappOptin))\n","import React from 'react'\nimport logo from '../../assets/img/e.cosentino.svg'\n\nclass InfoModal extends React.Component {\n    render() {\n        return (\n            <div>\n                <div className=\"full-overlay\" style={{ display: this.props.show ? 'block' : 'none' }} />\n                <div className=\"info-modal\" style={{ display: this.props.show ? 'block' : 'none' }}>\n                    <div className=\"container-fluid\">\n                        <div className=\"row\">\n                            <div className=\"col-12 col-lg-5 logo-container d-none d-lg-block\">\n                                <img alt=\"\" id=\"logo-img\" className=\"profile-img-card\" src={logo} />\n                            </div>\n                            <div className=\"col-12 col-lg-7 container\">\n                                <header className=\"container-fluid\">{this.props.header}</header>\n                                <div className=\"row\">\n                                    <div className=\"col-12\">{this.props.content}</div>\n                                </div>\n                                <footer>{this.props.footer}</footer>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default InfoModal\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport Button from '../global/Button'\nimport InfoModal from './InfoModal'\n\nclass ThankYouSubscribeModal extends React.Component {\n    render() {\n        const { show, onClose } = this.props\n\n        return (\n            <InfoModal\n                show={show}\n                content={\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <h2>\n                                <i className=\"fal fa-check-circle check-icon\" />\n                                <Translation id=\"you_have_successfully_subscribed\" defaultMessage=\"You have successfully subscribed\" />\n                            </h2>\n                            <Translation id=\"thanks_for_subscribing\" defaultMessage=\"Thanks for subscribing\" />\n                        </div>\n                    </div>\n                }\n                footer={\n                    <div className=\"col-12 col-md-6 offset-md-6\">\n                        <Button datacy=\"global__close\" inverted onClick={onClose}>\n                            <Translation id=\"close\" defaultMessage=\"Close\" />\n                        </Button>\n                    </div>\n                }\n            />\n        )\n    }\n}\nexport default ThankYouSubscribeModal\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport {injectIntl} from 'react-intl'\n\nimport Button from '../global/Button'\nimport { connect } from 'react-redux'\nimport warning from '../../assets/img/warning.jpg'\nimport { getAdvertisements, showAdvertisements } from '../../store/advertisement/reducers'\nimport { fetchAdvertisements } from '../../store/advertisement/actions'\n\n\nconst mapStateToProps = state => {\n    return {               \n        advertisements: getAdvertisements(state),\n        showAdvertisements: showAdvertisements(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchAdvertisements: () => dispatch(fetchAdvertisements()),\n        hideAdvertisements: () => dispatch({type: 'HIDE_ADVERTISEMENTS'})\n    }\n}\n\nclass AdvertisementModal extends React.Component {\n    \n    render() {\n        const { showAdvertisements } = this.props\n\n        if (!showAdvertisements) return null\n        return (\n            <div className=\"advertisement\">\n                <div className=\"full-overlay\" style={{ display: showAdvertisements ? 'block' : 'none' }} />\n                <div id=\"modal-advertisement\" className=\"modal-advertisement-container\" style={{ display: showAdvertisements ? 'block' : 'none' }}>\n                    <div className=\"\">\n                        <div className=\"row no-gutters\">\n                            <div className=\"col-12 \">\n                                <div className=\"logo-container\" style={{ backgroundImage: `url(${warning})` }} />\n                            </div>\n                            <div className=\"col-12 card-container\">\n\n                                <div className=\"form-signin\">\n                                    <div className=\"col-12\">\n                                        <div className=\"form-group employee-id\" style={{ textAlign: 'center' }}>\n                                            <h3 className=\"my-4\">\n                                                <div dangerouslySetInnerHTML={{__html: this.props.advertisements.message}}></div>\n                                            </h3>\n\n                                            <Button\n                                                onClick={this.props.hideAdvertisements}\n                                                inverted\n                                                className=\"bt bt-inverted loginbutton form-control\"\n                                            >\n                                                <Translation id=\"keep_buying\" defaultMessage=\"Keep buying\" />\n                                            </Button>\n\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(AdvertisementModal)\n)\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport {  showingPedidosRecurrentesModal } from '../../../store/ui/reducers'\nimport * as ui from '../../../store/ui/actions'\nimport { connect } from 'react-redux'\nimport image from '../../../assets/img/pedidos_recurrentes.png'\nimport Translation from '../../global/Translation'\n\nconst mapStateToProps = state => {\n    return {\n        show: showingPedidosRecurrentesModal(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closePedidosRecurrentesModal())\n        }\n    }\n}\n\nclass PedidosRecurrentesModal extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {}\n    }\n    render() {\n        const { show, onClose } = this.props\n        return show && !this.props.previousPreferences ? (\n            <div>\n                <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} />\n                <div id=\"modal-pedidos-recurrentes-container\" style={{ display: show ? 'block' : 'none' }}>\n                    <div className=\"\">\n                        <div className=\"row no-gutters\">\n                            <header className=\"container-fluid\" style={{ position: 'absolute', zIndex: '5', color: 'black' }}>\n                                <div className=\"row\">\n                                    <div className=\"col-3 offset-9 my-auto text-right\">\n                                        <div className=\"bt-close\" onClick={onClose}>\n                                            <i className=\"fal fa-times\" style={{fontSize: '2rem'}} />\n                                        </div>\n                                    </div>\n                                </div>\n                            </header>\n                            <div className=\"col-12 logo-container\">\n                                <div className='row'>\n                                    <div className='col-sm-12 col-md-3'>\n                                        <h1 className='title'>\n                                            <Translation id=\"welcome_to_ecosentino_portal\" defaultMessage=\"Welcome to eCosentino Portal\" />\n                                        </h1>\n                                        <hr/>\n                                        <h2 className='title-subtitle'>\n                                            <Translation id=\"repurchase\" defaultMessage=\"Repurchase\" />\n                                        </h2>\n                                        <h3 className='subtitle'>\n                                            <Translation id=\"we_have_improved_the_platform_now_try_the_launch_version_and_buy_more_easily_and_intuitively\" defaultMessage=\"We have improved the platform, now try the launch version and buy more easily and intuitively.\" />\n                                        </h3>\n                                    </div>\n                                    <div className='col-sm-12 col-md-9 box-image' style={{textAlign: 'right'}}>\n                                        <div className='image'>\n                                            <img className='img-fluid' src={image} alt='' />\n                                        </div>\n                                    </div>\n                                    <div className='col-12 buttons row'>\n                                        <button className='col-5 btn-old'>\n                                            <Translation id=\"don_t_show_again\" defaultMessage=\"Don't show again\" />\n                                        </button>\n                                        <button className='col-5 btn-new'>\n                                            <Translation id=\"close\" defaultMessage=\"Close\" />\n                                        </button>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        ) : null\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(PedidosRecurrentesModal)\n)\n","import { getEmailUsedToLogin } from './../../store/login/reducers';\nimport React from 'react'\n\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport { withRouter } from 'react-router-dom'\n\nimport LoginModalContainer from '../login-modal/LoginModalContainer'\nimport BundleContentContainer from '../bundle/BundleContentContainer'\nimport SegmentationModal from '../segmentation/SegmentationModal'\n\nimport { getIsLogged, showPricesDisclaimer } from '../../store/login/reducers'\nimport { canBuy, getSelectedCenter, getShippingMethod } from '../../store/centers/reducers'\nimport AppObsolete from '../global/AppObsolete'\nimport { getCurrentUrl, getIsObsolete, getShowThankYouSubscribeModal } from '../../store/ui/reducers'\nimport FloatingAlertContainer from '../alerts/FloatingAlertContainer'\nimport FloatingAlert from '../alerts/FloatingAlert'\nimport { canViewPrices } from '../../store/products/reducers'\nimport ModalFormattedMessage from '../global/ModalFormattedMessage'\nimport BigAccountModal from '../login-modal/BigAccountModal'\nimport IkeaModalEmployeeId from '../global/IkeaModalEmployeeId'\nimport DektonGripModal from '../catalog/modals/DektonGripModal'\nimport { closePricesDisclaimer } from '../../store/ui/actions'\nimport AskForEmailModal from '../login-modal/AskForEmailModal'\nimport IncompatibleTypesExceptionModal from '../global/IncompatibleTypesExceptionModal'\nimport EmailPromotionsModal from '../catalog/modals/EmailPromotionsModal'\nimport WhatsappOptin from '../catalog/WhatsappOptin'\nimport ThankYouSubscribeModal from '../global/ThankYouSubscribeModal'\nimport AdvertisementModal from '../advertisements/AdvertisementModal'\nimport PedidosRecurrentesModal from '../catalog/modals/PedidosRecurrentesModal'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        isLogged: getIsLogged(state),\n        canBuy: canBuy(state),\n        shippingType: getShippingMethod(state),\n        isObsolete: getIsObsolete(state),\n        canViewPrices: canViewPrices(state),\n        selectedCenter: getSelectedCenter(state),\n        showPricesDisclaimer: showPricesDisclaimer(state),\n        currentUrl: getCurrentUrl(state).pathname,\n        showThankYouSubscribeModal: getShowThankYouSubscribeModal(state),\n        email:getEmailUsedToLogin(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        closePricesDisclaimer: () => {\n            dispatch(closePricesDisclaimer())\n        },\n        closeThankYouSubscribeModal: () => {\n            dispatch({ type: 'CLOSE_THANK_YOU_SUBSCRIBE_MODAL' })\n        }\n    }\n}\n\nclass GlobalModals extends React.Component {\n    \n    constructor(props) {\n        super(props)\n        this.state = {showTipModal:true} \n    }\n\n    isCheckoutFlow() {\n        let routeCatalog = this.props.intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace('/:outlet?', '')\n        let routeCheckout = this.props.intl.formatMessage({ id: 'ROUTE_CHECKOUT' })\n        let routeProducts = this.props.intl.formatMessage({ id: 'ROUTE_PRODUCT_DETAIL' }).replace('/:id/:outlet?', '')\n\n        if (\n            this.props.currentUrl &&\n            (this.props.currentUrl.includes(routeCatalog) || this.props.currentUrl.includes(routeCheckout) || this.props.currentUrl.includes(routeProducts))\n        ) {\n            return true\n        }\n        return false\n    }\n\n    render() {\n        const { isLogged, canBuy, shippingType, isObsolete, canViewPrices, selectedCenter, closePricesDisclaimer, showPricesDisclaimer, isCheckoutFlow,email } = this.props\n        let brazilCenters = [7500, 7501, 7502, 7503, 7504, 7505, 7506, 7507]\n\n        return (\n            <div>\n                <FloatingAlertContainer /*visible={true}*/ />\n                <LoginModalContainer />\n                {canViewPrices && showPricesDisclaimer && (\n                    <FloatingAlert\n                        warningMessage={brazilCenters.includes(selectedCenter) ? 'PRICES_EXPERIMENTAL_NOT_MENTION_TAXES' : 'PRICES_EXPERIMENTAL'}\n                        className=\"catalog-position\"\n                        pricing\n                        onClose={() => closePricesDisclaimer()}\n                        hidden={!this.isCheckoutFlow()}\n                    />\n                )}\n                {isLogged && email && <WhatsappOptin/>}\n                {isLogged && canBuy && shippingType && <DektonGripModal />}\n                {isLogged && canBuy && shippingType && <SegmentationModal />}\n                <EmailPromotionsModal />\n                <PedidosRecurrentesModal />\n                <BundleContentContainer />\n                {isObsolete && <AppObsolete />}\n                <ModalFormattedMessage />\n                <IncompatibleTypesExceptionModal />\n                <IkeaModalEmployeeId />\n                <BigAccountModal />\n                <AskForEmailModal />\n                {this.props.showThankYouSubscribeModal && (\n                    <ThankYouSubscribeModal show={this.props.showThankYouSubscribeModal} onClose={() => this.props.closeThankYouSubscribeModal()} />\n                )}\n                <AdvertisementModal />\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    withRouter(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(GlobalModals)\n    )\n)\n","import React from 'react'\n\nimport LotImageViewerContainer from '../components/lot-image-viewer/LotImageViewerContainer'\nimport GlobalModals from '../components/layout/GlobalModals'\n\nexport default props => (\n    <div>\n        <LotImageViewerContainer {...props} />\n        <GlobalModals />\n    </div>\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\n// import Slider from 'react-slick'\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport LocalizedLink from '../global/LocalizedLink'\n\nimport promoBanner_en from '../../assets/img/promotions/promo-image-en.jpg'\nimport promoBanner_fr from '../../assets/img/promotions/promo-image-fr.jpg'\n\nimport flyer_2011 from '../../assets/pdf/promotions/flyer-2011.pdf'\nimport flyer_2032_en from '../../assets/pdf/promotions/flyer-2032-en.pdf'\nimport flyer_2032_fr from '../../assets/pdf/promotions/flyer-2032-fr.pdf'\n\nimport promoColors from '../../assets/img/promotions/promo-colors.jpg'\n\n/*import promotionMainImage1 from '../../assets/img/temp/promotion-main-image-1.jpg'\nimport promotionMainImage2 from '../../assets/img/temp/promotion-main-image-2.jpg'\nimport promotionMainImage3 from '../../assets/img/temp/promotion-main-image-3.jpg'\nimport promotionProductImage1 from '../../assets/img/temp/promotion-product-image-1.png'\nimport promotionProductImage2 from '../../assets/img/temp/promotion-product-image-2.png'\nimport promotionProductImage3 from '../../assets/img/temp/promotion-product-image-3.png'*/\n\nclass Promotions extends React.Component {\n    render() {\n        // const promoEnabled = this.props.salesOrg === '2011' || this.props.salesOrg === '2032' || this.props.salesOrg === '2037'\n        const promoBanner = this.props.intl.locale === 'fr' || this.props.intl.locale === 'fr-CA' ? promoBanner_fr : promoBanner_en\n        const flyer = this.props.salesOrg === '2032' ? (this.props.intl.locale === 'fr' || this.props.intl.locale === 'fr-CA' ? flyer_2032_fr : flyer_2032_en) : flyer_2011\n\n        return (\n            <section id=\"section-promotions\">\n                <header>\n                    <h2>\n                        <Translation id=\"new_promotions\" defaultMessage=\"New Promotions\" />\n                    </h2>\n                </header>\n\n                <div className=\"promotions\">\n                    <div className=\"container\">\n                        {/*<div className=\"slider row mt-3 mb-3\">\n                            <div className=\"col\">\n                                <Slider autoplay={true} autoplaySpeed={5000} speed={1000}>\n                                    <div className=\"ec-slide\">\n                                        <LocalizedLink routeId=\"ROUTE_CATALOG\" params={{ outlet: '' }} queryString=\"outlet?type[0]=TABLA&promo=true\">\n                                            <img src={promoBanner} style={{ width: '100%' }} />\n                                        </LocalizedLink>\n                                    </div>\n                                </Slider>\n                            </div>\n                        </div>*/}\n                        <div className=\"promotion row\">\n                            <div className=\"promotion-info col-12 col-md-6\">\n                                <div className=\"promotion-title\">\n                                    <Translation id=\"promo_title\" defaultMessage=\"Special Summer Promotion\" />\n                                </div>\n                                <div className=\"promotion-description\">\n                                    Scalea - <Translation id=\"promo_subtitle\" defaultMessage=\"July 9th – July 20th\" />\n                                </div>\n                                <div className=\"promotion-product-image\">\n                                    <img src={promoColors} alt=\"\" />\n                                </div>\n                                <div className=\"promotion-actions\">\n                                    <LocalizedLink routeId=\"ROUTE_CATALOG\" params={{ outlet: '' }} queryString=\"outlet?type[0]=TABLA&promo=true\">\n                                        <Button onClick={() => {}} inverted inline size=\"small\">\n                                            <Translation id=\"view_products\" defaultMessage=\"View Products\" />\n                                        </Button>\n                                    </LocalizedLink>\n                                    <a href={flyer} target=\"_blank\" rel=\"noopener noreferrer\">\n                                        <Button inline size=\"small\">\n                                            <Translation id=\"download_flyer\" defaultMessage=\"Download Flyer\" />\n                                        </Button>\n                                    </a>\n                                </div>\n                            </div>\n                            <div className=\"promotion-main-image col-12 col-md-6\" style={{ backgroundImage: `url(${promoBanner})` }} />\n                        </div>\n                        {/*<div className=\"promotion row\">\n                            <div className=\"promotion-info col-12 col-md-6\">\n                                <div className=\"promotion-title\">Integrity One</div>\n                                <div className=\"promotion-description\">Lorem ipsum dolor amet intescetur copen ictor sum imatnesac lorem ipsum dolor amet intescetur</div>\n                                <div className=\"promotion-product-image\">\n                                    <img src={promotionProductImage2} alt=\"\" />\n                                </div>\n                                <div className=\"promotion-actions\">\n                                    <LocalizedLink routeId=\"ROUTE_CATALOG\" params={{ outlet: '' }} queryString=\"outlet?type[0]=TABLA&promo=true\">\n                                        <Button onClick={() => {}} inverted inline size=\"small\">\n                                            Ver productos\n                                        </Button>\n                                    </LocalizedLink>\n                                    <a href=\"#\">\n                                        <Button inline size=\"small\">\n                                            Descargar flyer\n                                        </Button>\n                                    </a>\n                                </div>\n                            </div>\n                            <div className=\"promotion-main-image col-12 col-md-6 order-md-first\" style={{ backgroundImage: `url(${promotionMainImage2})` }} />\n                        </div>\n                        <div className=\"promotion row\">\n                            <div className=\"promotion-info col-12 col-md-6\">\n                                <div className=\"promotion-title\">Integrity DUE L</div>\n                                <div className=\"promotion-description\">Lorem ipsum dolor amet intescetur copen ictor sum imatnesac lorem ipsum dolor amet intescetur</div>\n                                <div className=\"promotion-product-image\">\n                                    <img src={promotionProductImage3} alt=\"\" />\n                                </div>\n                                <div className=\"promotion-actions\">\n                                    <LocalizedLink routeId=\"ROUTE_CATALOG\" params={{ outlet: '' }} queryString=\"outlet?type[0]=TABLA&promo=true\">\n                                        <Button onClick={() => {}} inverted inline size=\"small\">\n                                            Ver productos\n                                        </Button>\n                                    </LocalizedLink>\n                                    <a href=\"#\">\n                                        <Button inline size=\"small\">\n                                            Descargar flyer\n                                        </Button>\n                                    </a>\n                                </div>\n                            </div>\n                            <div className=\"promotion-main-image col-12 col-md-6\" style={{ backgroundImage: `url(${promotionMainImage3})` }} />\n                        </div>*/}\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\n\nexport default injectIntl(Promotions)\n","import { connect } from 'react-redux'\n\nimport { getSalesOrg } from '../../store/login/reducers'\n\nimport Promotions from './Promotions'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        salesOrg: getSalesOrg(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {}\n}\n\nconst PromotionsContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(Promotions)\n\nexport default PromotionsContainer\n","import React from 'react'\n\nimport PromotionsContainer from '../components/promotions/PromotionsContainer'\n\nconst PromotionsScreen = props => <PromotionsContainer {...props} />\n\nexport default PromotionsScreen\n","import React from 'react'\nimport { Popup } from '@progress/kendo-react-popup'\nimport Button from '../../global/Button'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport Translation from '../../global/Translation'\nimport ReactTooltip from 'react-tooltip'\nimport { ROUTE_LANDING_TEMPLATE } from '../../../i18n/locales/en-us.json'\n\nexport class ActionsCell extends React.Component {\n    anchor = null\n\n    constructor(props) {\n        super(props)\n\n        this.setWrapperRef = this.setWrapperRef.bind(this)\n        this.handleClickOutside = this.handleClickOutside.bind(this)\n        const linkToCopy =\n            window.location.host +\n            ROUTE_LANDING_TEMPLATE.replace(':preview?', '')\n                //.replace(':iso?', props.dataItem['lang']['id'])\n                .replace(':iso?/', '')\n                .replace(':slug?', props.dataItem['slug'])\n        this.state = {\n            show: false,\n            linkToCopy: linkToCopy\n        }\n    }\n\n    componentDidMount() {\n        document.addEventListener('mousedown', this.handleClickOutside)\n    }\n\n    componentWillUnmount() {\n        document.removeEventListener('mousedown', this.handleClickOutside)\n    }\n\n    setWrapperRef(node) {\n        this.wrapperRef = node\n    }\n\n    /**\n     * Alert if clicked on outside of element\n     */\n    handleClickOutside(event) {\n        if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n            this.setState({ show: false })\n        }\n    }\n\n    render() {\n        return (\n            <td style={{ textAlign: 'center' }}>\n                <Button className=\"tablecustomButtonRound\" onClick={this.onClick}>\n                    <span className=\"k-icon k-i-more-vertical\"></span>\n                </Button>\n                <Popup offset={this.offset} anchor={this.anchor} show={this.state.show} popupClass={'popup-content-landing-item'}>\n                    <div ref={this.setWrapperRef}>\n                        <LocalizedLink\n                            routeId=\"ROUTE_LANDING_MANAGER_DETAIL\"\n                            params={{ id: this.props.dataItem['common_id'], iso: this.props.dataItem['lang']['id'], outlet: '' }}\n                            queryString=\"\"\n                            className=\"bt noselect bt-gentle bt-size-medium\"\n                        >\n                            <Translation id=\"edit\" defaultMessage=\"Edit\" />\n                        </LocalizedLink>\n                        <LocalizedLink\n                            routeId=\"ROUTE_LANDING_TEMPLATE\"\n                            params={{ slug: this.props.dataItem['slug'], iso: this.props.dataItem['lang']['id'], outlet: '', preview: 'preview' }}\n                            queryString=\"\"\n                            className=\"bt noselect bt-gentle bt-size-medium\"\n                        >\n                            <Translation id=\"preview\" defaultMessage=\"Preview\" />\n                        </LocalizedLink>\n                        <Button\n                            className=\"bt noselect bt-gentle bt-size-medium\"\n                            onClick={() => {\n                                navigator.clipboard.writeText(this.state.linkToCopy).then(() => {\n                                    this.setState({ copied: true }, () =>\n                                        setTimeout(() => {\n                                            this.setState({ copied: false })\n                                        }, 2000)\n                                    )\n                                })\n                            }}\n                            data-tip={this.state.linkToCopy}\n                        >\n                            <Translation id=\"copy_link\" defaultMessage=\"Copy link\" />\n                            <ReactTooltip bg-coloreffect=\"solid\" place=\"top\" getContent={() => `${this.state.copied ? 'copied! \\n' : ''} ${this.state.linkToCopy}`} />\n                        </Button>\n                        <Button\n                            className=\"bt noselect bt-gentle bt-size-medium\"\n                            onClick={e => {\n                                this.props.onDelete(this.props.dataItem['common_id'], this.props.dataItem['lang']['id'])\n                                this.setState({ show: false })\n                            }}\n                        >\n                            <Translation id=\"delete\" defaultMessage=\"Delete\" />\n                        </Button>\n                    </div>\n                </Popup>\n            </td>\n        )\n    }\n\n    onClick = e => {\n        this.anchor = e.target\n        this.setState({ show: !this.state.show })\n    }\n}\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../global/Translation'\nimport '@progress/kendo-theme-default/dist/all.css'\nimport Button from '../global/Button'\nimport LocalizedLink from '../global/LocalizedLink'\nimport { Grid, GridColumn } from '@progress/kendo-react-grid'\nimport { DropDownList } from '@progress/kendo-react-dropdowns'\nimport { process } from '@progress/kendo-data-query'\nimport { MultiSelect } from '@progress/kendo-react-dropdowns'\nimport { DateRangePicker } from '@progress/kendo-react-dateinputs'\nimport { Input } from '@progress/kendo-react-inputs'\nimport confirm from '../global/confirm'\nimport SimpleModal from '../global/SimpleModal'\nimport { getMarkets, getCenters, getCountries, getFilteredLandings, getStatuses, advParseLang } from './utils'\nimport { defineMessages } from 'react-intl'\nimport { ActionsCell } from './components/ActionsCell'\n\ndefineMessages({\n    ROUTE_LANDING_TEMPLATE: {\n        id: 'ROUTE_LANDING_TEMPLATE',\n        description: 'ROUTE_LANDING_TEMPLATE',\n        defaultMessage: '/en/landing-templates/:slug?/:iso?/:preview?'\n    },\n    countries: {\n        id: 'countries',\n        description: 'countries',\n        defaultMessage: 'Countries'\n    },\n    country: {\n        id: 'country',\n        description: 'country',\n        defaultMessage: 'Country'\n    },\n    country_AE: {\n        id: 'country_AE',\n        description: 'country_AE',\n        defaultMessage: 'United Arab Emirates'\n    },\n    country_AT: {\n        id: 'country_AT',\n        description: 'country_AT',\n        defaultMessage: 'Austria'\n    },\n    country_AU: {\n        id: 'country_AU',\n        description: 'country_AU',\n        defaultMessage: 'Australia'\n    },\n    country_BE: {\n        id: 'country_BE',\n        description: 'country_BE',\n        defaultMessage: 'Belgium'\n    },\n    country_BR: {\n        id: 'country_BR',\n        description: 'country_BR',\n        defaultMessage: 'Brazil'\n    },\n    country_CA: {\n        id: 'country_CA',\n        description: 'country_CA',\n        defaultMessage: 'Canada'\n    },\n    country_CH: {\n        id: 'country_CH',\n        description: 'country_CH',\n        defaultMessage: 'Switzerland'\n    },\n    country_DE: {\n        id: 'country_DE',\n        description: 'country_DE',\n        defaultMessage: 'Germany'\n    },\n    country_DK: {\n        id: 'country_DK',\n        description: 'country_DK',\n        defaultMessage: 'Denmark'\n    },\n    country_DU: {\n        id: 'country_DU',\n        description: 'country_DU',\n        defaultMessage: 'Dubai'\n    },\n    country_ES: {\n        id: 'country_ES',\n        description: 'country_ES',\n        defaultMessage: 'Spain'\n    },\n    country_FI: {\n        id: 'country_FI',\n        description: 'country_FI',\n        defaultMessage: 'Finland'\n    },\n    country_FR: {\n        id: 'country_FR',\n        description: 'country_FR',\n        defaultMessage: 'France'\n    },\n    country_GB: {\n        id: 'country_GB',\n        description: 'country_GB',\n        defaultMessage: 'United Kingdom'\n    },\n    country_IE: {\n        id: 'country_IE',\n        description: 'country_IE',\n        defaultMessage: 'Ireland'\n    },\n    country_IL: {\n        id: 'country_IL',\n        description: 'country_IL',\n        defaultMessage: 'Israel'\n    },\n    country_IT: {\n        id: 'country_IT',\n        description: 'country_IT',\n        defaultMessage: 'Italy'\n    },\n    country_JP: {\n        id: 'country_JP',\n        description: 'country_JP',\n        defaultMessage: 'Japan'\n    },\n    country_MX: {\n        id: 'country_MX',\n        description: 'country_MX',\n        defaultMessage: 'Mexico'\n    },\n    country_MY: {\n        id: 'country_MY',\n        description: 'country_MY',\n        defaultMessage: 'Malaysia'\n    },\n    country_NL: {\n        id: 'country_NL',\n        description: 'country_NL',\n        defaultMessage: 'Netherlands'\n    },\n    country_NO: {\n        id: 'country_NO',\n        description: 'country_NO',\n        defaultMessage: 'Norway'\n    },\n    country_NZ: {\n        id: 'country_NZ',\n        description: 'country_NZ',\n        defaultMessage: 'New Zealand'\n    },\n    country_PL: {\n        id: 'country_PL',\n        description: 'country_PL',\n        defaultMessage: 'Poland'\n    },\n    country_PR: {\n        id: 'country_PR',\n        description: 'country_PR',\n        defaultMessage: 'Puerto Rico'\n    },\n    country_PT: {\n        id: 'country_PT',\n        description: 'country_PT',\n        defaultMessage: 'Portugal'\n    },\n    country_SE: {\n        id: 'country_SE',\n        description: 'country_SE',\n        defaultMessage: 'Sweden'\n    },\n    country_SG: {\n        id: 'country_SG',\n        description: 'country_SG',\n        defaultMessage: 'Singapore'\n    },\n    country_TR: {\n        id: 'country_TR',\n        description: 'country_TR',\n        defaultMessage: 'Turkey'\n    },\n    country_US: {\n        id: 'country_US',\n        description: 'country_US',\n        defaultMessage: 'United States'\n    },\n    country_ZA: {\n        id: 'country_ZA',\n        description: 'country_ZA',\n        defaultMessage: 'South Africa'\n    },\n    country_AF: {\n        id: 'country_AF',\n        description: 'country_AF',\n        defaultMessage: 'Afghanistan'\n    },\n    country_AO: {\n        id: 'country_AO',\n        description: 'country_AO',\n        defaultMessage: 'Angola'\n    },\n    country_CN: {\n        id: 'country_CN',\n        description: 'country_CN',\n        defaultMessage: 'China'\n    },\n    country_EG: {\n        id: 'country_EG',\n        description: 'country_EG',\n        defaultMessage: 'Egypt'\n    },\n    country_GR: {\n        id: 'country_GR',\n        description: 'country_GR',\n        defaultMessage: 'Greece'\n    },\n    country_IN: {\n        id: 'country_IN',\n        description: 'country_IN',\n        defaultMessage: 'India'\n    },\n    country_IR: {\n        id: 'country_IR',\n        description: 'country_IR',\n        defaultMessage: 'Iran'\n    },\n    country_MU: {\n        id: 'country_MU',\n        description: 'country_MU',\n        defaultMessage: 'Republic of Mauritius'\n    },\n    country_MZ: {\n        id: 'country_MZ',\n        description: 'country_MZ',\n        defaultMessage: 'Mozambique'\n    },\n    country_PK: {\n        id: 'country_PK',\n        description: 'country_PK',\n        defaultMessage: 'Pakistan'\n    },\n    country_TN: {\n        id: 'country_TN',\n        description: 'country_TN',\n        defaultMessage: 'Tunisia'\n    },\n    country_VN: {\n        id: 'country_VN',\n        description: 'country_VN',\n        defaultMessage: 'Vietnam'\n    },\n    country_ZW: {\n        id: 'country_ZW',\n        description: 'country_ZW',\n        defaultMessage: 'Zimbabwe'\n    },\n    trick: {\n        id: 'trick',\n        description: 'trick',\n        defaultMessage: 'trick'\n    },\n    ending_date: {\n        id: 'ending_date',\n        description: 'ending_date',\n        defaultMessage: 'End date'\n    },\n    markets: {\n        id: 'markets',\n        description: 'markets',\n        defaultMessage: 'Markets'\n    },\n    order_by: {\n        id: 'order_by',\n        description: 'order_by',\n        defaultMessage: 'Order by'\n    },\n    remove_success: {\n        id: 'remove_success',\n        description: 'remove_success',\n        defaultMessage: 'Remove success'\n    },\n    start_date: {\n        id: 'start_date',\n        description: 'start_date',\n        defaultMessage: 'Start date'\n    },\n    status_ALL: {\n        id: 'status_ALL',\n        description: 'status_ALL',\n        defaultMessage: 'All'\n    },\n    status_DRAFT: {\n        id: 'status_DRAFT',\n        description: 'status_DRAFT',\n        defaultMessage: 'Draft'\n    },\n    status_EXPIRED: {\n        id: 'status_EXPIRED',\n        description: 'status_EXPIRED',\n        defaultMessage: 'Expired'\n    },\n    status_PUBLISHED: {\n        id: 'status_PUBLISHED',\n        description: 'status_PUBLISHED',\n        defaultMessage: 'Published'\n    },\n    status_SCHEDULE: {\n        id: 'status_SCHEDULE',\n        description: 'status_SCHEDULE',\n        defaultMessage: 'Schedule'\n    },\n    translations: {\n        id: 'translations',\n        description: 'translations',\n        defaultMessage: 'Translations'\n    },\n    upload_image: {\n        id: 'upload_image',\n        description: 'upload_image',\n        defaultMessage: 'Upload image'\n    }\n})\n\nclass LandingManager extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            filtersObject: {\n                selectedMarket: null,\n                selectedCountry: null,\n                selectedCenter: null,\n                statusSelected: { value: 'ALL', label: this.props.intl.formatMessage({ id: 'status_ALL' }) },\n                searchString: '',\n                dates: { start: null, end: null }\n            },\n            gridDataState: {\n                sort: [{ field: 'created_at', dir: 'desc' }],\n                skip: 0,\n                take: 10\n            },\n            showLangsModal: false,\n            modalDataLang: [],\n            modalCommonID: ''\n        }\n    }\n\n    componentDidMount() {\n        const timeout = setTimeout(() => {\n            this.props.removeLoader(timeout)\n        }, 20000)\n        this.props.addLoader(timeout)\n        this.props.fetchLandings().then(() => this.props.removeLoader(timeout))\n    }\n\n    ActionsCell = props => (\n        <ActionsCell\n            {...props}\n            intl={this.props.intl}\n            onDelete={(id, iso) => {\n                confirm(this.props.intl.formatMessage({ id: 'CONFIRM_DELETE_LANDING' }), {\n                    textOk: this.props.intl.formatMessage({ id: 'ok' }),\n                    textCancel: this.props.intl.formatMessage({ id: 'cancel' }),\n                    intl: this.props.intl\n                }).then(\n                    conf => {\n                        const timeout = setTimeout(() => {\n                            this.props.removeLoader(timeout)\n                        }, 15000)\n                        this.props.addLoader(timeout)\n                        return this.props.deleteLanding(id, iso).then(() => {\n                            this.props.fetchLandings().then(() => this.props.removeLoader(timeout))\n                            this.props.showToastNotification(this.props.intl.formatMessage({ id: 'remove_success' }), 'success')\n                        })\n                    },\n                    cancel => {\n                        return Promise.reject()\n                    }\n                )\n            }}\n        />\n    )\n\n    selectedSalesOrgs(countries = this.state.filtersObject.selectedCountry) {\n        const salesOrg = []\n\n        countries.forEach(c => {\n            c.salesOrg.forEach(s => salesOrg.push(s))\n        })\n\n        return salesOrg\n    }\n\n    isLandingTranslated = dataLang => {\n        let t = true\n\n        if (this.props.landings.langs) {\n            this.props.landings.langs.map((lang, i) => {\n                const found = dataLang && Array.isArray(dataLang) ? (dataLang || []).find(a => a === lang.id) : false\n                if (!found) {\n                    t = false\n                }\n            })\n        }\n\n        return t\n    }\n\n    render() {\n        const { landings, centers, fetchCountriesDescriptions, fetchCentersDescriptions, countries, intl } = this.props\n        const { filtersObject, gridDataState } = this.state\n        const filteredLandings = getFilteredLandings({ ...filtersObject, statusSelected: filtersObject.statusSelected.value }, (landings || {}).landings, this.props.intl)\n\n        return (\n            <section id=\"section-landings\">\n                <header>\n                    <div className=\"container\">\n                        <div className=\"row\">\n                            <div className=\"col-md-12\">\n                                <h2><Translation id=\"lndmngr\" defaultMessage=\"Landing Manager\" /></h2>\n                            </div>\n                        </div>\n                    </div>\n                </header>\n\n                <div className=\"landings\">\n                    <div className=\"container\">\n                        <div className=\"row row-reverse\">\n                            <div className=\"col-md-3 landings__button\">\n                                <LocalizedLink\n                                    className=\"bt noselect bt-gentle bt-size-medium\"\n                                    routeId=\"ROUTE_LANDING_MANAGER_DETAIL\"\n                                    params={{ id: 'new', outlet: '', iso: landings && landings['baseLang']['id'] }}\n                                >\n                                    <Translation id=\"create\" defaultMessage=\"Create\" />\n                                </LocalizedLink>\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-md-4 landings__filter\">\n                                <DropDownList\n                                    label={intl.formatMessage({ id: 'markets' })}\n                                    dataItemKey=\"value\"\n                                    textField=\"label\"\n                                    data={[{ value: 'Todos', label: 'Todos' }, ...getMarkets(landings ? landings.markets : [])]}\n                                    value={filtersObject.selectedMarket}\n                                    onChange={e => {\n                                        const object = {\n                                            ...filtersObject,\n                                            selectedMarket: e.target.value,\n                                            selectedCountry: null,\n                                            selectedCenter: null\n                                        }\n                                        this.setState({ filtersObject: object })\n                                        fetchCountriesDescriptions(e.target.value.salesOrg).then(() =>\n                                            this.setState({\n                                                filtersObject: {\n                                                    ...this.state.filtersObject,\n                                                    selectedCountry: null,\n                                                    selectedCenter: null\n                                                }\n                                            })\n                                        )\n                                    }}\n                                />\n                            </div>\n                            <div className=\"col-md-4 landings__filter\">\n                                <MultiSelect\n                                    label={intl.formatMessage({ id: 'countries' })}\n                                    dataItemKey=\"id\"\n                                    textField=\"label\"\n                                    data={getCountries(countries ? countries : [], intl && intl)}\n                                    value={filtersObject.selectedCountry}\n                                    onChange={e => {\n                                        const object = {\n                                            ...filtersObject,\n                                            selectedCountry: e.target.value\n                                        }\n                                        this.setState({ filtersObject: object })\n                                        fetchCentersDescriptions(this.selectedSalesOrgs(e.target.value)).then(data =>\n                                            this.setState({\n                                                filtersObject: {\n                                                    ...this.state.filtersObject,\n                                                    selectedCenter: null\n                                                }\n                                            })\n                                        )\n                                    }}\n                                />\n                            </div>\n                            <div className=\"col-md-4 landings__filter\">\n                                <MultiSelect\n                                    label={intl.formatMessage({ id: 'centers' })}\n                                    dataItemKey=\"value\"\n                                    textField=\"label\"\n                                    data={getCenters(centers ? centers : [])}\n                                    value={filtersObject.selectedCenter}\n                                    onChange={e => {\n                                        const object = {\n                                            ...filtersObject,\n                                            selectedCenter: e.target.value\n                                        }\n                                        this.setState({ filtersObject: object })\n                                    }}\n                                />\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-md-4 landings__filter\">\n                                {landings && landings.statuses ? (\n                                    <DropDownList\n                                        label={intl.formatMessage({ id: 'status' })}\n                                        textField=\"label\"\n                                        data={getStatuses([...landings.statuses, 'ALL'], intl)}\n                                        onChange={e => {\n                                            const object = {\n                                                ...filtersObject,\n                                                statusSelected: e.target.value\n                                            }\n                                            this.setState({ filtersObject: object })\n                                        }}\n                                        value={filtersObject.statusSelected}\n                                    ></DropDownList>\n                                ) : (\n                                    <DropDownList label={intl.formatMessage({ id: 'status' })}></DropDownList>\n                                )}\n                            </div>\n                            <div className=\"col-md-4\">{/* spacer block */}</div>\n                            <div className=\"col-md-4 landings__filter landings__filter--date\">\n                                <label>\n                                    <Translation id=\"dates\" defaultMessage=\"Dates\" />\n                                </label>\n                                <DateRangePicker\n                                    format=\"dd/MM/yyyy\"\n                                    width=\"100%\"\n                                    className=\"\"\n                                    value={filtersObject.dates}\n                                    onChange={e => {\n                                        const object = {\n                                            ...filtersObject,\n                                            dates: e.target.value\n                                        }\n                                        this.setState({ filtersObject: object })\n                                    }}\n                                />\n                                {(filtersObject.dates.start || filtersObject.dates.end) && (\n                                    <a\n                                        className=\"landings__filter--clear\"\n                                        onClick={() => {\n                                            const object = {\n                                                ...filtersObject,\n                                                dates: { start: null, end: null }\n                                            }\n                                            this.setState({ filtersObject: object })\n                                        }}\n                                    >\n                                        <Translation id=\"clear_dates\" defaultMessage=\"Clear dates\" />\n                                    </a>\n                                )}\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-sm-12 landings__filter landings__filter--search\">\n                                <Input\n                                    className=\"searchInput\"\n                                    type=\"search\"\n                                    name=\"search\"\n                                    label={intl.formatMessage({ id: 'search' }) + '...'}\n                                    onChange={e => {\n                                        const object = {\n                                            ...filtersObject,\n                                            searchString: e.target.value\n                                        }\n                                        this.setState({ filtersObject: object })\n                                    }}\n                                    value={filtersObject.searchString}\n                                />\n                                {filtersObject.searchString == '' ? <span className=\"k-icon k-i-search\"></span> : null}\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-sm-12 landings__data\">\n                                <Grid\n                                    data={process(filteredLandings || [], gridDataState)}\n                                    pageable={true}\n                                    sortable={true}\n                                    {...this.state.gridDataState}\n                                    onDataStateChange={e => this.setState({ gridDataState: e.dataState })}\n                                >\n                                    <GridColumn title={intl.formatMessage({ id: 'title' })} field=\"title\" />\n                                    <GridColumn title={intl.formatMessage({ id: 'status' })} field=\"status\" />\n                                    <GridColumn title={intl.formatMessage({ id: 'start_date' })} field=\"start_at\" filter=\"date\" format=\"{0:dd/MM/yyyy HH:mm:ss}\" />\n                                    <GridColumn title={intl.formatMessage({ id: 'ending_date' })} field=\"end_at\" filter=\"date\" format=\"{0:dd/MM/yyyy HH:mm:ss}\" />\n                                    <GridColumn title={intl.formatMessage({ id: 'created_date' })} field=\"created_at\" filter=\"date\" format=\"{0:dd/MM/yyyy HH:mm:ss}\" />\n                                    <GridColumn\n                                        sortable={false}\n                                        title={intl.formatMessage({ id: 'translations' })}\n                                        field=\"translations\"\n                                        cell={data => (\n                                            <td style={{ textAlign: 'center' }}>\n                                                <Button\n                                                    className={'tablecustomButtonRound ' + (this.isLandingTranslated(data.dataItem.data_lang) ? 'valid' : 'invalid')}\n                                                    onClick={() =>\n                                                        this.setState({ showLangsModal: true, modalDataLang: data.dataItem.data_lang, modalCommonID: data.dataItem.common_id })\n                                                    }\n                                                >\n                                                    <span className=\"k-icon k-i-spell-checker\"></span>\n                                                </Button>\n                                            </td>\n                                        )}\n                                    />\n                                    <GridColumn sortable={false} title={intl.formatMessage({ id: 'actions' })} field=\"actions\" cell={this.ActionsCell} />\n                                </Grid>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                {this.state.showLangsModal && (\n                    <SimpleModal customClass=\"langs-modal\" size=\"large\" onClose={() => this.setState({ showLangsModal: false })}>\n                        {this.props.landings.langs ? (\n                            this.props.landings.langs.map((lang, i) => {\n                                var found = this.state.modalDataLang && Array.isArray(this.state.modalDataLang) ? (this.state.modalDataLang || []).find(a => a === lang.id) : false\n                                return (\n                                    <div key={i} className=\"translation-item\">\n                                        <div className=\"translation-label-row\">\n                                            <span className={`flag-icon flag-icon-${advParseLang(lang, true)} mx-1`}></span>\n                                            <span>{lang.name}</span>\n                                        </div>\n                                        <LocalizedLink\n                                            routeId=\"ROUTE_LANDING_MANAGER_DETAIL\"\n                                            params={{ id: this.state.modalCommonID, iso: lang.id, outlet: '' }}\n                                            queryString={found ? '/edit' : ''}\n                                            className={'bt noselect bt-gentle bt-size-medium ' + (found ? 'valid' : 'invalid')}\n                                        >\n                                            {found ? <Translation id=\"Edit\" defaultMessage=\"Edit\" /> : <Translation id=\"translate\" defaultMessage=\"Translate\" />}\n                                        </LocalizedLink>\n                                    </div>\n                                )\n                            })\n                        ) : (\n                            <div></div>\n                        )}\n                    </SimpleModal>\n                )}\n            </section>\n        )\n    }\n}\nexport default injectIntl(LandingManager)\n","/**\n * Función para gestionar las cargas por las que se deba mostrar un loader bloqueante.\n * Primero se llamará a removeLoader dentro de un timeout cuyo ID se pasará a esta función y,\n * a continuación, fuera del loader, a la de añadir Loader.\n * \n * @param {number} id ID devuelto por el setTimeout\n * @returns \n */\n\nexport const addLoader = (id) => dispatch => {\n    dispatch({ type: 'ADD_LOADER', loader: id });\n}\n\nexport const removeLoader = (id) => dispatch => {\n    clearTimeout(id);\n    dispatch({ type: 'REMOVE_LOADER', loader: id });\n}","import { connect } from 'react-redux'\n\nimport { getSalesOrg, getIsLogged, getUserType } from '../../store/login/reducers'\nimport { fetchMarkets, fetchLandings, fetchCountries, fetchCenter, fetchLangs, fetchLandingsQuery, deleteLanding } from '../../store/landing/actions'\n\nimport LandingManager from './LandingManager'\nimport { loginRequired } from '../../store/login/actions'\nimport { push } from 'react-router-redux'\nimport { showToastNotification } from '../../store/toast-notifications/actions'\nimport { addLoader } from '../../store/loader/actions'\nimport { removeLoader } from '../../store/loader/actions'\nimport { dispatchPushURL } from '../../store/ui/actions'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        isLogged: getIsLogged(state),\n        salesOrg: getSalesOrg(state),\n        markets: state.landing.markets,\n        countries: state.landing.countries,\n        centers: state.landing.centers,\n        landings: state.landing.landings,\n        landingId: match.params.id,\n        userType: getUserType(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        showToastNotification: (text = '', type = 'none', duration = 10000) => dispatch(showToastNotification(text, type, duration)),\n        fetchMarketsDescriptions: () => dispatch(fetchMarkets()),\n        fetchCountriesDescriptions: salesOrg => dispatch(fetchCountries(salesOrg)),\n        fetchCentersDescriptions: salesOrg => dispatch(fetchCenter(salesOrg)),\n        fetchLangs: () => dispatch(fetchLangs()),\n        fetchLandings: () => dispatch(fetchLandings()),\n        fetchLandingsQuery: query => dispatch(fetchLandingsQuery(query)),\n        deleteLanding: (id, iso) => dispatch(deleteLanding(id, iso)),\n        loginRequired: () => {\n            dispatch(loginRequired())\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        addLoader: (id) => dispatch(addLoader(id)),\n        removeLoader: (id) => dispatch(removeLoader(id))\n    }\n}\n\nconst LandingManagerContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(LandingManager)\n\nexport default LandingManagerContainer\n","import React from 'react'\n\nimport LandingManagerContainer from '../components/landing-manager/LandingManagerContainer'\n\nconst LandingManagerScreen = props => <LandingManagerContainer {...props} />\n\nexport default LandingManagerScreen\n","import React from 'react'\nimport Button from '../../global/Button'\nimport { Input } from '@progress/kendo-react-inputs'\nimport { getFileData, isImageValid } from '../utils';\nimport cameraOff from '../../../assets/img/icons/camera-off.svg'\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator';\nimport ProductDisplayName from '../../global/ProductDisplayName';\nimport IntegerInputNumber from \"../../input-number-other/IntegerInputNumber\";\nimport Translation from \"../../global/Translation\";\n\nconst SortableItemUI = props => {\n    const { style, attributes, dataItem, forwardRef, onDelete, onDeleteImage, onEdit, landingId, onShowImage, intl, onFileError, editable, showLotsModal, showAdditionalInfoModal, commingFromMall } = props\n\n    let outletQuality = false;\n    let stockOutletAvailable = false;\n    let thumbnail = dataItem.tumbnail_image_url || dataItem.thumbnail_image_uri;\n\n    if (dataItem.data && typeof dataItem.data !== 'string') {\n        outletQuality = dataItem.data.outletQuality\n        stockOutletAvailable = dataItem.data.stock_outlet > 0 && dataItem.data.isStockOutlet\n        thumbnail = dataItem.data.original_thumbnail || thumbnail;\n    } else {\n        try {\n            const data = JSON.parse(dataItem.data)\n\n            thumbnail = data.original_thumbnail || thumbnail\n        } catch (e) { }\n    }\n\n    const isGroup = dataItem.data && dataItem.data.isGroup\n    // if (isGroup) style.backgroundColor = 'antiquewhite'\n\n    return (\n        <div className=\"landings__products__item\" ref={forwardRef} style={{ ...style }} {...attributes}>\n            <div className=\"row\">\n                <div className=\"col-lg-3 col-md-6 col-6 landings__products__item__info\">\n                    <div className=\"landings__products__item__info--img-wrapper\">\n                        <img className={\"landings__products__item__info--img\" + (!thumbnail || thumbnail === 'null' ? '--placeholder' : '')} src={thumbnail && thumbnail !== 'null' ? thumbnail : cameraOff} />\n                        {((!commingFromMall && outletQuality) || (commingFromMall && stockOutletAvailable)) && <DisplayOutletIndicator outletQuality={outletQuality}/>}\n                    </div>\n                    <div className=\"landings__products__item__info--text\">\n                        <p className=\"landings__products__item__info__brand\">{dataItem.brand}</p>\n                        <p className=\"landings__products__item__info__name\">\n                            <ProductDisplayName product={{ ...dataItem, displayName: dataItem.name ? dataItem.name.toUpperCase() : '', translations: dataItem.data.translations ? dataItem.data.translations : {} }} />\n                        </p>\n                        <p className=\"landings__products__item__info__data\">\n                            {dataItem.thickness && (\n                                <span>\n                                    <i className=\"icon-thickness\"></i>\n                                    {dataItem.thickness} cm\n                                </span>\n                            )}\n                            <span>\n                                <i className=\"icon-finish\"></i>\n                                {dataItem.finish}\n                            </span>\n                        </p>\n                    </div>\n                </div>\n\n\n                {editable && (\n                    <React.Fragment>\n\n                        <div className=\"col-lg-2 col-md-3 col-6 d-flex flex-column\" style={{rowGap: '12px'}}>\n                            {isGroup && (\n                                <Button size=\"small\"\n                                        onClick={() => showLotsModal(dataItem)}\n                                        icon=\"edit\"\n                                        backgroundColor=\"#3333FF\"\n                                        color=\"white\"\n                                >\n                                    <Translation id=\"lots_group\" defaultMessage=\"Lots group\" />\n                                </Button>\n                            )}\n                            <Button size=\"small\"\n                                    onClick={() => showAdditionalInfoModal(dataItem.data)}\n                                    icon=\"edit\"\n                                    backgroundColor=\"#0A0A0A\"\n                                    color=\"white\"\n                            >\n                                <Translation id=\"additional_info\" defaultMessage=\"Additional info\" />\n                            </Button>\n                        </div>\n\n                        <div className=\"col-lg-1 col-md-3 col-6 p-lg-0\">\n                            <div style={{display:'flex', flexDirection:'column', alignItems: 'center', fontSize:'14px'}}>\n                                <label htmlFor={dataItem.id}>\n                                    <Translation id=\"minimun_order\" defaultMessage=\"Minimun order\"/>\n                                </label>\n                                <IntegerInputNumber id={dataItem.id}\n                                                    min={1}\n                                                    valueDefault={Number.parseInt(dataItem.minimum_order)}\n                                                    onChangeValue={v => dataItem.minimum_order = v}\n                                />\n                            </div>\n\n                            {/*<Input*/}\n                            {/*    type=\"number\"*/}\n                            {/*    label={intl.formatMessage({ id: 'minimum_order' })}*/}\n                            {/*    value={dataItem.minimum_order}*/}\n                            {/*    onChange={e => {*/}\n                            {/*        dataItem.minimum_order = e.target.value > 0 ? e.target.value : 0*/}\n                            {/*    }}*/}\n                            {/*/>*/}\n                        </div>\n\n                        <div className=\"col-lg-2 col-md-4 col-6 landings__products__item__file\">\n                            <label>\n                                <Translation id=\"thumbnail\" defaultMessage=\"Thumbnail\" />\n                                <br />\n                                <small>(250 &times; 150px)</small>\n                            </label>\n                            {!dataItem.thumbnail_image_filename && (\n                                <Input\n                                    type=\"file\"\n                                    accept=\"image/jpg,image/jpeg,image/png\"\n                                    data-text={intl.formatMessage({ id: 'upload_image' })}\n                                    onChange={e => {\n                                        if (isImageValid(e.target.element.files[0])) {\n                                            const pData = getFileData(dataItem.data)\n                                            pData.original_thumbnail = pData.original_thumbnail || dataItem.tumbnail_image_url || dataItem.thumbnail_image_uri\n                                            onEdit({\n                                                ...dataItem,\n                                                thumbnail_image: e.target.element.files[0],\n                                                thumbnail_image_uri: URL.createObjectURL(e.target.element.files[0]),\n                                                thumbnail_image_filename: e.target.element.files[0].name,\n                                                thumbnail_image_preview: true,\n                                                data: pData\n                                            })\n                                        } else {\n                                            if (typeof onFileError === 'function') {\n                                                onFileError()\n                                            }\n                                        }\n                                    }}\n                                />\n                            )}\n                            {dataItem.thumbnail_image_filename && (\n                                <div className=\"landings__products__item__file__buttons\">\n                                    <Button\n                                        inverted\n                                        icon=\"times\"\n                                        far\n                                        className=\"landings__products__item__file__buttons__clear\"\n                                        onClick={e => {\n                                            onDeleteImage(landingId, 'THUMBNAIL', () =>\n                                                onEdit({\n                                                    ...dataItem,\n                                                    thumbnail_image: null,\n                                                    thumbnail_image_uri: null,\n                                                    thumbnail_image_filename: null\n                                                })\n                                            )\n                                        }}\n                                    >\n                                        {intl.formatMessage({ id: 'delete' })}\n                                    </Button>\n                                    {dataItem.thumbnail_image_uri && !dataItem.thumbnail_image_preview && (\n                                        <Button\n                                            inverted\n                                            icon=\"image\"\n                                            className=\"landings__products__item__file__buttons__image\"\n                                            onClick={() => onShowImage(dataItem.thumbnail_image_uri)}\n                                        ></Button>\n                                    )}\n                                </div>\n                            )}\n                        </div>\n\n                        <div className=\"col-lg-2 col-md-4 col-6 landings__products__item__file\">\n                            <label><Translation id=\"details\" defaultMessage=\"Details\" /><br /><small>(1000 &times; 667px)</small></label>\n                            {!dataItem.detail_image_filename && (\n                                <Input type=\"file\" accept=\"image/jpg,image/jpeg,image/png\" data-text={intl.formatMessage({ id: 'upload_image' })}\n                                    onChange={e => {\n                                        if (isImageValid(e.target.element.files[0])) {\n                                            onEdit({\n                                                ...dataItem,\n                                                detail_image: e.target.element.files[0],\n                                                detail_image_uri: URL.createObjectURL(e.target.element.files[0]),\n                                                detail_image_filename: e.target.element.files[0].name,\n                                                detail_image_preview: true\n                                            })\n                                        } else {\n                                            if (typeof onFileError === 'function') {\n                                                onFileError()\n                                            }\n                                        }\n                                    }}\n                                />\n                            )}\n                            {dataItem.detail_image_filename && (\n                                <div className=\"landings__products__item__file__buttons\">\n                                    <Button\n                                        inverted\n                                        icon=\"times\"\n                                        far\n                                        className=\"landings__products__item__file__buttons__clear\"\n                                        onClick={e => {\n                                            onDeleteImage(landingId, 'DETAIL', () =>\n                                                onEdit({\n                                                    ...dataItem,\n                                                    detail_image: null,\n                                                    detail_image_uri: null,\n                                                    detail_image_filename: null\n                                                })\n                                            )\n                                        }}\n                                    >\n                                        {intl.formatMessage({ id: 'delete' })}\n                                    </Button>\n                                    {dataItem.detail_image_uri && !dataItem.detail_image_preview && (\n                                        <Button\n                                            inverted\n                                            icon=\"image\"\n                                            className=\"landings__products__item__file__buttons__image\"\n                                            onClick={() => onShowImage(dataItem.detail_image_uri)}\n                                        ></Button>\n                                    )}\n                                </div>\n                            )}\n                        </div>\n\n                        <div className=\"col-lg-2 col-md-4 col-6 landings__products__item__file\">\n                            <label>                              \n                                <Translation id=\"background\" defaultMessage=\"Background\" />\n                                <br />\n                                <small>(1920 &times; 600px)</small>\n                            </label>\n                            {!dataItem.background_image_filename && (\n                                <Input\n                                    type=\"file\"\n                                    accept=\"image/jpg,image/jpeg,image/png\"\n                                    data-text={intl.formatMessage({ id: 'upload_image' })}\n                                    onChange={e => {\n                                        if (isImageValid(e.target.element.files[0])) {\n                                            onEdit({\n                                                ...dataItem,\n                                                background_image: e.target.element.files[0],\n                                                background_image_uri: URL.createObjectURL(e.target.element.files[0]),\n                                                background_image_filename: e.target.element.files[0].name,\n                                                background_image_preview: true\n                                            })\n                                        } else {\n                                            if (typeof onFileError === 'function') {\n                                                onFileError()\n                                            }\n                                        }\n                                    }}\n                                />\n                            )}\n                            {dataItem.background_image_filename && (\n                                <div className=\"landings__products__item__file__buttons\">\n                                    <Button\n                                        inverted\n                                        icon=\"times\"\n                                        far\n                                        className=\"landings__products__item__file__buttons__clear\"\n                                        onClick={e => {\n                                            onDeleteImage(landingId, 'BACKGROUND', () =>\n                                                onEdit({\n                                                    ...dataItem,\n                                                    background_image: null,\n                                                    background_image_uri: null,\n                                                    background_image_filename: null\n                                                })\n                                            )\n                                        }}\n                                    >\n                                        {intl.formatMessage({ id: 'delete' })}\n                                    </Button>\n                                    {dataItem.background_image_uri && !dataItem.background_image_preview && (\n                                        <Button\n                                            inverted\n                                            icon=\"image\"\n                                            className=\"landings__products__item__file__buttons__image\"\n                                            onClick={() => onShowImage(dataItem.background_image_uri)}\n                                        ></Button>\n                                    )}\n                                </div>\n                            )}\n                        </div>\n                    </React.Fragment>\n                )}\n            </div>\n\n            {editable && <Button icon=\"times\" size=\"medium\" danger className=\"landings__products__item__remove\" onClick={e => onDelete(dataItem)}></Button>}\n\n        </div>\n    )\n}\n\nexport default SortableItemUI\n","import React from 'react'\n\nimport Spinner from '../../global/Spinner'\nimport ReactTable from \"react-table\";\nimport Translation from \"../../global/Translation\";\nimport DisplayLotId from \"../../catalog/rectangleResult/displays/DisplayLotId\";\nimport {injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport {fetchMallLots} from \"../../../store/landing/actions\";\nimport {getIsLoadingLots, getMallLots} from \"../../../store/landing/reducers\";\nimport Select from \"react-select\";\nimport Button from \"../../global/Button\";\n\nconst DEFAULT_PAGE_SIZE = 32\nlet PAGE_INDEX = 0\nlet PAGE_SIZE = DEFAULT_PAGE_SIZE\n\nclass LotsModal extends React.Component {\n\n    state = {\n        search: '',\n        selectedCenter: null,\n        centersOptions: [],\n        provisionalLots: {},\n        selectedLots: {},\n        selectedBundles: {},\n        lotsAreFetched: false,\n        expander: {}\n    }\n\n    componentDidMount() {\n        if (this.props.centers) {\n            this.props.centers.forEach(c => {\n                // if (c == '1100') c = '1070'\n                this.state.centersOptions.push({label: c, value: c})\n            })\n        } else if (this.props.dataItem) {\n            this.props.fetchLots(\n                [this.props.product.centerId],\n                this.props.product.productId,\n                this.props.dataItem.landing_common_id,\n                this.props.dataItem.id\n            ).then(() => {\n                const bundles = {}\n                const lots = {}\n\n                this.props.lots.forEach((l, index) => {\n                    this.state.expander[index] = !l.isSelected && l.selectedLotsCount > 0\n\n                    if (l.bundleId) {\n                        bundles[l.bundleId] = true\n                        if (l.lots) {\n                            l.lots.forEach(innerLot => lots[innerLot.lotId] = true)\n                        }\n                    } else {\n                        lots[l.lotId] = true\n                    }\n                })\n\n                this.setState({lotsAreFetched : true })\n\n                this.props.product.bundles && this.props.product.bundles.forEach(b => {\n                    if (bundles[b]) this.state.selectedBundles[b] = true\n                })\n                this.props.product.lots && this.props.product.lots.forEach(l => {\n                    if (lots[l]) this.state.selectedLots[l] = true\n                })\n            })\n        }\n    }\n\n    search = e => {\n        this.setState({ search: e.target.value }, this.filter)\n    }\n\n    handleSelectCenter = center => {\n        if (this.state.selectedCenter != center) {\n            this.props.product.centerId = center\n            this.setState({selectedCenter: center})\n            this.props.fetchLots([center], this.props.product.productId, null, null).then(() => this.setState({lotsAreFetched : true }))\n        }\n    }\n\n    addLots = () => {\n        Object.keys(this.state.selectedBundles).forEach(b => this.props.selectedBundles[b] = true)\n        Object.keys(this.state.selectedLots).forEach(l => this.props.selectedLots[l] = true)\n    }\n\n    updateGroup = () => {\n        this.addLots()\n        this.props.product.lots = Object.keys(this.state.selectedLots)\n        this.props.product.bundles = Object.keys(this.state.selectedBundles)\n        this.props.onClose()\n    }\n\n    addGroup = () => {\n        this.addLots()\n        const group = {...this.props.product,\n            isGroup: true,\n            lots: Object.keys(this.state.selectedLots),\n            bundles: Object.keys(this.state.selectedBundles),\n            outlet: this.props.lots[0].qualityOutlet\n        }\n        let isOutlet = group.outlet\n        if (this.props.lots[0] && this.props.lots[0].lots && this.props.lots[0].lots[0]) isOutlet = !!this.props.lots[0].lots[0].qualityOutlet\n        this.props.addGroup(group, isOutlet)\n        this.props.onClose()\n    }\n\n    selectLot = (checked, lotId) => {\n        if (checked) this.state.selectedLots[lotId] = true\n        else delete this.state.selectedLots[lotId]\n        this.forceUpdate()\n    }\n\n    selectBundle = (checked, bundleId, lots) => {\n        if (checked) {\n            this.state.selectedBundles[bundleId] = true\n            lots.forEach(l => {\n                if (!(l.lotId in this.props.selectedLots)) this.state.selectedLots[l.lotId] = true\n            })\n        } else {\n            delete this.state.selectedBundles[bundleId]\n            lots.forEach(l => delete this.state.selectedLots[l.lotId])\n        }\n        this.forceUpdate()\n    }\n\n    filter = () => {\n        let lotsFiltered = this.state.lotsAreFetched && this.props.lots ? this.props.lots : []\n\n        if (this.state.provisionalLots) {\n            lotsFiltered = lotsFiltered.filter(row => !(row.lotId in this.state.provisionalLots))\n        }\n\n        if (this.state.search) {\n            lotsFiltered = lotsFiltered.filter(row => {\n                if (row.lotId) return row.lotId.includes(this.state.search)\n                else if (row.bundleId) return row.bundleId.includes(this.state.search) || row.lots.some(lot => lot.lotId.includes(this.state.search))\n                else return row\n            })\n        }\n\n        return lotsFiltered\n    }\n\n    disableButton = () => {\n        return !this.state.lotsAreFetched || Object.keys(this.state.selectedLots).length === 0\n    }\n\n    render() {\n\n        let lots = this.filter()\n\n        return (\n\n            <section id=\"section-landing-lots\">\n                <Spinner isLoading={this.props.isLoading} />\n\n                <div className=\"full-overlay\" style={{ display: 'block'}} onClick={this.props.onClose} />\n\n                <div id=\"modal-tables-quantity-container\" className=\"tables-quantity container p-3\" style={{ display: 'block', maxHeight: 'none'}}>\n                    <div className=\"lots container\">\n                        <div className=\"row align-items-center\">\n\n                            {this.props.centers ? (\n                                <React.Fragment>\n                                    <div className=\"col-12 col-lg-4 mb-1 p-lg-0\">\n                                        <div className=\"search-bar search-bar--thin\">\n                                            <input type=\"text\"\n                                                   className=\"search-box\"\n                                                   placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                                   value={this.state.search}\n                                                   onChange={this.search}\n                                            />\n                                        </div>\n                                    </div>\n\n                                    <div className=\"col-12 col-lg-4 mb-1 d-flex align-items-center\">\n                                        <Translation id={'center'} defaultMessage={'Center'}/>:\n                                        <Select\n                                            style={{width: '100%', textAlign: 'center'}}\n                                            id=\"mall-lots-center-select\"\n                                            placeholder={this.props.intl.formatMessage({id:\"select_center\", defaultMessage:\"Select center\"})}\n                                            options={this.state.centersOptions}\n                                            value={this.state.selectedCenter}\n                                            clearable={false}\n                                            onChange={selectedOption => this.handleSelectCenter(selectedOption.value)}\n                                        />\n                                    </div>\n\n                                    <div className=\"col-12 col-lg-4 mb-1\">\n                                        <Button\n                                            size=\"medium\"\n                                            onClick={this.addGroup}\n                                            disabled={this.disableButton()}\n                                            gentle\n                                        >\n                                            <Translation id={'create_group'} defaultMessage={'Create group'}/>\n                                        </Button>\n                                    </div>\n                                </React.Fragment>\n                            ) : (\n                                <React.Fragment>\n                                    <div className=\"row w-100 d-flex justify-content-end\">\n                                        <div className=\"col-6 col-lg-4 mb-1\">\n                                            <Button\n                                                size=\"medium\"\n                                                onClick={this.updateGroup}\n                                                disabled={this.disableButton()}\n                                                gentle\n                                            >\n                                                <Translation id={'update_group'} defaultMessage={'Update group'}/>\n                                            </Button>\n                                        </div>\n                                    </div>\n                                </React.Fragment>\n                            )}\n\n                            <div className=\"lots-container col-12\">\n\n                                <ReactTable\n                                    data={lots ? lots : []}\n                                    loading={this.props.isLoading}\n                                    loadingText={<Spinner isLoading={this.props.isLoading} />}\n                                    columns={[\n                                        {\n                                            id: 'expander',\n                                            expander: true,\n                                            Expander: ({ isExpanded, original }) => {\n                                                return original.lots ? (\n                                                    <div className={isExpanded ? 'rt-expander -open' : 'rt-expander'} style={{ width: '20px', cursor: 'pointer' }}>\n                                                        •\n                                                    </div>\n                                                ) : (\n                                                    ''\n                                                )\n                                            }\n                                        },\n                                        {\n                                            id: 'image',\n                                            Header: '',\n                                            Cell: ({ original }) => {\n                                                return <img src={original.thumb} className=\"lot-thumb\" alt=\"\" style={{ width: '50px', cursor: 'auto' }} />\n                                            },\n                                            minWidth: 60\n                                        },\n                                        {\n                                            id: 'quarryBlock',\n                                            Header: <Translation id=\"quarryBlock\" defaultMessage=\"Quarry Block\" />,\n                                            Cell: ({ original }) => {\n                                                if (original.lots) {\n                                                    return (\n                                                        <span className=\"bundle-tag\">\n                                                            BUNDLE\n                                                            <span className=\"count-container\">\n                                                                <span className=\"count\"> ({original.lots.length} lots)</span>\n                                                            </span>\n                                                        </span>\n                                                    )\n                                                } else {\n                                                    return <span>{ original.quarryBlock }</span>\n                                                }\n                                            },\n                                            minWidth: 90\n                                        },\n                                        {\n                                            id: 'bundleId',\n                                            Header: 'Bundle ID',\n                                            Cell: ({ original }) => {\n                                                return <b>{original.bundleId}</b>\n                                            },\n\n                                            minWidth: 90\n                                        },\n                                        {\n                                            id: 'lotId',\n                                            Header: <Translation id=\"lotId\" defaultMessage=\"Lot ID\" />,\n                                            Cell: ({ original }) => {\n                                                if (original.lots) {\n                                                    return ''\n                                                } else {\n                                                    return <DisplayLotId lotId={original.lotId}/>                                            }\n                                            },\n\n                                            minWidth: 90\n                                        },\n                                        {\n                                            id: 'location',\n                                            Header: <Translation id=\"location\" defaultMessage=\"Location\" />,\n                                            accessor: 'location',\n                                            minWidth: 80\n                                        },\n                                        {\n                                            id: 'actions',\n                                            Header: '',\n                                            Cell: ({ original, column, rowInfo }) => {\n                                                if (original.lots) {\n                                                    return (\n                                                        <input\n                                                            type=\"checkbox\"\n                                                            onClick={(e) => {\n                                                                original.isSelected = e.target.checked\n                                                                original.lots.forEach(l => l.isSelected = e.target.checked)\n                                                                this.selectBundle(e.target.checked, original.bundleId, original.lots)\n                                                            }}\n                                                            key={original.bundleId}\n                                                            disabled={original.bundleId in this.props.selectedBundles && !(original.bundleId in this.state.selectedBundles)}\n                                                            defaultChecked={original.isSelected || original.bundleId in this.state.selectedBundles || original.bundleId in this.props.selectedBundles}\n                                                        />\n                                                    )\n                                                } else {\n                                                    return (\n                                                        <input\n                                                            type=\"checkbox\"\n                                                            onClick={(e) => {\n                                                                original.isSelected = e.target.checked\n                                                                this.selectLot(e.target.checked, original.lotId)\n                                                            }}\n                                                            key={original.lotId}\n                                                            disabled={original.lotId in this.props.selectedLots && !(original.lotId in this.state.selectedLots)}\n                                                            defaultChecked={original.isSelected || original.lotId in this.state.selectedLots || original.lotId in this.props.selectedLots}\n                                                        />\n                                                    )\n                                                }\n                                            },\n                                            maxWidth: 60\n                                        }\n                                    ]}\n                                    subRowsKey=\"lots\"\n                                    defaultPageSize={DEFAULT_PAGE_SIZE}\n                                    pageSizeOptions={[8, 16, 32, 64, 128]}\n                                    previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                    nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                    noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                                    pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                    ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                                    className=\"light lots_table\"\n                                    onPageChange={pageIndex => {\n                                        PAGE_INDEX = pageIndex\n                                        lots.slice(PAGE_INDEX * PAGE_SIZE, PAGE_INDEX * PAGE_SIZE + PAGE_SIZE)\n                                        document.getElementsByClassName('lots_table')[0].getElementsByClassName('rt-tbody')[0].scrollTop = 0\n                                    }}\n                                    onPageSizeChange={(pageSize, pageIndex) => {\n                                        PAGE_SIZE = pageSize\n                                        PAGE_INDEX = pageIndex\n                                        lots.slice(PAGE_INDEX * PAGE_SIZE, PAGE_INDEX * PAGE_SIZE + PAGE_SIZE)\n                                        document.getElementsByClassName('lots_table')[0].getElementsByClassName('rt-tbody')[0].scrollTop = 0\n                                    }}\n                                    expanded={this.state.expander}\n                                    onExpandedChange={newExpanded => this.setState({expander: newExpanded})}\n                                />\n\n                            </div>\n\n                        </div>\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        lots: getMallLots(state),\n        isLoading: getIsLoadingLots(state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchLots: (centers, productId, landingCommonId, landingProductId) => dispatch(fetchMallLots(centers, productId, landingCommonId, landingProductId))\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(LotsModal)\n)\n","import Translation from \"../../global/Translation\";\nimport Button from \"../../global/Button\";\nimport SimpleModal from \"../../global/SimpleModal\";\nimport React, {useEffect, useState} from \"react\";\nimport Select from \"react-select\";\nimport {connect} from \"react-redux\";\nimport {getAvailableLands} from \"../../../store/ui/reducers\";\nimport {injectIntl} from \"react-intl\";\n\nconst AdditionalInfoModal = props => {\n\n    const getParsedAdditionalInfo = (value) => {\n        try {\n            return JSON.parse(value);\n        } catch (e) {\n            return null;\n        }\n    }\n\n    const getInfoLanguages = (info) => {\n        if (info) {\n            let languages = Object.keys(info)\n            const defaultIndex = languages.indexOf('default');\n            if (defaultIndex > -1) {\n                languages.splice(defaultIndex, 1);\n            }\n            return languages.map(l => _availableLanguages.find(al => al.value === l))\n        }\n        return null\n    }\n\n    const { onClose, setAdditionalInfo, additionalInfo, lands, intl } = props\n    const [_languages, _setLanguages] = useState(null);\n    const [_defaultLanguage, _setDefaultLanguage] = useState(null);\n    const [_translations, _setTranslations] = useState(getParsedAdditionalInfo(additionalInfo));\n\n    const getLanguages = () => {\n        return lands\n            .map(land => {\n                return { value: land.localecode, label: land.name, name: land.locale, code: land.code }\n            })\n            .sort((a, b) => {\n                if (a.label < b.label) return -1\n                if (a.label > b.label) return 1\n                return 0\n            })\n    }\n\n    let _availableLanguages = getLanguages()\n\n    useEffect(() => {\n        const currentLanguages = getInfoLanguages(_translations)\n        _setLanguages(currentLanguages)\n        if (_translations) {\n            const defaultLang = _translations.default ? _translations.default : Object.keys(_translations)[0]\n            setDefaultLanguage(defaultLang)\n        }\n    }, [])\n\n    const setDefaultLanguage = (lang) => {\n        _setTranslations({..._translations, default: lang})\n        _setDefaultLanguage(lang)\n    }\n\n    const handleSetDefaultLanguage = (event) => {\n        let value = undefined\n        if (event.target && event.target.checked) {\n            value = event.target.id.split('_').length > 1 ? event.target.id.split('_')[1] : ''\n        }\n        setDefaultLanguage(value)\n    }\n\n    const handleChangeComment = (event) => {\n        let value = event.target.value\n        let key = event.target.id\n\n        const newTranslations = {..._translations, [key]: value}\n        if (!newTranslations.default) {\n            newTranslations.default = key\n            _setDefaultLanguage(key)\n        }\n\n        _setTranslations(newTranslations)\n    }\n\n    const handleSetTranslations = () => {\n        const usedLangs = _languages && _languages.map(l => l.value)\n        if (!usedLangs || usedLangs.length === 0) _setTranslations(null)\n\n        if (_translations) {\n            const unusedLangs = Object.keys(_translations).filter(l => !usedLangs.includes(l) && l !== 'default')\n            if (!usedLangs.includes(_translations.default)) {\n                _translations.default = usedLangs[0]\n            }\n            unusedLangs.forEach(l => delete _translations[l])\n        }\n\n\n        setAdditionalInfo(JSON.stringify(_translations))\n        onClose()\n    }\n\n    return (\n        <SimpleModal\n            customClass=\"landings__modal landings__modal--text\"\n            title={''}\n            onClose={onClose}\n            size=\"large\"\n            footer={null}\n        >\n            <div style={{minHeight:'50vh', display:'flex', flexFlow:'column', justifyContent:'space-between'}}>\n                <h3><Translation id=\"product_additional_info\" defaultMessage=\"Product additional info\"/></h3>\n\n                <div className=\"row\" style={{flexGrow:0}}>\n                    <div className=\"col-12\">\n                        <div className=\"form-group select_languages\">\n                            <label htmlFor=\"select_additional_info_languages\">\n                                <strong><Translation id=\"select_languages\" defaultMessage=\"Select languages\" /></strong>\n                            </label>\n                            <Select\n                                required\n                                id=\"select_additional_info_languages\"\n                                multi={true}\n                                className=\"form-control\"\n                                placeholder={intl.formatMessage({ id: 'promotion_select_languages' })}\n                                value={_languages}\n                                onChange={selectedOption => _setLanguages(selectedOption)}\n                                options={_availableLanguages}\n                            />\n                        </div>\n                        <div>\n                            <strong><Translation id=\"set_additional_info\" defaultMessage=\"Set additional info\" /></strong>\n                        </div>\n                    </div>\n                </div>\n\n                <div className=\"container add_info_container\" style={{overflowY:'auto', flexGrow:1, maxHeight:'25vh'}}>\n                    <div className=\"row my-2\">\n                        <div className=\"col-4\">\n                            <Translation id=\"default_language\" defaultMessage=\"Default language\" />\n                        </div>\n                        <div className=\"col-8\">\n                            <Translation id=\"additional_info\" defaultMessage=\"Additional info\" />\n                        </div>\n                    </div>\n                    {_languages && _languages.map(lang => {\n                        return (\n                            <div id={'group_' + lang.value} className=\"row add_info_row\">\n                                <div className=\"col-1\">\n                                    <input\n                                        id={`default_${lang.value}`}\n                                        type=\"radio\"\n                                        checked={_defaultLanguage === lang.value}\n                                        onChange={handleSetDefaultLanguage}\n                                    />\n                                </div>\n                                <div className=\"col-1\">\n                                    <span className={`flag-icon flag-icon-${lang.code} mx-1`} />\n                                </div>\n                                <div className=\"col-2\">\n                                    <label>{lang.label}</label>\n                                </div>\n                                <div className=\"col-8\">\n                                    <input type=\"text\"\n                                           id={lang.value}\n                                           value={_translations && _translations[lang.value]}\n                                           onChange={handleChangeComment}\n                                           style={{width:'100%'}}\n                                    />\n                                </div>\n                            </div>\n                        )\n                    })}\n                </div>\n\n                <div className=\"d-flex w-100 justify-content-end mt-3\">\n                    <Button\n                        inverted\n                        className=\"landings__products__item__file__buttons__image\"\n                        onClick={handleSetTranslations}\n                    >\n                        <Translation id=\"accept\" defaultMessage=\"Accept\"/>\n                    </Button>\n\n                </div>\n            </div>\n        </SimpleModal>\n    )\n}\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        lands: getAvailableLands(state),\n    }\n}\n\nexport default injectIntl(connect(\n    mapStateToProps,\n    null\n)(AdditionalInfoModal))","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport SimpleModal from '../global/SimpleModal'\nimport confirm from '../global/confirm'\nimport Button from '../global/Button'\nimport moment from 'moment'\nimport { v4 as uuidv4 } from 'uuid'\nimport { SearchkitManager, SearchkitProvider, SearchBox, ResetFilters, QueryAccessor } from 'searchkit'\nimport { DropDownList } from '@progress/kendo-react-dropdowns'\nimport { DateRangePicker, DateTimePicker } from '@progress/kendo-react-dateinputs'\nimport { Input, RadioButton } from '@progress/kendo-react-inputs'\nimport { MultiSelect } from '@progress/kendo-react-dropdowns'\nimport { Editor, EditorTools } from '@progress/kendo-react-editor'\nimport { Sortable } from '@progress/kendo-react-sortable'\nimport SortableItemUI from './components/SortableItemUI.js'\nimport 'draft-js/dist/Draft.css'\nimport cameraOff from '../../assets/img/icons/camera-off.svg'\nimport { CENTERS, DATE_FORMAT,LANG_TO_INDEX, CREATION_MODE, getMarkets, getCountries, getCenters, \n    getStatuses, arrayToFormData, isImageValid, getFileData, PORTFOLIO_MODE_SHOW_ONLY_CODI, PORTFOLIO_MODE_SHOW_ONLY_USER_CENTER, PORTFOLIO_MODE_SHOW_BOTH_CENTERS } from './utils'\nimport DisplayOutletIndicator from '../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport ProductDisplayName from '../global/ProductDisplayName'\nimport { defineMessages } from 'react-intl'\nimport Translation from '../global/Translation'\nimport LotsModal from \"./components/LotsModal\";\nimport AdditionalInfoModal from \"./components/AdditionalInfoModal\";\n\nconst { Bold, Underline, FontSize, BackColor, ForeColor, Link, Unlink } = EditorTools\n\ndefineMessages({\n    CONFIRM_DELETE_IMAGE: {\n        id: 'CONFIRM_DELETE_IMAGE',\n        description: 'CONFIRM_DELETE_IMAGE',\n        defaultMessage: 'Are you sure you want to delete this image?'\n    },\n    CONFIRM_DELETE_LANDING: {\n        id: 'CONFIRM_DELETE_LANDING',\n        description: 'CONFIRM_DELETE_LANDING',\n        defaultMessage: 'Are you sure you want to delete this Landing?'\n    },\n    CONFIRM_DELETE_LANGUAGE: {\n        id: 'CONFIRM_DELETE_LANGUAGE',\n        description: 'CONFIRM_DELETE_LANGUAGE',\n        defaultMessage: 'Are you sure you want to delete this translation?'\n    },\n    change: {\n        id: 'change',\n        description: 'change',\n        defaultMessage: 'Change'\n    },\n    creation_error: {\n        id: 'creation_error',\n        description: 'creation_error',\n        defaultMessage: 'There was an error creating'\n    },\n    creation_success: {\n        id: 'creation_success',\n        description: 'creation_success',\n        defaultMessage: 'Created successfully'\n    },\n    error_image_file: {\n        id: 'error_image_file',\n        description: 'error_image_file',\n        defaultMessage: 'The image must be in jpg/png and not weigh more than 10MB'\n    },\n    landing_edit: {\n        id: 'landing_edit',\n        description: 'landing_edit',\n        defaultMessage: 'Edit landing'\n    },\n    landing_new: {\n        id: 'landing_new',\n        description: 'landing_new',\n        defaultMessage: 'New landing'\n    },\n    product_already_added: {\n        id: 'product_already_added',\n        description: 'product_already_added',\n        defaultMessage: 'Product has already been added'\n    },\n    template: {\n        id: 'template',\n        description: 'template',\n        defaultMessage: 'Template'\n    },\n    translation_edit: {\n        id: 'translation_edit',\n        description: 'translation_edit',\n        defaultMessage: 'Edit translation'\n    },\n    translation_new: {\n        id: 'translation_new',\n        description: 'translation_new',\n        defaultMessage: 'New translation'\n    },\n    update_error: {\n        id: 'update_error',\n        description: 'update_error',\n        defaultMessage: 'There was an error updating'\n    },\n    update_success: {\n        id: 'update_success',\n        description: 'update_success',\n        defaultMessage: 'Updated successfuly'\n    },\n    select_center: {\n        id: 'select_center',\n        description: 'Select center',\n        defaultMessage: 'Select center'\n    }\n})\n\nconst PORTFOLIO_MODES = {\n    [PORTFOLIO_MODE_SHOW_ONLY_CODI]:{value:PORTFOLIO_MODE_SHOW_ONLY_CODI, label:\"HQ Center\"}, \n    [PORTFOLIO_MODE_SHOW_ONLY_USER_CENTER]:{value:PORTFOLIO_MODE_SHOW_ONLY_USER_CENTER,label:\"User Center\"}, \n    [PORTFOLIO_MODE_SHOW_BOTH_CENTERS]:{value:PORTFOLIO_MODE_SHOW_BOTH_CENTERS, label:\"Both Centers\"}\n}\n\nconst skRef = {\n    data : null,\n    sk : null\n}\nclass LandingCreation extends React.Component {\n\n    getUri = () => {\n\n        let lang = 'es'\n        const catalogUri = '/catalog/search-multi-center-edit/'\n        const uri = catalogUri + '?lang=' + lang\n        const uri2 = this.props.outlet ? uri + '&outlet=true' : uri\n\n        return process.env.REACT_APP_API_HOST + uri2\n    }\n\n    centers = () => this.state.labelsInput.centers.map(v => v.value)\n\n    setExtraData = () => {\n        const salesOrgMap = {}\n        this.state.labelsInput.countries.forEach(v => v.salesOrg.forEach(v => {\n            salesOrgMap[v] = true\n        }))\n        let salesOrg = Object.keys(salesOrgMap)\n        if (!salesOrg.length) salesOrg = this.state.labelsInput.market.salesOrg\n        skRef.data = {centers: this.centers(), salesOrg, portfolioMode: this.state.portfolioMode}\n        // console.log('RURIDATA', skRef.data)\n        // return encodeURIComponent(JSON.stringify(data));\n    }\n\n    setSk = () => {\n        const myHttpHeaders = this.props.token ? { Authorization: 'Bearer ' + this.props.token } : {}\n        const sk = new SearchkitManager('/', {\n            searchUrlPath: this.getUri(),\n            timeout: 60000,\n            httpHeaders: myHttpHeaders,\n            searchOnLoad: false,\n            useHistory: false\n        })\n\n        sk.addResultsListener((results, second) => {\n            this.setState({ hits: results, showResults: true, searchingProducts: false })\n        })\n\n        sk.setQueryProcessor(plainQueryObject => {\n            if (!plainQueryObject.query) {\n                this.setState({ showResults: false, searchingProducts: false })\n                return null\n            } else {\n                this.setState({ showResults: true, searchingProducts: true })\n                plainQueryObject.extra = skRef.data\n                return plainQueryObject\n            }\n        })\n\n        skRef.sk = sk;\n    }\n\n    constructor(props) {\n        super(props)\n\n        this.ref = React.createRef();\n        \n        this.state = {\n            hasErrors: false,\n            mode: null,\n            redirect: false,\n            showModal: false,\n            showLotsModal: false,\n            showModalImage: false,\n            showModalAddProduct: false,\n            lastModalProduct: null,\n            modalText: '',\n            modalTextError: '',\n            modalImageSrc: null,\n            longDescription: null,\n            showResults: false,\n            bannerDesktopKey: uuidv4(),\n            bannerMobileKey: uuidv4(),\n            hits: [],\n            newLandingDraft: {},\n            labelsInput: {\n                status: { label: '', value: '' },\n                template_id: '',\n                market: '',\n                countries: [],\n                centers: [],\n                slug: '',\n                promotion: '',\n                banner_desktop_image: null,\n                banner_mobile_image: null\n            },\n            title: '',\n            products: [],\n            searchingProducts: false,\n            slugTimeout: null,\n            portfolioMode: PORTFOLIO_MODE_SHOW_ONLY_CODI,\n            lotsSource: null,\n            selectedLots: {},\n            selectedBundles: {},\n            showAdditionalInfoModal: false,\n            modalItemData: null\n        }\n\n        this.setSk()\n\n        this.handleRLDDChange = newItems => {\n            this.setState({ products: newItems })\n        }\n    }\n\n    componentDidMount() {\n        const {\n            fetchLanding,\n            landingId,\n            fetchLandingbyId,\n            currentIso,\n            intl,\n            fetchCountriesDescriptions,\n            fetchCentersDescriptions,\n            fetchLangs,\n            resetCountriesCenters,\n            removeLoader,\n            addLoader\n        } = this.props\n\n        const timeout = setTimeout(() => {\n            removeLoader(timeout)\n        }, 20000)\n\n        addLoader(timeout)\n\n        resetCountriesCenters()\n        fetchLangs()\n        fetchLanding().then(() => {\n            if (landingId && currentIso && landingId !== 'new') {\n                let mode = CREATION_MODE.EDIT\n\n                if (currentIso !== this.props.landing.baseLang.id) {\n                    mode = window.location.href.indexOf('/edit') > -1 ? CREATION_MODE.EDIT_LANGUAGE : CREATION_MODE.NEW_LANGUAGE\n                }\n\n                let isoValue = currentIso\n\n                if (mode === CREATION_MODE.NEW_LANGUAGE) {\n                    isoValue = this.props.landing.baseLang.id\n                }\n\n                fetchLandingbyId(landingId, isoValue).then(res => {\n                    const market = getMarkets(this.props.landing.markets).find(a => a.value === this.props.landing.landing.market)\n                    \n                    this.props.storePortfolioMode(this.props.landing.landing.portfolio_mode)\n\n                    fetchCountriesDescriptions(market.salesOrg).then(() => {\n                        fetchCentersDescriptions(\n                            this.selectedSalesOrgs(\n                                getCountries(this.props.landing.countries, intl).filter(\n                                    a => this.props.landing.landing.countries && this.props.landing.landing.countries.find(b => b === a.id)\n                                )\n                            )\n                        ).then(() => {\n                            const data = {\n                                ...this.props.landing.landing\n                            }\n\n                            const dataToShow = {\n                                status: { value: this.props.landing.landing.status, label: intl.formatMessage({ id: 'status_' + this.props.landing.landing.status }) },\n                                template_id: this.props.landing.templates.find(template => template.id === this.props.landing.landing.template_id),\n                                market: market,\n                                countries: getCountries(this.props.landing.countries, intl).filter(\n                                    a => this.props.landing.landing.countries && this.props.landing.landing.countries.find(b => b === a.id)\n                                ),\n                                centers: getCenters(this.props.landing.centers).filter(\n                                    a => this.props.landing.landing.centers && this.props.landing.landing.centers.find(b => b === a.value)\n                                ),\n                                dates: {\n                                    start: this.props.landing.landing.start_at ? moment(this.props.landing.landing.start_at, 'YYYY-MM-DD HH:mm:ss').toDate() : null,\n                                    end: this.props.landing.landing.end_at ? moment(this.props.landing.landing.end_at, 'YYYY-MM-DD HH:mm:ss').toDate() : null\n                                },\n                                slug: this.props.landing.landing.slug,\n                                promotion: this.props.landing.landing.promotion,\n                                banner_desktop_image_filename:\n                                    this.props.landing.landing.banner_desktop_image_filename && this.props.landing.landing.banner_desktop_image_filename != 'null'\n                                        ? this.props.landing.landing.banner_desktop_image_filename\n                                        : '',\n                                banner_desktop_image_uri:\n                                    this.props.landing.landing.banner_desktop_image_uri && this.props.landing.landing.banner_desktop_image_uri != 'null'\n                                        ? this.props.landing.landing.banner_desktop_image_uri\n                                        : '',\n                                banner_mobile_image_filename:\n                                    this.props.landing.landing.banner_mobile_image_filename && this.props.landing.landing.banner_mobile_image_filename != 'null'\n                                        ? this.props.landing.landing.banner_mobile_image_filename\n                                        : '',\n                                banner_mobile_image_uri:\n                                    this.props.landing.landing.banner_mobile_image_uri && this.props.landing.landing.banner_mobile_image_uri != 'null'\n                                        ? this.props.landing.landing.banner_mobile_image_uri\n                                        : ''\n                            }\n\n                            this.setState(\n                                {\n                                    newLandingDraft: { ...data, status: dataToShow.status },\n                                    title: this.props.landing.landing.title,\n                                    labelsInput: dataToShow,\n                                    products: this.props.landing.landing.products,\n                                    portfolioMode: this.props.landing.landing.portfolio_mode,\n                                    mode\n                                },\n                                () => {\n                                    removeLoader(timeout)\n                                    this.setExtraData()\n                                }\n                            )\n                        })\n                    })\n                })\n            } else {\n                this.setState({ mode: CREATION_MODE.NEW })\n                removeLoader(timeout)\n            }\n        })\n    }\n\n    hideResults = e => {\n        this.setState({ showResults: false })\n    }\n\n    parseBackError = () => {\n        let sMessage = ''\n\n        try {\n            if (this.props.error.data) {\n                for (var key in this.props.error.data) {\n                    sMessage += ` ${key} : ${this.props.error.data[key].join(', ')} `\n                }\n            }\n        } catch (error) {\n            sMessage = JSON.stringify(this.props.error)\n        }\n\n        return sMessage\n    }\n\n    onDeleteLanguage = () => {\n        const { currentIso, landing, deleteLanding, intl } = this.props\n        confirm(intl.formatMessage({ id: 'CONFIRM_DELETE_LANGUAGE' }), {\n            textOk: intl.formatMessage({ id: 'ok' }),\n            textCancel: intl.formatMessage({ id: 'cancel' }),\n            intl: intl\n        }).then(\n            confirm => {\n                return deleteLanding(landing.landing.common_id, currentIso).then(() => {\n                    this.forceUpdate()\n                    this.props.showToastNotification(intl.formatMessage({ id: 'remove_success' }), 'success')\n                    this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_LANDING_MANAGER' }))\n                })\n            },\n            cancel => {\n                return Promise.reject()\n            }\n        )\n    }\n\n    handleSaveLanding = dataInput => {\n        const { landing, currentIso, langs } = this.props\n        const { labelsInput, mode } = this.state\n\n        const lang = (langs || []).find(l => l.id === currentIso)\n\n        const dataFinal = {\n            ...dataInput,\n            id: mode === CREATION_MODE.NEW_LANGUAGE || mode === CREATION_MODE.NEW ? uuidv4() : landing.landing.id,\n            common_id: mode === CREATION_MODE.NEW || !landing.landing.common_id ? uuidv4() : landing.landing.common_id,\n            lang_id: lang ? lang.id : landing && landing.baseLang ? landing.baseLang.id : '',\n            status: dataInput.status.value,\n            portfolio_mode: this.state.portfolioMode\n        }\n\n        const data = new FormData()\n\n        for (const [key, value] of Object.entries(dataFinal)) {\n            if (key !== 'countries' && key !== 'centers' && key !== 'banner_desktop_image' && key !== 'banner_mobile_image' && key !== 'start_at' && key !== 'end_at') {\n                data.append(key, value)\n            } else if ((key !== 'start_At' || key !== 'end_at') && value) {\n                data.append(key, value)\n            }\n        }\n\n        if (dataFinal.countries && dataFinal.countries.length) {\n            arrayToFormData(dataFinal.countries, data, 'countries')\n        } else {\n            data.append('countries', [])\n        }\n        if (dataFinal.centers && dataFinal.centers.length) {\n            arrayToFormData(dataFinal.centers, data, 'centers')\n        } else {\n            data.append('centers', [])\n        }\n\n        if (dataFinal.banner_desktop_image) {\n            data.append('banner_desktop_image', dataFinal.banner_desktop_image)\n        } else if (!labelsInput.banner_desktop_image_uri) {\n            data.append('banner_desktop_image_uri', '')\n        }\n        if (dataFinal.banner_mobile_image) {\n            data.append('banner_mobile_image', dataFinal.banner_mobile_image)\n        } else if (!labelsInput.banner_mobile_image_uri) {\n            data.append('banner_mobile_image_uri', '')\n        }\n\n        for (var i = 0; i < this.state.products.length; i++) {\n            let pData = getFileData(this.state.products[i].data)\n            if (pData) {\n                try {\n                    pData = { ...pData, original_thumbnail: pData.original_thumbnail || this.state.products[i].thumbnail_image_uri || this.state.products[i].tumbnail_image_url }\n                } catch (e) {}\n            }\n\n            data.append(`products[${i}][id]`, this.state.products[i].id)\n            data.append(`products[${i}][product_id]`, this.state.products[i].product_id)\n            data.append(`products[${i}][data]`, pData ? JSON.stringify(pData) : '')\n            data.append(`products[${i}][name]`, this.state.products[i].name)\n            data.append(`products[${i}][brand]`, this.state.products[i].brand)\n            data.append(`products[${i}][thickness]`, this.state.products[i].thickness)\n            data.append(`products[${i}][format]`, this.state.products[i].format)\n            data.append(`products[${i}][catalog_image]`, this.state.products[i].catalog_image)\n            data.append(`products[${i}][finish]`, this.state.products[i].finish)\n            data.append(`products[${i}][center_id]`, this.state.products[i].center_id)\n            data.append(`products[${i}][sort]`, i)\n            data.append(`products[${i}][minimum_order]`, this.state.products[i].minimum_order)\n\n            if (this.state.products[i].thumbnail_image) {\n                data.append(`products[${i}][thumbnail_image]`, this.state.products[i].thumbnail_image)\n            } else {\n                data.append(`products[${i}][thumbnail_image_uri]`, this.state.products[i].thumbnail_image_uri || this.state.products[i].thumbnail_image_uri)\n                if (this.state.products[i].thumbnail_image_filename) {\n                    data.append(`products[${i}][thumbnail_image_filename]`, this.state.products[i].thumbnail_image_filename)\n                }\n            }\n            if (this.state.products[i].detail_image) {\n                data.append(`products[${i}][detail_image]`, this.state.products[i].detail_image)\n            } else {\n                data.append(`products[${i}][detail_image_uri]`, this.state.products[i].detail_image_uri || this.state.products[i].detail_image_url)\n                if (this.state.products[i].detail_image_filename) {\n                    data.append(`products[${i}][detail_image_filename]`, this.state.products[i].detail_image_filename)\n                }\n            }\n            if (this.state.products[i].background_image) {\n                data.append(`products[${i}][background_image]`, this.state.products[i].background_image)\n            } else {\n                data.append(`products[${i}][background_image_uri]`, this.state.products[i].background_image_uri || this.state.products[i].background_image_url)\n                if (this.state.products[i].background_image_filename) {\n                    data.append(`products[${i}][background_image_filename]`, this.state.products[i].background_image_filename)\n                }\n            }\n        }\n\n        const timeout = setTimeout(() => {\n            this.props.removeLoader(timeout)\n        }, 10000)\n\n        this.props.addLoader(timeout)\n\n        if (mode === CREATION_MODE.NEW) {\n            this.props.createLanding(data).then(() => {\n                this.handleFinishSaveLanding(timeout)\n            })\n        } else if (mode === CREATION_MODE.NEW_LANGUAGE) {\n            this.props.createLandingTranslated(data).then(() => {\n                this.handleFinishSaveLanding(timeout)\n            })\n        } else if (mode === CREATION_MODE.EDIT) {\n            this.props.updateLanding(data).then(() => {\n                this.handleFinishSaveLanding(timeout)\n            })\n        } else if (mode === CREATION_MODE.EDIT_LANGUAGE) {\n            this.props.updateLandingTranslated(data).then(() => {\n                this.handleFinishSaveLanding(timeout)\n            })\n        }\n    }\n\n    preProccessProduct = (hit) => {\n        // console.log('(hit.', (hit))\n        if (hit.inner_hits) {\n            // console.log('(hit._inner_hits', (hit.inner_hits))\n            try {\n                const centers = []\n                let stock = 0\n                let stockOutlet = 0\n                let stockMall = 0\n                hit.inner_hits.byCenter.hits.hits.forEach(h => {\n                    centers.push(h._source.centerId)\n                    stock += h._source.stock\n                    stockOutlet += h._source.stock_outlet\n                    stockMall += h._source.stock_mall\n                })\n                hit._source.centers = centers\n                hit._source.stock = stock\n                hit._source.stock_outlet = stockOutlet\n                hit._source.stock_mall = stockMall\n                hit._source.outlet = stockOutlet > 0\n                hit._source.outletQuality = stockOutlet > 0 ? hit._source.outletQuality : null\n            } catch (e) {\n                // console.log('HI err', e)\n            }\n        }\n        // console.log('_source', hit._source)\n        return hit._source\n    }\n\n    handleFinishSaveLanding = timeout => {\n        this.props.removeLoader(timeout)\n\n        if (this.props.error) {\n            this.props.showToastNotification(\n                this.props.intl.formatMessage({ id: this.state.mode === CREATION_MODE.NEW ? 'creation_error' : 'update_error' }) + ': ' + this.parseBackError(),\n                'error'\n            )\n        } else {\n            this.props.showToastNotification(this.props.intl.formatMessage({ id: this.state.mode === CREATION_MODE.NEW ? 'creation_success' : 'update_success' }), 'success')\n            this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_LANDING_MANAGER' }))\n        }\n    }\n\n    ResetSearchbox = ({ hasFilters, resetFilters }) => {\n        return <div onClick={resetFilters} className=\"bt-reset-searchbox\"></div>\n    }\n\n    SortItemUI = props => (\n        <SortableItemUI\n            {...props}\n            onEdit={dataItem => {\n                let products = this.state.products.map(product => {\n                    // if (product.product_id !== dataItem.product_id || (product.product_id === dataItem.product_id && product.data.isStockOutlet !== dataItem.data.isStockOutlet)) {\n                    if (product.id !== dataItem.id) {\n                        return product\n                    }\n\n                    return { ...product, ...dataItem }\n                })\n\n                this.setState({ products: products })\n            }}\n            onDelete={(dataItem, index) => {\n                // console.log('ON DELETE', dataItem, index)\n                var products = this.state.products.filter(\n                    // a => a.product_id !== dataItem.product_id || (a.product_id === dataItem.product_id && a.data.isStockOutlet !== dataItem.data.isStockOutlet)\n                    a => a.id !== dataItem.id\n                )\n\n                dataItem.data && dataItem.data.lots && dataItem.data.lots.forEach(l => delete this.state.selectedLots[l])\n                dataItem.data && dataItem.data.bundles && dataItem.data.bundles.forEach(b => delete this.state.selectedBundles[b])\n\n                this.setState({ products: products })\n            }}\n            onDeleteImage={(id, type, action) => {\n                if (this.props.landingId) {\n                    confirm(this.props.intl.formatMessage({ id: 'CONFIRM_DELETE_IMAGE' }), {\n                        textOk: this.props.intl.formatMessage({ id: 'ok' }),\n                        textCancel: this.props.intl.formatMessage({ id: 'cancel' }),\n                        intl: this.props.intl\n                    }).then(\n                        confirm => {\n                            if (action) {\n                                action()\n                            }\n                            return this.props.deleteLandingImage(id, type).then(() => {\n                                this.props.showToastNotification(this.props.intl.formatMessage({ id: 'remove_success' }), 'success')\n                                this.forceUpdate()\n                            })\n                        },\n                        cancel => {\n                            return Promise.reject()\n                        }\n                    )\n                }\n            }}\n            onShowImage={src => {\n                if (src) {\n                    this.setState({\n                        showModalImage: true,\n                        modalImageSrc: src\n                    })\n                }\n            }}\n            showLotsModal={(dataItem) => this.setState({\n                showLotsModal:true,\n                lotsSource: {product: dataItem.data, centers: null, dataItem, toEdit: true}\n            })}\n            onFileError={() => this.props.showToastNotification(this.props.intl.formatMessage({ id: 'error_image_file' }), 'error')}\n\n            showAdditionalInfoModal={itemData => this.setState({showAdditionalInfoModal: true, modalItemData: itemData})}\n        />\n    )\n\n    tryAddProductWithLots = () => {}\n\n    tryAddProduct = (prod, checkOutlet = true, isOutlet = prod.outlet, callback) => {\n        if (checkOutlet && prod.outlet && prod.stock > 0 && prod.stock_outlet > 0) {\n            this.setState({ showModalAddProduct: true, lastModalProduct: prod })\n        } else {\n            const prd = [...this.state.products]\n            const bFound = prd.find(a => a.product_id === prod.productId && a.data.isStockOutlet === isOutlet && !a.data.isGroup)\n\n            if (!bFound) {\n                this.addProduct(prod, isOutlet, () => {\n                    if (typeof callback === 'function') callback()\n                })\n            } else {\n                this.props.showToastNotification(this.props.intl.formatMessage({ id: 'product_already_added' }), 'error')\n            }\n        }\n    }\n\n    addProduct = (prod, isOutlet, callback) => {\n        const product = {\n            id: uuidv4(),\n            landing_id: this.props.landingId ? this.props.landingId : null,\n            product_id: prod.productId,\n            brand: prod.brand,\n            finish: prod.finish,\n            thickness: prod.thickness,\n            center_id: prod.centerId,\n            format: prod.format,\n            name: prod.displayName,\n            sort: this.state.products.length,\n            minimun_order: prod.min,\n            thumbnail_image_uri: prod.thumb,\n            detail_image_url: prod.img,\n            background_image_url: prod.colorImg,\n            catalog_image: prod.img,\n            original_thumbnail: prod.thumb,\n            outlet: prod.outlet,\n            data: { ...prod, isStockOutlet: isOutlet }\n        }\n\n        this.setState(\n            {\n                products: [...this.state.products, product]\n            },\n            () => {\n                if (typeof callback === 'function') callback()\n            }\n        )\n        this.hideResults()\n    }\n\n    onValidate(dataInput) {\n        let bValid = true,\n            el\n\n        if (!dataInput.status || !dataInput.status.value) {\n            el = document.getElementById('status-field')\n            bValid = false\n        }\n        if (!dataInput.template_id) {\n            this.setState({ hasErrors: true })\n            el = el || document.getElementById('template-field')\n            bValid = false\n        }\n        if (!dataInput.market) {\n            this.setState({ hasErrors: true })\n            el = el || document.getElementById('market-field')\n            bValid = false\n        }\n        if (!this.state.title) {\n            this.setState({ hasErrors: true })\n            el = el || document.getElementById('title-field')\n            bValid = false\n        }\n        if (!dataInput.slug) {\n            this.setState({ hasErrors: true })\n            el = el || document.getElementById('slug-field')\n            bValid = false\n        }\n        if (this.state.products.length === 0) {\n            this.setState({ hasErrors: true })\n            el = el || document.getElementById('products-row')\n            bValid = false\n        }\n\n        if (!bValid) {\n            this.setState({ hasErrors: true })\n\n            if (el) {\n                const y = el.getBoundingClientRect().top + window.pageYOffset - 128\n                window.scrollTo({ top: y, behavior: 'smooth' })\n            }\n\n            return false\n        }\n\n        return true\n    }\n\n    selectedSalesOrgs(countries = this.state.labelsInput.countries) {\n        const salesOrg = []\n\n        countries.forEach(c => {\n            c.salesOrg.forEach(s => salesOrg.push(s))\n        })\n\n        return salesOrg\n    }\n\n    onSave = dataInput => {\n        if (!this.onValidate(dataInput)) return\n        this.setState({ hasErrors: false })\n        this.handleSaveLanding(dataInput)\n    }\n\n    getModeText = mode => {\n        switch (mode) {\n            case CREATION_MODE.NEW:\n                return this.props.intl.formatMessage({ id: 'landing_new' })\n            case CREATION_MODE.EDIT:\n                return this.props.intl.formatMessage({ id: 'landing_edit' })\n            case CREATION_MODE.NEW_LANGUAGE:\n                return this.props.intl.formatMessage({ id: 'translation_new' })\n            case CREATION_MODE.EDIT_LANGUAGE:\n                return this.props.intl.formatMessage({ id: 'translation_edit' })\n            default:\n                return ''\n        }\n    }\n\n    render() {\n        // console.log(this.ref.current)\n        const { redirect, intl, landing, countries, centers, fetchCountriesDescriptions, fetchCentersDescriptions, currentIso } = this.props\n        const { newLandingDraft, labelsInput, bannerDesktopKey, bannerMobileKey, mode, portfolioMode } = this.state\n\n        return (\n            <section id=\"section-landing-creation\">\n                <header>\n                    <div className=\"container\">\n                        <div className=\"row\">\n                            <div className=\"col-md-12\">\n                                <h2>{this.getModeText(mode)}</h2>\n                            </div>\n                        </div>\n                    </div>\n                </header>\n\n                <div className=\"landings\">\n                    <div className=\"container\">\n                        <div className=\"row\">\n                            <div className=\"col-md-2 landings__button\">\n                                <Button\n                                    size=\"medium\"\n                                    onClick={() => {\n                                        redirect(intl.formatMessage({ id: 'ROUTE_LANDING_MANAGER' }))\n                                    }}\n                                    gentle\n                                >\n                                    {intl.formatMessage({ id: 'back' })}\n                                </Button>\n                            </div>\n                            <div className=\"col-md-1\">{/* Spacer block */}</div>\n                            <div className=\"col-md-3 landings__button\">\n                                {mode === CREATION_MODE.EDIT_LANGUAGE && (\n                                    <Button onClick={this.onDeleteLanguage} size=\"medium\" gentle>\n                                        <Translation id=\"delete_translation\" defaultMessage=\"Remove translation\" />\n                                    </Button>\n                                )}\n                            </div>\n                            <div className=\"col-md-3 landings__button\">\n                                {mode !== CREATION_MODE.NEW && (\n                                    <Button\n                                        size=\"medium\"\n                                        gentle\n                                        onClick={() => {\n                                            redirect(\n                                                intl\n                                                    .formatMessage({ id: 'ROUTE_LANDING_TEMPLATE' })\n                                                    .replace(':slug?', this.props.landing.landing.slug)\n                                                    .replace(':iso?', currentIso)\n                                                    .replace('/:preview?', '/preview')\n                                            )\n                                        }}\n                                    >\n                                        <Translation id=\"preview\" defaultMessage=\"Preview\" />\n                                    </Button>\n                                )}\n                            </div>\n                            <div className=\"col-md-3 landings__button\">\n                                <Button size=\"medium\" onClick={() => this.onSave(newLandingDraft)}>\n                                    {intl.formatMessage({ id: 'save' })}\n                                </Button>\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-md-6 landings__filter\">\n                                <DropDownList\n                                    disabled={this.state.mode === CREATION_MODE.NEW_LANGUAGE || this.state.mode === CREATION_MODE.EDIT_LANGUAGE}\n                                    id=\"status-field\"\n                                    valid={!this.state.hasErrors || (this.state.hasErrors && this.state.newLandingDraft.status != undefined)}\n                                    label={intl.formatMessage({ id: 'status' })}\n                                    textField=\"label\"\n                                    data={getStatuses(landing ? landing.statuses : [], intl)}\n                                    value={labelsInput.status}\n                                    onChange={e => {\n                                        this.setState({\n                                            newLandingDraft: {\n                                                ...newLandingDraft,\n                                                status: e.target.value\n                                            },\n                                            labelsInput: {\n                                                ...labelsInput,\n                                                status: e.target.value\n                                            }\n                                        })\n                                    }}\n                                />\n                                {this.state.hasErrors && (!newLandingDraft.status || !this.state.newLandingDraft.status.value) && (\n                                    <span style={{ color: '#f31700' }}>\n                                        <Translation id=\"must_select_status\" defaultMessage=\"You must select a status\" />\n                                    </span>\n                                )}\n                            </div>\n\n                            <div className=\"col-md-6 landings__filter\">\n                                <DropDownList\n                                    disabled={this.state.mode === CREATION_MODE.NEW_LANGUAGE || this.state.mode === CREATION_MODE.EDIT_LANGUAGE}\n                                    id=\"portfolio-center-field\"\n                                    // valid={!this.state.hasErrors || (this.state.hasErrors && this.state.newLandingDraft.status != undefined)}\n                                    label=\"Portfolio center\"\n                                    textField=\"label\"\n                                    data={Object.values(PORTFOLIO_MODES)}\n                                    value={PORTFOLIO_MODES[portfolioMode]}\n                                    onChange={e => {\n                                        this.setState({portfolioMode:e.target.value.value}, this.setExtraData)\n                                        this.props.storePortfolioMode(e.target.value.value)\n                                    }}\n                                />\n                                {/* {this.state.hasErrors && (!newLandingDraft.status || !this.state.newLandingDraft.status.value) && (\n                                    <span style={{ color: '#f31700' }}>\n                                        <Translation id=\"must_select_status\" defaultMessage=\"You must select a status\" />\n                                    </span>\n                                )} */}\n                            </div>\n\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-md-6 landings__filter\">\n                                <DropDownList\n                                    disabled={this.state.mode === CREATION_MODE.NEW_LANGUAGE || this.state.mode === CREATION_MODE.EDIT_LANGUAGE}\n                                    id=\"template-field\"\n                                    valid={!this.state.hasErrors || (this.state.hasErrors && newLandingDraft.template_id != undefined)}\n                                    label={intl.formatMessage({ id: 'template' })}\n                                    dataItemKey=\"id\"\n                                    textField=\"name\"\n                                    data={landing ? landing.templates : []}\n                                    value={labelsInput.template_id}\n                                    onChange={e => {\n                                        this.setState({\n                                            labelsInput: {\n                                                ...labelsInput,\n                                                template_id: e.target.value\n                                            },\n                                            newLandingDraft: {\n                                                ...newLandingDraft,\n                                                template_id: e.target.value.id\n                                            }\n                                        })\n                                    }}\n                                />\n                                {this.state.hasErrors && !newLandingDraft.template_id && (\n                                    <span style={{ color: '#f31700' }}>\n                                        <Translation id=\"must_select_template\" defaultMessage=\"You must select a template\" />\n                                    </span>\n                                )}\n                            </div>\n                            <div className=\"col-md-6 landings__filter landings__filter--date\">\n                                <label>\n                                    <Translation id=\"dates\" defaultMessage=\"Dates\" />\n                                </label>\n                                <DateRangePicker\n                                    calendarSettings={{ className: 'creation-rangepicker' }}\n                                    disabled={this.state.mode === CREATION_MODE.NEW_LANGUAGE || this.state.mode === CREATION_MODE.EDIT_LANGUAGE}\n                                    startDateInput={props => <DateTimePicker {...props} label={undefined} />}\n                                    endDateInput={props => <DateTimePicker {...props} label={undefined} />}\n                                    format=\"dd/MM/yyyy HH:mm:ss\"\n                                    value={labelsInput.dates}\n                                    onChange={e => {\n                                        this.setState({\n                                            labelsInput: {\n                                                ...labelsInput,\n                                                dates: e.target.value\n                                            },\n                                            newLandingDraft: {\n                                                ...newLandingDraft,\n                                                start_at: moment(e.target.value.start).format(DATE_FORMAT),\n                                                end_at: moment(e.target.value.end).format(DATE_FORMAT)\n                                            }\n                                        })\n                                    }}\n                                />\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-md-4 landings__filter\">\n                                <DropDownList\n                                    disabled={this.state.mode === CREATION_MODE.NEW_LANGUAGE || this.state.mode === CREATION_MODE.EDIT_LANGUAGE}\n                                    id=\"market-field\"\n                                    valid={!this.state.hasErrors || (this.state.hasErrors && newLandingDraft.market != undefined)}\n                                    label={intl.formatMessage({ id: 'markets' })}\n                                    dataItemKey=\"value\"\n                                    textField=\"label\"\n                                    data={getMarkets(landing ? landing.markets : [])}\n                                    value={labelsInput.market}\n                                    onChange={e => {\n                                        this.setState({\n                                            newLandingDraft: {\n                                                ...newLandingDraft,\n                                                market: e.target.value.value\n                                            },\n                                            labelsInput: {\n                                                ...labelsInput,\n                                                market: e.target.value\n                                            }\n                                        })\n                                        fetchCountriesDescriptions(e.target.value.salesOrg).then(() =>\n                                            this.setState({\n                                                labelsInput: {\n                                                    ...this.state.labelsInput,\n                                                    countries: [],\n                                                    centers: []\n                                                },\n                                                newLandingDraft: {\n                                                    ...this.state.newLandingDraft,\n                                                    countries: [],\n                                                    centers: []\n                                                }\n                                            })\n                                        )\n                                    }}\n                                />\n                                {this.state.hasErrors && !newLandingDraft.market && (\n                                    <span style={{ color: '#f31700' }}>\n                                        <Translation id=\"must_select_market\" defaultMessage=\"You must select a market\" />\n                                    </span>\n                                )}\n                            </div>\n                            <div className=\"col-md-4 landings__filter\">\n                                <MultiSelect\n                                    disabled={this.state.mode === CREATION_MODE.NEW_LANGUAGE || this.state.mode === CREATION_MODE.EDIT_LANGUAGE}\n                                    label={intl.formatMessage({ id: 'countries' })}\n                                    dataItemKey=\"id\"\n                                    textField=\"label\"\n                                    data={getCountries(countries ? countries : [], intl)}\n                                    value={labelsInput.countries}\n                                    onChange={e => {\n                                        this.setState({\n                                            labelsInput: {\n                                                ...labelsInput,\n                                                countries: e.target.value\n                                            },\n                                            newLandingDraft: {\n                                                ...newLandingDraft,\n                                                countries: e.target.value ? e.target.value.map(country => country.id) : []\n                                            }\n                                        }, this.setExtraData)\n                                        fetchCentersDescriptions(this.selectedSalesOrgs(e.target.value)).then(data =>\n                                            this.setState({\n                                                labelsInput: {\n                                                    ...this.state.labelsInput,\n                                                    centers: []\n                                                },\n                                                newLandingDraft: {\n                                                    ...this.state.newLandingDraft,\n                                                    centers: []\n                                                }\n                                            })\n                                        )\n                                    }}\n                                />\n                            </div>\n                            <div className=\"col-md-4 landings__filter\">\n                                <MultiSelect\n                                    disabled={this.state.mode === CREATION_MODE.NEW_LANGUAGE || this.state.mode === CREATION_MODE.EDIT_LANGUAGE}\n                                    label={intl.formatMessage({ id: 'centers' })}\n                                    dataItemKey=\"value\"\n                                    textField=\"label\"\n                                    data={getCenters(centers ? centers : [])}\n                                    value={labelsInput.centers}\n                                    onChange={e => {\n                                        this.setState({\n                                            labelsInput: {\n                                                ...labelsInput,\n                                                centers: e.target.value\n                                            },\n                                            newLandingDraft: {\n                                                ...newLandingDraft,\n                                                centers: e.target.value ? e.target.value.map(center => center.value) : []\n                                            }\n                                        }, this.setExtraData)\n                                    }}\n                                />\n                            </div>\n                        </div>\n\n                        {/* <div className=\"row\">\n                            <div className=\"col-md-12\">\n                                <div style={{\n                                    border: \"1px solid #707070\",\n                                    padding: \"4px 8px\",\n                                    borderRadius: \"4px\"}}\n                                >\n                                    <div className=\"row my-3\">\n                                        <div className=\"col-md-3\"><b>Portfolio mode</b></div>                                \n                                        <div className=\"col-md-3\">                                            \n                                            <RadioButton label=\"Only HQ center\" id=\"radioHQCenter\" name=\"portfolioCenter\" value=\"1\" />\n                                        </div>\n\n                                        <div className=\"col-md-3\">\n                                            <RadioButton label=\"Only client center\" id=\"radioClientCenter\" name=\"portfolioCenter\" value=\"2\"/>\n                                        </div>\n\n                                        <div className=\"col-md-3\">\n                                            <RadioButton label=\"Both centers\" id=\"radioBothCenters\" name=\"portfolioCenter\" value=\"3\"/>\n                                        </div>\n                                    </div>\n                                </div>                                                                \n                            </div>                            \n                        </div> */}\n\n                        <div className=\"row\">\n                            <div className=\"col-md-12\">\n                                <h4>\n                                    <i className=\"k-icon k-i-set-column-position\"></i>\n                                    <Translation id=\"contents\" defaultMessage=\"Contents\" />\n                                </h4>\n                            </div>\n                            <div className=\"col-md-12 landings__filter landings__filter--input\">\n                                <Input\n                                    id=\"title-field\"\n                                    valid={!this.state.hasErrors || (this.state.hasErrors && this.state.title != '')}\n                                    label={intl.formatMessage({ id: 'title' })}\n                                    value={this.state.title}\n                                    onChange={e => {\n                                        this.setState({\n                                            title: e.target.value,\n                                            newLandingDraft: {\n                                                ...this.state.newLandingDraft,\n                                                title: e.target.value\n                                            }\n                                        })\n                                    }}\n                                    onKeyUp={e => {\n                                        e.preventDefault()\n                                        clearTimeout(this.state.slugTimeout)\n                                        this.setState({\n                                            slugTimeout: setTimeout(\n                                                sText => {\n                                                    const data = {\n                                                        text: sText,\n                                                        lang_id: currentIso || landing.baseLang.id\n                                                    }\n                                                    this.props.getLandingSlug(data).then(newSlug => {\n                                                        this.setState({\n                                                            title: this.state.title,\n                                                            labelsInput: {\n                                                                ...this.state.labelsInput,\n                                                                slug: this.props.slug.slug\n                                                            },\n                                                            newLandingDraft: {\n                                                                ...this.state.newLandingDraft,\n                                                                slug: this.props.slug.slug\n                                                            }\n                                                        })\n                                                    })\n                                                },\n                                                500,\n                                                e.target.value\n                                            )\n                                        })\n                                    }}\n                                />\n                                {this.state.hasErrors && !this.state.title && (\n                                    <span style={{ color: '#f31700' }}>\n                                        <Translation id=\"mandatory_field\" defaultMessage=\"This field is required\" />\n                                    </span>\n                                )}\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-md-12 landings__filter landings__filter--input\">\n                                <Input\n                                    id=\"slug-field\"\n                                    valid={!this.state.hasErrors || (this.state.hasErrors && newLandingDraft.slug != undefined && newLandingDraft.slug != '')}\n                                    label=\"Slug\"\n                                    value={labelsInput.slug}\n                                    onChange={e => {\n                                        this.setState({\n                                            labelsInput: {\n                                                ...labelsInput,\n                                                slug: e.target.value\n                                            },\n                                            newLandingDraft: {\n                                                ...newLandingDraft,\n                                                slug: e.target.value\n                                            }\n                                        })\n                                    }}\n                                    onKeyUp={e => {\n                                        e.preventDefault()\n                                        clearTimeout(this.state.slugTimeout)\n                                        this.setState({\n                                            slugTimeout: setTimeout(\n                                                sText => {\n                                                    const data = {\n                                                        text: sText,\n                                                        lang_id: currentIso || landing.baseLang.id\n                                                    }\n                                                    this.props.getLandingSlug(data).then(newSlug => {\n                                                        this.setState({\n                                                            labelsInput: {\n                                                                ...this.state.labelsInput,\n                                                                slug: this.props.slug.slug\n                                                            },\n                                                            newLandingDraft: {\n                                                                ...this.state.newLandingDraft,\n                                                                slug: this.props.slug.slug\n                                                            }\n                                                        })\n                                                    })\n                                                },\n                                                500,\n                                                e.target.value\n                                            )\n                                        })\n                                    }}\n                                />\n                                {this.state.hasErrors && !newLandingDraft.slug && (\n                                    <span style={{ color: '#f31700' }}>\n                                        <Translation id=\"mandatory_field\" defaultMessage=\"This field is required\" />\n                                    </span>\n                                )}\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-md-12 landings__filter landings__editor\">\n                                <label>{intl.formatMessage({ id: 'promotion' })}</label>\n                                <Editor\n                                    tools={[[Link, Unlink, Bold, Underline, BackColor, ForeColor, FontSize]]}\n                                    defaultContent={labelsInput.promotion || ''}\n                                    value={labelsInput.promotion || ''}\n                                    onChange={event => {\n                                        this.setState({\n                                            labelsInput: {\n                                                ...labelsInput,\n                                                promotion: event.html\n                                            },\n                                            newLandingDraft: {\n                                                ...newLandingDraft,\n                                                promotion: event.html\n                                            }\n                                        })\n                                    }}\n                                />\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-md-6 landings__file\">\n                                {!labelsInput.banner_desktop_image_filename && (\n                                    <Input\n                                        className=\"landings__file__input\"\n                                        label={intl.formatMessage({ id: 'banner_image_1110' })}\n                                        type=\"file\"\n                                        accept=\"image/jpg,image/jpeg,image/png\"\n                                        key={bannerDesktopKey}\n                                        value={newLandingDraft.banner_desktop_image}\n                                        onChange={e => {\n                                            if (isImageValid(e.target.element.files[0])) {\n                                                this.setState({\n                                                    labelsInput: {\n                                                        ...labelsInput,\n                                                        banner_desktop_image_uri: URL.createObjectURL(e.target.element.files[0]),\n                                                        banner_desktop_image_filename: e.target.element.files[0].name,\n                                                        banner_desktop_image_preview: true\n                                                    },\n                                                    newLandingDraft: {\n                                                        ...newLandingDraft,\n                                                        banner_desktop_image: e.target.element.files[0],\n                                                        banner_desktop_image_filename: e.target.element.files[0].name\n                                                    }\n                                                })\n                                            } else {\n                                                this.setState({\n                                                    labelsInput: {\n                                                        ...labelsInput,\n                                                        banner_desktop_image_uri: '',\n                                                        banner_desktop_image_filename: ''\n                                                    },\n                                                    newLandingDraft: {\n                                                        ...newLandingDraft,\n                                                        banner_desktop_image: '',\n                                                        banner_desktop_image_filename: ''\n                                                    }\n                                                })\n                                                this.props.showToastNotification(intl.formatMessage({ id: 'error_image_file' }), 'error')\n                                            }\n                                        }}\n                                    />\n                                )}\n\n                                {labelsInput.banner_desktop_image_filename && (\n                                    <React.Fragment>\n                                        <label className=\"landings__file__label\">\n                                            <Translation id=\"banner_image_1110\" defaultMessage=\"Banner image (1110px width)\" />\n                                        </label>\n                                        {!this.state.labelsInput.banner_desktop_image_preview && (\n                                            <Button\n                                                className=\"landings__file__button landings__file__button--image\"\n                                                inverted\n                                                icon=\"image\"\n                                                onClick={() =>\n                                                    this.setState({\n                                                        showModalImage: !!labelsInput.banner_desktop_image_uri,\n                                                        modalImageSrc: labelsInput.banner_desktop_image_uri\n                                                    })\n                                                }\n                                            />\n                                        )}\n                                        <Button\n                                            className=\"landings__file__button landings__file__button--delete\"\n                                            inverted\n                                            icon=\"times\"\n                                            far\n                                            onClick={() =>\n                                                this.setState({\n                                                    labelsInput: {\n                                                        ...labelsInput,\n                                                        banner_desktop_image_uri: '',\n                                                        banner_desktop_image_filename: ''\n                                                    },\n                                                    newLandingDraft: {\n                                                        ...newLandingDraft,\n                                                        banner_desktop_image: '',\n                                                        banner_desktop_image_filename: ''\n                                                    },\n                                                    bannerDesktopKey: uuidv4()\n                                                })\n                                            }\n                                        >\n                                            {intl.formatMessage({ id: 'delete' })}\n                                        </Button>\n                                    </React.Fragment>\n                                )}\n                            </div>\n                            <div className=\"col-md-6 landings__file\">\n                                {!labelsInput.banner_mobile_image_filename && (\n                                    <Input\n                                        className=\"landings__file__input\"\n                                        label={intl.formatMessage({ id: 'banner_image_responsive_510' })}\n                                        type=\"file\"\n                                        accept=\"image/jpg,image/jpeg,image/png\"\n                                        key={bannerMobileKey}\n                                        value={newLandingDraft.banner_mobile_image}\n                                        onChange={e => {\n                                            if (isImageValid(e.target.element.files[0])) {\n                                                this.setState({\n                                                    labelsInput: {\n                                                        ...labelsInput,\n                                                        banner_mobile_image_uri: URL.createObjectURL(e.target.element.files[0]),\n                                                        banner_mobile_image_filename: e.target.element.files[0].name,\n                                                        banner_mobile_image_preview: true\n                                                    },\n                                                    newLandingDraft: {\n                                                        ...newLandingDraft,\n                                                        banner_mobile_image: e.target.element.files[0],\n                                                        banner_mobile_image_filename: e.target.element.files[0].name\n                                                    }\n                                                })\n                                            } else {\n                                                this.setState({\n                                                    labelsInput: {\n                                                        ...labelsInput,\n                                                        banner_mobile_image_uri: '',\n                                                        banner_mobile_image_filename: ''\n                                                    },\n                                                    newLandingDraft: {\n                                                        ...newLandingDraft,\n                                                        banner_mobile_image: '',\n                                                        banner_mobile_image_filename: ''\n                                                    }\n                                                })\n                                                this.props.showToastNotification(intl.formatMessage({ id: 'error_image_file' }), 'error')\n                                            }\n                                        }}\n                                    />\n                                )}\n\n                                {labelsInput.banner_mobile_image_filename && (\n                                    <React.Fragment>\n                                        <label className=\"landings__file__label\">\n                                            <Translation id=\"banner_image_responsive_510\" defaultMessage=\"Responsive banner image (510px width)\" />\n                                        </label>\n                                        {!this.state.labelsInput.banner_mobile_image_preview && (\n                                            <Button\n                                                className=\"landings__file__button landings__file__button--image\"\n                                                inverted\n                                                icon=\"image\"\n                                                onClick={() =>\n                                                    this.setState({\n                                                        showModalImage: !!labelsInput.banner_mobile_image_uri,\n                                                        modalImageSrc: labelsInput.banner_mobile_image_uri\n                                                    })\n                                                }\n                                            />\n                                        )}\n                                        <Button\n                                            className=\"landings__file__button landings__file__button--delete\"\n                                            inverted\n                                            icon=\"times\"\n                                            onClick={() =>\n                                                this.setState({\n                                                    labelsInput: {\n                                                        ...labelsInput,\n                                                        banner_mobile_image_uri: '',\n                                                        banner_mobile_image_filename: ''\n                                                    },\n                                                    newLandingDraft: {\n                                                        ...newLandingDraft,\n                                                        banner_mobile_image: '',\n                                                        banner_mobile_image_filename: ''\n                                                    },\n                                                    bannerMobileKey: uuidv4()\n                                                })\n                                            }\n                                        >\n                                            {intl.formatMessage({ id: 'delete' })}\n                                        </Button>\n                                    </React.Fragment>\n                                )}\n                            </div>\n                        </div>\n                        {this.state.mode !== CREATION_MODE.NEW_LANGUAGE && this.state.mode !== CREATION_MODE.EDIT_LANGUAGE ? (\n                            <div className=\"row\" id=\"products-row\">\n                                <div className=\"col-md-12 landings__filter\">\n                                    <h4>\n                                        <i className=\"k-icon k-i-list-bulleted\"></i>\n                                        <Translation id=\"product_search\" defaultMessage=\"Product search\" />\n                                    </h4>\n                                    <div className=\"landings__filter__search\">\n                                        <SearchkitProvider searchkit={skRef.sk} ref={this.ref}>\n                                            <SearchBox\n                                                readOnly={true}\n                                                onBlur={this.hideResults}\n                                                searchThrottleTime={1500}\n                                                searchOnChange={true}\n                                                queryFields={[\n                                                    'colorId',\n                                                    'colorName',\n                                                    'description',\n                                                    'brand',\n                                                    'color',\n                                                    'productId',\n                                                    'productName',\n                                                    'subtypeName',\n                                                    'format',\n                                                    'bigAccountsErpCode',\n                                                    `translations.${LANG_TO_INDEX[this.props.intl.locale]}.displayName`,\n                                                    `translations.${LANG_TO_INDEX[this.props.intl.locale]}.colorName`,\n                                                    `translations.${LANG_TO_INDEX[this.props.intl.locale]}.productName`,\n                                                    `colorFormulations.colorName`\n                                                ]}\n                                                queryOptions={{ default_operator: 'AND' }}\n                                                placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                            />\n                                            <ResetFilters component={this.ResetSearchbox} options={{ query: true, filter: false, pagination: true }} />\n                                            {this.state.showResults && (\n                                                <div\n                                                    className=\"landings__results\"\n                                                    onBlur={this.hideResults}\n                                                    onMouseOver={e => {\n                                                        e.target.focus()\n                                                    }}\n                                                >\n                                                    {!this.state.searchingProducts &&\n                                                        (this.state.hits.hits && this.state.hits.hits.hits && this.state.hits.hits.hits.length > 0 ? (\n                                                            this.state.hits.hits.hits.map(hit => {\n\n                                                                const centers = hit.inner_hits.byCenter.hits.hits.map(h => h._source.centerId)\n\n                                                                return (\n                                                                    <div key={hit._id} className=\"d-flex justify-content-between align-items-center border-bottom border-dark\">\n                                                                        <div className=\"landings__results__item border-0\" key={hit._source.productId}>\n                                                                            <Button\n                                                                                className=\"landings__results__item__button\"\n                                                                                icon=\"plus\"\n                                                                                far\n                                                                                noborder\n                                                                                onClick={e => this.tryAddProduct(this.preProccessProduct(hit))}\n                                                                            />\n                                                                            <div className=\"landings__results__item__img-wrapper\">\n                                                                                <img className=\"landings__results__item__img\" src={hit._source.thumb || cameraOff} alt=\"\" title=\"\" />\n                                                                                {hit && hit._source && hit._source.outletQuality && hit._source.stock_outlet > 0 && (\n                                                                                    <DisplayOutletIndicator outletQuality={hit._source.outletQuality}></DisplayOutletIndicator>\n                                                                                )}\n                                                                            </div>\n                                                                            <div className=\"landings__results__item__info\">\n                                                                                <p>\n                                                                                    <span>\n                                                                                        <ProductDisplayName product={hit._source} />\n                                                                                    </span>\n                                                                                    <small>{hit._source.productId}</small>\n                                                                                </p>\n                                                                                <p>{hit._source.brand}</p>\n                                                                                {hit._source.thickness && (\n                                                                                    <p>\n                                                                                        <i className=\"icon-thickness\"></i>\n                                                                                        {hit._source.thickness} cm\n                                                                                    </p>\n                                                                                )}\n                                                                                <p>\n                                                                                    <i className=\"icon-finish\"></i>\n                                                                                    {hit._source.finish}\n                                                                                </p>\n                                                                                <p>\n                                                                                    <b><Translation id=\"centers\" defaultMessage=\"Centers\" />: </b>\n                                                                                    {centers.join(', ')}\n                                                                                </p>\n                                                                            </div>\n                                                                        </div>\n\n                                                                        {hit._source.type === 'TABLA' && (hit._source.brand === 'SCALEA' || hit._source.brand === 'SENSA') && (\n                                                                            <div className=\"landings__button p-0\"\n                                                                                 style={{width: '15%'}}>\n                                                                                <Button\n                                                                                    size=\"medium\"\n                                                                                    onClick={() => this.setState({\n                                                                                        showLotsModal:true, lotsSource: {product: this.preProccessProduct(hit), centers}\n                                                                                    })}\n                                                                                    gentle\n                                                                                >\n                                                                                    <Translation id=\"add_lots\" defaultMessage=\"Add lots\"/>\n                                                                                </Button>\n                                                                            </div>\n                                                                        )}\n\n                                                                    </div>\n                                                                )\n                                                            })\n                                                        ) : (\n                                                            <span>\n                                                                <Translation id=\"no_materials_found\" defaultMessage=\"No materials found according to the search parameters\" />\n                                                            </span>\n                                                        ))}\n                                                </div>\n                                            )}\n                                        </SearchkitProvider>\n                                    </div>\n                                </div>\n                            </div>\n                        ) : (\n                            <div className=\"row\" id=\"products-row\">\n                                <div className=\"col-md-12 landings__filter\">\n                                    <h4>\n                                        <Translation id=\"products\" defaultMessage=\"Products\" />\n                                    </h4>\n                                </div>\n                            </div>\n                        )}\n                        <div className=\"row\">\n                            <div className=\"col-md-12 landing__products\">\n                                {this.state.products.length > 0 ? (\n                                    this.state.mode === CREATION_MODE.NEW_LANGUAGE || this.state.mode === CREATION_MODE.EDIT_LANGUAGE ? (\n                                        this.state.products.map((p, i) => <this.SortItemUI key={i} dataItem={p} editable={false} intl={intl} />)\n                                    ) : (\n                                        <Sortable\n                                            idField={'key'}\n                                            disabledField={'disabled'}\n                                            data={this.state.products.map((p, i) => {\n                                                p.key = i\n                                                return p\n                                            })}\n                                            itemUI={props => this.SortItemUI({ ...props, intl, editable: true, commingFromMall: true })}\n                                            onDragOver={event => {\n                                                this.setState({\n                                                    products: event.newState\n                                                })\n                                            }}\n                                        />\n                                    )\n                                ) : (\n                                    <span>\n                                        <Translation id=\"no_product_added\" defaultMessage=\"No product has been added\" />\n                                    </span>\n                                )}\n                            </div>\n                        </div>\n                        {this.state.hasErrors && this.state.products.length === 0 && (\n                            <span style={{ color: '#f31700' }}>\n                                <Translation id=\"must_select_product\" defaultMessage=\"You must select at least one product\" />\n                            </span>\n                        )}\n                        <div className=\"row\">\n                            <div className=\"col-md-2 landings__button\">\n                                <Button\n                                    size=\"medium\"\n                                    onClick={() => {\n                                        redirect(intl.formatMessage({ id: 'ROUTE_LANDING_MANAGER' }))\n                                    }}\n                                    gentle\n                                >\n                                    {intl.formatMessage({ id: 'back' })}\n                                </Button>\n                            </div>\n                            <div className=\"col-md-1\">{/* Spacer block */}</div>\n                            <div className=\"col-md-3 landings__button\">\n                                {mode === CREATION_MODE.EDIT_LANGUAGE && (\n                                    <Button onClick={this.onDeleteLanguage} size=\"medium\" gentle>\n                                        <Translation id=\"delete_translation\" defaultMessage=\"Remove translation\" />\n                                    </Button>\n                                )}\n                            </div>\n                            <div className=\"col-md-3 landings__button\">\n                                {mode !== CREATION_MODE.NEW && (\n                                    <Button\n                                        size=\"medium\"\n                                        gentle\n                                        onClick={() => {\n                                            redirect(\n                                                intl\n                                                    .formatMessage({ id: 'ROUTE_LANDING_TEMPLATE' })\n                                                    .replace(':slug?', this.props.landing.landing.slug)\n                                                    .replace(':iso?', currentIso)\n                                                    .replace('/:preview?', '/preview')\n                                            )\n                                        }}\n                                    >\n                                        <Translation id=\"preview\" defaultMessage=\"Preview\" />\n                                    </Button>\n                                )}\n                            </div>\n                            <div className=\"col-md-3 landings__button\">\n                                <Button size=\"medium\" onClick={() => this.onSave(newLandingDraft)}>\n                                    {intl.formatMessage({ id: 'save' })}\n                                </Button>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n\n                {this.state.showModal && (\n                    <SimpleModal\n                        customClass=\"landings__modal landings__modal--text\"\n                        title={''}\n                        onClose={() => {\n                            this.setState({ showModal: false })\n                            if (this.state.redirect) {\n                                this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_LANDING_MANAGER' }))\n                            }\n                        }}\n                        size=\"large\"\n                        footer={null}\n                    >\n                        <p>{this.state.modalText}</p>\n                    </SimpleModal>\n                )}\n\n                {this.state.showModalImage && (\n                    <SimpleModal\n                        customClass=\"landings__modal landings__modal--image\"\n                        title={''}\n                        onClose={() => {\n                            this.setState({ showModalImage: false, modalImageSrc: null })\n                        }}\n                        size=\"large\"\n                        footer={null}\n                    >\n                        {this.state.modalImageSrc && <img src={this.state.modalImageSrc} />}\n                    </SimpleModal>\n                )}\n\n                {this.state.showModalAddProduct && (\n                    <SimpleModal\n                        customClass=\"landings__modal landings__modal--add-product\"\n                        title={''}\n                        onClose={() => this.setState({ showModalAddProduct: false, lastModalProduct: null })}\n                        size=\"large\"\n                        footer={null}\n                    >\n                        <p>\n                            <Translation\n                                id=\"product_ambiguous_stock\"\n                                defaultMessage=\"The product you are trying to add has normal stock and outlet stock available, which one do you want to use?\"\n                            />\n                        </p>\n\n                        <div className=\"btn-row\">\n                            <Button\n                                gentle\n                                size=\"medium\"\n                                onClick={() => {\n                                    this.tryAddProduct(this.state.lastModalProduct, false, false, () => this.setState({ showModalAddProduct: false, lastModalProduct: null }))\n                                }}\n                            >\n                                <Translation id=\"normal\" defaultMessage=\"Normal\" />\n                            </Button>\n                            <Button\n                                gentle\n                                size=\"medium\"\n                                onClick={() => {\n                                    this.tryAddProduct(this.state.lastModalProduct, false, true, () => this.setState({ showModalAddProduct: false, lastModalProduct: null }))\n                                }}\n                            >\n                                <Translation id=\"outlet\" defaultMessage=\"Outlet\" />\n                            </Button>\n                            <Button\n                                gentle\n                                size=\"medium\"\n                                onClick={() => {\n                                    this.tryAddProduct(this.state.lastModalProduct, false, false, () => {\n                                        this.tryAddProduct(this.state.lastModalProduct, false, true, () => this.setState({ showModalAddProduct: false, lastModalProduct: null }))\n                                    })\n                                }}\n                            >\n                                <Translation id=\"both\" defaultMessage=\"Both\" />\n                            </Button>\n                        </div>\n                    </SimpleModal>\n                )}\n\n                {this.state.showLotsModal && (\n                    <LotsModal centers={this.state.lotsSource.centers}\n                               product={this.state.lotsSource.product}\n                               dataItem={this.state.lotsSource.dataItem}\n                               onClose={() => this.setState({showLotsModal:false})}\n                               addGroup={this.addProduct}\n                               selectedLots={this.state.selectedLots}\n                               selectedBundles={this.state.selectedBundles}\n                    />\n                )}\n\n                {this.state.showAdditionalInfoModal && (\n                    <AdditionalInfoModal\n                        onClose={() => this.setState({showAdditionalInfoModal: false, modalItemData: null})}\n                        additionalInfo = {this.state.modalItemData.additionalInfo}\n                        setAdditionalInfo = {(value) => {\n                            this.state.modalItemData.additionalInfo = value\n                            this.setState({showAdditionalInfoModal: false, modalItemData: null})\n                        }}\n                    />\n                )}\n            </section>\n        )\n    }\n}\n\nexport default injectIntl(LandingCreation)\n","import { connect } from 'react-redux'\n\nimport { getIsLogged, getToken, getSalesOrg, getUserType, getImpersonatedBy, getIsAdmin } from '../../store/login/reducers'\nimport { getSelectedCenter } from '../../store/centers/reducers'\nimport LandingCreation from './LandingCreation'\nimport {\n    fetchCountries,\n    fetchCenter,\n    fetchLangs,\n    fetchLanding,\n    fetchLandinById,\n    getLandingSlug,\n    createLanding,\n    updateLanding,\n    deleteLanding,\n    deleteLandingImage,\n    resetCountriesCenters,\n    createLandingTranslated,\n    updateLandingTranslated,\n    setPortfolioMode\n} from '../../store/landing/actions'\nimport { loginRequired } from '../../store/login/actions'\nimport { push } from 'react-router-redux'\nimport { showToastNotification } from '../../store/toast-notifications/actions'\nimport { addLoader } from '../../store/loader/actions'\nimport { removeLoader } from '../../store/loader/actions'\nimport { dispatchPushURL } from '../../store/ui/actions'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        isLogged: getIsLogged(state),\n        salesOrg: getSalesOrg(state),\n        token: getToken(state),\n        center: getSelectedCenter(state) ? getSelectedCenter(state) : 'near',\n        outlet: match.params.outlet,\n        landingId: match.params.id,\n        currentIso: match.params.iso,\n        landing: state.landing.landing,\n        langs: state.landing.langs,\n        countries: state.landing.countries,\n        centers: state.landing.centers,\n        slug: state.landing.slug,\n        error: state.landing.error,\n        userType: getUserType(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        showToastNotification: (text = '', type = 'none', duration = 10000) => dispatch(showToastNotification(text, type, duration)),\n        fetchCountriesDescriptions: salesOrg => dispatch(fetchCountries(salesOrg)),\n        fetchCentersDescriptions: salesOrg => dispatch(fetchCenter(salesOrg)),\n        resetCountriesCenters: () => dispatch(resetCountriesCenters()),\n        fetchLanding: () => dispatch(fetchLanding()),\n        fetchLandingbyId: (id, iso) => dispatch(fetchLandinById(id, iso)),\n        fetchLangs: () => dispatch(fetchLangs()),\n        getLandingSlug: text => dispatch(getLandingSlug(text)),\n        createLanding: landing => dispatch(createLanding(landing)),\n        updateLanding: landing => dispatch(updateLanding(landing)),\n        createLandingTranslated: landing => dispatch(createLandingTranslated(landing)),\n        updateLandingTranslated: landing => dispatch(updateLandingTranslated(landing)),\n        deleteLanding: (id, iso) => dispatch(deleteLanding(id, iso)),\n        deleteLandingImage: (id, type) => dispatch(deleteLandingImage(id, type)),\n        loginRequired: () => {\n            dispatch(loginRequired())\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        storePortfolioMode: portfolioMode => dispatch(setPortfolioMode(portfolioMode)),\n        addLoader: (id) => dispatch(addLoader(id)),\n        removeLoader: (id) => dispatch(removeLoader(id))\n    }\n}\n\nconst LandingCreationContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(LandingCreation)\n\nexport default LandingCreationContainer\n","import React from 'react'\n\nimport LandingCreationContainer from '../components/landing-manager/LandingCreationContainer'\n\nconst LandingCreationScreen = props => <LandingCreationContainer {...props} />\n\nexport default LandingCreationScreen\n","import React from 'react'\r\nimport Button from '../../global/Button'\r\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator'\r\nimport cameraOff from '../../../assets/img/icons/camera-off.svg'\r\nimport RectangleResultContainer from '../../catalog/rectangleResult/RectangleResultContainer'\r\nimport ProductContext, { MallProductContext } from '../../catalog/rectangleResult/contexts/ProductContext'\r\nimport { injectIntl } from 'react-intl'\r\nimport { connect } from 'react-redux'\r\nimport { getCommonParams, getPriceListAtSelectedCenter, getUserPriceList, getUserType } from '../../../store/login/reducers'\r\nimport { getSelectedCenter } from '../../../store/centers/reducers'\r\nimport { dispatchPushURL } from '../../../store/ui/actions'\r\nimport { setLastSelectedProduct } from '../../../store/selected-objects/actions'\r\nimport DisplayDiscontinued from '../../catalog/rectangleResult/displays/DisplayDiscontinued'\r\nimport { v4 as uuidv4 } from 'uuid'\r\nimport DisplaySoldOut from '../../catalog/rectangleResult/displays/DisplaySoldOut'\r\nimport DisplayTechnology from '../../catalog/rectangleResult/displays/DisplayTechnology'\r\nimport { isNewIndicator, isUpcomingIndicator } from '../../../store/products/reducers'\r\nimport DisplayNewIndicator from '../../catalog/rectangleResult/displays/DisplayNewIndicator'\r\nimport DisplayUpcomingIndicator from '../../catalog/rectangleResult/displays/DisplayUpcomingIndicator'\r\n\r\nconst SliderItem = ({ product, setProductSelectedToAdd, onZoomClick, sapLandingId, ...props }) => {\r\n    const showValidImage = () => {\r\n        if (product.detailImage && product.detailImage !== 'null' && product.detailImage !== undefined && product.detailImage !== 'undefined') return product.detailImage\r\n        if (product.imgLarge && (product.imgLarge !== 'null' || product.imgLarge != 'null')) return product.imgLarge\r\n        return cameraOff\r\n    }\r\n\r\n    const placeHolderClassName = () => {\r\n        if (!product.detailImage || product.detailImage === 'null' || !product.imgLarge || product.imgLarge === 'null' || product.imgLarge == 'null') return '--placeholder'\r\n        return ''\r\n    }\r\n\r\n    const canDisplayDiscontinued = () => {\r\n        return !((['MK', 'SH', 'WH'].includes(product.webHeading) && product.discontinued === 'DD') || product.discontinued === 'DD' || product.discontinued === 'DF')\r\n    }\r\n\r\n    return (\r\n        <div className=\"slide-card\">\r\n            <div className=\"container p-0\">\r\n                <div className=\"slide-card--content\">\r\n                    <div className={'col-lg-7 col-md-6 col-12 slide-card--image' + placeHolderClassName()} style={{ backgroundImage: `url(${showValidImage()})` }}>\r\n                        <div className=\"indicators\">\r\n                            {product.realStock === 0 ? (\r\n                                <React.Fragment key={uuidv4()}>\r\n                                    <DisplaySoldOut />\r\n                                </React.Fragment>\r\n                            ) : (\r\n                                <React.Fragment>\r\n                                    {!(isNewIndicator(product.creationDate) || isUpcomingIndicator(product.creationDate)) && (\r\n                                        <React.Fragment>\r\n                                            {canDisplayDiscontinued() && <DisplayDiscontinued discontinued={product.discontinued} key={uuidv4()} />}\r\n                                            {product && product.outlet && product.realStock > 0 && <DisplayOutletIndicator outletQuality={product.outletQuality} key={uuidv4()} />}\r\n                                        </React.Fragment>\r\n                                    )}\r\n                                </React.Fragment>\r\n                            )}\r\n                            {isNewIndicator(product.creationDate) && <DisplayNewIndicator key={uuidv4()} />}\r\n                            {isUpcomingIndicator(product.creationDate) && <DisplayUpcomingIndicator key={uuidv4()} />}\r\n                        </div>\r\n\r\n                        {(product.detailImage && product.detailImage !== 'null') || (product.imgLarge && (product.imgLarge !== 'null' || product.imgLarge != 'null')) ? (\r\n                            <Button className=\"slide-card__zoom\" icon=\"expand\" size=\"medium\" inverted onClick={onZoomClick} />\r\n                        ) : null}\r\n\r\n                        <div className=\"wrapper_technology_indicator\">\r\n                            <div className=\"d-flex items-center\" style={{ gap: '4px' }}>\r\n                                <DisplayTechnology technology={product.technology} subBrand={product.subBrand} desktopWidth={'90px'} desktopHeight={'auto'} key={uuidv4()} />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div className=\"col-lg-5 col-md-6 col-12 mall-rectangle-container\">\r\n                        <ProductContext.Provider value={MallProductContext}>\r\n                            <RectangleResultContainer product={product} key={product.productId} list={'MALL'} sapLandingId={sapLandingId} />\r\n                        </ProductContext.Provider>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n    return {\r\n        landing: state.landing.landingBySlug,\r\n        userType: getUserType(state),\r\n        commonParamsAnalytics: getCommonParams(state),\r\n        priceList: getPriceListAtSelectedCenter(state),\r\n        userPriceList: getUserPriceList(state),\r\n        selectedCenter: getSelectedCenter(state)\r\n    }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n    return {\r\n        redirect: url => {\r\n            dispatch(dispatchPushURL(url))\r\n        },\r\n        addProductInFetchedProducts: (product, centerId, locale) => {\r\n            dispatch({ type: 'FETCH_PRODUCT_SUCCESS', product, centerId, locale })\r\n        },\r\n        setSelectedProduct: product => dispatch(setLastSelectedProduct(product))\r\n    }\r\n}\r\n\r\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(SliderItem))\r\n","import React, { useState } from 'react'\r\n\r\n// Swiper core and required modules\r\nimport SwiperCore, { Navigation, Pagination, Thumbs, Autoplay } from 'swiper'\r\n\r\n// Swiper styles\r\nimport 'swiper/swiper.scss'\r\nimport 'swiper/components/navigation/navigation.scss'\r\nimport 'swiper/components/pagination/pagination.scss'\r\nimport { Swiper, SwiperSlide } from 'swiper/react'\r\nimport SliderItem from './SliderItem'\r\nimport cameraOff from '../../../assets/img/icons/camera-off.svg'\r\nimport Translation from '../../global/Translation'\r\n\r\nconst MallSlider = ({\r\n    onZoomClick,\r\n    products,\r\n    setProductSelectedToAdd,\r\n    sapId\r\n}) => {\r\n    // install Swiper modules\r\n    SwiperCore.use([Navigation, Pagination, Thumbs, Autoplay])\r\n    const [thumbsSwiper, setThumbsSwiper] = useState(null)\r\n    \r\n    return (\r\n        <React.Fragment>\r\n            <div className=\"container mt-3\">\r\n                <h2 className='carrusel-title-mall'>\r\n                    <Translation id={\"carousel_view\"} defaultMessage={\"Carousel View\"}/>\r\n                </h2>\r\n            </div>\r\n            <div className='mall__slider container v2'>\r\n                <Swiper\r\n                    className=\"mall__slider__thumbs\"\r\n                    slidesPerView={1.5}\r\n                    threshold={10}\r\n                    breakpoints={{\r\n                        768: {\r\n                            slidesPerView: 3\r\n                        },\r\n                        991: {\r\n                            slidesPerView: 4\r\n                        },\r\n                        1200: {\r\n                            slidesPerView: 5\r\n                        }\r\n                    }}\r\n                    centerInsufficientSlides={true}\r\n                    spaceBetween={20}\r\n                    pagination={{clickable:true}}\r\n                    navigation={true}\r\n                    modules={[Pagination]}\r\n                    watchSlidesVisibility\r\n                    watchSlidesProgress\r\n                    onSwiper={setThumbsSwiper} \r\n                >\r\n                    {products.map((product, i) => {\r\n\r\n                        const showValidImage = () => {\r\n                            if (product.detailImage && product.detailImage !== 'null' && product.detailImage !== undefined && product.detailImage !== 'undefined' ) return product.detailImage\r\n                            if (product.imgLarge && (product.imgLarge !== 'null' || product.imgLarge != 'null')) return product.imgLarge\r\n                            return cameraOff\r\n                        }\r\n\r\n                        const placeHolderClassName = () => {\r\n                            if((!product.detailImage || product.detailImage === 'null') || (!product.imgLarge || product.imgLarge === 'null' || product.imgLarge == 'null')) return '--placeholder'\r\n                            return ''\r\n                        }\r\n\r\n                        return (\r\n                            <SwiperSlide\r\n                                key={i}\r\n                                className={\"mall__slider__thumbs__slide \" + placeHolderClassName() + \" sliderV2\"}\r\n                            >\r\n                                <div style={{\r\n                                    backgroundImage: `url(${showValidImage()})`,\r\n                                    backgroundRepeat: 'no-repeat',\r\n                                    backgroundSize: 'cover',\r\n                                    height: '160px'\r\n                                }}></div>\r\n                                <span className='product-name'>{product.name}</span>\r\n                            </SwiperSlide>\r\n                        )\r\n                    })}\r\n                </Swiper>\r\n\r\n                <Swiper\r\n                    className=\"mall__slider__main\"\r\n                    spaceBetween={0}\r\n                    slidesPerView={1}\r\n                    loop={true}\r\n                    autoplay={{ delay: 7000, disableOnInteraction: true }}\r\n                    threshold={10}\r\n                    thumbs={{ swiper: thumbsSwiper }}\r\n                >\r\n                    {products.map((product, i) => (\r\n                        <SwiperSlide key={i} className=\"mall__slider__main__slide\">\r\n                            <SliderItem\r\n                                product={product}\r\n                                onZoomClick={()=>onZoomClick(product)}\r\n                                setProductSelectedToAdd={setProductSelectedToAdd}\r\n                                sapLandingId={sapId}\r\n                            />\r\n                        </SwiperSlide>\r\n                    ))}\r\n                </Swiper>\r\n            </div>\r\n        </React.Fragment>\r\n    )\r\n}\r\n\r\nexport default MallSlider\r\n","import React, { useState, useEffect } from 'react'\nimport { DropDownList } from '@progress/kendo-react-dropdowns'\nimport Button from '../../global/Button'\nimport DisplayPricePhase2 from '../../catalog/rectangleResult/displays/DisplayPricePhase2'\nimport { canAddCartLine, generateUnitsData, getMaxQtyLeftProduct } from '../utils'\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport Translation from '../../global/Translation'\n\nconst AddToCartModalItem = ({ sap_landing_id, product, setProductSelectedToAdd, addCartLine, addProductInFetchedProducts, intl, commonParamsAnalytics, priceList, userPriceList, selectedCenter, userType, showToastNotification, lines }) => {\n    const [unitsSelected, setUnitsSelected] = useState(null)\n    const [errorUnits, setErrorUnits] = useState(false)\n\n    useEffect(() => {\n        setUnitsSelected(null)\n        setErrorUnits(false)\n    }, [setProductSelectedToAdd])\n\n    return (\n        <React.Fragment>\n            <p className=\"mall__modal__title\"><Translation id=\"select_cart_units\" defaultMessage=\"Select units to add to cart\" /></p>\n            <div className=\"modal-card\">\n                <div className=\"row no-gutters modal-card--content\">\n\n                    {product && product.outlet && product.realStock > 0 &&\n                        <DisplayOutletIndicator outletQuality={product.outletQuality} />\n                    }\n\n                    <div className=\"col-lg-6 col-md-5 col-12 modal-card--image\" style={{ backgroundImage: `url(${product.detailImage})` }}></div>\n                    <div className=\"col-lg-6 col-md-7 col-12 modal-card--text\">\n                        {product.brand === 'DEKTON' && selectedCenter === 7130 ?\n                            <span>DKTN &reg;</span>\n                            :\n                            !!product.hasImage && (\n                                <img\n                                    className={`modal-card__brand modal-card__brand--image modal-card__brand--${product.brandWithoutSpaces}`}\n                                    alt={product.brand}\n                                    src={product.hasImage}\n                                />\n                            )\n                        }\n                        {!product.hasImage && product.brand && <p className=\"modal-card__brand modal-card__brand--text\">{product.brand} &reg;</p>}\n                        <p className=\"modal-card__name\">{product.name}</p>\n                        <div className=\"modal-card__data\">\n                            <div className=\"modal-card__data--specs\">\n                                <p className=\"modal-card__data--thickness\">\n                                    <i className=\"icon-thickness\"></i>\n                                    <span>{product.thickness}</span>\n                                </p>\n                                <p className=\"modal-card__data--finish\">\n                                    <i className=\"icon-finish\"></i>\n                                    <span>{product.finish}</span>\n                                </p>\n                            </div>\n                            {product && userType !== 'ADMIN' ?\n                                <p className=\"modal-card__data--price\">\n                                    <DisplayPricePhase2 product={product} />\n                                </p>\n                                :\n                                <span><Translation id=\"price_not_available\" defaultMessage=\"Price not available\" /></span>\n                            }\n                        </div>\n                        <div className=\"modal-card__order\">\n                            <div className=\"modal-card__order--left\">\n                                <p className=\"modal-card__order--stock\">\n                                    <strong>{intl.formatMessage({ id: 'stock' })}:</strong> {product.realStock}\n                                </p>\n                                <p className=\"modal-card__order--minimum\">\n                                    {product.minimumOrder > 0 && (\n                                        <React.Fragment>\n                                            <strong><Translation id=\"minimum_order\" defaultMessage=\"Minimum order\" />:</strong> {product.minimumOrder}\n                                        </React.Fragment>\n                                    )}\n                                </p>\n                            </div>\n                            <div className=\"modal-card__order--right\">\n                                {product.format && (\n                                    <p className=\"modal-card__order--format\">\n                                        <i className=\"fas fa-cut\"></i>\n                                        <span>{product.format}</span>\n                                        <small><Translation id=\"max_format\" defaultMessage=\"Max format\" /></small>\n                                    </p>\n                                )}\n                            </div>\n                        </div>\n                        {product.realStock > 0 &&\n                            <div className=\"modal-card__buttons\">\n                                <DropDownList\n                                    className={`modal-card__buttons__btn modal-card__buttons__btn--units ${errorUnits ? 'modal-card__buttons__btn--error' : ''}`}\n                                    label=\"Unidades\"\n                                    data={generateUnitsData(product.minimumOrder || 1, product.realStock + 1)}\n                                    value={unitsSelected}\n                                    onChange={event => {\n                                        setErrorUnits(!event.value)\n                                        setUnitsSelected(event.value)\n                                    }}\n                                />\n                                <Button\n                                    size=\"medium\"\n                                    icon=\"shopping-cart\"\n                                    customClass=\"modal-card__buttons__btn\"\n                                    onClick={() => {\n                                        addProductInFetchedProducts(product, parseInt(product.centerId, 10), intl.locale)\n                                        if (!unitsSelected) {\n                                            setErrorUnits(true)\n                                            return\n                                        }\n                                        setErrorUnits(false)\n\n                                        if (canAddCartLine(lines, product, unitsSelected)) {\n                                            //this is going dupe, the ADD_CART_LINE_SUCCESS is making the event already\n                                            // analytics.sendAddToCart(product, unitsSelected, priceList, userPriceList, commonParamsAnalytics)\n                                            addCartLine(\n                                                product.productId,\n                                                unitsSelected,\n                                                {\n                                                    mall: true,\n                                                    lots: !!product.productLots ? true : null,\n                                                    outlet: product.outlet ? product.outletQuality : null,\n                                                    sap_landing_id: sap_landing_id,\n                                                    landing_id: product.landingId\n                                                },\n                                                null,\n                                                product.finish === 'AND' && ['DEKTON', 'DKTN'].includes(product.brand),\n                                                product.centerId\n                                            )\n                                            setProductSelectedToAdd(null)\n                                        } else {\n                                            const maxQty = getMaxQtyLeftProduct(lines, product);\n\n                                            showToastNotification(maxQty > 0 ? 'Solo puedes añadir ' + maxQty + ' uds. más al carrito' : 'No se pueden añadir más unidades al carrito', 'error')\n                                        }\n                                    }}\n                                >\n                                    {intl.formatMessage({ id: 'add_to_cart' })}\n                                </Button>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n        </React.Fragment>\n    )\n}\n\nexport default AddToCartModalItem\n","import React from 'react'\n\nconst BannerImage = ({ landingData }) => (\n    <div className=\"row\">\n        <div className=\"col-12\">\n            <div className=\"mall__banner\">\n                {landingData.banner_desktop_image_uri && <img src={`${landingData.banner_desktop_image_uri}`} alt=\"\" className=\"mall__banner__image mall__banner__image--desktop\" />}\n                {landingData.banner_mobile_image_uri && <img src={`${landingData.banner_mobile_image_uri}`} alt=\"\" className=\"mall__banner__image mall__banner__image--mobile\" />}\n            </div>\n        </div>\n    </div>\n);\n\nexport default BannerImage;\n\n","import React from 'react'\nimport Translation from '../../global/Translation'\nimport { injectIntl } from 'react-intl'\n\nimport 'react-table/react-table.css'\nimport Select from 'react-select'\nimport { impersonate } from '../../../store/login/actions'\nimport {  fetchUsersToImpersonateByCenter } from '../../../store/impersonate/actions'\nimport { connect } from 'react-redux'\nimport GoBack from '../../global/GoBack'\nimport { canImpersonate, centerUsers } from '../../../store/impersonate/reducers'\nimport { getImpersonatedBy, getUserName } from '../../../store/login/reducers'\nimport Button from '../../global/Button'\nimport { fetchRefreshUserPriceList } from '../../../store/products/actions'\nimport { getSelectedCenter } from '../../../store/centers/reducers'\nimport { getLandingBySlug } from '../../../store/landing/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        users: centerUsers(state),\n        canImpersonate: canImpersonate(state),\n        userName: getUserName(state),\n        impersonatedBy: getImpersonatedBy(state),        \n        center: getSelectedCenter(state),\n        landing: getLandingBySlug(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        impersonate: (userId, stay) => {\n            dispatch(impersonate(userId, true))\n        },        \n        fetchUsersToImpersonateByCenter: (center) => {\n            dispatch(fetchUsersToImpersonateByCenter(center))\n        },\n        fetchRefreshPricesList: () => {\n            dispatch(fetchRefreshUserPriceList())\n        }\n    }\n}\nclass ImpersonateBar extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { userSelected: null, centerSelected: null }\n    }\n    componentDidMount() {\n        if (this.canShow()) this.props.fetchUsersToImpersonateByCenter(this.props.center)\n        this.setState({centerSelected : this.props.center})\n    }\n    componentWillUnmount() {\n        if (this.props.isAdmin) {\n            // this.props.removePriceList() impersonate impersonatedby\n        }\n    }\n\n    canShow = () => this.props.canImpersonate && (this.props.impersonatedBy == 'OUTLET' || this.props.userName == 'OUTLET')\n    render() {\n        if (!this.canShow()) return null\n        return (\n            <div className='container impersonate-bar-v2'>\n                <div className=\"row\">\n                    <div className=\"col-12\">\n                        <h2 className=\"mall-campaigns_preview\">\n                            <Translation id=\"campaigns_preview\" defaultMessage=\"Campaigns Preview\" />\n                        </h2>\n                    </div>\n                    <div className=\"col-12 mb-2\">\n                        <GoBack></GoBack>\n                    </div>\n                    <div className=\"col-12 col-md-4 pt-1\">\n                        <Button\n                            disabled={this.props.userName == 'OUTLET'}\n                            onClick={this.props.fetchRefreshPricesList}>\n                            <Translation id=\"Reset\" defaultMessage=\"Reset\" />\n                        </Button>\n                    </div>\n\n                    {\n                        this.props.landing && (\n                            <div className=\"col-12 col-md-4 pt-1 select-center\">\n                                <Select\n                                    clearable = {false}\n                                    placeholder={this.props.intl.formatMessage({ id: 'promotion_select_center' })}\n                                    options={\n                                        this.props.landing.landing && this.props.landing.landing.centerNames &&\n                                        Object.entries(this.props.landing.landing.centerNames).map(([k,v]) => {\n                                            return { label: v, value: k }\n                                        })\n                                    }\n                                    value={this.state.centerSelected}\n                                    onChange={e => {\n                                        if (e) {\n                                            this.setState({ centerSelected: e.value }, () => {\n                                                this.props.fetchUsersToImpersonateByCenter(e.value)\n                                            })\n                                        }\n                                    }}\n                                />\n                            </div>\n                        )\n                    }\n                    \n                    <div className=\"col-12 col-md-4 pt-1 select-user\">\n                        <Select\n                            placeholder={this.props.intl.formatMessage({ id: 'promotion_select_user' })}\n                            options={\n                                this.props.users &&\n                                this.props.users.map(item => {\n                                    return { label: item.name + ' (' + item.login + '-' + item.center + ')', value: item.login }\n                                })\n                            }\n                            value={this.state.userSelected}\n                            onChange={e => {\n                                if (e) {\n                                    this.setState({ userSelected: e.value }, () => {\n                                        this.props.impersonate(this.state.userSelected)\n                                    })\n                                }\n                            }}\n                        />\n                    </div>                  \n                </div>\n                <br />\n            </div>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(ImpersonateBar)\n)\n","import * as api from '../api'\nimport {onlyChangeCenter} from '../centers/actions'\n\nexport const fetchUsersToImpersonate = () => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_USERS_TO_IMPERSONATE_REQUEST',\n        token\n    })\n\n    return api\n        .fetchUsersToImpersonate(token)\n        .then(response => {\n            dispatch({ type: 'FETCH_USERS_TO_IMPERSONATE_SUCCESS', users: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_USERS_TO_IMPERSONATE_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\n\nexport const fetchUsersToImpersonateByCenter = (center) => (dispatch, getState) => {\n    const token = getState().login.token\n    dispatch({\n        type: 'FETCH_USERS_TO_IMPERSONATE_BY_CENTER_REQUEST',\n        token\n    })\n\n    return api\n        .fetchUsersToImpersonateByCenter(center, token)\n        .then(response => {\n            dispatch(onlyChangeCenter(center))\n            dispatch({ type: 'FETCH_USERS_TO_IMPERSONATE_BY_CENTER_SUCCESS', users: response.data })\n        })\n        .catch(error => {\n            dispatch({ type: 'FETCH_USERS_TO_IMPERSONATE_BY_CENTER_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        })\n}\n","import React, { useState } from 'react'\nimport SimpleModal from '../../global/SimpleModal'\nimport RectangleResultContainer from \"../../catalog/rectangleResult/RectangleResultContainer\";\nimport ProductContext, {MallProductContext} from \"../../catalog/rectangleResult/contexts/ProductContext\";\n\nconst ProductItem = ({\n    product,\n    onZoomClick,\n    sapLandingId\n}) => {\n    return (\n\n        <React.Fragment>\n            <ProductContext.Provider value={MallProductContext}>\n                <RectangleResultContainer\n                    product={product}\n                    key={product.productId}\n                    list={'MALL'}\n                    showImg={true}\n                    onZoomClick={onZoomClick}\n                    sapLandingId={sapLandingId}\n                />\n            </ProductContext.Provider>\n        </React.Fragment>\n    )\n}\n\nexport default ProductItem\n","import React from 'react'\nimport Lightbox from 'react-image-lightbox'\nimport Translation from \"../../global/Translation\";\nimport DisplayOutletIndicator from \"../../catalog/rectangleResult/displays/DisplayOutletIndicator\";\nimport ProductDisplayName from '../../global/ProductDisplayName';\n\nclass MallImageViewer extends React.Component {\n\n    componentDidMount() {\n        document.body.style.overflow = 'hidden'\n    }\n\n    componentWillUnmount() {\n        document.body.style.overflow = 'auto'\n    }\n\n    showValidImage() {\n        if(this.props.product.detailImage && this.props.product.detailImage !== 'undefined') return this.props.product.detailImage.replace('?w=500', '')\n        return this.props.product.imgLarge.replace('?w=2000', '')\n    }\n\n    render() {\n        return (\n            <section id=\"section-lots-viewer\">\n                <div className=\"carousel\">\n                    <div>\n                        <Lightbox\n                            mainSrc={this.showValidImage()}\n                            onCloseRequest={this.props.onClose}\n                            wrapperClassName={'carousel-custom'}\n                            imagePadding={60}\n                            imageTitle={\n                                <div className=\"lot-viewer-title\">\n\n                                    <div style={{display:'flex'}}>\n                                        <div className=\"mall-image-viewer\">\n                                            <ProductDisplayName product={this.props.product} />\n                                        </div>\n\n                                        {this.props.product.outlet && this.props.product.outlet.qualityOutlet && (\n                                        <div className=\"m-auto\" style={{width:'fit-content'}}>\n                                            <DisplayOutletIndicator outletQuality={this.props.product.outlet.qualityOutlet} />\n                                        </div>\n                                        )}\n                                    </div>\n\n                                    <div style={{display:'flex'}}>\n                                        <div className=\"bt\">\n                                            <a href={process.env.REACT_APP_API_HOST + '/helper/download-url/?url=' + this.showValidImage()} download=\"image.png\">\n                                                <i className=\"fal fa-download mr-1\" />\n                                                <Translation id=\"download\" defaultMessage=\"Download\" />\n                                            </a>\n                                        </div>\n                                    </div>\n                                </div>\n                            }\n                            imageCaption={[]}\n                            toolbarButtons={[]}\n                        />\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\n\nexport default (MallImageViewer)\n","import { injectIntl } from 'react-intl'\r\nimport React, { useEffect, useState } from 'react'\r\nimport SimpleModal from '../global/SimpleModal'\r\nimport { Checkbox } from '@progress/kendo-react-inputs'\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns'\r\nimport MallSlider from './components/MallSlider'\r\nimport AddToCartModalItem from './components/AddToCartModalItem'\r\nimport BannerImage from './components/BannerImage'\r\nimport * as analytics from '../../analyticsEvents'\r\nimport { isFilterSelected, SORT_OPTIONS, SORT_CLEAR_OPTION } from './utils'\r\nimport Button from '../global/Button'\r\nimport Translation from '../global/Translation'\r\nimport FloatingAlert from '../alerts/FloatingAlert'\r\nimport ImpersonateBar from './components/ImpersonateBar'\r\nimport Countdown from '../global/Countdown'\r\nimport ProductItem from \"./components/ProductItem\";\r\nimport MallImageViewer from \"./components/MallImageViewer\";\r\nimport {Pagination} from \"searchkit\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\n\r\n\r\nconst LandingTemplates = ({\r\n    landing,\r\n    currentIso,\r\n    filters,\r\n    addCartLine,\r\n    formattedProducts,\r\n    redirect,\r\n    intl,\r\n    addProductInFetchedProducts,\r\n    setSelectedProduct,\r\n    showFilters,\r\n    setShowFilters,\r\n    productSelectedToAdd,\r\n    setProductSelectedToAdd,\r\n    sortSelected,\r\n    selectedSort,\r\n    selectFilter,\r\n    unselectFilters,\r\n    filtersSelected,\r\n    landingData,\r\n    commonParamsAnalytics,\r\n    priceList,\r\n    showToastNotification,\r\n    lines,\r\n    userPriceList,\r\n    selectedCenter,\r\n    userType,\r\n    ...props\r\n}) => {\r\n    const PRODUCTS_LIMIT = 20\r\n\r\n    const [toggleState, setToggleState] = useState(true)\r\n    const [showImageModal, setShowImageModal] = useState(false)\r\n    const [imageModal, setImageModal] = useState('')\r\n    const [currentPage, setCurrentPage] = useState(0)\r\n    const [currentProductList, setCurrentProductList] = useState([])\r\n    const [productChunks, setProductChunks] = useState([[]])\r\n\r\n    useEffect(() => {\r\n        if (formattedProducts.length > 0) {\r\n            nextPage()\r\n\r\n            // let index = 0;\r\n            // const _productChunks = []\r\n            // for (let i = 0; i < formattedProducts.length; i += PRODUCTS_LIMIT) {\r\n            //     _productChunks[index++] = formattedProducts.slice(i, i + PRODUCTS_LIMIT)\r\n            // }\r\n            // setProductChunks(_productChunks)\r\n            // setCurrentProductList(_productChunks[0])\r\n            // setCurrentPage(0)\r\n        }\r\n    }, [formattedProducts.length])\r\n\r\n    const nextPage = () => {\r\n        const _currentIndex = currentPage * PRODUCTS_LIMIT\r\n        const _currentProductList = formattedProducts.slice(0, _currentIndex + PRODUCTS_LIMIT)\r\n        setCurrentProductList(_currentProductList)\r\n        setCurrentPage(currentPage + 1)\r\n    }\r\n\r\n\r\n    // useEffect(() => {\r\n    //     if (currentPage !== undefined) {\r\n    //         setCurrentProductList(productChunks[currentPage])\r\n    //         analytics.sendMallImpressions(productChunks[currentPage], priceList, userPriceList, commonParamsAnalytics)\r\n    //     }\r\n    // }, [currentPage])\r\n\r\n\r\n\r\n\r\n    function toggleMallContainerDiscount() {\r\n        setToggleState(!toggleState)\r\n    }\r\n\r\n    const isAnyFilterActive = () => {\r\n        let active = false\r\n\r\n        Object.keys(filtersSelected).forEach(f => {\r\n            if (filtersSelected[f].length > 0) {\r\n                active = true\r\n            }\r\n        })\r\n\r\n        return active\r\n    }\r\n\r\n    const onZoomClick = product => {\r\n        setImageModal(product)\r\n        setShowImageModal(true)\r\n    }\r\n\r\n\r\n\r\n    return (\r\n        <div className='mall new-mall' style={{ backgroundColor: \"#F9F9F9\"}}>\r\n            <div className=\"container\">\r\n                <div className='mall-header'>\r\n                    <div>\r\n                        <h1 className='mall-title'>\r\n                            {landingData.title}\r\n                        </h1>\r\n                    </div>\r\n                    <div className=\"timer-promo\">\r\n                        <span className=\"time-remaining\"><Translation id=\"time_remaining\" defaultMessage=\"Promotion time remaining\" /></span>\r\n                        <Countdown endDate={landingData.end_at ? landingData.end_at : \"2025-02-15\"} />\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <MallSlider\r\n                products={currentProductList}\r\n                onZoomClick={onZoomClick}\r\n                setProductSelectedToAdd={setProductSelectedToAdd}\r\n                sapId={landing.landing.sap_id}\r\n            />\r\n\r\n            {props.isUsaOrCa && toggleState && (\r\n                <FloatingAlert\r\n                    warningMessage={<Translation id=\"extra_discount_for_full_containers\" defaultMessage=\"Extra discount for full containers\"></Translation>}\r\n                    mallContainerDiscount\r\n                    className=\"catalog-position extra-discount\"\r\n                    onClose={() => toggleMallContainerDiscount()}\r\n                />\r\n            )}\r\n            <ImpersonateBar />\r\n\r\n                <hr></hr>\r\n\r\n\r\n            <div className=\"container\">\r\n                <h2 className='all-materials-mall'><Translation id={\"all_materials_view\"} defaultMessage={\"All materials view\"}></Translation></h2>\r\n\r\n                <BannerImage landingData={landingData} />\r\n                <div>\r\n                    <div className={`mall__filters`}>\r\n                        <div className=\"mall__filters__content\">\r\n                            <div className=\"filter-list-mall row ml-0 mr-0\">\r\n                                {filters && filters.brand && !!filters.brand.length && (\r\n                                    <div className=\"col-12 col-md-3 col-lg-2 p-0\">\r\n                                        <div className=\"mall__filters__content__section\">\r\n                                            <div className='filter-header-mall' onClick={()=> {\r\n                                                [...document.querySelectorAll(`#brand-mall-filter`)].map(e => {\r\n                                                    e.hidden = !e.hidden\r\n                                                });\r\n                                                [...document.querySelectorAll(`#up-brands-mall`)].map(e => {\r\n                                                    if (e.classList.contains(\"d-none\")) {\r\n                                                        e.classList.remove(\"d-none\")\r\n                                                    } else {\r\n                                                        e.classList.add(\"d-none\")\r\n                                                    }\r\n                                                });\r\n                                                [...document.querySelectorAll(`#down-brands-mall`)].map(e => {\r\n                                                    if (e.classList.contains(\"d-none\")) {\r\n                                                        e.classList.remove(\"d-none\")\r\n                                                    } else {\r\n                                                        e.classList.add(\"d-none\")\r\n                                                    }\r\n                                                })\r\n                                            }}>\r\n                                                <span className='filter-mall-name'>{intl.formatMessage({ id: 'brands' })}</span>\r\n                                                <i className={`fal fa-chevron-down`} id={\"down-brands-mall\"}></i>\r\n                                                <i className={`fal fa-chevron-up d-none`} id={\"up-brands-mall\"}></i>\r\n                                            </div>\r\n                                            <div className=\"mall__filters__content__check\" id='brand-mall-filter' hidden={true}>\r\n                                                {filters.brand.map((filter, i) => {\r\n                                                    return (\r\n                                                        <Checkbox\r\n                                                            onChange={selectFilter('brand', filter)}\r\n                                                            id={filter}\r\n                                                            checked={isFilterSelected(filtersSelected['brand'], filter)}\r\n                                                            key={i}\r\n                                                        >\r\n                                                            <label htmlFor={filter} className={'k-checkbox-label'}>\r\n                                                                {filter === 'DEKTON' && selectedCenter === 7130 ? (\r\n                                                                    <span>DKTN</span>\r\n                                                                ) : ( <span>{filter}</span>)}\r\n                                                            </label>\r\n                                                        </Checkbox>\r\n                                                    )\r\n                                                })}\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                )}\r\n                                {filters && filters.format && !!filters.format.length && (\r\n                                    <div className=\"col-12 col-md-3 col-lg-2 p-0\">\r\n                                        <div className=\"mall__filters__content__section\">\r\n                                            <div className='filter-header-mall' onClick={() => {\r\n                                                [...document.querySelectorAll(`#format-mall-filter`)].map(e => {\r\n                                                    e.hidden = !e.hidden\r\n                                                });\r\n                                                [...document.querySelectorAll(`#up-format-mall`)].map(e => {\r\n                                                    if (e.classList.contains(\"d-none\")) {\r\n                                                        e.classList.remove(\"d-none\")\r\n                                                    } else {\r\n                                                        e.classList.add(\"d-none\")\r\n                                                    }\r\n                                                });\r\n                                                [...document.querySelectorAll(`#down-format-mall`)].map(e => {\r\n                                                    if (e.classList.contains(\"d-none\")) {\r\n                                                        e.classList.remove(\"d-none\")\r\n                                                    } else {\r\n                                                        e.classList.add(\"d-none\")\r\n                                                    }\r\n                                                })\r\n                                            }}>\r\n                                                <span className='filter-mall-name'>{intl.formatMessage({ id: 'format' })}</span>\r\n                                                <i className={`fal fa-chevron-down`} id={\"down-format-mall\"}></i>\r\n                                                <i className={`fal fa-chevron-up d-none`} id={\"up-format-mall\"}></i>\r\n                                            </div>\r\n                                            <div className=\"mall__filters__content__checks\" id='format-mall-filter' hidden={true}>\r\n                                                {filters.format.map((filter, i) => (\r\n                                                    <Checkbox\r\n                                                        onChange={selectFilter('format', filter)}\r\n                                                        id={filter}\r\n                                                        key={i}\r\n                                                        checked={isFilterSelected(filtersSelected['format'], filter)}\r\n                                                    >\r\n                                                        <label htmlFor={filter} className={'k-checkbox-label'}>\r\n                                                            {filter}\r\n                                                        </label>\r\n                                                    </Checkbox>\r\n                                                ))}\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                )}\r\n                                {filters && filters.thickness && !!filters.thickness.length && (\r\n                                    <div className=\"col-12 col-md-3 col-lg-2 p-0\">\r\n                                        <div className=\"mall__filters__content__section\">\r\n                                            <div className='filter-header-mall' onClick={() => {\r\n                                                [...document.querySelectorAll(`#thickness-mall-filter`)].map(e => {\r\n                                                    e.hidden = !e.hidden\r\n                                                });\r\n                                                [...document.querySelectorAll(`#up-thick-mall`)].map(e => {\r\n                                                    if(e.classList.contains(\"d-none\")){\r\n                                                        e.classList.remove(\"d-none\")\r\n                                                    }else{\r\n                                                        e.classList.add(\"d-none\")\r\n                                                    }\r\n                                                });\r\n                                                [...document.querySelectorAll(`#down-thick-mall`)].map(e => {\r\n                                                    if (e.classList.contains(\"d-none\")) {\r\n                                                        e.classList.remove(\"d-none\")\r\n                                                    } else {\r\n                                                        e.classList.add(\"d-none\")\r\n                                                    }\r\n                                                })\r\n                                            }}>\r\n                                                <span className='filter-mall-name'>{intl.formatMessage({ id: 'thickness' })}</span>\r\n                                                <i className={`fal fa-chevron-down`} id={\"down-thick-mall\"}></i>\r\n                                                <i className={`fal fa-chevron-up d-none`} id={\"up-thick-mall\"}></i>\r\n                                            </div>\r\n                                            <div className=\"mall__filters__content__checks\" id='thickness-mall-filter' hidden={true}>\r\n                                                {filters.thickness.map((filter, i) => (\r\n                                                    <Checkbox\r\n                                                        onChange={selectFilter('thickness', filter)}\r\n                                                        id={filter}\r\n                                                        key={i}\r\n                                                        checked={isFilterSelected(filtersSelected['thickness'], filter)}\r\n                                                    >\r\n                                                        <label htmlFor={filter} className={'k-checkbox-label'}>\r\n                                                            {filter} cm\r\n                                                        </label>\r\n                                                    </Checkbox>\r\n                                                ))}\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                )}\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className='all-filters-mall' style={{ justifyContent: isAnyFilterActive() ? \"space-between\" : \"right\" }}>\r\n                    <div className={'tags-clean row'} hidden={!isAnyFilterActive()}>\r\n                        <div className={'col-12'}>\r\n                            <div className={'mall_filters__tags'}>\r\n                                {Object.keys(filtersSelected).map((key) => {\r\n                                    let output = [];\r\n                                    if (filtersSelected[key].length !== 0) {\r\n                                        filtersSelected[key].forEach((item) => {\r\n                                            output.push((\r\n                                                <div className={'mall_filters__tag'}>\r\n                                                    <div className={'mall_filters__tag__text'}>\r\n                                                        <span><Translation id={key} />: {item}</span>\r\n                                                    </div>\r\n                                                    <div className={'mall_filters__tag__close'} onClick={selectFilter(key, item)}>\r\n                                                        X\r\n                                                    </div>\r\n                                                </div>\r\n                                            ));\r\n                                        })\r\n                                        return (<div className={'mall_filters__tags__container'}>{output}</div>);\r\n                                    }\r\n\r\n                                })}\r\n\r\n                                <span className=\"clean-filters\" onClick={unselectFilters}><Translation id={'clear_all'} /></span>\r\n                            </div>\r\n                        </div>\r\n\r\n                    </div>\r\n                    <div className=\"mall__products__order\">\r\n                        <DropDownList\r\n                            label={intl.formatMessage({ id: 'order_by' })}\r\n                            textField=\"text\"\r\n                            dataItemKey=\"id\"\r\n                            data={sortSelected ? [...SORT_OPTIONS, SORT_CLEAR_OPTION] : SORT_OPTIONS}\r\n                            onChange={event => selectedSort(event.target.value.id)}\r\n                            popupSettings={{\r\n                                className: \"options-mall-select\"\r\n                            }}\r\n                        />\r\n                    </div>\r\n                </div>\r\n\r\n                <InfiniteScroll\r\n                    dataLength={currentProductList.length}\r\n                    next={() => nextPage()}\r\n                    // next={() => this.props.currentPage < this.props.lastPage && this.fetchPreOrdersPaginate()}\r\n                    // next={() => setCurrentPage(currentPage + 1)}\r\n                    hasMore={currentProductList.length < formattedProducts.length}\r\n                    scrollThreshold={0.95 + (currentPage * 0.0075)}\r\n                >\r\n                <div className={\"mall-products-container\"}>\r\n                    <div className=\"mall__products\">\r\n                        <div className=\"mall__products__content\">\r\n\r\n                                {!isAnyFilterActive() || (isAnyFilterActive() && currentProductList.length > 0) ? (\r\n                                    currentProductList.map((product, i) => {\r\n                                        return (\r\n                                            <div className='position-relative'\r\n                                                 key={'mall-item_' + i}\r\n                                            >\r\n                                                <ProductItem\r\n                                                    product={product}\r\n                                                    sapLandingId={landing.landing.sap_id}\r\n                                                    onZoomClick={onZoomClick}\r\n                                                    {...props}\r\n                                                />\r\n                                            </div>\r\n                                        )\r\n                                    })\r\n                                ) : (\r\n                                    <div className=\"not-found\">\r\n                                        <p>\r\n                                            <Translation id=\"no_materials_found\" defaultMessage=\"No materials found according to the search parameters\" />\r\n                                        </p>\r\n                                        <Button onClick={unselectFilters}>\r\n                                            <Translation id=\"remove_filters\" defaultMessage=\"Remove filters\" />\r\n                                        </Button>\r\n                                    </div>\r\n                                )}\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                </InfiniteScroll>\r\n            </div>\r\n\r\n            <div className=\"row\">\r\n                <div className=\"col-12 mb-4 pt-2\" style={{ display: 'flex', justifyContent: 'center' }}>\r\n                    <Button\r\n                        onClick={() => nextPage()}\r\n                        size=\"medium\"\r\n                        disabled={currentProductList.length >= formattedProducts.length}\r\n                    >\r\n                        {currentProductList.length < formattedProducts.length ? (\r\n                            <Translation id=\"load_more\" defaultMessage=\"Load more\" />\r\n                        ) : (\r\n                            <Translation id=\"no_more_result\" defaultMessage=\"No more results\" />\r\n                        )}\r\n                    </Button>\r\n                </div>\r\n            </div>\r\n\r\n            {/*<nav className=\"paginator\" aria-label=\"Mall landing paginator\">*/}\r\n            {/*    <ul className=\"pagination justify-content-center\">*/}\r\n            {/*        <li className={`page-item ${currentPage === 0 ? 'disabled' : ''}`}>*/}\r\n            {/*            <span className=\"page-link page-nav \" onClick={() => setCurrentPage(Math.max(currentPage - 1, 0))} tabIndex=\"-1\" >*/}\r\n            {/*                <Translation id=\"previous\" defaultMessage=\"Previous\" />*/}\r\n            {/*            </span>*/}\r\n            {/*        </li>*/}\r\n            {/*        {*/}\r\n            {/*            productChunks.map((v, i) => (*/}\r\n            {/*                <li className={`page-item ${currentPage === i ? 'active' : ''}`}>*/}\r\n            {/*                    <span className=\"page-link\" onClick={() => setCurrentPage(i)}>{i + 1}</span>*/}\r\n            {/*                </li>*/}\r\n            {/*            ))*/}\r\n            {/*        }*/}\r\n            {/*        <li className={`page-item ${currentPage === (productChunks.length - 1) ? 'disabled' : ''}`}>*/}\r\n            {/*            <span className=\"page-link page-nav\" onClick={() => setCurrentPage(Math.min(currentPage + 1, productChunks.length - 1))} >*/}\r\n            {/*                <Translation id=\"next\" defaultMessage=\"Next\" />*/}\r\n            {/*            </span>*/}\r\n            {/*        </li>*/}\r\n            {/*    </ul>*/}\r\n            {/*</nav>*/}\r\n\r\n            {productSelectedToAdd && (\r\n                <SimpleModal customClass=\"mall__modal\" title={''} size=\"large\" footer={null} onClose={() => setProductSelectedToAdd(null)}>\r\n                    <AddToCartModalItem\r\n                        showToastNotification={showToastNotification}\r\n                        userType={userType}\r\n                        priceList={priceList}\r\n                        userPriceList={userPriceList}\r\n                        lines={lines}\r\n                        commonParamsAnalytics={commonParamsAnalytics}\r\n                        addCartLine={addCartLine}\r\n                        product={productSelectedToAdd}\r\n                        setProductSelectedToAdd={setProductSelectedToAdd}\r\n                        addProductInFetchedProducts={addProductInFetchedProducts}\r\n                        intl={intl}\r\n                        selectedCenter={selectedCenter}\r\n                        sap_landing_id={landing.landing.sap_id}\r\n                    />\r\n                </SimpleModal>\r\n            )}\r\n            {showImageModal && (\r\n                <MallImageViewer product={imageModal} onClose={() => setShowImageModal(false)}/>\r\n            )}\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default injectIntl(LandingTemplates)\r\n","import React, { useEffect, useState } from 'react'\r\nimport { injectIntl } from 'react-intl'\r\n\r\nimport LandingTemplates1 from './LandingTemplates_1';\r\n\r\nimport {\r\n    LANDING_TEMPLATES_IDS,\r\n    generateFiltersState,\r\n    isFilterSelected,\r\n    getFilteredProducts, getMallProduct,\r\n} from './utils';\r\n\r\nimport {\r\n    CENTERS, parseLandingStatus\r\n} from '../landing-manager/utils';\r\nimport Error from '../alerts/Error';\r\nimport Spinner from '../global/Spinner';\r\n\r\n\r\nconst LandingTemplates = ({\r\n    showToastNotification,\r\n    fetchLandingBySlug,\r\n    fetchPreviewLandingBySlug,\r\n    previewMode,\r\n    slug,\r\n    landing,\r\n    landingId,\r\n    currentIso,\r\n    fetchLandingbyId,\r\n    filters,\r\n    fetchProductsLandingsByCenters,\r\n    productsLanding,\r\n    productsLots,\r\n    commonParamsAnalytics,\r\n    priceList,\r\n    userPriceList,\r\n    intl,\r\n    selectedCenter,\r\n    lines,\r\n    userType,\r\n    isLogged,\r\n    loginRequired,\r\n    isLoadingLanding,\r\n    isLoadingProductsAndLots,\r\n    ...props\r\n}) => {\r\n    const [showFilters, setShowFilters] = useState(false);\r\n    const [filtersSelected, setFiltersSelected] = useState(generateFiltersState);\r\n    const [productSelectedToAdd, setProductSelectedToAdd] = useState(null);\r\n    const [sortSelected, selectedSort] = useState('');\r\n    const [fetchedProducts, setFetchedProducts] = useState(false);\r\n    const [formattedProducts, setFormattedProducts] = useState([])\r\n\r\n    useEffect(() => {\r\n        if (!isLogged) {\r\n            loginRequired(fetchLandingBySlug(slug))\r\n        }\r\n        if (previewMode) {\r\n            fetchPreviewLandingBySlug(slug, currentIso)\r\n        } else {\r\n            fetchLandingBySlug(slug);\r\n        }\r\n    }, [slug]);\r\n\r\n    useEffect(() => {\r\n        const productsLanding = landing && landing.landing && landing.landing.products;\r\n        if (!fetchedProducts && productsLanding) {\r\n            fetchProductsLandingsByCenters(landing.landing.common_id, landing.landing.centers, productsLanding, previewMode ? null : landing.landing.portfolio_mode)\r\n                .then(() => {\r\n                    setFetchedProducts(true)\r\n                });\r\n        }\r\n    }, [landing && landing.landing && landing.landing.products])\r\n\r\n    const landingData = landing && landing.landing || {};\r\n    const landingProducts = landingData && landingData.products || [];\r\n\r\n    useEffect(() => {\r\n        if (productsLanding && landingProducts) {\r\n            const _formattedProducts = []\r\n            landingProducts.forEach(product => {\r\n                const fProduct = getMallProduct(product, productsLanding, productsLots)\r\n                if (fProduct) {\r\n                    _formattedProducts.push(fProduct)\r\n                }\r\n            })\r\n            setFormattedProducts(_formattedProducts)\r\n        }\r\n    },[Object.keys(productsLots).length, productsLanding.length, landingProducts.length])\r\n\r\n    // useEffect(() => {\r\n    //     fetchLandingBySlug(slug);\r\n    // }, [isLogged]);\r\n\r\n\r\n\r\n    const filteredProducts = getFilteredProducts({\r\n        filters: filtersSelected,\r\n        products: formattedProducts,\r\n        sortSelected,\r\n        productsLanding,\r\n    });\r\n\r\n    const selectFilter = (type, filterValue) => () => {\r\n        setFiltersSelected({\r\n            ...filtersSelected,\r\n            [type]: isFilterSelected(filtersSelected[type], filterValue) ?\r\n                [...filtersSelected[type].filter(filter => filterValue !== filter)] :\r\n                [...filtersSelected[type], filterValue]\r\n        })\r\n    }\r\n\r\n    const unselectFilters = () => {\r\n        const filters = {};\r\n        Object.keys(filtersSelected).forEach(fc => {\r\n            filters[fc] = [];\r\n        })\r\n        setFiltersSelected(filters)\r\n    }\r\n\r\n\r\n\r\n    if (!landing || !landing.landing || isLoadingProductsAndLots || !landing.landing.template_id || (parseLandingStatus(landing.landing) === 'EXPIRED' && !previewMode)) {\r\n        if (isLoadingLanding || isLoadingProductsAndLots) {\r\n            return <Spinner isLoading={true}></Spinner>\r\n        }\r\n        return <Error alert={intl.formatMessage({ id: 'SORRY_PAGE_NOT_FOUND' })} />;\r\n    }\r\n\r\n    \r\n    if (landing.landing.template_id === LANDING_TEMPLATES_IDS.TEMPLATE_1) {\r\n        return (\r\n            <LandingTemplates1\r\n                formattedProducts={filteredProducts}\r\n                landing={landing}\r\n                showToastNotification={showToastNotification}\r\n                landingId={landingId}\r\n                currentIso={intl.locale}\r\n                lines={lines}\r\n                filters={filters}\r\n                fetchProductsLandingsByCenters={fetchProductsLandingsByCenters}\r\n                showFilters={showFilters}\r\n                setShowFilters={setShowFilters}\r\n                productSelectedToAdd={productSelectedToAdd}\r\n                setProductSelectedToAdd={setProductSelectedToAdd}\r\n                sortSelected={sortSelected}\r\n                selectedSort={selectedSort}\r\n                selectFilter={selectFilter}\r\n                unselectFilters={unselectFilters}\r\n                filtersSelected={filtersSelected}\r\n                landingData={landingData}\r\n                commonParamsAnalytics={commonParamsAnalytics}\r\n                priceList={priceList}\r\n                userPriceList={userPriceList}\r\n                selectedCenter={selectedCenter}\r\n                userType={userType}\r\n                {...props}\r\n            />\r\n        )\r\n    }\r\n\r\n    return null;\r\n}\r\n\r\nexport default injectIntl(LandingTemplates)\r\n","import { connect } from 'react-redux'\r\n\r\nimport { getCommonParams, getIsLogged, getPriceListAtSelectedCenter, getUserPriceList, getUserType } from '../../store/login/reducers'\r\nimport { fetchLandingBySlug, fetchPreviewLandingBySlug, fetchLandinById, fetchProductsLandingsByCenters } from '../../store/landing/actions'\r\nimport { addMallCartLine } from '../../store/cart/actions'\r\n\r\nimport { loginRequired } from '../../store/login/actions'\r\n\r\nimport LandingTemplates from './LandingTemplates'\r\nimport { getFilters } from './utils'\r\nimport { getSalesOrg, getSelectedCenter } from '../../store/centers/reducers'\r\nimport { getIsLoadingLanding } from '../../store/landing/reducers'\r\nimport { showToastNotification } from '../../store/toast-notifications/actions'\r\nimport { getLines } from '../../store/cart/reducers'\r\nimport { dispatchPushURL } from '../../store/ui/actions'\r\nimport {setLastSelectedProduct} from \"../../store/selected-objects/actions\";\r\n\r\nconst mapStateToProps = (state, { match }) => {\r\n    return {\r\n        lines: getLines(state),\r\n        isLogged: getIsLogged(state),\r\n        userLandings: state.landing.userLandings,\r\n        landing: state.landing.landingBySlug,\r\n        productsLanding: state.landing.productsLanding,\r\n        productsLots: state.landing.productsLots,\r\n        slug: match.params.slug,\r\n        currentIso: match.params.iso,\r\n        previewMode: match.params.preview === 'preview',\r\n        filters: getFilters((state.landing.landingBySlug && state.landing.landingBySlug.landing && state.landing.landingBySlug.landing.products) || []),\r\n        commonParamsAnalytics: getCommonParams(state),\r\n        priceList: getPriceListAtSelectedCenter(state),\r\n        userPriceList: getUserPriceList(state),\r\n        selectedCenter: getSelectedCenter(state),\r\n        userType: getUserType(state),\r\n        isLoadingLanding: getIsLoadingLanding(state),\r\n        isUsaOrCa: ['2011', '2032'].includes(getSalesOrg(state)),\r\n        isLoadingProductsAndLots: state.landing.isLoadingProductsAndLots\r\n    }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n    return {\r\n        showToastNotification: (text = '', type = 'none', duration = 10000) => dispatch(showToastNotification(text, type, duration)),\r\n        fetchLandingbyId: (id, iso) => dispatch(fetchLandinById(id, iso)),\r\n        fetchLandingBySlug: (slug) => dispatch(fetchLandingBySlug(slug)),\r\n        fetchPreviewLandingBySlug: (slug, langID) => dispatch(fetchPreviewLandingBySlug(slug, langID)),\r\n        loginRequired: (callback) => {\r\n            dispatch(loginRequired(callback))\r\n        },\r\n        redirect: url => {\r\n            dispatch(dispatchPushURL(url))\r\n        },\r\n        addCartLine: (productId, qty, extra, callbackCenter, dektonGripRequested, productSupplierCenter) => {\r\n            dispatch(addMallCartLine(productId, qty, extra, callbackCenter, dektonGripRequested, productSupplierCenter))\r\n        },\r\n        fetchProductsLandingsByCenters: (landingId, centers, products, portfolioMode) => {\r\n            return dispatch(fetchProductsLandingsByCenters(landingId, centers, products, portfolioMode))\r\n        },\r\n        addProductInFetchedProducts: (product, centerId, locale) => {\r\n            dispatch({ type: 'FETCH_PRODUCT_SUCCESS', product, centerId, locale })\r\n        },\r\n        setSelectedProductId: productId => dispatch({ type: 'SET_SELECTED_MALL_PRODUCT', productId }),\r\n        setSelectedProduct: product => dispatch(setLastSelectedProduct(product))\r\n    }\r\n}\r\n\r\nconst LandingTemplatesContainer = connect(\r\n    mapStateToProps,\r\n    mapDispatchToProps\r\n)(LandingTemplates)\r\n\r\nexport default LandingTemplatesContainer\r\n","import React from 'react'\n\nimport LandingTemplatesContainer from '../components/landing-templates/LandingTemplatesContainer'\n\nconst LandingTemplatesScreen = props => <LandingTemplatesContainer {...props} />\n\nexport default LandingTemplatesScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport { injectIntl } from 'react-intl'\nimport $ from \"jquery\"\n\nimport Modal from '../global/Modal'\nimport { Editor, EditorTools } from '@progress/kendo-react-editor'\nimport Button from '../global/Button'\nimport Alerts from '../alerts/Alerts'\n\nconst {\n    Bold,\n    Italic,\n    Underline,\n    Strikethrough,\n    Subscript,\n    Superscript,\n    AlignLeft,\n    AlignCenter,\n    AlignRight,\n    AlignJustify,\n    Indent,\n    Outdent,\n    OrderedList,\n    UnorderedList,\n    Undo,\n    Redo,\n    FontSize,\n    FontName,\n    FormatBlock\n} = EditorTools\n\nclass I18nPromotionModal extends React.Component {\n    constructor(props) {\n        super(props)\n\n        if (!this.props.translations || (this.props.translations && !this.props.languages.find(lang => lang.value === this.props.translations.default))) {\n            if (!!this.props.languages.length) {\n                this.state = {\n                    translations: { default: this.props.languages[0].value },\n                    showEmptyAlert: false,\n                    charLimitErrors: []\n                }\n            }\n        } else {\n            this.state = {\n                translations: this.props.translations,\n                showEmptyAlert: false,\n                charLimitErrors: []\n            }\n        }\n    }\n\n\n    handleChange(event) {\n        if (event.target.type === 'radio') {\n            let value = undefined\n            if (event.target.checked) {\n                value = event.target.id.split('_').length > 1 ? event.target.id.split('_')[1] : ''\n            }\n            this.setState(prevState => ({\n                translations: { ...prevState.translations, default: value }\n            }))\n\n            console.log('> ' , value.replace(/<[^>]*>/g,'').trim())\n        } else {\n            let value = event.html\n            let key = event.target.props.id\n            this.setState(prevState => ({\n                translations: { ...prevState.translations, [key]: value }\n            }))\n\n            console.log('> ' , value.replace(/<[^>]*>/g,'').trim())\n        }\n    }\n\n    handleSubmit(event) {\n\n        const charLimitErrors = []\n        let defaultEmpty = false\n\n        this.props.languages.forEach(l => {\n            const translation = this.state.translations[l.value]\n            if (translation === undefined) return\n            const sanitizedText = translation.replace(/<[^>]*>/g,'').trim()\n\n            if (l.value === this.state.translations.default && sanitizedText.length === 0) {\n                defaultEmpty = true\n            }\n\n            if (this.props.limit && sanitizedText.length > this.props.limit ){\n                charLimitErrors.push(l.value)\n            }\n        })\n        //\n        // // let defaultText = this.state.translations.default && this.state.translations[this.state.translations.default]\n        // // defaultText = defaultText && defaultText.replace(/<[^>]*>/g,'').trim()\n        // // const validText = defaultText && defaultText.length > 0\n        this.setState({showEmptyAlert: defaultEmpty})\n        this.setState({charLimitErrors: charLimitErrors})\n\n        if (!defaultEmpty && charLimitErrors.length === 0) {\n            this.props.onSaveForm(this.props.type, this.state.translations)\n        }\n    }\n\n    valueDefault = () => {\n        return this.state.translations['default'] ? this.state.translations['default'] : null\n    }\n\n    getBannerTitle = lang => {\n        if (this.props.type === 'banner_title') return this.state.translations[lang.value]\n        else if (this.props.type === 'banner_description') return this.props.allTranslations.banner_title[lang.value]\n        return ''\n    }\n\n    getBannerDescription = lang => {\n        if (this.props.type === 'banner_title') return this.props.allTranslations.banner_description[lang.value]\n        else if (this.props.type === 'banner_description') return this.state.translations[lang.value]\n        return ''\n    }\n    render() {\n        return (\n            <Modal\n                title={this.props.intl.formatMessage({ id: this.props.title })}\n                onClose={this.props.onCloseModal}\n                size=\"large\"\n                customClass=\"i18n-promos-modal\"\n                footer={\n                    <div>\n                        <Button onClick={e => this.handleSubmit(e)} inverted size=\"medium\" form=\"i18n-promos-form\">\n                            <Translation id=\"save\" />\n                        </Button>\n                        {this.state && this.state.showEmptyAlert && (<Alerts alert={'DONT_ALLOWED_EMPTY_TEXT'} status=\"warning\" />)}\n                        {this.state && this.state.charLimitErrors.length > 0 && (<Alerts alert={'EXCEEDED_CHARS_LIMIT'}\n                                                                                         values={{langs:this.state.charLimitErrors.join(', ')}}\n                                                                                         status=\"warning\" />)}\n                    </div>\n                }\n            >\n                <div>\n                    {this.props.description && (\n                        <div>\n                            {this.props.description}\n                            <hr style={{ marginLeft: '-1rem', marginRight: '-1rem' }} />\n                        </div>\n                    )}\n                    <form id=\"i18n-promos-form\" onSubmit={e => this.handleSubmit(e)}>\n                        <div className=\"row\">\n                            <div className=\"col-3\">\n                                <label>\n                                    <Translation id=\"promotion_i18n_default\" defaultMessage=\"Default\" />\n                                </label>\n                            </div>\n                            <div className=\"col offset-3\">\n                                <label>\n                                    <Translation id=\"promotion_i18n_translations\" defaultMessage=\"Translations\" />\n                                </label>\n                            </div>\n                        </div>\n                        <div>\n                            {this.props.languages.map(lang => {\n                                return (\n                                    <div id={'group_' + lang.value} className=\"row promotion-i18n-row\">\n                                        <div className=\"col-1\">\n                                            <input\n                                                id={`default_${lang.value}`}\n                                                type=\"radio\"\n                                                checked={this.valueDefault() === lang.value}\n                                                required={this.valueDefault() === undefined || this.valueDefault() === null}\n                                                onChange={e => this.handleChange(e)}\n                                            />\n                                        </div>\n                                        <div className=\"col-1\">\n                                            <span className={`flag-icon flag-icon-${lang.code} mx-1`} />\n                                        </div>\n                                        <div className=\"col-2\">\n                                            <label>{lang.label}</label>\n                                        </div>\n                                        <div className=\"col-8\">\n                                            <Editor\n                                                onChange={e => this.handleChange(e)}\n                                                id={lang.value}\n                                                value={this.state.translations[lang.value] ? this.state.translations[lang.value] : ''}\n                                                tools={[\n                                                    Bold,\n                                                    Italic,\n                                                    Underline,\n                                                    Strikethrough,\n                                                    Subscript,\n                                                    Superscript,\n                                                    AlignLeft,\n                                                    AlignCenter,\n                                                    AlignRight,\n                                                    AlignJustify,\n                                                    Indent,\n                                                    Outdent,\n                                                    OrderedList,\n                                                    UnorderedList,\n                                                    Undo,\n                                                    Redo,\n                                                    FormatBlock\n                                                ]}\n                                                contentStyle={{ height: 160 }}\n                                            />\n                                        </div>\n                                        {this.props.bannerPreview && (\n                                            <div className=\"col-12 my-4\">\n\n                                                <div className=\"promotion-home-banner\">\n                                                    <div className=\"promotion-home-banner-text\" style={{backgroundImage: 'url(' + this.props.bannerPreview.url + ')'}}>\n                                                        <div dangerouslySetInnerHTML={{ __html: this.getBannerTitle(lang) }} />\n                                                        <div dangerouslySetInnerHTML={{ __html: this.getBannerDescription(lang) }} />\n                                                    </div>\n                                                    <div className=\"promotion-home-banner-image\">\n                                                        <img src={this.props.bannerPreview.url} alt=\"Promo Banner\" style={{ width: '100%' }} />\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        )}\n                                    </div>\n                                )\n                            })}\n                        </div>\n                    </form>\n                </div>\n            </Modal>\n        )\n    }\n}\nexport default injectIntl(I18nPromotionModal)\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport confirm from '../global/confirm'\nimport { mapValues } from 'lodash'\n\nlet Sphere = ({ active, filled, statusText, sphereIndex, onClick, disabled }) => {\n    return (\n        <div\n            className={`tracking-status-bar__item tracking-status-bar__item--action ${filled ? 'tracking-status-bar__item--active' : ''}  ${\n                disabled ? 'tracking-status-bar__item--disabled' : ''\n            }`}\n            onClick={() => (disabled ? null : onClick(parseInt(sphereIndex, 10)))}\n        >\n            <div className={`tracking-status-bar__item__sphere`} />\n            <div className={`tracking-status-bar__item__text`}>\n                <div>{statusText}</div>\n                {active && (\n                    <div>\n                        <i className=\"fas fa-caret-down\" />\n                    </div>\n                )}\n            </div>\n        </div>\n    )\n}\n\nlet LineSphere = ({ active, filled, statusText, index, onClick, disabled }) => {\n    return (\n        <React.Fragment>\n            <div className={`tracking-status-bar__line ${filled ? 'tracking-status-bar__line--active' : ''}  ${disabled ? 'tracking-status-bar__item--disabled' : ''}`} />\n            <Sphere active={active} disabled={disabled} filled={filled} statusText={statusText} sphereIndex={index} onClick={onClick} />\n        </React.Fragment>\n    )\n}\n\nclass StepsBar extends React.Component {\n    render() {\n        const {\n            step,\n            availableSteps,\n            canViewDiscountStep,\n            hasUnsavedChangesStepOne,\n            hasUnsavedChangesStepTwo,\n            hasUnsavedChangesStepThree,\n            hasUnsavedChangesStepFour,\n            hasUnsavedChangesStepFive,\n            hasUnsavedChangesStepSix,\n            hasUnsavedChangesStepSeven\n        } = this.props\n\n        /**\n         * Handle the confirm modal popup for each step.\n         * @param {number} incomingStep\n         */\n        const triggerConfirmUnsavedChanges = incomingStep => {\n            return confirm(this.props.intl.formatMessage({ id: 'confirm_unsaved_changes' }), {\n                textCancel: this.props.intl.formatMessage({ id: 'continue_without_saving' }),\n                textOk: this.props.intl.formatMessage({ id: 'save_and_continue' })\n            }).then(\n                confirm => {\n                    switch (step) {\n                        case 1:\n                            confirmFromStepOne(incomingStep)\n                            break\n                        case 2:\n                            confirmFromStepTwo(incomingStep)\n                            break\n                        case 3:\n                            confirmFromStepThree(incomingStep)\n                            break\n                        case 4:\n                            confirmFromStepFour(incomingStep)\n                            break\n                        case 5:\n                            confirmFromStepFive(incomingStep)\n                            break\n                        case 6:\n                            confirmFromStepSix(incomingStep)\n                            break\n                        case 7:\n                            confirmFromStepSeven(incomingStep)\n                            break\n                        default:\n                            break\n                    }\n\n                    return this.props.changeStep(incomingStep)\n                },\n                cancel => {\n                    switch (step) {\n                        case 1:\n                            cancelFromStepOne()\n                            break\n                        case 2:\n                            cancelFromStepTwo()\n                            break\n                        case 3:\n                            cancelFromStepThree()\n                            break\n                        case 4:\n                            cancelFromStepFour()\n                            break\n                        case 5:\n                            cancelFromStepFive()\n                            break\n                        case 6:\n                            cancelFromStepSix()\n                            break\n                        case 7:\n                            cancelFromStepSeven()\n                            break\n                        default:\n                            break\n                    }\n\n                    return this.props.changeStep(incomingStep)\n                }\n            )\n        }\n\n        /**\n         * Handles the call to the submit function of step 1 according to the requested step.\n         * @param {number} incomingStep\n         */\n        const confirmFromStepOne = incomingStep => {\n            const submit = this.props.handleHeaderSubmit()\n            switch (incomingStep) {\n                case 2:\n                    return submit\n                case 3:\n                    return submit\n                case 4:\n                    return submit\n                case 5:\n                    return submit\n                case 6:\n                    return submit\n                case 7:\n                    return submit\n                default:\n                    break\n            }\n        }\n\n        /**\n         * Handles the call to the submit function of step 2 according to the requested step.\n         * @param {number} incomingStep\n         */\n        const confirmFromStepTwo = incomingStep => {\n            const submit = this.props.references.chooseAreaRef.current.handleSubmit()\n            switch (incomingStep) {\n                case 1:\n                    return submit\n                case 3:\n                    return submit\n                case 4:\n                    return submit\n                case 5:\n                    return submit\n                case 6:\n                    return submit\n                case 7:\n                    return submit\n                default:\n                    break\n            }\n        }\n\n        /**\n         * Handles the call to the submit function of step 3 according to the requested step.\n         * @param {number} incomingStep\n         */\n        const confirmFromStepThree = incomingStep => {\n            const submit = this.props.references.chooseCustomersRef.current.handleSubmit()\n            switch (incomingStep) {\n                case 1:\n                    return submit\n                case 2:\n                    return submit\n                case 4:\n                    return submit\n                case 5:\n                    return submit\n                case 6:\n                    return submit\n                case 7:\n                    return submit\n                default:\n                    break\n            }\n        }\n\n        /**\n         * Handles the call to the submit function of step 4 according to the requested step.\n         * @param {number} incomingStep\n         */\n        const confirmFromStepFour = incomingStep => {\n            const submit = this.props.references.chooseMaterialsRef.current.handleSubmit()\n            switch (incomingStep) {\n                case 1:\n                    return submit\n                case 2:\n                    return submit\n                case 3:\n                    return submit\n                case 5:\n                    return submit\n                case 6:\n                    return submit\n                case 7:\n                    return submit\n                default:\n                    break\n            }\n        }\n\n        /**\n         * Handles the call to the submit function of step 5 according to the requested step.\n         * @param {number} incomingStep\n         */\n        const confirmFromStepFive = incomingStep => {\n            const submit = this.props.references.chooseDiscountsRef.current.handleSubmit()\n            switch (incomingStep) {\n                case 1:\n                    return submit\n                case 2:\n                    return submit\n                case 3:\n                    return submit\n                case 4:\n                    return submit\n                case 6:\n                    return submit\n                case 7:\n                    return submit\n                default:\n                    break\n            }\n        }\n\n        /**\n         * Handles the call to the submit function of step 6 according to the requested step.\n         * @param {number} incomingStep\n         */\n        const confirmFromStepSix = incomingStep => {\n            const submit = this.props.references.chooseTemplateRef.current.handleSubmit()\n            switch (incomingStep) {\n                case 1:\n                    return submit\n                case 2:\n                    return submit\n                case 3:\n                    return submit\n                case 4:\n                    return submit\n                case 5:\n                    return submit\n                case 7:\n                    return submit\n                default:\n                    break\n            }\n        }\n\n        /**\n         * Handles the call to the submit function of step 6 according to the requested step.\n         * @param {number} incomingStep\n         */\n        const confirmFromStepSeven = incomingStep => {\n            const submit = this.props.references.chooseBannerRef.current.handleSubmit()\n            switch (incomingStep) {\n                case 1:\n                    return submit\n                case 2:\n                    return submit\n                case 3:\n                    return submit\n                case 4:\n                    return submit\n                case 5:\n                    return submit\n                case 6:\n                    return submit\n                default:\n                    break\n            }\n        }\n\n        /**\n         * Handle the continue without saving action for step 2.\n         */\n        const cancelFromStepOne = () => {\n            /** @type {object} */\n            let stepOneUnsavedChanges = this.props.stepOneUnsavedChanges\n\n            // Transform the object values to false value\n            stepOneUnsavedChanges = mapValues(stepOneUnsavedChanges, () => false)\n\n            // Update the global state\n            this.props.setUnsavedChangesStepOne(stepOneUnsavedChanges)\n        }\n\n        /**\n         * Handle the continue without saving action for step 2.\n         */\n        const cancelFromStepTwo = () => {\n            /** @type {object} */\n            const chooseAreaRef = this.props.references.chooseAreaRef.current\n\n            /** @type {object} */\n            let unsavedChanges = chooseAreaRef && chooseAreaRef.state.hasUnsavedChanges\n\n            // Transform the object values to false value\n            unsavedChanges = mapValues(unsavedChanges, () => false)\n            // Update the global state\n            this.props.setUnsavedChangesStepTwo(unsavedChanges)\n        }\n\n        /**\n         * Handle the continue without saving action for step 3.\n         */\n        const cancelFromStepThree = () => {\n            /** @type {object} */\n            const chooseCustomersRef = this.props.references.chooseCustomersRef.current\n\n            /** @type {object} */\n            let unsavedChanges = chooseCustomersRef && chooseCustomersRef.state.hasUnsavedChanges\n\n            // Transform the object values to false value\n            unsavedChanges = mapValues(unsavedChanges, () => false)\n            // Update the global state\n            this.props.setUnsavedChangesStepThree(unsavedChanges)\n        }\n\n        /**\n         * Handle the continue without saving action for step 4.\n         */\n        const cancelFromStepFour = () => {\n            /** @type {object} */\n            const chooseMaterialsRef = this.props.references.chooseMaterialsRef.current\n\n            /** @type {object} */\n            let unsavedChanges = chooseMaterialsRef && chooseMaterialsRef.state.hasUnsavedChanges\n\n            // Transform the object values to false value\n            unsavedChanges = mapValues(unsavedChanges, () => false)\n            // Update the global state\n            this.props.setUnsavedChangesStepFour(unsavedChanges)\n        }\n\n        /**\n         * Handle the continue without saving action for step 5.\n         */\n        const cancelFromStepFive = () => {\n            /** @type {object} */\n            const chooseDiscountsRef = this.props.references.chooseDiscountsRef.current\n\n            /** @type {object} */\n            let unsavedChanges = chooseDiscountsRef && chooseDiscountsRef.state.hasUnsavedChanges\n\n            // Transform the object values to false value\n            unsavedChanges = mapValues(unsavedChanges, () => false)\n            // Update the global state\n            this.props.setUnsavedChangesStepFive(unsavedChanges)\n        }\n\n        /**\n         * Handle the continue without saving action for step 6.\n         */\n        const cancelFromStepSix = () => {\n            /** @type {object} */\n            const chooseTemplateRef = this.props.references.chooseTemplateRef.current\n\n            /** @type {object} */\n            let unsavedChanges = chooseTemplateRef && chooseTemplateRef.state.hasUnsavedChanges\n\n            // Transform the object values to false value\n            unsavedChanges = mapValues(unsavedChanges, () => false)\n            // Update the global state\n            this.props.setUnsavedChangesStepSix(unsavedChanges)\n        }\n\n        /**\n         * Handle the continue without saving action for step 7.\n         */\n        const cancelFromStepSeven = () => {\n            /** @type {object} */\n            const chooseBannerRef = this.props.references.chooseBannerRef.current\n\n            /** @type {object} */\n            let unsavedChanges = chooseBannerRef && chooseBannerRef.state.hasUnsavedChanges\n\n            // Transform the object values to false value\n            unsavedChanges = mapValues(unsavedChanges, () => false)\n            // Update the global state\n            this.props.setUnsavedChangesStepSeven(unsavedChanges)\n        }\n\n        /**\n         * Handle the change step. If the step has unsaved changes, trigger the confirm modal popup.\n         * @param {number} incomingStep\n         */\n        const handleChangeStep = incomingStep => {\n            if (step === 1 && hasUnsavedChangesStepOne) {\n                return triggerConfirmUnsavedChanges(incomingStep)\n            } else if (step === 2 && hasUnsavedChangesStepTwo) {\n                return triggerConfirmUnsavedChanges(incomingStep)\n            } else if (step === 3 && hasUnsavedChangesStepThree) {\n                return triggerConfirmUnsavedChanges(incomingStep)\n            } else if (step === 4 && hasUnsavedChangesStepFour) {\n                return triggerConfirmUnsavedChanges(incomingStep)\n            } else if (step === 5 && hasUnsavedChangesStepFive) {\n                return triggerConfirmUnsavedChanges(incomingStep)\n            } else if (step === 6 && hasUnsavedChangesStepSix) {\n                return triggerConfirmUnsavedChanges(incomingStep)\n            } else if (step === 7 && hasUnsavedChangesStepSeven) {\n                return triggerConfirmUnsavedChanges(incomingStep)\n            } else {\n                this.props.changeStep(incomingStep)\n            }\n        }\n\n        return (\n            <div className={'detail-view wrapper__tracking-status-bar'}>\n                <div className=\"tracking-status-bar tracking-status-bar--ok\">\n                    <Sphere\n                        filled={step >= 1}\n                        active={step === 1}\n                        disabled={!availableSteps.includes(1)}\n                        statusText={this.props.intl.formatMessage({ id: 'promotion_line_general_info' })}\n                        sphereIndex=\"1\"\n                        onClick={() => handleChangeStep(1)}\n                    />\n                    <LineSphere\n                        filled={step >= 2}\n                        active={step === 2}\n                        disabled={!availableSteps.includes(2)}\n                        statusText={this.props.intl.formatMessage({ id: 'promotion_line_market_target' })}\n                        index=\"2\"\n                        onClick={() => handleChangeStep(2)}\n                    />\n                    <LineSphere\n                        filled={step >= 3}\n                        active={step === 3}\n                        disabled={!availableSteps.includes(3)}\n                        statusText={this.props.intl.formatMessage({ id: 'promotion_line_customer' })}\n                        index=\"3\"\n                        onClick={() => handleChangeStep(3)}\n                    />\n                    <LineSphere\n                        filled={step >= 4}\n                        active={step === 4}\n                        disabled={!availableSteps.includes(4)}\n                        statusText={this.props.intl.formatMessage({ id: 'promotion_line_materials' })}\n                        index=\"4\"\n                        onClick={() => handleChangeStep(4)}\n                    />\n                    {canViewDiscountStep && (\n                        <LineSphere\n                            filled={step >= 5}\n                            active={step === 5}\n                            disabled={!availableSteps.includes(5)}\n                            statusText={this.props.intl.formatMessage({ id: 'promotion_line_request_discount', defaultMessage: 'Request discount' })}\n                            index=\"5\"\n                            onClick={() => handleChangeStep(5)}\n                        />\n                    )}\n                    <LineSphere\n                        filled={step >= (canViewDiscountStep ? 6 : 5)}\n                        active={step === (canViewDiscountStep ? 6 : 5)}\n                        disabled={!availableSteps.includes(canViewDiscountStep ? 6 : 5)}\n                        statusText={this.props.intl.formatMessage({ id: 'promotion_line_templates' })}\n                        index={canViewDiscountStep ? '6' : '5'}\n                        onClick={() => handleChangeStep(canViewDiscountStep ? 6 : 5)}\n                    />\n                    <LineSphere\n                        filled={step >= (canViewDiscountStep ? 7 : 6)}\n                        active={step === (canViewDiscountStep ? 7 : 6)}\n                        disabled={!availableSteps.includes(canViewDiscountStep ? 7 : 6)}\n                        statusText={this.props.intl.formatMessage({ id: 'promotion_line_banner' })}\n                        index={canViewDiscountStep ? '7' : '6'}\n                        onClick={() => handleChangeStep(canViewDiscountStep ? 7 : 6)}\n                    />\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(StepsBar)\n","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\nimport Modal from '../global/Modal'\nimport Button from '../global/Button'\nimport Translation from '../global/Translation'\nimport ReactPaginate from 'react-paginate'\nimport Spinner from '../global/Spinner'\n\nclass BannerPicker extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { selectedId: this.props.selectedId, currentPage: 0, alert: '' }\n        this.props.searchBanner(null, null, this.props.currentBannerEdit)\n    }\n    handlePageClick(page) {\n        this.setState({ currentPage: page.selected })\n        this.props.searchBanner(page.selected + 1, this.inputSearch.value, this.props.currentBannerEdit)\n    }\n    search() {\n        this.props.searchBanner(null, this.inputSearch.value, this.props.currentBannerEdit).then(() => {\n            this.setState({ currentPage: 0 })\n        })\n    }\n    render() {\n        return (\n            <Modal\n                customClass=\"banner-picker\"\n                title={<Translation id=\"select_campaign_banners\" defaultMessage=\"Select campaign banners\" />}\n                size=\"large\"\n                onClose={this.props.onClose}\n                footer={\n                    <div className=\"row w-100\">\n                        <div className=\"col-12 d-flex justify-content-around\">\n                            <nav className=\"d-flex flex-grow-1 justify-content-center\" aria-label=\"Page navigation example\">\n                                <ReactPaginate\n                                    forcePage={this.state.currentPage}\n                                    previousLabel={this.props.intl.formatMessage({ id: 'previous' })}\n                                    nextLabel={this.props.intl.formatMessage({ id: 'next' })}\n                                    breakLabel={'...'}\n                                    breakClassName={'break-me'}\n                                    pageCount={this.props.bannersPaginatedResult.last_page}\n                                    marginPagesDisplayed={2}\n                                    pageRangeDisplayed={5}\n                                    onPageChange={e => this.handlePageClick(e)}\n                                    containerClassName={'pagination m-0'}\n                                    pageClassName={'page-item'}\n                                    pageLinkClassName={'page-link'}\n                                    previousClassName={'page-item'}\n                                    previousLinkClassName={'page-link'}\n                                    nextClassName={'page-item'}\n                                    nextLinkClassName={'page-link'}\n                                    activeClassName={'active'}\n                                />\n                            </nav>\n                            <div>\n                                <Button\n                                    disabled={this.state.alert}\n                                    onClick={() => {\n                                        const found = this.props.bannersPaginatedResult.data.find(img => img.id === this.state.selectedId)\n                                        if (found) {\n                                            this.props.setBanner(found)\n                                        }\n                                        this.props.onClose()\n                                    }}\n                                >\n                                    <Translation id=\"accept\" defaultMessage=\"Accept\" />\n                                </Button>\n                            </div>\n                        </div>\n                    </div>\n                }\n            >\n                <div className=\"row\">\n                    {/* {this.state.selectedId && 'seleccionada '+this.props.currentBannerEdit+' la '+this.state.selectedId} */}\n\n                    <div className=\"col-12\">\n                        <div className=\"input-group mb-3\">\n                            <input\n                                ref={node => (this.inputSearch = node)}\n                                type=\"text\"\n                                className=\"form-control\"\n                                placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                onKeyPress={e => {\n                                    if (e.key === 'Enter') this.search()\n                                }}\n                            />\n                            <div className=\"input-group-append\">\n                                <button className=\"btn btn-outline-secondary\" type=\"button\" onClick={() => this.search()}>\n                                    <i className=\"fas fa-search\" />\n                                </button>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div className=\"row\">\n                    <div className=\"col\">\n                        {this.props.isLoading && (\n                            <div className=\"wrapper_spinner\">\n                                <Spinner isLoading={this.props.isLoading} relative />\n                            </div>\n                        )}\n                        <div className=\"row\">\n                            {this.state.alert && (\n                                <div className=\"col-12\">\n                                    <div className=\"alert alert-danger d-flex justify-content-between my-2\" role=\"alert\">\n                                        <span>{this.state.alert}</span>\n                                    </div>\n                                </div>\n                            )}\n                            {this.props.bannersPaginatedResult.data.map(img => {\n                                return (\n                                    <div\n                                        className={`col-12 col-sm-6 col-md-4 my-2`}\n                                        onClick={() => {\n                                            this.setState({ alert: '' })\n                                            let hiddenImage = document.getElementById(img.id)\n                                            if (\n                                                (this.props.currentBannerEdit === 'home' || this.props.currentBannerEdit === 'side-letter') &&\n                                                (hiddenImage.height !== this.props.bannerSizes[this.props.currentBannerEdit].height ||\n                                                    hiddenImage.width !== this.props.bannerSizes[this.props.currentBannerEdit].width)\n                                            ) {\n                                                //banner home and banner portfolio must be exact dimensions\n                                                this.setState({\n                                                    alert:\n                                                        this.props.intl.formatMessage({\n                                                            id: 'error_dimensions',\n                                                            defaultMessage: 'Error dimensions'\n                                                        }) +\n                                                        ' width: ' +\n                                                        this.props.bannerSizes[this.props.currentBannerEdit].width +\n                                                        ', height: ' +\n                                                        this.props.bannerSizes[this.props.currentBannerEdit].height\n                                                })\n                                            } else if (\n                                                (this.props.currentBannerEdit === 'landing' || this.props.currentBannerEdit === 'letter') &&\n                                                (hiddenImage.height > 800 || hiddenImage.width !== this.props.bannerSizes[this.props.currentBannerEdit].width)\n                                            ) {\n                                                //banner landing and newsletter only checks width and up to 800 height\n                                                this.setState({\n                                                    alert:\n                                                        this.props.intl.formatMessage({\n                                                            id: 'error_dimensions',\n                                                            defaultMessage: 'Error dimensions'\n                                                        }) +\n                                                        ' width: ' +\n                                                        this.props.bannerSizes[this.props.currentBannerEdit].width +\n                                                        ', max-height: ' +\n                                                        800\n                                                })\n                                            }\n                                            this.setState({ selectedId: img.id })\n                                        }}\n                                        style={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}\n                                    >\n                                        <img src={img.url} alt={img.name} className={`img-thumbnail ${this.state.selectedId === img.id ? 'img-thumbnail--selected' : ''}`} />\n                                        {/* this hidden image is for validate the real width and height of the image */}\n                                        <img src={img.url} id={img.id} alt={img.name} className={`d-none`} />\n                                        <span style={{ wordBreak: 'break-word' }}>\n                                            {img.name}{' '}\n                                            <small>\n                                                {`(${img.width}*${img.height})`}\n                                                {/*({document.getElementById(img.id) && document.getElementById(img.id).width} *{' '}*/}\n                                                {/*{document.getElementById(img.id) && document.getElementById(img.id).height})*/}\n                                            </small>\n                                        </span>\n                                    </div>\n                                )\n                            })}\n                        </div>\n                    </div>\n                </div>\n            </Modal>\n        )\n    }\n}\n\nexport default injectIntl(BannerPicker)\n","import { connect } from 'react-redux'\n\nimport BannerPicker from './BannerPicker'\nimport { getBannersPaginatedResult, getIsLoading } from '../../store/promotions/reducers'\nimport { fetchBanners } from '../../store/promotions/actions'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        bannersPaginatedResult: getBannersPaginatedResult(state),\n        isLoading: getIsLoading(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        searchBanner: (pageSelected, search, type) => dispatch(fetchBanners(pageSelected, search, type))\n    }\n}\n\nconst BannerPickerContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BannerPicker)\n\nexport default BannerPickerContainer\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../global/Translation'\nimport Modal from '../../global/Modal'\nimport BannerPicker from '../BannerPicker'\nimport BannerPickerContainer from '../BannerPickerContainer'\nimport I18nPromotionModal from '../I18nPromotionModal'\nimport Button from '../../global/Button'\nimport { defineMessages } from 'react-intl'\nimport Alerts from '../../alerts/Alerts'\nimport { cloneDeep } from 'lodash'\n\ndefineMessages({\n    MAX_SIZE: {\n        id: 'max_size',\n        description: 'max_size',\n        defaultMessage: 'Max size'\n    },\n    ERROR_DIMENSIONS: {\n        id: 'error_dimensions',\n        description: 'error_dimensions',\n        defaultMessage: 'Error dimensions'\n    }\n})\n\nclass ChooseBanner extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            newBannerLanding: false,\n            alertBannerLanding: '',\n            bannerLanding: this.props.headLandingBannerData,\n            newBannerHome: false,\n            alertBannerHome: '',\n            bannerHome: this.props.homeBannerData,\n            newBannerNewsLetter: false,\n            alertBannerNewsLetter: '',\n            bannerNewsLetter: this.props.headEmailBannerData,\n            newSideBannerNewsLetter: false,\n            alertSideBannerNewsLetter: '',\n            sideBannerNewsLetter: this.props.lateralBanner,\n            showModal: false,\n            showModalI18n: false,\n            objectToTranslate: null,\n            objectTrans: null,\n            currentBannerEdit: '', // [landing || home || letter || side-letter ]\n            currentBannerSelectedId: null,\n            //Unsaved changes\n            hasUnsavedChanges: {\n                promotionBannerTitleDirty: false,\n                promotionBannerDescriptionDirty: false,\n            },\n            bannerTitleCloned: null,\n            bannerDescriptionCloned: null\n        }\n        this.inputFileBannerLanding = React.createRef()\n        this.inputFileBannerHome = React.createRef()\n        this.inputFileBannerNewsletter = React.createRef()\n        this.inputFileSideBannerNewsletter = React.createRef()\n        this.bannerSizes = {\n            home: {\n                width: 1140,\n                height: 200\n            },\n            landing: {\n                width: 1140,\n                height: 800\n            },\n            letter: {\n                width: 800,\n                height: 800\n            },\n            'side-letter': {\n                width: 1200,\n                height: 1200\n            }\n        }\n\n        if (!this.props.translations.banner_title) this.props.saveTranslationObject('banner_title', { default: '' })\n        if (!this.props.translations.banner_description) this.props.saveTranslationObject('banner_description', { default: '' })\n    }\n\n    componentDidMount(){\n        this.props.handleReference(this)\n\n        //Get the initial value of banner title to have something to compare\n        const bannerTitleCloned = cloneDeep(this.props.translations.banner_title)\n        this.setState({ bannerTitleCloned: bannerTitleCloned })\n\n        //Get the initial value of banner title to have something to compare\n        const bannerDescriptionCloned = cloneDeep(this.props.translations.banner_description)\n        this.setState({ bannerDescriptionCloned: bannerDescriptionCloned })\n\n    }\n\n    /**\n     * Handle the state value banner title unsaved changes.\n     */\n    handleBannerTitleUnsavedChanges = () => {\n        const stateBannerTitle = this.state.bannerTitleCloned && this.state.bannerTitleCloned.default\n        const propsBannerTitle = this.props.translations.banner_title && this.props.translations.banner_title.default\n\n        // Check if old value is same or diferent of new the value. Then update state.\n        if (propsBannerTitle !== stateBannerTitle) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionBannerTitleDirty: true} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepSeven(this.state.hasUnsavedChanges)\n            })\n        } else if (propsBannerTitle === stateBannerTitle) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionBannerTitleDirty: false} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepSeven(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    /**\n     * Handle the state value banner description unsaved changes.\n     */\n    handleBannerDescriptionUnsavedChanges = () => {\n        const stateBannerDescription = this.state.bannerDescriptionCloned && this.state.bannerDescriptionCloned.default\n        const propsBannerDescription = this.props.translations.banner_description && this.props.translations.banner_description.default\n\n        // Check if old value is same or diferent of new the value. Then update state.\n        if (propsBannerDescription !== stateBannerDescription) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionBannerDescriptionDirty: true} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepSeven(this.state.hasUnsavedChanges)\n            })\n        } else if (propsBannerDescription === stateBannerDescription) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionBannerDescriptionDirty: false} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepSeven(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    validateImage = (img, typeOfImage, width, height, fnAlert) => {\n        let isValid = true\n        if ((typeOfImage === 'banner-home' || typeOfImage === 'side-banner-newsletter') && (img.height !== height || img.width !== width)) {\n            //banner home and banner portfolio must be exact dimensions\n            isValid = false\n            fnAlert(\n                this.props.intl.formatMessage({\n                    id: 'error_dimensions',\n                    defaultMessage: 'Error dimensions'\n                }) +\n                    ' width: ' +\n                    width +\n                    ', height: ' +\n                    height\n            )\n        } else if ((typeOfImage === 'banner-landing' || typeOfImage === 'banner-newsletter') && (img.height > height || img.width !== width)) {\n            //banner landing and newsletter only checks width and up to 800 height\n            isValid = false\n            fnAlert(\n                this.props.intl.formatMessage({\n                    id: 'error_dimensions',\n                    defaultMessage: 'Error dimensions'\n                }) +\n                    ' width: ' +\n                    width +\n                    ', max-height: ' +\n                    height\n            )\n        }\n\n        return isValid\n    }\n    handleSubmitUploadImage = (e, input, width, height, fnAlert, typeOfImage) => {\n        e.preventDefault()\n        let maxSize = 100000000\n        if (input && input.files && input.files[0]) {\n            let _URL = window.URL || window.webkitURL\n            let img = new Image()\n            img.onload = () => {\n                let isValid = this.validateImage(img, typeOfImage, width, height, fnAlert)\n                if (input.files[0].size >= maxSize) {\n                    isValid = false\n                    fnAlert(\n                        this.props.intl.formatMessage({\n                            id: 'max_size',\n                            defaultMessage: 'Max size'\n                        }) +\n                            ': ' +\n                            maxSize\n                    )\n                }\n                if (isValid) {\n                    let formData = new FormData()\n                    formData.append('file', input.files[0])\n                    formData.append('folder', 'promotions_ecommerce')\n                    this.props.uploadPromotionFile(formData).then(action => this.setCurrentBannerEdit(action.banner))\n                }\n            }\n            img.src = _URL.createObjectURL(input.files[0])\n        }\n    }\n\n    handleSubmit = e => {\n        if(e) e.preventDefault()\n        this.setDefaultLanguage()\n        if (!Object.keys(this.state.bannerLanding).length || !Object.keys(this.state.bannerNewsLetter).length) {\n            this.setState({ showAlertRequiredBanners: true })\n        } else {\n            this.setState({ showAlertRequiredBanners: false })\n\n            //No more unsaved changes after send the form for step one\n            this.setState({ hasUnsavedChanges: {\n                ...this.state.hasUnsavedChanges,\n                promotionBannerTitleDirty: false,\n                promotionBannerDescriptionDirty: false,\n            }}, () => {\n                this.props.sendBanners(\n                    this.state.bannerLanding,\n                    this.state.bannerHome,\n                    this.state.bannerNewsLetter,\n                    this.state.sideBannerNewsLetter,\n                    JSON.stringify(this.props.translations.banner_title),\n                    JSON.stringify(this.props.translations.banner_description)\n                )\n\n                //Update global state after form submit\n                this.props.setUnsavedChangesStepSeven(this.state.hasUnsavedChanges)\n\n                //Make sure the change step is the last function\n                //Only if event exists we use this change step. If not we use the one inside StepsBar component\n                if (e) {\n                    this.props.changeStep(this.props.step + 1)\n                }\n            })\n        }\n    }\n\n    setCurrentBannerEdit = banner => {\n        switch (this.state.currentBannerEdit) {\n            case 'landing':\n                //                 banner-home\n                // side-banner-newsletter\n                // banner-landing\n                // banner-newsletter\n                this.setState({ bannerLanding: banner, newBannerLanding: false })\n                break\n            case 'home':\n                this.setState({ bannerHome: banner, newBannerHome: false })\n                break\n            case 'letter':\n                this.setState({ bannerNewsLetter: banner, newBannerNewsLetter: false })\n                break\n            case 'side-letter':\n                this.setState({ sideBannerNewsLetter: banner, newSideBannerNewsLetter: false })\n                break\n            default:\n                break\n        }\n    }\n\n    stepBack() {\n        this.props.stepBack(this.props.step - 1)\n    }\n\n    openModalLanding = () => {\n        this.setState({\n            newBannerLanding: false,\n            showModal: true,\n            currentBannerEdit: 'landing',\n            currentBannerSelectedId: this.state.bannerLanding.id\n        })\n    }\n    openModalHome = () => {\n        this.setState({\n            newBannerHome: false,\n            showModal: true,\n            currentBannerEdit: 'home',\n            currentBannerSelectedId: this.state.bannerHome.id\n        })\n    }\n    openModalNewsletter = () => {\n        this.setState({\n            newBannerNewsLetter: false,\n            showModal: true,\n            currentBannerEdit: 'letter',\n            currentBannerSelectedId: this.state.bannerNewsLetter.id\n        })\n    }\n\n    openModalSideNewsletter = () => {\n        this.setState({\n            newSideBannerNewsLetter: false,\n            showModal: true,\n            currentBannerEdit: 'side-letter',\n            currentBannerSelectedId: this.state.sideBannerNewsLetter.id\n        })\n    }\n\n    updateTranslations(object, updatedTranslations) {\n        this.props.saveTranslationObject(object, updatedTranslations)\n        this.setState({\n            showModalI18n: false,\n            objectToTranslate: null,\n            objectTrans: null,\n            [object]: updatedTranslations\n        }, () => {\n            this.handleBannerTitleUnsavedChanges()\n            this.handleBannerDescriptionUnsavedChanges()\n        })\n    }\n\n    showI18nModal(objectId) {\n        if (objectId) {\n            this.setState({\n                showModalI18n: true,\n                objectToTranslate: objectId,\n                objectTrans: this.props.translations[objectId]\n            }, () => {\n                this.handleBannerTitleUnsavedChanges()\n                this.handleBannerDescriptionUnsavedChanges()\n            })\n        }\n    }\n\n    setDefaultLanguage() {\n        let banner_title = this.props.translations.banner_title\n        banner_title['default_text'] = banner_title[banner_title['default']]\n        let banner_description = this.props.translations.banner_description\n        banner_description['default_text'] = banner_description[banner_description['default']]\n\n        this.setState({\n            banner_title: banner_title,\n            banner_description: banner_description\n        })\n    }\n\n    render() {\n        return (\n            <div>\n                <div className=\"row\">\n                    <div className=\"col-12 col-lg-10\">\n                        <h3 style={{ fontWeight: '400' }}>\n                            <span style={{ fontWeight: '300' }}>\n                                <Translation id=\"step\" defaultMessage={'Step'} /> {this.props.step}\n                            </span>{' '}\n                            <Translation id=\"promotion_line_banner\" defaultMessage=\"Banners\" />\n                        </h3>\n                        <p>\n                            <Translation id=\"select_the_banner_to_apply_your_campaign\" defaultMessage=\"Select the banner to apply your campaign\" />\n                        </p>\n                    </div>\n                </div>\n                <form id=\"form_current_step\" onSubmit={e => this.handleSubmit(e)} ref={form => (this.form = form)}>\n                    {this.state.showAlertRequiredBanners && <Alerts alert={'BANNER_HOME_AND_BANNER_NEWSLETTER_REQUIRED'} status=\"warning\" />}\n                    <div className=\"row my-4\">\n                        <SelectOrUpload\n                            title={<Translation id=\"banner_landing\" defaultMessage=\"Landing Banner\" />}\n                            requirements={\n                                <small>\n                                    <Translation id=\"banner-landing-requirements\" defaultMessage=\"Banner landing must be 1140 width and up to 800 height\" />\n                                </small>\n                            }\n                            isNewBanner={this.state.newBannerLanding}\n                            banner={this.state.bannerLanding}\n                            openModal={() => this.openModalLanding()}\n                            setNewBanner={() => this.setState({ newBannerLanding: true })}\n                            image={'banner-landing'}\n                        />\n\n                        <SelectOrUpload\n                            title={<Translation id=\"banner_home\" defaultMessage=\"Home Banner\" />}\n                            requirements={\n                                <small>\n                                    <Translation id=\"banner-home-requirements\" defaultMessage=\"Banner home must be 1140 width and 200 height\" />\n                                </small>\n                            }\n                            isNewBanner={this.state.newBannerHome}\n                            banner={this.state.bannerHome}\n                            openModal={() => this.openModalHome()}\n                            setNewBanner={() => this.setState({ newBannerHome: true })}\n                            image={'banner-home'}\n                            clear={() => this.setState({ bannerHome: {}, newBannerHome: false })}\n                        />\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-6 px-5\">\n                            {this.state.alertBannerLanding && (\n                                <div className=\"alert alert-danger d-flex justify-content-between my-2\" role=\"alert\">\n                                    <span>{this.state.alertBannerLanding}</span>\n                                    <i className=\"fal fa-times \" style={{ cursor: 'pointer' }} onClick={() => this.setState({ alertBannerLanding: '' })} />\n                                </div>\n                            )}\n                            {this.state.newBannerLanding ? (\n                                <div className=\"d-flex justify-content-between py-2\">\n                                    <div className=\"form-group input_name overflow-hidden my-0 mr-2\">\n                                        <input\n                                            name=\"new-banner-landing\"\n                                            id=\"new-banner-landing\"\n                                            ref={this.inputFileBannerLanding}\n                                            required\n                                            type=\"file\"\n                                            max-size=\"1000\"\n                                            className=\"form-control\"\n                                            data-cy=\"new-banner-landing\"\n                                        />\n                                    </div>\n\n                                    <div className=\"d-flex align-items-center\">\n                                        <Button\n                                            onClick={e =>\n                                                this.setState({ currentBannerEdit: 'landing' }, () =>\n                                                    this.handleSubmitUploadImage(\n                                                        e,\n                                                        this.inputFileBannerLanding.current,\n                                                        1140,\n                                                        800,\n                                                        msg => this.setState({ alertBannerLanding: msg }),\n                                                        'banner-landing'\n                                                    )\n                                                )\n                                            }\n                                        >\n                                            <Translation id=\"upload\" defaultMessage=\"Upload\" />\n                                        </Button>\n                                    </div>\n                                </div>\n                            ) : (\n                                this.state.bannerLanding &&\n                                this.state.bannerLanding.url && (\n                                    <div className=\"py-4\" onClick={() => this.openModalLanding()}>\n                                        <div>\n                                            <img src={this.state.bannerLanding.url} alt=\"img-fluid\" className=\"img-fluid\" />\n                                            <div className=\"my-2\">\n                                                <span>{this.state.bannerLanding.name}</span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                )\n                            )}\n                        </div>\n                        <div className=\"col-12 col-md-6 px-5\">\n                            {this.state.alertBannerHome && (\n                                <div className=\"alert alert-danger d-flex justify-content-between my-2\" role=\"alert\">\n                                    <span>{this.state.alertBannerHome}</span>\n                                    <i className=\"fal fa-times \" style={{ cursor: 'pointer' }} onClick={() => this.setState({ alertBannerHome: '' })} />\n                                </div>\n                            )}\n                            {this.state.newBannerHome ? (\n                                <div className=\"d-flex justify-content-between py-2\">\n                                    <div className=\"form-group input_name overflow-hidden my-0 mr-2\">\n                                        <input\n                                            name=\"new-banner-home\"\n                                            id=\"new-banner-home\"\n                                            ref={this.inputFileBannerHome}\n                                            required\n                                            type=\"file\"\n                                            max-size=\"1000\"\n                                            className=\"form-control\"\n                                            data-cy=\"new-banner-home\"\n                                        />\n                                    </div>\n                                    <div className=\"d-flex align-items-center\">\n                                        <Button\n                                            onClick={e =>\n                                                this.setState({ currentBannerEdit: 'home' }, () =>\n                                                    this.handleSubmitUploadImage(\n                                                        e,\n                                                        this.inputFileBannerHome.current,\n                                                        1140,\n                                                        200,\n                                                        msg => this.setState({ alertBannerHome: msg }),\n                                                        'banner-home'\n                                                    )\n                                                )\n                                            }\n                                        >\n                                            <Translation id=\"upload\" defaultMessage=\"Upload\" />\n                                        </Button>\n                                    </div>\n                                </div>\n                            ) : (\n                                this.state.bannerHome &&\n                                this.state.bannerHome.url && (\n                                    <div className=\"py-4\" onClick={() => this.openModalHome()}>\n                                        <div>\n                                            <img src={this.state.bannerHome.url} alt=\"img-fluid\" className=\"img-fluid\" />\n                                            <div className=\"my-2\">\n                                                <span>{this.state.bannerHome.name}</span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                )\n                            )}\n                        </div>\n                    </div>\n                    <div className=\"row my-4\">\n                        <SelectOrUpload\n                            title={<Translation id=\"banner_newsletter\" defaultMessage=\"Newsletter Banner\" />}\n                            requirements={\n                                <small>\n                                    <Translation id=\"banner-newsletter-requirements\" defaultMessage=\"Banner newsletter must be 800 width and up to 800 height\" />\n                                </small>\n                            }\n                            isNewBanner={this.state.newBannerNewsLetter}\n                            banner={this.state.bannerNewsLetter}\n                            openModal={() => this.openModalNewsletter()}\n                            setNewBanner={() => this.setState({ newBannerNewsLetter: true })}\n                            image={'banner-newsletter'}\n                        />\n\n                        <SelectOrUpload\n                            title={<Translation id=\"side_banner_newsletter\" defaultMessage=\"Portfolio Banner\" />}\n                            requirements={\n                                <small>\n                                    <Translation id=\"banner-portfolio-requirements\" defaultMessage=\"Banner portfolio must be 1200 width and 1200 height\" />\n                                </small>\n                            }\n                            isNewBanner={this.state.newSideBannerNewsLetter}\n                            banner={this.state.sideBannerNewsLetter}\n                            openModal={() => this.openModalSideNewsletter()}\n                            setNewBanner={() => this.setState({ newSideBannerNewsLetter: true })}\n                            image={'side-banner-newsletter'}\n                            clear={() => this.setState({ sideBannerNewsLetter: {}, newSideBannerNewsLetter: false })}\n                        />\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-6 px-5\">\n                            {this.state.alertBannerNewsLetter && (\n                                <div className=\"alert alert-danger d-flex justify-content-between my-2\" role=\"alert\">\n                                    <span>{this.state.alertBannerNewsLetter}</span>\n                                    <i className=\"fal fa-times \" style={{ cursor: 'pointer' }} onClick={() => this.setState({ alertBannerNewsLetter: '' })} />\n                                </div>\n                            )}\n                            {this.state.newBannerNewsLetter ? (\n                                <div className=\"d-flex justify-content-between py-2\">\n                                    <div className=\"form-group input_name overflow-hidden my-0 mr-2\">\n                                        <input\n                                            name=\"new-banner-newsletter\"\n                                            id=\"new-banner-newsletter\"\n                                            ref={this.inputFileBannerNewsletter}\n                                            required\n                                            type=\"file\"\n                                            max-size=\"1000\"\n                                            className=\"form-control\"\n                                            data-cy=\"new-banner-newsletter\"\n                                        />\n                                    </div>\n                                    <div className=\"d-flex align-items-center\">\n                                        <Button\n                                            onClick={e =>\n                                                this.setState({ currentBannerEdit: 'letter' }, () =>\n                                                    this.handleSubmitUploadImage(\n                                                        e,\n                                                        this.inputFileBannerNewsletter.current,\n                                                        800,\n                                                        800,\n                                                        msg => this.setState({ alertBannerNewsLetter: msg }),\n                                                        'banner-newsletter'\n                                                    )\n                                                )\n                                            }\n                                        >\n                                            <Translation id=\"upload\" defaultMessage=\"Upload\" />\n                                        </Button>\n                                    </div>\n                                </div>\n                            ) : (\n                                this.state.bannerNewsLetter &&\n                                this.state.bannerNewsLetter.url && (\n                                    <div className=\"py-4\" onClick={() => this.openModalLanding()}>\n                                        <div>\n                                            <img src={this.state.bannerNewsLetter.url} alt=\"img-fluid\" className=\"img-fluid\" />\n                                            <div className=\"my-2\">\n                                                <span>{this.state.bannerNewsLetter.name}</span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                )\n                            )}\n                        </div>\n                        <div className=\"col-12 col-md-6 px-5\">\n                            {this.state.alertSideBannerNewsletter && (\n                                <div className=\"alert alert-danger d-flex justify-content-between my-2\" role=\"alert\">\n                                    <span>{this.state.alertSideBannerNewsletter}</span>\n                                    <i className=\"fal fa-times \" style={{ cursor: 'pointer' }} onClick={() => this.setState({ alertSideBannerNewsletter: '' })} />\n                                </div>\n                            )}\n                            {this.state.newSideBannerNewsLetter ? (\n                                <div className=\"d-flex justify-content-between py-2\">\n                                    <div className=\"form-group input_name overflow-hidden my-0 mr-2\">\n                                        <input\n                                            name=\"new-side-banner-newsletter\"\n                                            id=\"new-side-banner-newsletter\"\n                                            ref={this.inputFileSideBannerNewsletter}\n                                            required\n                                            type=\"file\"\n                                            max-size=\"1000\"\n                                            className=\"form-control\"\n                                            data-cy=\"new-side-banner-newsletter\"\n                                        />\n                                    </div>\n                                    <div className=\"d-flex align-items-center\">\n                                        <Button\n                                            onClick={e =>\n                                                this.setState({ currentBannerEdit: 'side-letter' }, () =>\n                                                    this.handleSubmitUploadImage(\n                                                        e,\n                                                        this.inputFileSideBannerNewsletter.current,\n                                                        1200,\n                                                        1200,\n                                                        msg => this.setState({ alertSideBannerNewsletter: msg }),\n                                                        'side-banner-newsletter'\n                                                    )\n                                                )\n                                            }\n                                        >\n                                            <Translation id=\"upload\" defaultMessage=\"Upload\" />\n                                        </Button>\n                                    </div>\n                                </div>\n                            ) : (\n                                this.state.sideBannerNewsLetter &&\n                                this.state.sideBannerNewsLetter.url && (\n                                    <div className=\"py-4\" onClick={() => this.openModalHome()}>\n                                        <div>\n                                            <img src={this.state.sideBannerNewsLetter.url} alt=\"img-fluid\" className=\"img-fluid\" />\n                                            <div className=\"my-2\">\n                                                <span>{this.state.sideBannerNewsLetter.name}</span>\n                                            </div>\n                                        </div>\n                                    </div>\n                                )\n                            )}\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <hr />\n                            <h5>\n                                <Translation\n                                    id=\"enter_the_title_and_description_to_appear_inside_the_banner_optional\"\n                                    defaultMessage=\"Enter the title and description to appear inside the banner (optional)\"\n                                />\n                            </h5>\n                        </div>\n                        <div className=\"col-6\">\n                            <div className=\"form-group set_commercial_name\">\n                                <label htmlFor=\"banner_title\">\n                                    <Translation id=\"banner_title\" defaultMessage=\"Banner title\" />\n                                </label>\n                                <Button className=\"promotion-button d-inline-block\" onClick={() => {\n                                    this.showI18nModal('banner_title')\n                                    this.handleBannerTitleUnsavedChanges()\n                                }}>\n                                    <Translation id=\"promotion_edit_view_title_name\" defaultMessage=\"Edit/View title name\" />\n                                </Button>\n                            </div>\n                        </div>\n                        <div className=\"col-6\">\n                            <div className=\"form-group set_description\">\n                                <label htmlFor=\"banner_description\">\n                                    <Translation id=\"banner_description\" defaultMessage=\"Banner description\" />\n                                </label>\n                                <Button className=\"promotion-button d-inline-block\" onClick={() => {\n                                    this.showI18nModal('banner_description')\n                                    this.handleBannerDescriptionUnsavedChanges()\n                                }}>\n                                    <Translation id=\"promotion_edit_view_description\" defaultMessage=\"Edit/View description\" />\n                                </Button>\n                            </div>\n                        </div>\n                    </div>\n                </form>\n                {this.state.showModal && (\n                    <BannerPickerContainer\n                        bannerSizes={this.bannerSizes}\n                        selectedId={this.state.currentBannerSelectedId}\n                        setBanner={banner => this.setCurrentBannerEdit(banner)}\n                        onClose={() => this.setState({ showModal: false })}\n                        currentBannerEdit={this.state.currentBannerEdit}\n                    />\n                )}\n                {this.state.showModalI18n && (\n                    <I18nPromotionModal\n                        bannerPreview={this.state.bannerHome}\n                        allTranslations={this.props.translations}\n                        translations={this.state.objectTrans}\n                        languages={this.props.languages}\n                        title={this.props.intl.formatMessage({ id: this.state.objectToTranslate })}\n                        type={this.state.objectToTranslate}\n                        onCloseModal={() =>\n                            this.setState({\n                                showModalI18n: false,\n                                objectToTranslate: null,\n                                objectTrans: null\n                            }, () => {\n                                this.handleBannerTitleUnsavedChanges()\n                                this.handleBannerDescriptionUnsavedChanges()\n                            })\n                        }\n                        onSaveForm={(object, updatedTranslations) => this.updateTranslations(object, updatedTranslations)}\n                    />\n                )}\n            </div>\n        )\n    }\n}\n\nexport default ChooseBanner = withRouter(injectIntl(ChooseBanner))\n\nconst SelectOrUpload = ({ title, isNewBanner, banner, openModal, setNewBanner, clear, requirements, image }) => {\n    return (\n        <div className=\"col-12 col-md-6 px-5 d-flex flex-column\">\n            <h4>{title}</h4>\n            <div className=\"flex-grow-1\" style={{ margin: '5px 0px' }}>\n                <ul>\n                    <li>{requirements}</li>\n                    <li>\n                        <small>\n                            <Translation id=\"10MB_limit\" defaultMessage=\"Max size is 10 mb\" />\n                        </small>\n                    </li>\n                    {(image === 'banner-landing' || image === 'banner-newsletter') && (\n                        <li>\n                            <small>\n                                <Translation id=\"required_image\" defaultMessage=\"Required image\" />\n                            </small>\n                        </li>\n                    )}\n                </ul>\n            </div>\n            <div>\n                <div className=\"btn-group btn-group-toggle\">\n                    <label className={`btn btn-secondary ${!isNewBanner && banner && !!banner.id ? 'active' : ''}`} onClick={openModal}>\n                        <Translation id=\"select\" defaultMessage=\"Select\" />\n                    </label>\n                    <label className={`btn btn-secondary ${isNewBanner ? 'active' : ''}`} onClick={setNewBanner}>\n                        <Translation id=\"upload_new\" defaultMessage=\"Upload New\" />\n                    </label>\n                    {clear && (\n                        <label className={`btn btn-secondary`} onClick={clear}>\n                            <Translation id=\"clear\" defaultMessage=\"Clear\" />\n                        </label>\n                    )}\n                </div>\n            </div>\n        </div>\n    )\n}\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../global/Translation'\nimport Modal from '../../global/Modal'\nimport ReactTable from 'react-table'\nimport Spinner from '../../global/Spinner'\nimport Button from '../../global/Button'\nimport Alerts from '../../alerts/Alerts'\n\nclass ChooseCustomers extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedCustomers: this.props.customersSelected,\n            showModalToSelect: false,\n            search: '',\n            searchOnModal: '',\n            //Unsaved changes\n            hasUnsavedChanges: {\n                promotionCustomersDirty: false\n            }\n        }\n    }\n\n    handleSubmit = e => {\n        if (e) e.preventDefault()\n            //No more unsaved changes after send the form for step three\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionCustomersDirty: false }}, () => {\n                this.props.sendCustomersSelected(this.state.selectedCustomers)\n                //Update global state after form submit\n                this.props.setUnsavedChangesStepThree(this.state.hasUnsavedChanges)\n\n                //Make sure the change step is the last function\n                //Only if event exists we use this change step. If not we use the one inside StepsBar component\n                if (e) {\n                    this.props.changeStep(this.props.step + 1)\n                }\n            })\n        \n    }\n\n    componentDidMount = () => {\n        this.props.handleReference(this)\n        this.props.fetchCustomersOfArea(this.props.market, this.props.countries, this.props.centers)\n    }\n\n    /**\n     * Handle the state value customers unsaved changes.\n     */\n    handleCustomersUnsavedChanges = () => {\n        const stateCustomers = this.state.selectedCustomers\n        const propsCustomers = this.props.customersSelected\n\n        if ((propsCustomers && JSON.stringify(propsCustomers).trim()) !== (stateCustomers && JSON.stringify(stateCustomers).trim())) {\n            this.setState({hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionCustomersDirty: true}}, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepThree(this.state.hasUnsavedChanges)\n            })\n        } else if ((propsCustomers && JSON.stringify(propsCustomers).trim()) === (stateCustomers && JSON.stringify(stateCustomers).trim())) {\n            this.setState({hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionCustomersDirty: false}}, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepThree(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    selectCustomer = customerId => {\n        if (this.state.selectedCustomers.includes(customerId)) {\n            this.setState({ selectedCustomers: this.state.selectedCustomers.filter(customer => customer !== customerId) }, () => {\n                this.handleCustomersUnsavedChanges()\n            })\n        } else {\n            this.setState({ selectedCustomers: this.state.selectedCustomers.concat(customerId) }, () => {\n                this.handleCustomersUnsavedChanges()\n            })\n        }\n    }\n\n    render() {\n        //search on users modal\n        let usersFiltered = null\n        if (this.state.searchOnModal) {\n            usersFiltered = this.props.customersOfArea\n            usersFiltered = usersFiltered.filter(row => {\n                return row.login.toLowerCase().includes(this.state.searchOnModal.toLowerCase()) || row.name.toLowerCase().includes(this.state.searchOnModal.toLowerCase())\n            })\n        }\n        const users = usersFiltered !== null ? usersFiltered : this.props.customersOfArea\n\n        //search on users selected\n        let usersSelectedFiltered = this.props.customersOfArea.filter(row => this.state.selectedCustomers.includes(row.login))\n        if (this.state.search) {\n            usersSelectedFiltered = usersSelectedFiltered.filter(row => {\n                return (\n                    row.login.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    row.name.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    row.market.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    this.props.intl\n                        .formatMessage({ id: 'country_' + row.country })\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase())\n                )\n            })\n        }\n        const usersSelected = usersSelectedFiltered !== null ? usersSelectedFiltered : this.props.usersSelected\n        if (!this.props.market || !this.props.countries || !this.props.centers) {\n            return <Alerts alert={'NEED_TO_COMPLETE_STEP_2'} status=\"warning\" />\n        }\n        return (\n            <div>\n                <div className=\"row\">\n                    <div className=\"col-12 col-lg-10\">\n                        <h3 style={{ fontWeight: '400' }}>\n                            <span style={{ fontWeight: '300' }}>\n                                <Translation id=\"step\" defaultMessage={'Step'} /> {this.props.step}\n                            </span>{' '}\n                            <Translation id=\"promotion_line_customer\" defaultMessage=\"Customer\" />\n                        </h3>\n                        <p>\n                            <Translation id=\"select_the_customer_to_apply_your_campaign\" defaultMessage=\"Select the customer to apply your campaign\" />\n                        </p>\n                    </div>\n                    <div className=\"col-12 col-lg-2\">\n                        <Button\n                            gentle\n                            onClick={() => {\n                                this.setState({ showModalToSelect: true })\n                            }}\n                        >\n                            <Translation id=\"add\" defaultMessage=\"Add\" />\n                        </Button>\n                    </div>\n                </div>\n                <div className=\"container\">\n                    <div className=\"row\">\n                        <div className=\"col-6 col-lg 8\">\n                            <div className=\"search-bar\">\n                                <input\n                                    type=\"text\"\n                                    data-qa=\"query\"\n                                    className=\"search-box form-control\"\n                                    placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                    data-cy=\"Impersonate_modal__search_box\"\n                                    value={this.state.search}\n                                    onChange={e =>\n                                        this.setState({\n                                            search: e.target.value\n                                        })\n                                    }\n                                />\n                            </div>\n                        </div>\n                    </div>\n\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <ReactTable\n                                data={usersSelected}\n                                loading={this.props.isSending}\n                                loadingText={<Spinner isLoading={this.props.isSending} />}\n                                columns={[\n                                    {\n                                        Header: <Translation id=\"customer_id\" defaultMessage=\"Customer id\" />,\n                                        accessor: 'login',\n                                        maxWidth: 80\n                                    },\n                                    {\n                                        Header: <Translation id=\"customer_name\" defaultMessage=\"Customer name\" />,\n                                        accessor: 'name'\n                                    },\n                                    {\n                                        Header: <Translation id=\"market\" defaultMessage=\"Market\" />,\n                                        accessor: 'market',\n                                        maxWidth: 80\n                                    },\n                                    {\n                                        Header: <Translation id=\"country\" defaultMessage=\"Country\" />,\n                                        accessor: 'country',\n                                        maxWidth: 80,\n                                        Cell: ({ original }) => {\n                                            return this.props.intl.formatMessage({ id: 'country_' + original.country })\n                                        }\n                                    },\n                                    {\n                                        Header: <Translation id=\"center\" defaultMessage=\"Center\" />,\n                                        accessor: 'center',\n                                        maxWidth: 80\n                                    },\n                                    //     {\n                                    //         Header: '',\n                                    //         Cell: ({ original }) => {\n                                    //             return (\n                                    //                     <input\n                                    //     type=\"checkbox\"\n                                    //     onClick={() => this.setState(original.login)}\n                                    //     key={original.login}\n                                    //     defaultChecked={this.state.selectedCustomers.includes(original.login)}\n                                    // />\n                                    //             )\n                                    //         }\n                                    //     }\n                                    {\n                                        Header: <Translation id=\"accept_email_promotions\" defaultMessage=\"Accept Email Promotions\" />,\n                                        maxWidth: 80,\n                                        Cell: ({ original }) => {\n                                            return <div key={'have_accept_mailing_' + original.login}>{original.preferences ? <i className=\"fal fa-check\" /> : null}</div>\n                                        }\n                                    },\n                                    {\n                                        Header: <Translation id=\"delete\" defaultMessage=\"Delete\" />,\n                                        maxWidth: 80,\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <div>\n                                                    <div className=\"tooltip\">\n                                                        <span\n                                                            className=\"bt-delete\"\n                                                            onClick={() => {\n                                                                const newSelectedCustomers = this.state.selectedCustomers.filter(it => it !== original.login)\n                                                                this.setState({ selectedCustomers: newSelectedCustomers }, () => {\n                                                                    this.handleCustomersUnsavedChanges()\n                                                                })\n                                                            }}\n                                                            style={{ cursor: 'pointer' }}\n                                                        >\n                                                            <i className=\"fal fa-times\" />\n                                                        </span>\n                                                    </div>\n                                                </div>\n                                            )\n                                        }\n                                    }\n                                ]}\n                                defaultPageSize={4}\n                                pageSizeOptions={[4, 8, 10, 25, 50, 100]}\n                                previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                noDataText={\n                                    <div>\n                                        <Translation id=\"you_need_to_select_customers_for_the_campaign\" defaultMessage=\"You need to select customers for the campaign\" />\n                                        <Button\n                                            gentle\n                                            onClick={() => {\n                                                this.setState({ showModalToSelect: true })\n                                            }}\n                                        >\n                                            <Translation id=\"add\" defaultMessage=\"Add\" />\n                                        </Button>\n                                    </div>\n                                }\n                                pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                            />\n                            <form id=\"form_current_step\" onSubmit={e => this.handleSubmit(e)} />\n                        </div>\n                    </div>\n                    {this.state.showModalToSelect && (\n                        <Modal\n                            title={<Translation id=\"select_campaign_customers\" defaultMessage=\"Select campaign customers\" />}\n                            onClose={() => this.setState({ showModalToSelect: false })}\n                            footer={\n                                <div className=\"col-12 col-lg-offset-9 col-lg-3\">\n                                    <Button gentle onClick={() => this.setState({ showModalToSelect: false })}>\n                                        <Translation id=\"ok\" defaultMessage=\"Ok\" />\n                                    </Button>\n                                </div>\n                            }\n                            size=\"xl\"\n                        >\n                            <div className=\"container p-0\">\n                                <div className=\"col-12 p-0\">\n                                    <form onSubmit={e => this.handleSubmit(e)}>\n                                        <div className=\"row\">\n                                            <div className=\"col-12 col-lg-6\">\n                                                <div className=\"search-bar\">\n                                                    <input\n                                                        type=\"text\"\n                                                        data-qa=\"query\"\n                                                        className=\"search-box form-control\"\n                                                        placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                                        data-cy=\"Impersonate_modal__search_box\"\n                                                        value={this.state.searchOnModal}\n                                                        onChange={e =>\n                                                            this.setState({\n                                                                searchOnModal: e.target.value\n                                                            })\n                                                        }\n                                                    />\n                                                </div>\n                                            </div>\n                                            <div className=\"col-6 col-lg-3\">\n                                                {/* <a href={} data-cy=\"impersonate__link_download_users_list\"> */}\n                                                <Button\n                                                    onClick={() => {\n                                                        this.setState({ selectedCustomers: users.map(a => a.login) })\n                                                    }}\n                                                >\n                                                    <Translation id=\"select_all\" defaultMessage=\"Select all\" />\n                                                </Button>\n                                                {/* </a> */}\n                                            </div>\n                                            <div className=\"col-6 col-lg-3\">\n                                                {/* <a href={} data-cy=\"impersonate__link_download_users_list\"> */}\n                                                <Button\n                                                    onClick={() => {\n                                                        const usersFiltered = users.map(user => user.login)\n                                                        const newSelectedCustomers = this.state.selectedCustomers.filter(it => !usersFiltered.includes(it))\n                                                        this.setState({ selectedCustomers: newSelectedCustomers })\n                                                    }}\n                                                >\n                                                    <Translation id=\"remove_all\" defaultMessage=\"Remove all\" />\n                                                </Button>\n                                                {/* </a> */}\n                                            </div>\n                                        </div>\n                                        <div className=\"row\">\n                                            <div className=\"col-12\">\n                                                <ReactTable\n                                                    data={users}\n                                                    loading={this.props.isLoading}\n                                                    loadingText={<Spinner isLoading={this.props.isLoading} />}\n                                                    columns={[\n                                                        {\n                                                            Header: <Translation id=\"customer_id\" defaultMessage=\"Customer id\" />,\n                                                            accessor: 'login'\n                                                        },\n                                                        {\n                                                            Header: <Translation id=\"customer_name\" defaultMessage=\"Customer name\" />,\n                                                            accessor: 'name'\n                                                        },\n                                                        {\n                                                            Header: <Translation id=\"market\" defaultMessage=\"Market\" />,\n                                                            accessor: 'market',\n                                                            maxWidth: 100\n                                                        },\n                                                        {\n                                                            Header: <Translation id=\"country\" defaultMessage=\"Country\" />,\n                                                            accessor: 'country',\n                                                            Cell: ({ original }) => {\n                                                                return this.props.intl.formatMessage({ id: 'country_' + original.country })\n                                                            },\n                                                            maxWidth: 100\n                                                        },\n                                                        {\n                                                            Header: <Translation id=\"center\" defaultMessage=\"Center\" />,\n                                                            accessor: 'center',\n                                                            maxWidth: 80\n                                                        },\n                                                        {\n                                                            Header: <Translation id=\"select\" defaultMessage=\"Select\" />,\n                                                            maxWidth: 80,\n                                                            Cell: ({ original }) => {\n                                                                return (\n                                                                    <input\n                                                                        type=\"checkbox\"\n                                                                        onClick={() => this.selectCustomer(original.login)}\n                                                                        key={original.login}\n                                                                        defaultChecked={this.state.selectedCustomers.includes(original.login)}\n                                                                    />\n                                                                )\n                                                            }\n                                                        }\n                                                    ]}\n                                                    defaultPageSize={8}\n                                                    pageSizeOptions={[8, 25, 50, 100]}\n                                                    previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                                    nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                                    noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                                                    pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                                    ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                                                />\n                                            </div>\n                                        </div>\n                                    </form>\n                                </div>\n                            </div>\n                        </Modal>\n                    )}\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default ChooseCustomers = withRouter(injectIntl(ChooseCustomers))\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../global/Translation'\nimport Button from '../../global/Button'\nimport Select from 'react-select'\nimport confirm from '../../global/confirm'\n\nclass ChooseArea extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            market: this.props.market,\n            countries: this.props.countries,\n            centers: this.props.centers,\n            //Unsaved changes\n            hasUnsavedChanges: {\n                promotionMarketDirty: false,\n                promotionCountriesDirty: false,\n                promotionCentersDirty: false\n            }\n        }\n\n        if (!this.props.centers || !(this.props.centers && this.props.centers.length)) {\n            this.props.getMarkets().then(() => {\n                let markets = this.getMarkets()\n                if (markets.length === 1) {\n                    this.handleMarketChange(markets[0])\n                }\n            })\n        }\n    }\n\n    componentDidMount(){\n        this.props.handleReference(this)\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (prevProps.fetchedCenters !== null && this.props.fetchedCenters !== null && JSON.stringify(prevProps.fetchedCenters) !== JSON.stringify(this.props.fetchedCenters)) {\n            let centers = this.state.centers.filter(center => {\n                return this.props.fetchedCenters.filter(fetched => fetched.id === center.value).length > 0\n            })\n            this.setState({ centers: centers })\n        }\n    }\n\n    getMarkets = () => {\n        return this.props.fetchedMarkets\n            .map(market => {\n                return { value: market.name, label: market.name, salesOrg: market.salesOrg }\n            })\n            .sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0))\n    }\n\n    getCountries = () => {\n        return Object.keys(this.props.fetchedCountries)\n            .map(country => {\n                return {\n                    value: country,\n                    label: this.props.intl.formatMessage({ id: 'country_' + country }),\n                    salesOrg: this.props.fetchedCountries[country]\n                }\n            })\n            .sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0))\n    }\n\n    getCenters = () => {\n        return this.props.fetchedCenters\n            .map(center => {\n                return { value: center.id, label: center.id + ' ' + center.name, salesOrg: center.salesOrg }\n            })\n            .sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0))\n    }\n\n    handleMarketChange = selectedOption => {\n        if (selectedOption !== null) {\n            this.setState(\n                {\n                    market: selectedOption.value,\n                    countries: [],\n                    centers: []\n                },\n                () => {\n                    this.props.getCountries(selectedOption.salesOrg).then(() => {\n                        let countries = this.getCountries()\n                        if (countries.length === 1) {\n                            this.handleCountriesChange([countries[0]])\n                        }\n                    })\n\n                    // Handle unsaved changes for input market\n                    this.handleMarketUnsavedChanges()\n                }\n            )\n        } else {\n            this.setState({ market: selectedOption })\n        }\n    }\n\n    handleCountriesChange = selectedOption => {\n        if (selectedOption !== null && Object.keys(selectedOption).length > 0) {\n            let selected = selectedOption\n            let salesOrgs = []\n            selectedOption.forEach(country => {\n                country.salesOrg.forEach(salesOrg => {\n                    //For multiples salesorg at country\n                    salesOrgs.push(salesOrg)\n                })\n            })\n            this.setState({ countries: selected, centers: [] }, () => {\n                //Call the update of unsaved changes state\n                this.handleCountriesUnsavedChanges()\n                    this.props.getCenters(salesOrgs).then(() => {\n                        let centers = this.getCenters()\n                        if (centers.length === 1) {\n                            this.handleCentersChange([centers[0]])\n                        }\n                    })\n                }\n            )\n        } else {\n            //If empty select clear centers selection\n            this.setState({ countries: selectedOption, centers: [] })\n        }\n    }\n\n    handleCentersChange = selectedOption => {\n        if (selectedOption !== null) {\n            let selected = selectedOption\n            this.setState({ centers: selected }, () => {\n                this.handleCentersUnsavedChanges()\n            })\n        } else {\n            this.setState({ centers: selectedOption })\n        }\n    }\n\n    compareArrayOfObjectsByValue(oldObjects, newObjects) {\n        let isEquivalent = oldObjects.length === newObjects.length\n        if (isEquivalent) {\n            isEquivalent = oldObjects.every(oldObject => newObjects.find(newObject => oldObject.value === newObject.value))\n        }\n        return isEquivalent\n    }\n\n    handleSubmit = e => {\n        if (e) e.preventDefault()\n        if (\n            (this.props.market && this.props.market !== this.state.market) ||\n            (this.props.countries.length && !this.compareArrayOfObjectsByValue(this.props.countries, this.state.countries)) ||\n            (this.props.centers.length && !this.compareArrayOfObjectsByValue(this.props.centers, this.state.centers))\n        ) {\n            confirm(this.props.intl.formatMessage({ id: 'promotion_confirm_clean_customers_materials' }), {intl: this.props.intl}).then(\n                confirm => {\n                    this.props.sendCustomersSelected([])\n                    this.props.sendMaterialsSelected([])\n                    \n                    //No more unsaved changes after send the form for step two\n                    this.setState({hasUnsavedChanges: {\n                        ...this.state.hasUnsavedChanges,\n                        promotionMarketDirty: false,\n                        promotionCountriesDirty: false,\n                        promotionCentersDirty: false\n                    }}, () => {\n                        this.props.sendPromotionArea(this.state.market, this.state.countries, this.state.centers)\n                        //Update global state after form submit\n                        this.props.setUnsavedChangesStepTwo(this.state.hasUnsavedChanges)\n                        //Make sure the change step is the last function\n                        \n                        //Only if event exists we use this change step. If not we use the one inside StepsBar component\n                        if (e) {\n                            this.props.changeStep(this.props.step + 1)\n                        }\n                    })\n                    \n                },\n                cancel => {}\n            )\n        } else {\n            //No more unsaved changes after send the form for step two\n            this.setState({hasUnsavedChanges: {\n                ...this.state.hasUnsavedChanges,\n                promotionMarketDirty: false,\n                promotionCountriesDirty: false,\n                promotionCentersDirty: false\n            }}, () => {\n                this.props.sendPromotionArea(this.state.market, this.state.countries, this.state.centers)\n                //Update global state after form submit\n                this.props.setUnsavedChangesStepTwo(this.state.hasUnsavedChanges)\n                //Make sure the change step is the last function\n\n                //Only if event exists we use this change step. If not we use the one inside StepsBar component\n                if (e) {\n                    this.props.changeStep(this.props.step + 1)\n                }\n            })\n        }\n    }\n\n    /**\n     * Handle the state value markets unsaved changes.\n     */\n    handleMarketUnsavedChanges = () => {\n        const stateMarket = this.state.market\n        const propsMarket = this.props.market\n\n        if (propsMarket !== stateMarket) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionMarketDirty: true} }, () => {\n                this.props.setUnsavedChangesStepTwo(this.state.hasUnsavedChanges)\n            })\n        } else if (propsMarket === stateMarket) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionMarketDirty: false} }, () => {\n                this.props.setUnsavedChangesStepTwo(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    /**\n     * Handle the state value countries unsaved changes.\n     */\n    handleCountriesUnsavedChanges = () => {\n        const stateCountries = this.state.countries\n        const propsCountries = this.props.countries\n        \n        if ((propsCountries && propsCountries.length) !== (stateCountries && stateCountries.length)) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionCountriesDirty: true} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepTwo(this.state.hasUnsavedChanges)\n            })\n        } else if ((propsCountries && propsCountries.length) === (stateCountries && stateCountries.length)) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionCountriesDirty: false} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepTwo(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    /**\n     * Handle the state value centers unsaved changes.\n     */\n    handleCentersUnsavedChanges = () => {\n        const stateCenters = this.state.centers\n        const propsCenters = this.props.centers\n\n        if ((propsCenters && propsCenters.length) !== (stateCenters && stateCenters.length)) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionCentersDirty: true} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepTwo(this.state.hasUnsavedChanges)\n            })\n        } else if ((propsCenters && propsCenters.length) === (stateCenters && stateCenters.length)) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionCentersDirty: false} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepTwo(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    render() {\n        return (\n            <div>\n                <div className=\"row\">\n                    <div className=\"col-12 col-lg-10\">\n                        <h3 style={{ fontWeight: '400' }}>\n                            <span style={{ fontWeight: '300' }}>\n                                <Translation id=\"step\" defaultMessage={'Step'} /> {this.props.step}\n                            </span>{' '}\n                            <Translation id=\"promotion_line_market_target\" defaultMessage=\"Market target\" />\n                        </h3>\n                        <p>\n                            <Translation\n                                id=\"select_the_markets_countries_and_centers_to_apply_your_campaign\"\n                                defaultMessage=\"Select the markets, countries and centers to apply your campaign\"\n                            />\n                        </p>\n                    </div>\n                </div>\n                <form id=\"form_current_step\" onSubmit={(e) => this.handleSubmit(e)}>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group select_market\">\n                                <label htmlFor=\"select_market\">\n                                    <Translation id=\"promotion_markets\" defaultMessage=\"Markets:\" />\n                                </label>\n                                <Select\n                                    required\n                                    id=\"select_market\"\n                                    className=\"form-control\"\n                                    placeholder={this.props.intl.formatMessage({ id: 'promotion_select_market' })}\n                                    value={this.state.market}\n                                    onChange={selectedOption => this.handleMarketChange(selectedOption)}\n                                    options={this.getMarkets()}\n                                />\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group select_countries\">\n                                <label htmlFor=\"select_countries\">\n                                    <Translation id=\"promotion_countries\" defaultMessage=\"Countries:\" />\n                                </label>\n                                <Select\n                                    required\n                                    id=\"select_countries\"\n                                    multi={true}\n                                    className=\"form-control\"\n                                    placeholder={this.props.intl.formatMessage({ id: 'promotion_select_countries' })}\n                                    value={this.state.countries}\n                                    onChange={selectedOption => this.handleCountriesChange(selectedOption)}\n                                    options={this.getCountries()}\n                                />\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"form-group select_countries\">\n                                <label htmlFor=\"select_centers\">\n                                    <Translation id=\"promotion_centers\" defaultMessage=\"Centers:\" />\n                                </label>\n                                <Select\n                                    required\n                                    id=\"select_centers\"\n                                    multi={true}\n                                    className=\"form-control\"\n                                    placeholder={this.props.intl.formatMessage({ id: 'promotion_select_centers' })}\n                                    value={this.state.centers}\n                                    onChange={selectedOption => this.handleCentersChange(selectedOption)}\n                                    options={this.getCenters()}\n                                />\n                            </div>\n                        </div>\n                    </div>\n                </form>\n            </div>\n        )\n    }\n}\n\nexport default ChooseArea = withRouter(injectIntl(ChooseArea))","import React from 'react'\n\nimport { NoHits } from 'searchkit'\nimport { injectIntl, defineMessages } from 'react-intl'\n\ndefineMessages({\n    displayName: {\n        id: 'displayName',\n        description: 'displayName',\n        defaultMessage: 'Product Name'\n    }\n})\n\nclass Results extends React.Component {\n    render() {\n\n        return (\n            <div className=\"results\" style={{marginTop: '16px'}}>\n                <div className=\"results-list text-center text-sm-left\">\n                    {this.props.hits}\n                    <NoHits />\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(Results)","import React from 'react'\nimport Translation from '../../global/Translation'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport DisplayDetail from '../../catalog/rectangleResult/displays/DisplayDetail'\nimport DisplayBrand from '../../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator'\n\nexport default class StockResult extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {showModalStock: false}\n        const source = props.result !== undefined ? props.result._source : props.product\n        this.product = source\n    }\n\n    render() {\n\n        return (\n            <div className=\"list-result\" data-cy=\"catalog__product_sample_result\" type={this.product.type}>\n                <div className=\"product-image-container\">\n                    <div className=\"product-image\" style={{ backgroundImage: 'url(\"' + this.props.getImageBackground(this.product) + '\")' }} />\n                </div>\n                    {this.product.outlet && (\n                        <DisplayOutletIndicator\n                            outletQuality={this.product.outletQuality}\n                            outletDeviated={this.props.isAdmin || this.props.impersonatedBy ? this.product.outletDeviated : null}\n                        />\n                    )}\n                <div style={{display:'flex',flexDirection:'column',maxWidth:'180px'}}>\n                    <ProductDisplayName product={this.product} />\n                    <DisplayBrand brand={this.product.brand} />\n                </div>\n                <DisplayDetail class=\"center_name\" value={this.props.centers.find(center => center.value == this.product.centerId).label} />\n                <div>\n                    <Translation defaultMessage=\"Stock\" id=\"stock\"></Translation>:{' '}\n                    {this.product.stock}\n                </div>\n                <div>\n                    <Translation defaultMessage=\"Stock outlet\" id=\"stock_outlet\"></Translation>:{' '}          \n                    {this.product.stock_outlet}\n                </div>\n            </div>\n        )\n    }\n}\n","import { connect } from 'react-redux'\nimport { addCartLineWithouthSeg } from '../../../store/cart/actions'\nimport StockResult from './StockResult'\nimport { getShippingMethod } from '../../../store/centers/reducers'\nimport { getUserType } from '../../../store/login/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport { getImageBackground } from '../../../store/products/actions'\n\nconst mapStateToProps = (state, ownProps) => {\n    return {\n        shippingMethod: getShippingMethod(state),\n        userType: getUserType(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        addCartLine: (productId, qty, extra) => {\n            dispatch(addCartLineWithouthSeg(productId, qty, extra))\n        },\n        getImageBackground: product => dispatch(getImageBackground(product))\n    }\n}\n\nconst StockResultContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(StockResult)\n    )\n)\n\nexport default StockResultContainer\n","import React from 'react'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport DisplayDetail from '../../catalog/rectangleResult/displays/DisplayDetail'\nimport DisplayBrand from '../../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayThickness from '../../catalog/rectangleResult/displays/DisplayThickness'\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport ReactTooltip from 'react-tooltip'\nimport Translation from '../../global/Translation'\n\nexport default class ListResult extends React.Component {\n    // constructor(props) {\n    //     super(props)\n    //     this.state = { showModalStock: false }\n    //\n    //     this.product = props.result !== undefined ? props.result._source : props.product\n    // }\n\n    render() {\n        const typeMap = {\n            TABLA: <Translation id=\"tables\" defaultMessage=\"Slabs\" />,\n            PPCC: <Translation id=\"professional_products\" defaultMessage=\"Professional Products\" />,\n            FREGADERO: <Translation id=\"sinks\" defaultMessage=\"Sinks\" />,\n            MK: <Translation id=\"mktool\" defaultMessage=\"Marketing Tools\" />,\n            SH: <Translation id=\"showroom\" defaultMessage=\"Showroom\" />,\n            WH: <Translation id=\"warehouse\" defaultMessage=\"Warehouse\" />,\n            OPERATIONS: <Translation id=\"OPERATIONS\" defaultMessage=\"Operations\" />,\n            SERVICE: <Translation id=\"SERVICE\" defaultMessage=\"Services\" />,\n            ENCIMERA: <Translation id=\"WORKTOPS\" defaultMessage=\"Worktops\" />,\n            BAÑOS: <Translation id=\"baths_and_wall_cladding\" defaultMessage=\"Bathrooms and Wall Cladding\" />,\n            '01': <Translation id=\"SAMPLES\" defaultMessage=\"Samples\" />,\n            '02': <Translation id=\"OTHERS\" defaultMessage=\"Others\" />,\n            '03': <Translation id=\"MERCHANDISING\" defaultMessage=\"Merchandising\" />,\n            '04': <Translation id=\"LITERATURE\" defaultMessage=\"Literature\" />,\n            '05': <Translation id=\"TAGS\" defaultMessage=\"Tags\" />,\n            '06': <Translation id=\"ANCHORING\" defaultMessage=\"anchoring\" />,\n            '07': <Translation id=\"BOXES\" defaultMessage=\"Boxes\" />,\n            '08': <Translation id=\"DISPLAYS\" defaultMessage=\"Displays\" />,\n            '09': <Translation id=\"BOOKS\" defaultMessage=\"Books\" />,\n            '10': <Translation id=\"CABINETS\" defaultMessage=\"Cabinets\" />,\n            '11': <Translation id=\"SIGNAGE\" defaultMessage=\"Signage\" />,\n            '12': <Translation id=\"TEST_KITS\" defaultMessage=\"Test kits\" />,\n            '13': <Translation id=\"WORKWEAR\" defaultMessage=\"Workwear\" />,\n            '14': <Translation id=\"EPP\" defaultMessage=\"EPP\" />,\n            '15': <Translation id=\"WAREHOUSE_SUPPLIES\" defaultMessage=\"warehouse supplies\" />\n        }\n        const cantBeSelected = this.props.result.cantBeSelected\n        const product = this.props.result._source\n\n        let indRotationLabel = ''\n        let lang = this.props.language.toUpperCase()\n        if (!(lang in product.translations)) lang = 'Z2'\n        if (lang in product.translations && product.translations[lang].indRotation) {\n            indRotationLabel = `(${product.indRotation}) ${product.translations[lang].indRotation}`\n        }\n\n\n        return (\n\n            <tr key={this.props.result._id}>\n                <td>\n                    <div className=\"product-image\" style={{ backgroundImage: 'url(\"' + product.thumb + '\")' }} />\n                    {/*<div className=\"product-image\" style={{ backgroundImage: 'url(\"' + this.props.getImageBackground(this.product) + '\")' }} />*/}\n                </td>\n\n                <td>\n                    <div\n                        style={{\n                            fontSize: '1rem',\n                            display: 'flex',\n                            flexDirection: 'column'\n                        }}\n                    >\n                        <ProductDisplayName product={product} />\n                        <DisplayBrand style={{fontSize: '0.8em',textTransform:\"capitalize\"}} brand={product.brand} />\n                        <span style={{ fontSize: '0.9em', color: '#0a0a0a'}}><b># {product.productId}</b></span>\n                    </div>\n                </td>\n\n                <td style={{textAlign:'end'}}>\n                    <DisplayThickness thickness={product.thickness} />\n                </td>\n\n                <td>\n                    {typeMap[product.type] ? typeMap[product.type] : <DisplayDetail class=\"type\" value={product.type} />}\n                </td>\n\n                <td>\n                    <DisplayDetail class=\"finish\" value={product.finish} />\n                </td>\n\n                <td>\n                    <DisplayDetail class=\"subtypeName\" value={product.subtypeName} />\n                </td>\n\n                <td>\n                    <DisplayDetail class=\"subtypeName\" value={indRotationLabel} />\n                </td>\n\n                <td>\n                    <DisplayOutletIndicator\n                        outletQuality={product.outletQuality}\n                        outletDeviated={this.props.isAdmin || this.props.impersonatedBy ? product.outletDeviated : null}\n                    />\n                </td>\n\n                <td style={{textAlign:'center'}}>\n                    {!cantBeSelected ? (\n                        <input\n                            type=\"checkbox\"\n                            onClick={() => this.props.selectMaterial(product)}\n                            key={product.productId + this.props.selectedMaterials.includes(product.productId)}\n                            defaultChecked={this.props.selectedMaterials.includes(product.productId)}\n                        />\n                    ) : (\n                        <span\n                            data-tip={this.props.intl.formatMessage({\n                                id: 'disabled_the_product_is_not_common_to_all_centers',\n                                defaultMessage: 'Disabled, The product is not common to all centers'\n                            })}\n                        >\n                            <i className=\"fas fa-exclamation-triangle\" />\n                            <ReactTooltip bg-coloreffect=\"solid\" place=\"bottom\" />\n                        </span>\n                    )}\n                </td>\n\n            </tr>\n\n\n\n            // <div className=\"list-result\" type={this.product.type}>\n            //     <div className=\"row\" style={{ width: '100%' }}>\n            //         <div className=\"col-1\">\n            //             <div className=\"product-image-container\">\n            //                 <div className=\"product-image\" style={{ backgroundImage: 'url(\"' + this.props.getImageBackground(this.product) + '\")' }} />\n            //             </div>\n            //         </div>\n            //         <div className=\"col-11\">\n            //             <div className=\"row\">\n            //                 <div className=\"col-4\">\n            //                     <div\n            //                         style={{\n            //                             fontSize: '1rem',\n            //                             display: 'flex',\n            //                             flexDirection: 'column',\n            //                             //maxWidth: '180px',\n            //\n            //\n            //                         }}\n            //                     >\n            //                         <ProductDisplayName product={this.product} />\n            //                         <DisplayBrand brand={this.product.brand} />\n            //                         <span style={{ fontSize: '0.8em' }}># {this.product.productId}</span>\n            //                     </div>\n            //                 </div>\n            //\n            //                 <div className=\"col-6\"\n            //                     style={{\n            //                         fontSize: '1rem',\n            //                         display: 'flex',\n            //                         alignItems: 'baseline',\n            //                         gap: '1em',\n            //                         fontWeight: 500\n            //                     }}\n            //                 >\n            //                     <DisplayThickness thickness={this.product.thickness} />\n            //                     {typeMap[this.product.type] ? typeMap[this.product.type] : <DisplayDetail class=\"type\" value={this.product.type} />}\n            //                     <DisplayDetail class=\"finish\" value={this.product.finish} />\n            //                     <DisplayDetail class=\"subtypeName\" value={this.product.subtypeName} />\n            //                     <DisplayDetail class=\"subtypeName\" value={indRotationLabel} />\n            //                 </div>\n            //\n            //                 {/*<div className=\"col-1\">*/}\n            //                 {/*    <DisplayThickness thickness={this.product.thickness} />*/}\n            //                 {/*</div>*/}\n            //                 {/*<div className=\"col-2\">{typeMap[this.product.type] ? typeMap[this.product.type] : <DisplayDetail class=\"type\" value={this.product.type} />}</div>*/}\n            //                 {/*<div className=\"col-1\">*/}\n            //                 {/*    <DisplayDetail class=\"finish\" value={this.product.finish} />*/}\n            //                 {/*</div>*/}\n            //                 {/*<div className=\"col-1\">*/}\n            //                 {/*    <DisplayDetail class=\"subtypeName\" value={this.product.subtypeName} />*/}\n            //                 {/*</div>*/}\n            //                 {/*<div className=\"col-2\">*/}\n            //                 {/*    <DisplayDetail class=\"subtypeName\" value={this.product.indRotation} />*/}\n            //                 {/*</div>*/}\n            //\n            //                 <div className=\"col-1\">\n            //                     {this.product.outlet && (\n            //                         <DisplayOutletIndicator\n            //                             outletQuality={this.product.outletQuality}\n            //                             outletDeviated={this.props.isAdmin || this.props.impersonatedBy ? this.product.outletDeviated : null}\n            //                         />\n            //                     )}\n            //                 </div>\n            //                 <div className=\"col-1\">\n            //                     {canBeSelected ? (\n            //                         <input\n            //                             type=\"checkbox\"\n            //                             onClick={() => this.props.selectMaterial(this.product)}\n            //                             key={this.product.productId + this.props.selectedMaterials.includes(this.product.productId)}\n            //                             defaultChecked={this.props.selectedMaterials.includes(this.product.productId)}\n            //                         />\n            //                     ) : (\n            //                         <span\n            //                             data-tip={this.props.intl.formatMessage({\n            //                                 id: 'disabled_the_product_is_not_common_to_all_centers',\n            //                                 defaultMessage: 'Disabled, The product is not common to all centers'\n            //                             })}\n            //                         >\n            //                             <i className=\"fas fa-exclamation-triangle\" />\n            //                             <ReactTooltip bg-coloreffect=\"solid\" place=\"bottom\" />\n            //                         </span>\n            //                     )}\n            //                 </div>\n            //             </div>\n            //         </div>\n            //     </div>\n            // </div>\n        )\n    }\n}\n","import { connect } from 'react-redux'\nimport { addCartLineWithouthSeg } from '../../../store/cart/actions'\nimport ListResult from './ListResult'\nimport { getShippingMethod, canBuy, canOnlyViewOutlet, productIsInPromo } from '../../../store/centers/reducers'\nimport { getUserType } from '../../../store/login/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport { getImageBackground } from '../../../store/products/actions'\n\nconst mapStateToProps = (state, ownProps) => {\n    return {\n        shippingMethod: getShippingMethod(state),\n        userType: getUserType(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        addCartLine: (productId, qty, extra) => {\n            dispatch(addCartLineWithouthSeg(productId, qty, extra))\n        },\n        getImageBackground: product => dispatch(getImageBackground(product))\n    }\n}\n\nconst ListResultContainer = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(ListResult)\n    )\n)\n\nexport default ListResultContainer\n","import React from \"react\";\nimport ListResultContainer from \"./ListResultContainer\";\nimport Translation from \"../../global/Translation\";\n\nclass TableListResult extends React.Component {\n\n    render(){\n        const { hits } = this.props\n        return (\n            <div style={{width: '100%', boxSizing: 'border-box', padding: 8, overflowX: 'scroll'}}>\n                <table style={{width: '100%'}}>\n                    <thead>\n                    <tr>\n                        <th>\n                            <Translation id=\"image\" defaultMessage=\"Image\"/>\n                        </th>\n                        <th>\n                            <Translation id=\"product\" defaultMessage=\"Product\"/>\n                        </th>\n                        <th style={{textAlign:'end'}}>\n                            <Translation id=\"thickness\" defaultMessage=\"Thickness\"/>\n                        </th>\n                        <th>\n                            <Translation id=\"type\" defaultMessage=\"Type\"/>\n                        </th>\n                        <th>\n                            <Translation id=\"finish\" defaultMessage=\"Finish\"/>\n                        </th>\n                        <th>\n                            <Translation id=\"subtype\" defaultMessage=\"Subtype\"/>\n                        </th>\n                        <th>\n                            <Translation id=\"rotation\" defaultMessage=\"Rotation\"/>\n                        </th>\n\n                        <th>\n                            <Translation id=\"outlet\" defaultMessage=\"Outlet\"/>\n                        </th>\n\n                        <th style={{textAlign:'center'}}>\n                            <Translation id=\"select\" defaultMessage=\"Select\"/>\n                        </th>\n                    </tr>\n                    </thead>\n                    <tbody>\n                        {hits && hits.map(hit => (\n                            <ListResultContainer {...this.props} result={hit}/>\n                        ))}\n                    </tbody>\n                </table>\n            </div>\n        )\n    }\n}\n\nexport default TableListResult","import React from 'react'\nimport Translation from './Translation'\n\nexport const typeMap = {\n    TABLA: <Translation id=\"tables\" defaultMessage=\"Slabs\" />,\n    PPCC: <Translation id=\"professional_products\" defaultMessage=\"Professional Products\" />,\n    FREGADERO: <Translation id=\"sinks\" defaultMessage=\"Sinks\" />,\n    MK: <Translation id=\"mktool\" defaultMessage=\"Marketing Tools\" />,\n    SH: <Translation id=\"showroom\" defaultMessage=\"Showroom\" />,\n    WH: <Translation id=\"warehouse\" defaultMessage=\"Warehouse\" />,\n    OPERATIONS: <Translation id=\"OPERATIONS\" defaultMessage=\"Operations\" />,\n    SERVICE: <Translation id=\"SERVICE\" defaultMessage=\"Services\" />,\n    ENCIMERA: <Translation id=\"WORKTOPS\" defaultMessage=\"Worktops\" />,\n    BAÑOS: <Translation id=\"baths_and_wall_cladding\" defaultMessage=\"Bathrooms and Wall Cladding\" />,\n    '01': <Translation id=\"SAMPLES\" defaultMessage=\"Samples\" />,\n    '02': <Translation id=\"OTHERS\" defaultMessage=\"Others\" />,\n    '03': <Translation id=\"MERCHANDISING\" defaultMessage=\"Merchandising\" />,\n    '04': <Translation id=\"LITERATURE\" defaultMessage=\"Literature\" />,\n    '05': <Translation id=\"TAGS\" defaultMessage=\"Tags\" />,\n    '06': <Translation id=\"ANCHORING\" defaultMessage=\"anchoring\" />,\n    '07': <Translation id=\"BOXES\" defaultMessage=\"Boxes\" />,\n    '08': <Translation id=\"DISPLAYS\" defaultMessage=\"Displays\" />,\n    '09': <Translation id=\"BOOKS\" defaultMessage=\"Books\" />,\n    '10': <Translation id=\"CABINETS\" defaultMessage=\"Cabinets\" />,\n    '11': <Translation id=\"SIGNAGE\" defaultMessage=\"Signage\" />,\n    '12': <Translation id=\"TEST_KITS\" defaultMessage=\"Test kits\" />,\n    '13': <Translation id=\"WORKWEAR\" defaultMessage=\"Workwear\" />,\n    '14': <Translation id=\"EPP\" defaultMessage=\"EPP\" />,\n    '15': <Translation id=\"WAREHOUSE_SUPPLIES\" defaultMessage=\"warehouse supplies\" />\n}","import React from 'react'\nimport Translation from '../../global/Translation'\nimport Results from './Results'\n\nimport { Hits, InitialLoader, RefinementListFilter, SearchBox } from 'searchkit'\nimport { injectIntl } from 'react-intl'\nimport Spinner from '../../global/Spinner'\nimport Select from 'react-select'\nimport StockResultContainer from './StockResultContainer'\nimport Button from '../../global/Button'\nimport TableListResult from \"./TableListResult\";\nimport {typeMap} from \"../../global/TypeMaps\";\n\n\nclass MaterialsList extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            showHelp: true,\n            showOutletModal: this.props.outlet === 'outlet' && this.props.isAdmin\n        }\n    }\n\n    finishOptions = props => {\n        return (\n            <Select\n                className=\"border-bottom border-secondary\"\n                options={props.items.map(item => ({\n                    label: this.props.intl.formatMessage({ id: item.key }),\n                    value: item.key\n                }))}\n                value={props.selectedItems[0]}\n                onChange={selectedOption => {\n                    let selected = selectedOption ? [selectedOption.value] : []\n                    props.setItems(selected)\n                }}\n                placeholder={this.props.intl.formatMessage({id: 'finish'})}\n            />\n        )\n    }\n\n    thicknessOptions = props => {\n        return (\n            <Select\n                className=\"border-bottom border-secondary\"\n                options={props.items\n                    .sort((a, b) => parseFloat(a.key) - parseFloat(b.key))\n                    .map(item => ({\n                        label: item.key.replace('.', ',') + ' cm',\n                        value: item.key\n                    }))}\n                value={props.selectedItems[0]}\n                onChange={selectedOption => {\n                    let selected = selectedOption ? [selectedOption.value] : []\n                    props.setItems(selected)\n                }}\n                placeholder={this.props.intl.formatMessage({id: 'thickness'})}\n            />\n        )\n    }\n\n    rotationOptions = (props) => {\n        const getKeyTranslation = key => {\n            switch(key) {\n                case 'D': return 'rotation_discontinued_material'\n                case 'C': return 'rotation_low_rotation'\n                case 'R': return 'rotation_discontinued_format'\n                case 'X': return 'rotation_material_no_portfolio'\n                case 'N': return 'rotation_new_creation'\n                case 'F': return 'rotation_discontinued_finish'\n                case 'A': return 'rotation_high_rotation'\n                case 'B': return 'rotation_medium_rotation'\n                case 'S': return 'rotation_slow_moving'\n                case 'K': return 'rotation_purchase_sale'\n                case '': return 'not_applicable'\n                default: return key\n            }\n        }\n        \n        return (\n            <Select\n                className=\"border-bottom border-secondary\"\n                options={props.items.map(item => ({\n                    label: this.props.intl.formatMessage({ id: getKeyTranslation(item.key) }),\n                    value: item.key\n                }))}\n                value={props.selectedItems[0]}\n                onChange={selectedOption => {\n                    let selected = selectedOption ? [selectedOption.value] : []\n                    props.setItems(selected)\n                }}\n                placeholder={this.props.intl.formatMessage({id: 'rotation'})}\n            />\n        )\n    }\n\n    outletOptions = props => {\n        return (\n            <Select\n                className=\"border-bottom border-secondary\"\n                options={[\n                    {\n                        label: this.props.intl.formatMessage({ id: 'only_outlet', defaultMessage: 'Only Outlet' }),\n                        value: true\n                    },\n                    {\n                        label: this.props.intl.formatMessage({ id: 'without_outlet', defaultMessage: 'Without Outlet' }),\n                        value: false\n                    }\n                ]}\n                value={props.selectedItems[0]}\n                onChange={selectedOption => {\n                    let selected = selectedOption ? [selectedOption.value] : []\n                    props.setItems(selected)\n                }}\n                placeholder={this.props.intl.formatMessage({id: 'outlet'})}\n            />\n        )\n    }\n\n    brandOptions = props => {\n        const typeMap = {\n            SERVICES: <Translation id=\"operaciones\" defaultMessage=\"Operaciones\" />,\n            DEKTON: this.props.selectedCenter === 7130 ? 'DKTN' : 'Dekton'\n        }\n        return (\n            <Select\n                className=\"border-bottom border-secondary\"\n                options={props.items.map(item => ({\n                    label: typeMap[item.key] || item.key,\n                    value: item.key\n                }))}\n                value={props.selectedItems[0]}\n                onChange={selectedOption => {\n                    let selected = selectedOption ? [selectedOption.value] : []\n                    props.setItems(selected)\n                }}\n                placeholder={this.props.intl.formatMessage({ id: 'brands' })}\n            />\n        )\n    }\n\n    typeOptions = props => {\n        const sorting = {\n            '01': { val: 0 },\n            '08': { val: 1 },\n            '07': { val: 2 },\n            '09': { val: 3 },\n            '12': { val: 4 },\n            '04': { val: 5 },\n            '03': { val: 6 },\n            '05': { val: 7 },\n            '02': { val: 9999 }\n        }\n        props.items.sort((a, b) => {\n            if (b.key === '02') return -1\n            else if (sorting[b.key] && sorting[a.key]) return sorting[a.key].val - sorting[b.key].val\n            else return 1\n        })\n        return (\n            <Select\n                className=\"border-bottom border-secondary\"\n                options={props.items\n                    .filter(bucket => typeMap[bucket.key])\n                    .map(item => ({\n                        label: typeMap[item.key],\n                        value: item.key\n                    }))}\n                value={props.selectedItems[0]}\n                onChange={selectedOption => {\n                    let selected = selectedOption ? [selectedOption.value] : []\n                    props.setItems(selected)\n                }}\n                placeholder={this.props.intl.formatMessage({id: 'type'})}\n            />\n        )\n    }\n\n    colorOptions = props => {\n        return (\n            <Select\n                className=\"border-bottom border-secondary\"\n                options={props.items.map(item => ({ label: item.key, value: item.key }))}\n                value={props.selectedItems[0]}\n                onChange={selectedOption => {\n                    let selected = selectedOption ? [selectedOption.value] : []\n                    props.setItems(selected)\n                }}\n                placeholder={this.props.intl.formatMessage({id: 'color'})}\n            />\n        )\n    }\n\n    render() {\n        let LANG_TO_INDEX = {\n            da: 'EN',\n            de: 'DE',\n            'en-US': 'Z2',\n            en: 'EN',\n            es: 'ES',\n            fi: 'EN',\n            'fr-CA': 'Z2',\n            'en-CA': 'Z2',\n            fr: 'FR',\n            it: 'IT',\n            nl: 'NL',\n            no: 'EN',\n            pt: 'PT',\n            pl: 'EN',\n            sv: 'SV',\n            tr: 'TR'\n        }\n\n        let hits\n        if (this.props.productId) {\n            hits = <Hits hitsPerPage={8} itemComponent={<StockResultContainer {...this.props}/>} key={this.props.selectedMaterials} />\n        } else {\n            const listComponent = <TableListResult {...this.props}/>\n            hits = <Hits hitsPerPage={8} listComponent={listComponent}/>\n        }\n\n        if (!this.props.sk) {\n            return null\n        }\n\n        return (\n            <section id=\"section-catalog\" className={this.props.outlet ? 'outlet col' : 'col'}>\n                {!this.props.productId && (\n                    <div className=\"row pb-3\">\n                        <div className=\"col-12 col-lg-6\">\n                            <div className=\"promotion__material-list\">\n                                <SearchBox\n                                    searchThrottleTime={2000}\n                                    searchOnChange={true}\n                                    queryFields={[\n                                        'colorId',\n                                        'colorName',\n                                        'description',\n                                        'brand',\n                                        'thickness',\n                                        'finish',\n                                        'finishFamily',\n                                        'color',\n                                        'type',\n                                        'productId',\n                                        'productName',\n                                        'subtypeName',\n                                        'format',\n                                        'bigAccountsErpCode',\n                                        `translations.${LANG_TO_INDEX[this.props.intl.locale]}.displayName`,\n                                        `translations.${LANG_TO_INDEX[this.props.intl.locale]}.colorName`,\n                                        `translations.${LANG_TO_INDEX[this.props.intl.locale]}.productName`,\n                                        `translations.${LANG_TO_INDEX[this.props.intl.locale]}.indRotation`,\n                                        `colorFormulations.colorName`\n                                    ]}\n                                    queryOptions={{ default_operator: 'AND' }}\n                                    placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                />\n                            </div>\n                        </div>\n                        <div className=\"col-6 col-lg-3\">\n                            <Button onClick={this.props.selectAllMaterials}>\n                                <Translation id=\"select_all\" defaultMessage=\"Select all\" />\n                            </Button>\n                        </div>\n                        <div className=\"col-6 col-lg-3\">\n                            <Button onClick={this.props.removeAllMaterials}>\n                                <Translation id=\"remove_all\" defaultMessage=\"Remove all\" />\n                            </Button>\n                        </div>\n                    </div>\n                )}\n                <div className={this.props.productId ? \"\" : \"filter-and-results-container\"}>\n                    <div className=\"container p-0\">\n                        {!this.props.productId && (\n                            <div className=\"row\">\n                                <div className=\"col-12 col-lg mb-1\">\n                                    <RefinementListFilter\n                                        id=\"type\"\n                                        field={`${this.props.mktools ? 'typeId.raw' : 'type.raw'}`}\n                                        operator=\"OR\"\n                                        listComponent={this.typeOptions}\n                                        size={9999}\n                                        orderKey=\"_term\"\n                                    />\n                                </div>\n                                <div className=\"col-6 col-lg mb-1\">\n                                    <RefinementListFilter\n                                        id=\"brands\"\n                                        field=\"brand.raw\"\n                                        operator=\"OR\"\n                                        listComponent={this.brandOptions}\n                                        size={9999}\n                                    />\n                                </div>\n                                <div className=\"col-6 col-lg mb-1\">\n                                    <RefinementListFilter\n                                        id=\"color\"\n                                        field=\"colorName.raw\"\n                                        operator=\"OR\"\n                                        listComponent={this.colorOptions}\n                                        size={9999}\n                                        orderKey=\"_term\"\n                                    />\n                                </div>\n                                <div className=\"col-6 col-lg mb-1\">\n                                    <RefinementListFilter\n                                        id=\"finish\"\n                                        field=\"finish.raw\"\n                                        operator=\"OR\"\n                                        listComponent={this.finishOptions}\n                                        size={9999}\n                                    />\n                                </div>\n\n                                <div className=\"col-6 col-lg mb-1\">\n                                    <RefinementListFilter\n                                        id=\"thickness\"\n                                        field=\"thickness.raw\"\n                                        operator=\"OR\"\n                                        listComponent={this.thicknessOptions}\n                                        size={9999}\n                                        // bucketsTransform={this.thicknessTransform}\n                                    />\n                                </div>\n                                <div className=\"col-6 col-lg mb-1\">\n                                    <RefinementListFilter\n                                        id=\"rotation\"\n                                        field=\"indRotation.raw\"\n                                        operator=\"OR\"\n                                        // itemComponent={RefOptionsComponent}\n                                        listComponent={this.rotationOptions}\n                                        size={9999}\n                                        // bucketsTransform={this.thicknessTransform}\n                                    />\n                                </div>\n                                <div className=\"col-6 col-lg mb-1\">\n                                    <RefinementListFilter\n                                        id=\"outlet\"\n                                        field=\"outlet.raw\"\n                                        operator=\"OR\"\n                                        listComponent={this.outletOptions}\n                                        size={9999}\n                                        // bucketsTransform={this.thicknessTransform}\n                                    />\n                                </div>\n                            </div>\n                        )}\n                        <div className=\"row\">\n                            <div className=\"col-12\">\n                                <InitialLoader component={() => <Spinner isLoading={this.props.sk} relative />} />\n\n                                <Results hits={hits} />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\n\nexport default injectIntl(MaterialsList)\n","import { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport {\n    getIsLogged,\n    getToken,\n    getUserType,\n    getIsAdmin,\n} from '../../../store/login/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { getLanguage } from '../../../store/ui/reducers'\nimport MaterialsList from './MaterialsList'\nconst mapStateToProps = (state, { match }) => {\n    return {\n        token: getToken(state),\n        isLogged: getIsLogged(state),\n        isAdmin: getIsAdmin(state),\n        userType: getUserType(state),\n        language: getLanguage(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n\n    }\n}\nconst MaterialsListContainer = withRouter(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(MaterialsList)\n)\n\nexport default injectIntl(MaterialsListContainer)\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../global/Translation'\nimport Modal from '../../global/Modal'\nimport Button from '../../global/Button'\nimport SimpleModal from '../../global/SimpleModal'\nimport MaterialsListContainer from '../materialSearch/MaterialsListContainer'\nimport Alerts from '../../alerts/Alerts'\nimport { Pagination, SearchkitManager, SearchkitProvider } from 'searchkit'\nimport { getIsAdmin, getIsLogged, getSpecialNames, getToken, getUserType } from '../../../store/login/reducers'\nimport { getLanguage } from '../../../store/ui/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport ReactTable from 'react-table'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport DisplayBrand from '../../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayThickness from '../../catalog/rectangleResult/displays/DisplayThickness'\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator'\n\nimport DisplayDetail from '../../catalog/rectangleResult/displays/DisplayDetail'\nimport { getImageBackground } from '../../../store/products/actions'\nimport { getAllProductOfTheLastQueryMultiCenterByUser } from '../../../store/promotions/actions'\nimport Spinner from '../../global/Spinner'\nimport { getIsLoading } from '../../../store/promotions/reducers'\nimport {typeMap} from \"../../global/TypeMaps\";\n\nconst getSk = (token, centers, locale, outlet, productId) => {\n    // let lang = locale === 'fr-CA' || locale === 'en-CA' ? 'en-US' : locale\n\n    // const multiCenterSearch = '/catalog/search-multi-center/7704,7701,7713'\n    const multiCenterSearch = '/catalog/search-multi-center/' + centers.map(center => center.value).toString()\n    const uri = productId ? multiCenterSearch + '?productId=' + productId : multiCenterSearch\n    const httpHeaders = token ? { Authorization: 'Bearer ' + token } : {}\n\n    let sk = new SearchkitManager(process.env.REACT_APP_API_HOST + uri, {\n        searchUrlPath: '',\n        timeout: 60000,\n        httpHeaders\n    })\n    // Traducciones de cadenas de SearchKit\n    sk.translateFunction = key => {\n        let translations = {\n            'pagination.previous': <Translation id=\"previous\" defaultMessage=\"Previous\" />,\n            'pagination.next': <Translation id=\"next\" defaultMessage=\"Next\" />,\n            'facets.view_more': <Translation id=\"view_more\" defaultMessage=\"View more\" />,\n            'facets.view_less': <Translation id=\"view_less\" defaultMessage=\"View less\" />,\n            'facets.view_all': <Translation id=\"view_all\" defaultMessage=\"View all\" />,\n            'reset.clear_all': <Translation id=\"clear_all\" defaultMessage=\"Clear all\" />\n        }\n        return translations[key]\n    }\n    return sk\n}\n\nconst materials_limit = 50\n\nclass ChooseMaterials extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedMaterials: [],\n            selectedMaterialsData: [],\n            showModalToSelect: false,\n            showModalAddProduct: false,\n            lastModalProduct: null,\n            lastModalProducts: [],\n            sk: null,\n            search: '',\n            //Unsaved changes\n            hasUnsavedChanges: {\n                promotionMaterialsDirty: false\n            }\n        }\n    }\n\n    setSk = () => {\n        this.setState({\n            sk: getSk(this.props.token, this.props.centers, this.props.intl.locale, this.props.outlet, null)\n        })\n    }\n    setSkStock = (productId = null) => {\n        this.setState({\n            skStock: getSk(this.props.token, this.props.centers, this.props.intl.locale, this.props.outlet, productId)\n        })\n    }\n\n    componentDidMount = () => {\n        this.props.handleReference(this)\n        this.setSk() // en el centro 1060 se pregunta locationf\n        if (this.props.materialsSelected && this.props.materialsSelectedData) {\n            this.setState({\n                selectedMaterials: this.props.materialsSelected,\n                selectedMaterialsData: this.props.materialsSelectedData\n            })\n        }\n    }\n\n    componentDidUpdate(prevProps) {\n        if (this.props.location !== prevProps.location) {\n            //TODO solo hace la llamada cuando cambiar la url\n            this.state.sk && this.state.sk.runInitialSearch() //TODO :identificar motivo y si se puede borrar, duplica llamada a elastic see on network\n        }\n    }\n\n    handleSubmit = e => {\n        if (e) e.preventDefault()\n        //No more unsaved changes after send the form for step three\n        this.setState({ hasUnsavedChanges: {\n            ...this.state.hasUnsavedChanges,\n            promotionMaterialsDirty: false\n        }}, () => {\n            this.props.sendMaterialsSelected(this.state.selectedMaterials, this.state.selectedMaterialsData)\n            //Update global state after form submit\n            this.props.setUnsavedChangesStepFour(this.state.hasUnsavedChanges)\n            //Make sure the change step is the last function\n\n            //Only if event exists we use this change step. If not we use the one inside StepsBar component\n            if (e) {\n                this.props.changeStep(this.props.step + 1)\n            }\n        })\n    }\n\n    tryAddProduct = (prod, checkOutlet = true, isOutlet = prod.outlet, callback) => {\n        if ((checkOutlet && prod.outlet && prod.stock > 0 && prod.stock_outlet > 0) || (checkOutlet && prod.outlet && prod.stock > 0 && !prod.stock_outlet > 0)) {\n            this.setState({ showModalAddProduct: true, lastModalProduct: prod, lastModalProducts: this.state.lastModalProducts.concat(prod) })\n        } else {\n            const prd = [...this.state.selectedMaterialsData]\n            const bFound = prd.find(a => {\n                return a.productId === prod.productId && a.isSellingOutlet == isOutlet\n            })\n\n            if (!bFound) {\n                this.selectMaterial(prod, isOutlet, () => {\n                    if (typeof callback === 'function') callback()\n                })\n            } else {\n                this.removeMaterial(prod, isOutlet, () => {\n                    if (typeof callback === 'function') callback()\n                })\n            }\n        }\n    }\n\n    selectMaterial = (product, isOutlet, callback) => {\n        this.setState(\n            {\n                selectedMaterials: this.state.selectedMaterials.concat(product.productId),\n                selectedMaterialsData: [...this.state.selectedMaterialsData, { ...product, isSellingOutlet: isOutlet }]\n            },\n            () => {\n                if (typeof callback === 'function') callback()\n                this.handleMaterialsUnsavedChanges()\n            }\n        )\n    }\n    selectBulkMaterials = products => {\n        // console.log('selecting on bulk', products, products.length)\n        if (products && products.length) {\n            products.forEach(product => {\n                // if (!this.state.selectedMaterials.includes(product.productId) && product.centersCount === this.props.centers.length) {\n                if (!this.state.selectedMaterials.includes(product.productId) && !product.cantBeSelected) {\n                    this.tryAddProduct(product)\n                }\n            })\n        }\n    }\n\n    removeMaterial = (product, isOutlet, callback) => {\n        this.setState(\n            {\n                selectedMaterials: this.state.selectedMaterials.filter(material => material !== product.productId),\n                selectedMaterialsData: this.state.selectedMaterialsData.filter(material => material.productId !== product.productId)\n            },\n            () => {\n                if (typeof callback === 'function') callback()\n                this.handleMaterialsUnsavedChanges()\n            }\n        )\n    }\n    removeBulkMaterials = products => {\n        if (products && products.length) {\n            products.forEach(product => {\n                // if (this.state.selectedMaterials.includes(product.productId) && product.centersCount === this.props.centers.length) {\n                    if (this.state.selectedMaterials.includes(product.productId) && !product.cantBeSelected) {\n                    this.setState({\n                        selectedMaterials: this.state.selectedMaterials.filter(material => material !== product.productId),\n                        selectedMaterialsData: this.state.selectedMaterialsData.filter(material => material.productId !== product.productId)\n                    })\n                }\n            })\n        }\n    }\n    getNameText = product => {\n        const { specialNames } = this.props\n        let LANG_TO_INDEX = {\n            da: 'EN',\n            de: 'DE',\n            'en-US': 'Z2',\n            en: 'EN',\n            es: 'ES',\n            fi: 'EN',\n            'fr-CA': 'Z2',\n            'en-CA': 'Z2',\n            fr: 'FR',\n            it: 'IT',\n            nl: 'NL',\n            no: 'EN',\n            pt: 'PT',\n            pl: 'EN',\n            sv: 'SV',\n            tr: 'TR'\n        }\n        let locale = LANG_TO_INDEX[this.props.intl.locale]\n\n        let showName\n\n        if (specialNames && specialNames[product.productId]) {\n            showName = specialNames[product.productId]\n        } else if (product.translations && product.translations[locale]) {\n            showName = product.translations[locale].displayName.toLowerCase()\n        } else {\n            showName = product.displayName.toLowerCase()\n        }\n        return showName\n    }\n\n    selectAllMaterials = () => {\n        this.props.getAllProductOfTheLastQueryMultiCenterByUser().then(products => {\n            // console.log('SELECT ALL', products)\n            this.selectBulkMaterials(products)\n        })\n    }\n\n    removeAllMaterials = () => {\n        this.props.getAllProductOfTheLastQueryMultiCenterByUser().then(products => {\n            // console.log('REMOVE ALL', products)\n            this.removeBulkMaterials(products)\n        })\n    }\n\n    /**\n     * Handle the state value materials unsaved changes.\n     */\n    handleMaterialsUnsavedChanges = () => {\n        const stateMaterials = this.state.selectedMaterials\n        const propsMaterials = this.props.materialsSelected\n\n        if ((propsMaterials && JSON.stringify(propsMaterials).trim()) !== (stateMaterials && JSON.stringify(stateMaterials).trim())) {\n            this.setState({hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionMaterialsDirty: true}}, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepFour(this.state.hasUnsavedChanges)\n            })\n        } else if ((propsMaterials && JSON.stringify(propsMaterials).trim()) === (stateMaterials && JSON.stringify(stateMaterials).trim())) {\n            this.setState({hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionMaterialsDirty: false}}, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepFour(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    render() {\n\n        let selectedMaterialsFiltered = this.state.selectedMaterialsData\n        if (this.state.search) {\n            selectedMaterialsFiltered = this.state.selectedMaterialsData.filter(product => {\n\n                let indRotationLabel\n                if (product.translations) {\n                    let lang = this.props.language.toUpperCase()\n                    if (!(lang in product.translations)) lang = 'Z2'\n                    if (lang in product.translations) {\n                        indRotationLabel = product.translations[lang].indRotation && product.translations[lang].indRotation.toLowerCase()\n                    }\n                }\n\n\n                return (\n                    this.getNameText(product)\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase()) ||\n                    product.productId.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    product.brand.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    this.props.intl\n                        .formatMessage({ id: product.finish })\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase()) ||\n                    this.props.intl\n                        .formatMessage({ id: product.type })\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase()) ||\n                    this.props.intl\n                        .formatMessage({ id: product.subtypeName })\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase()) ||\n                    product.thickness.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    (indRotationLabel && indRotationLabel.includes(this.state.search.toLowerCase()))\n\n                )\n            })\n        }\n        if (!this.props.market || !this.props.countries || !this.props.centers) {\n            return <Alerts alert={'NEED_TO_COMPLETE_STEP_2'} status=\"warning\" />\n        }\n\n        return (\n            <div>\n                <div className=\"row\">\n                    <div className=\"col-12 col-lg-10\">\n                        <h3 style={{ fontWeight: '400' }}>\n                            <span style={{ fontWeight: '300' }}>\n                                <Translation id=\"step\" defaultMessage={'Step'} /> {this.props.step}\n                            </span>{' '}\n                            <Translation id=\"promotion_line_materials\" defaultMessage=\"Materials\" />\n                        </h3>\n                        <p>\n                            <Translation id=\"select_the_materials_to_apply_your_campaign\" defaultMessage=\"Select the materials to apply your campaign\" />\n                        </p>\n                    </div>\n                    <div className=\"col-12 col-lg-2\">\n                        <Button\n                            gentle\n                            onClick={() => {\n                                this.setState({ showModalToSelect: true })\n                                if (!window.location.href.includes('?type[0]=TABLA')) {\n                                    const filterBySlabs = window.location.href + '?type[0]=TABLA'\n                                    window.history.replaceState(null, '', filterBySlabs)\n                                }\n                            }}\n                        >\n                            <Translation id=\"add\" defaultMessage=\"Add\" />\n                        </Button>\n                    </div>\n                </div>\n                <div className=\"container\">\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"search-bar\">\n                                <input\n                                    type=\"text\"\n                                    data-qa=\"query\"\n                                    className=\"search-box form-control\"\n                                    placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                    data-cy=\"Impersonate_modal__search_box\"\n                                    value={this.state.search}\n                                    onChange={e =>\n                                        this.setState({\n                                            search: e.target.value\n                                        })\n                                    }\n                                />\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <ReactTable\n                                className={'light'}\n                                data={selectedMaterialsFiltered}\n                                columns={[\n                                    {\n                                        id: 'image',\n                                        Header: <Translation id=\"image\" defaultMessage=\"Image\" />,\n                                        accessor: 'image',\n                                        Cell: ({ original }) => {\n                                            const image = this.props.getImageBackground(original)\n                                            return (\n                                                <div className=\"list-result\" data-cy=\"catalog__product_sample_result\" type={original.type}>\n                                                    <DisplayOutletIndicator outletQuality={original.isSellingOutlet && original.outletQuality} style={{ top: 'initial' }} />\n                                                    <div className=\"product-image-container\">\n                                                        {\n                                                            image ?\n                                                                (<img style={{ maxWidth: '100%'}} src={image}/>)\n                                                                :\n                                                                (<img style={{ maxWidth: '100%', height: '60px'}}/>)\n                                                        }\n                                                    </div>\n                                                </div>\n                                            )\n                                        },\n                                        filterable: false\n                                    },\n                                    {\n                                        id: 'name',\n                                        Header: <Translation id=\"name\" defaultMessage=\"Name\" />,\n                                        accessor: 'name',\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <div className=\"d-flex flex-column justify-content-center align-items-center h-100\">\n                                                    <ProductDisplayName product={original} />\n                                                    <DisplayBrand brand={original.brand} />\n                                                    <span style={{ fontSize: '0.8em' }}># {original.productId}</span>\n                                                </div>\n                                            )\n                                        },\n                                        filterMethod: (filter, row) => {\n                                            return (\n                                                this.getNameText(row._original)\n                                                    .toLowerCase()\n                                                    .includes(filter.value.toLowerCase()) ||\n                                                row._original.productId.toLowerCase().includes(filter.value.toLowerCase()) ||\n                                                row._original.brand.toLowerCase().includes(filter.value.toLowerCase())\n                                            )\n                                        }\n                                    },\n                                    {\n                                        id: 'thickness',\n                                        Header: <Translation id=\"thickness\" defaultMessage=\"Thickness\" />,\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <div className=\"d-flex justify-content-center align-items-center h-100\">\n                                                    <DisplayThickness thickness={original.thickness} />\n                                                </div>\n                                            )\n                                        }\n                                    },\n                                    {\n                                        id: 'finish',\n                                        Header: <Translation id=\"finish\" defaultMessage=\"Finish\" />,\n                                        accessor: 'finish',\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <div className=\"d-flex justify-content-center align-items-center h-100\">\n                                                    <DisplayDetail class=\"finish\" value={original.finish} />\n                                                </div>\n                                            )\n                                        },\n                                        filterMethod: (filter, row) => {\n                                            return this.props.intl\n                                                .formatMessage({ id: row._original.finish })\n                                                .toLowerCase()\n                                                .includes(filter.value.toLowerCase())\n                                        }\n                                    },\n                                    {\n                                        id: 'type',\n                                        Header: <Translation id=\"type\" defaultMessage=\"Type\" />,\n                                        accessor: 'type',\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <div className=\"d-flex justify-content-center align-items-center h-100 text-wrap\">\n                                                    {typeMap[original.type] ? typeMap[original.type] : <DisplayDetail class=\"finish\" value={original.type} />}\n                                                </div>\n                                            )\n                                        },\n                                        filterMethod: (filter, row) => {\n                                            return this.props.intl\n                                                .formatMessage({ id: row._original.type })\n                                                .toLowerCase()\n                                                .includes(filter.value.toLowerCase())\n                                        }\n                                    },\n                                    {\n                                        id: 'subtypeName',\n                                        accessor: 'subtypeName',\n                                        Header: <Translation id=\"subtypeName\" defaultMessage=\"Subtype\" />,\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <div className=\"d-flex justify-content-center align-items-center h-100 text-wrap\">\n                                                    <DisplayDetail class=\"finish\" value={original.subtypeName} />\n                                                </div>\n                                            )\n                                        },\n                                        filterMethod: (filter, row) => {\n                                            return this.props.intl\n                                                .formatMessage({ id: row._original.subtypeName })\n                                                .toLowerCase()\n                                                .includes(filter.value.toLowerCase())\n                                        }\n                                    },\n                                    {\n                                        id: 'stock',\n                                        Header: <Translation id=\"stock\" defaultMessage=\"Stock\" />,\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <Button\n                                                    size=\"small\"\n                                                    customClass=\"bt-add-cart\"\n                                                    onClick={() => {\n                                                        this.setSkStock(original.productId)\n                                                        this.setState({\n                                                            showModalStock: true,\n                                                            productIdToShowStock: original.productId\n                                                        })\n                                                    }}\n                                                >\n                                                    <Translation id=\"show_stock\" defaultMessage=\"Show stock\" />\n                                                </Button>\n                                            )\n                                        },\n                                        filterable: false\n                                    },\n                                    {\n                                        id: 'rotation',\n                                        accessor: 'indRotation',\n                                        Header: <Translation id=\"rotation\" defaultMessage=\"Rotation\" />,\n                                        Cell: ({ original }) => {\n                                            let label = ''\n\n                                            if (original.indRotation) {\n                                                let lang = this.props.language.toUpperCase()\n                                                if (!(lang in original.translations)) lang = 'Z2'\n                                                if (lang in original.translations && original.translations[lang].indRotation) {\n                                                    label = `(${original.indRotation}) ${original.translations[lang].indRotation}`\n                                                }\n                                            }\n\n                                            return (\n                                                <div className=\"d-flex h-100 text-wrap\">\n                                                    <DisplayDetail class=\"finish\" value={label} />\n                                                </div>\n                                            )\n                                        },\n                                        // filterMethod: (filter, row) => {\n                                        //     const lang = this.props.language ? this.props.language.toUpperCase() : 'Z2'\n                                        //     const indRotationLabel = row._original.translations\n                                        //         && row._original.translations[lang]\n                                        //         && row._original.translations[lang].indRotation\n                                        //\n                                        //     // return indRotationLabel && indRotationLabel\n                                        //     return 'alta rota'\n                                        //         .toLowerCase()\n                                        //         .includes(filter.value.toLowerCase())\n                                        // }\n                                    },\n                                    {\n                                        id: 'actions',\n                                        Header: <Translation id=\"actions\" defaultMessage=\"Actions\" />,\n                                        Cell: ({ original }) => {\n                                            return (\n                                                <div className=\"d-flex justify-content-center align-items-center h-100\">\n                                                    <div className=\"tooltip\">\n                                                        <span className=\"bt-delete\" onClick={() => this.removeMaterial(original)} style={{ cursor: 'pointer' }}>\n                                                            <i className=\"fal fa-times\" />\n                                                        </span>\n                                                    </div>\n                                                </div>\n                                            )\n                                        },\n                                        filterable: false\n                                    }\n                                ]}\n                                defaultPageSize={4}\n                                pageSizeOptions={[4, 8, 10, 25, 50, 100]}\n                                previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                noDataText={\n                                    <div>\n                                        <Translation id=\"no_data\" defaultMessage=\"No data available\" />\n                                        <Button\n                                            gentle\n                                            onClick={() => {\n                                                this.setState({ showModalToSelect: true })\n                                            }}\n                                        >\n                                            <Translation id=\"add\" defaultMessage=\"Add\" />\n                                        </Button>\n                                    </div>\n                                }\n                                pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                            />\n                            <form id=\"form_current_step\" onSubmit={e => this.handleSubmit(e)} />\n                        </div>\n                    </div>\n                    {this.state.lastModalProducts.length > 0 && (\n                        <SimpleModal\n                            customClass=\"landings__modal landings__modal--add-product\"\n                            title={''}\n                            onClose={() =>\n                                this.setState({\n                                    // showModalAddProduct: false,\n                                    lastModalProduct: null,\n                                    lastModalProducts: this.state.lastModalProducts.filter(item => item.productId !== this.state.lastModalProducts[0].productId)\n                                })\n                            }\n                            size=\"large\"\n                            footer={null}\n                        >\n                            <div className=\"results\">\n                                <div className=\"results-list\">\n                                    <div className=\"list-result\" data-cy=\"catalog__product_sample_result\" type={this.state.lastModalProducts[0].type}>\n                                        <div className=\"product-image-container\">\n                                            <img style={{ maxWidth: '100%' }} src={this.props.getImageBackground(this.state.lastModalProducts[0])} alt={'name'} />\n                                        </div>\n                                        <ProductDisplayName product={this.state.lastModalProducts[0]} />\n                                        <DisplayBrand brand={this.state.lastModalProducts[0].brand} />\n                                        <span style={{ fontSize: '0.8em' }}># {this.state.lastModalProducts[0].productId}</span>\n                                        <div className=\"d-flex justify-content-center align-items-center h-100\">\n                                            <DisplayThickness thickness={this.state.lastModalProducts[0].thickness} />\n                                        </div>\n                                        <div className=\"d-flex justify-content-center align-items-center h-100\">\n                                            <DisplayDetail class=\"finish\" value={this.state.lastModalProducts[0].finish} />\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                            <p>\n                                <Translation\n                                    id=\"product_ambiguous_stock\"\n                                    defaultMessage=\"The product you are trying to add has normal stock and outlet stock available, which one do you want to use?\"\n                                />\n                            </p>\n\n                            <div className=\"btn-row\">\n                                <Button\n                                    gentle\n                                    size=\"medium\"\n                                    onClick={() => {\n                                        this.tryAddProduct(this.state.lastModalProducts[0], false, false, () =>\n                                            this.setState({\n                                                // showModalAddProduct: false,\n                                                lastModalProduct: null,\n                                                lastModalProducts: this.state.lastModalProducts.filter(item => item.productId !== this.state.lastModalProducts[0].productId)\n                                            })\n                                        )\n                                    }}\n                                >\n                                    <Translation id=\"normal\" defaultMessage=\"Normal\" />\n                                </Button>\n                                <Button\n                                    gentle\n                                    size=\"medium\"\n                                    onClick={() => {\n                                        this.tryAddProduct(this.state.lastModalProducts[0], false, true, () =>\n                                            this.setState({\n                                                // showModalAddProduct: false,\n                                                lastModalProduct: null,\n                                                lastModalProducts: this.state.lastModalProducts.filter(item => item.productId !== this.state.lastModalProducts[0].productId)\n                                            })\n                                        )\n                                    }}\n                                >\n                                    <Translation id=\"outlet\" defaultMessage=\"Outlet\" />\n                                </Button>\n                                <Button\n                                    gentle\n                                    size=\"medium\"\n                                    onClick={() => {\n                                        this.tryAddProduct(this.state.lastModalProducts[0], false, false, () => {\n                                            this.tryAddProduct(this.state.lastModalProducts[0], false, true, () =>\n                                                this.setState({\n                                                    // showModalAddProduct: false,\n                                                    lastModalProduct: null,\n                                                    lastModalProducts: this.state.lastModalProducts.filter(item => item.productId !== this.state.lastModalProducts[0].productId)\n                                                })\n                                            )\n                                        })\n                                    }}\n                                >\n                                    <Translation id=\"both\" defaultMessage=\"Both\" />\n                                </Button>\n                            </div>\n                        </SimpleModal>\n                    )}\n                    {this.state.showModalToSelect && !this.state.lastModalProducts.length && (\n                        <SearchkitProvider searchkit={this.state.sk}>\n                            <Modal\n                                title={\n                                    <div>                                        \n                                        <Translation id=\"choose_materials\" defaultMessage=\"Choose materials\" />\n                                        <div style={{fontSize:\"14px\",fontFamily:'Roboto', fontWeight:'400'}}>\n                                            <span style={{backgroundColor:\"InfoBackground\",padding:\"4px\"}}>\n                                                <i className=\"far fa-exclamation-triangle\"></i>&nbsp;\n                                                <Translation id=\"materials_number_limit\" defaultMessage=\"Maximum number of materials allowed\"/>: <b>{materials_limit}</b>\n                                            </span>\n                                            <span style={{marginLeft:\"8px\"}}>\n                                                <Translation id=\"selected_materials_count\" defaultMessage=\"Selected materials count\"/>: <b>{this.state.selectedMaterials.length}</b>\n                                            </span>\n                                        </div>\n                                        \n                                    </div>                                \n                                }\n                                onClose={() => this.setState({ showModalToSelect: false })}\n                                size=\"xl\"\n                                customClass=\"promotions-choose-materials-modal\"\n                                footer={\n                                    <div className=\"container\">\n                                        <div className=\"row\">\n                                            <div className=\"col-12 col-lg-3\" />\n                                            <div className=\"col-12 col-lg-6 results\">\n                                                <div className=\"results-pagination\" data-cy=\"catalog__pagination_catalog\" onClick={() => window.scrollTo(0, 160)}>\n                                                    <Pagination showNumbers={true} pageScope={4} />\n                                                </div>\n                                            </div>\n                                            <div className=\"col-12 col-lg-3\">\n                                                <Button disabled={this.state.selectedMaterials.length > materials_limit} gentle onClick={() => this.setState({ showModalToSelect: false })}>\n                                                    <Translation id=\"ok\" defaultMessage=\"Ok\" />\n                                                </Button>\n                                            </div>\n                                        </div>\n                                    </div>\n                                }\n                            >\n                                <MaterialsListContainer\n                                    centers={this.props.centers}\n                                    selectMaterial={this.tryAddProduct}\n                                    selectBulkMaterials={this.selectBulkMaterials}\n                                    selectAllMaterials={this.selectAllMaterials}\n                                    removeAllMaterials={this.removeAllMaterials}\n                                    selectedMaterials={this.state.selectedMaterials}\n                                    sk={this.state.sk}\n                                />\n                                <Spinner isLoading={this.props.isLoading} />\n                            </Modal>\n                        </SearchkitProvider>\n                    )}\n                    {this.state.showModalStock && (\n                        <SearchkitProvider searchkit={this.state.skStock}>\n                            <Modal\n                                title={<Translation id=\"promotion_stock_modal_header\" defaultMessage=\"Stock of the item on the promotion centers\" />}\n                                onClose={() => this.setState({ showModalStock: false })}\n                                customClass=\"show-modal-stock\"\n                                size=\"large\"\n                            >\n                                <div style={{ display: 'flex', flexDirection: 'row' }} className=\"\" />\n                                <MaterialsListContainer productId={this.state.productIdToShowStock} centers={this.props.centers} sk={this.state.skStock} />\n                            </Modal>\n                        </SearchkitProvider>\n                    )}\n                </div>\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        token: getToken(state),\n        isLogged: getIsLogged(state),\n        isAdmin: getIsAdmin(state),\n        userType: getUserType(state),\n        language: getLanguage(state),\n        specialNames: getSpecialNames(state, 'specialNames'),\n        isLoading: getIsLoading(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        getImageBackground: product => dispatch(getImageBackground(product)),\n        getAllProductOfTheLastQueryMultiCenterByUser: () => dispatch(getAllProductOfTheLastQueryMultiCenterByUser())\n    }\n}\nexport default ChooseMaterials = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(ChooseMaterials)\n    )\n)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../global/Translation'\nimport Button from '../../global/Button'\nimport Select from 'react-select'\nimport Modal from '../../global/Modal'\n\nclass ChooseTemplate extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedLandingTemplate: this.props.landingTemplateId && this.getOptionsLandingTemplate().filter(optionLanding => optionLanding.value === this.props.landingTemplateId)[0],\n            selectedNewsLetterTemplate: this.props.mailTemplateId && this.getOptionsMailTemplate().filter(optionMail => optionMail.value === this.props.mailTemplateId)[0],\n            //Unsaved changes\n            hasUnsavedChanges: {\n                promotionLandingTemplateDirty: false,\n                promotionNewsletterTemplateDirty: false\n            }\n        }\n    }\n\n    componentDidMount(){\n        this.props.handleReference(this)\n    }\n\n    getOptionsLandingTemplate() {\n        return this.props.landingTemplates.map(item => ({\n            label: item.name,\n            value: item.id,\n            urlPreview: item.urlPreview\n        }))\n    }\n    getOptionsMailTemplate() {\n        return this.props.newsLetterTemplates.map(item => ({\n            label: item.name,\n            value: item.id,\n            urlPreview: item.urlPreview\n        }))\n    }\n    stepBack() {\n        this.props.stepBack(this.props.step - 1)\n    }\n\n    handleSubmit = e => {\n        if(e) e.preventDefault()\n        //No more unsaved changes after send the form for step one\n        this.setState({ hasUnsavedChanges: {\n            ...this.state.hasUnsavedChanges,\n            promotionLandingTemplateDirty: false,\n            promotionNewsletterTemplateDirty: false\n        }}, () => {\n            this.props.sendPromotionTemplateSelected(this.state.selectedLandingTemplate.value, this.state.selectedNewsLetterTemplate.value)\n            //Update global state after form submit\n            this.props.setUnsavedChangesStepSix(this.state.hasUnsavedChanges)\n            //Make sure the change step is the last function\n            \n            //Only if event exists we use this change step. If not we use the one inside StepsBar component\n            if (e) {\n                this.props.changeStep(this.props.step + 1)\n            }\n        })\n    }\n\n    /**\n     * Handle the state value landing template unsaved changes.\n     * @param {object} selectedOption \n     */\n    handleLandingTemplateUnsavedChanges = (selectedOption) => {\n        this.setState({ selectedLandingTemplate: selectedOption }, () => {\n\n            const propsLandingTemplateId = this.props.landingTemplateId && parseInt(this.props.landingTemplateId)\n            const stateSelectedLandingTemplate = this.state.selectedLandingTemplate && parseInt(this.state.selectedLandingTemplate.value)\n    \n            if (propsLandingTemplateId !== stateSelectedLandingTemplate) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionLandingTemplateDirty: true} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepSix(this.state.hasUnsavedChanges)\n                })\n            } else if (propsLandingTemplateId === stateSelectedLandingTemplate) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionLandingTemplateDirty: false} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepSix(this.state.hasUnsavedChanges)\n                })\n            }\n        })\n    }\n\n    /**\n     * Handle the state value mail template unsaved changes.\n     * @param {object} selectedOption \n     */\n    handleMailTemplateUnsavedChanges = (selectedOption) => {\n        this.setState({ selectedNewsLetterTemplate: selectedOption }, () => {\n\n            const propsMailTemplateId = this.props.mailTemplateId && parseInt(this.props.mailTemplateId)\n            const stateSelectedNewsLetterTemplate = this.state.selectedNewsLetterTemplate && parseInt(this.state.selectedNewsLetterTemplate.value)\n\n            if (propsMailTemplateId !== stateSelectedNewsLetterTemplate) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionNewsletterTemplateDirty: true} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepSix(this.state.hasUnsavedChanges)\n                })\n            } else if (propsMailTemplateId === stateSelectedNewsLetterTemplate) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionNewsletterTemplateDirty: false} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepSix(this.state.hasUnsavedChanges)\n                })\n            }\n        })\n    }\n\n    render() {\n        return (\n            <div>\n                <div className=\"row\">\n                    <div className=\"col-12 col-lg-10\">\n                        <h3 style={{ fontWeight: '400' }}>\n                            <span style={{ fontWeight: '300' }}>\n                                <Translation id=\"step\" defaultMessage={'Step'} /> {this.props.step}\n                            </span>{' '}\n                            <Translation id=\"promotion_line_templates\" defaultMessage=\"Templates\" />\n                        </h3>\n                        <p>\n                            <Translation\n                                id=\"select_the_template_of_landing_and_mailing_to_apply_your_campaign\"\n                                defaultMessage=\"Select the template of landing and mailing to apply your campaign\"\n                            />\n                        </p>\n                    </div>\n                </div>\n                <form id=\"form_current_step\" onSubmit={(e) => this.handleSubmit(e)}>\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-6\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input_name\">\n                                    <Translation id=\"template_to_use_in_landing\" defaultMessage=\"Template to use in landing\" />\n                                </label>\n                                <div className=\"form-group form-inline\">\n                                    <Select\n                                        className=\"flex-grow-1 border-bottom border-secondary\"\n                                        name=\"landing_template\"\n                                        id=\"select_landing_template\"\n                                        options={this.getOptionsLandingTemplate()}\n                                        value={this.state.selectedLandingTemplate}\n                                        clearable={false}\n                                        onChange={selectedOption => {\n                                            this.handleLandingTemplateUnsavedChanges(selectedOption)\n                                        }}\n                                        placeholder={this.props.intl.formatMessage({ id: 'select' }) + '...'}\n                                        required\n                                    />\n                                    <Button\n                                        className=\"mx-2\"\n                                        disabled={!this.state.selectedLandingTemplate}\n                                        onClick={() => this.setState({ urlPreview: this.state.selectedLandingTemplate.urlPreview })}\n                                    >\n                                        <Translation id=\"preview\" defaultMessage=\"Preview\" />\n                                    </Button>\n                                </div>\n                            </div>\n                        </div>\n                        <div className=\"col-12 col-md-6\">\n                            <div className=\"form-group\">\n                                <label htmlFor=\"input_name\">\n                                    <Translation id=\"template_to_use_in_email\" defaultMessage=\"Template to use in news letter\" />\n                                </label>\n                                <div className=\"form-group form-inline\">\n                                    <Select\n                                        className=\"flex-grow-1 border-bottom border-secondary\"\n                                        name=\"news_letter_template\"\n                                        id=\"select_news_letter_template\"\n                                        options={this.getOptionsMailTemplate()}\n                                        value={this.state.selectedNewsLetterTemplate}\n                                        clearable={false}\n                                        onChange={selectedOption => {\n                                            this.handleMailTemplateUnsavedChanges(selectedOption)\n                                        }}\n                                        placeholder={this.props.intl.formatMessage({ id: 'select' }) + '...'}\n                                        required\n                                    />\n                                    <Button\n                                        className=\"mx-2\"\n                                        disabled={!this.state.selectedNewsLetterTemplate}\n                                        onClick={() => this.setState({ urlPreview: this.state.selectedNewsLetterTemplate.urlPreview })}\n                                    >\n                                        <Translation id=\"preview\" defaultMessage=\"Preview\" />\n                                    </Button>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </form>\n                {this.state.urlPreview && (\n                    <Modal\n                        title={this.props.intl.formatMessage({ id: 'template_preview', defaultMessage: 'Template preview' })}\n                        onClose={() => this.setState({ urlPreview: null })}\n                    >\n                        <img style={{ maxWidth: '100%', display: 'flex', marginLeft: 'auto', marginRight: 'auto' }} src={this.state.urlPreview} alt={this.props.intl.formatMessage({ id: 'preview' })} />\n                    </Modal>\n                )}\n            </div>\n        )\n    }\n}\n\nexport default ChooseTemplate = withRouter(injectIntl(ChooseTemplate))","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\nimport Translation from '../../global/Translation'\nimport { getSpecialNames, getToken } from '../../../store/login/reducers'\nimport { getLanguage } from '../../../store/ui/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport ReactTable from 'react-table'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport DisplayBrand from '../../catalog/rectangleResult/displays/DisplayBrand'\nimport DisplayThickness from '../../catalog/rectangleResult/displays/DisplayThickness'\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator'\n\nimport DisplayDetail from '../../catalog/rectangleResult/displays/DisplayDetail'\nimport { getDiscountMaterials } from '../../../store/promotions/reducers'\nimport { requestMaterialsDiscounts } from '../../../store/promotions/actions'\nimport { typeMap } from '../../global/TypeMaps'\nimport Button from '../../global/Button'\nimport {cloneDeep} from \"lodash\"\n\n\nconst VALID_ROTATIONS = \"CDFKRSX\";\nclass ChooseDiscounts extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedMaterials: {},\n            search: '',\n            discountMaterialsCloned: null,\n            hasUnsavedChanges: {\n                promotionDiscountsDirty: false\n            }\n        }\n    }\n\n    goToStepOne = e => {\n        e.preventDefault()\n        this.props.changeStep(this.props.step - 4)\n    }\n\n    handleSubmit = e => {\n        if(e) e.preventDefault()\n\n        //No more unsaved changes after send the form for step three\n        this.setState({ hasUnsavedChanges: {\n            ...this.state.hasUnsavedChanges,\n            promotionDiscountsDirty: false\n        }}, () => {\n            this.props.requestDiscounts()\n            //Update global state after form submit\n            this.props.setUnsavedChangesStepFive(this.state.hasUnsavedChanges)\n            //Make sure the change step is the last function\n            \n            //Only if event exists we use this change step. If not we use the one inside StepsBar component\n            if (e) {\n                this.props.changeStep(this.props.step + 1)\n            }\n        })\n        \n        // const selectedMaterials = [];\n        // Object.entries(this.state.selectedMaterials).forEach(([productId, isSelected]) => {if (isSelected) selectedMaterials.push(productId)})\n        // console.log('SEE', selectedMaterials)\n\n        // this.props.sendMaterialsSelected(this.state.selectedMaterials, this.state.currentMaterialsData).then(() => this.props.changeStep(this.props.step + 1))\n    }\n\n    markMaterial = (productId, isChecked) => {\n        if (!this.props.discountMaterials[productId]) {\n            this.props.discountMaterials[productId] = {\n                materialId: productId,\n                acceptedDiscount: false\n            }\n            this.props.discountMaterials[productId].requestedDiscount = isChecked\n        } else if(this.props.discountMaterials[productId]) {\n            //This is necessary to be able to compare the initial state and the final state of the objects for unsaved changes.\n            delete this.props.discountMaterials[productId]\n        }\n        this.forceUpdate()\n        this.handleDiscountsUnsavedChanges()\n    }\n    canAskForDiscount = original => {\n        if (original.outlet) return true\n        if (VALID_ROTATIONS.includes(original.indRotation)) return true\n        return false\n    }\n    getNameText = product => {\n        const { specialNames } = this.props\n        let LANG_TO_INDEX = {\n            da: 'EN',\n            de: 'DE',\n            'en-US': 'Z2',\n            en: 'EN',\n            es: 'ES',\n            fi: 'EN',\n            'fr-CA': 'Z2',\n            'en-CA': 'Z2',\n            fr: 'FR',\n            it: 'IT',\n            nl: 'NL',\n            no: 'EN',\n            pt: 'PT',\n            pl: 'EN',\n            sv: 'SV',\n            tr: 'TR'\n        }\n        let locale = LANG_TO_INDEX[this.props.intl.locale]\n\n        let showName\n\n        if (specialNames && specialNames[product.productId]) {\n            showName = specialNames[product.productId]\n        } else if (product.translations && product.translations[locale]) {\n            showName = product.translations[locale].displayName.toLowerCase()\n        } else {\n            showName = product.displayName.toLowerCase()\n        }\n        return showName\n    }\n\n    /**\n     * Handle the state value material discounts for unsaved changes.\n     */\n    handleDiscountsUnsavedChanges = () => {\n        const stateDiscounts = this.state.discountMaterialsCloned\n        const propsDiscounts = this.props.discountMaterials\n\n        const stateDiscountsKeys = stateDiscounts && Object.keys(stateDiscounts)\n        const propsDiscountsKeys = propsDiscounts && Object.keys(propsDiscounts)\n\n        if ((propsDiscountsKeys && JSON.stringify(propsDiscountsKeys).trim()) !== (stateDiscountsKeys && JSON.stringify(stateDiscountsKeys).trim())) {\n            this.setState({hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionDiscountsDirty: true}}, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepFive(this.state.hasUnsavedChanges)\n            })\n        } else if ((propsDiscountsKeys && JSON.stringify(propsDiscountsKeys).trim()) === (stateDiscountsKeys && JSON.stringify(stateDiscountsKeys).trim())) {\n            this.setState({hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionDiscountsDirty: false}}, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepFive(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    componentDidMount() {\n        this.props.handleReference(this)\n\n        //Get the initial value of discount materials to have something to compare\n        const discountMaterialsCloned = cloneDeep(this.props.discountMaterials)\n        this.setState({ discountMaterialsCloned: discountMaterialsCloned })\n    }\n\n    render() {\n        const headerStep = (\n            <div className=\"row\">\n                <div className=\"col-12 col-lg-10\">\n                    <h3 className=\"header-step-promotion\" style={{ fontWeight: '400' }}>\n                        <span style={{ fontWeight: '300' }}>\n                            <Translation id=\"step\" defaultMessage={'Step'} /> {this.props.step}\n                        </span>{' '}\n                        <Translation id=\"promotion_line_request_discount\" defaultMessage=\"Request discounts\" />\n                    </h3>\n                </div>\n            </div>\n        )\n\n        const formHandleSubmit = <form id=\"form_current_step\" onSubmit={e => this.handleSubmit(e)} />\n\n        let selectedMaterialsFiltered = this.props.materialsSelectedData ? this.props.materialsSelectedData : []\n        if (selectedMaterialsFiltered.length > 0 && this.state.search) {\n            selectedMaterialsFiltered = selectedMaterialsFiltered.filter(product => {\n                let indRotationLabel\n                if (product.translations) {\n                    let lang = this.props.language.toUpperCase()\n                    if (!(lang in product.translations)) lang = 'Z2'\n                    if (lang in product.translations) {\n                        indRotationLabel = product.translations[lang].indRotation && product.translations[lang].indRotation.toLowerCase()\n                    }\n                }\n\n                return (\n                    this.getNameText(product)\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase()) ||\n                    product.productId.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    product.brand.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    this.props.intl\n                        .formatMessage({ id: product.finish })\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase()) ||\n                    this.props.intl\n                        .formatMessage({ id: product.type })\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase()) ||\n                    this.props.intl\n                        .formatMessage({ id: product.subtypeName })\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase()) ||\n                    product.thickness.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    (indRotationLabel && indRotationLabel.includes(this.state.search.toLowerCase()))\n                )\n            })\n        }\n\n        return (\n            <div>\n                {this.props.canViewDiscountRequest ? (\n                    <React.Fragment>\n                        {headerStep}\n                        <div className=\"container\">\n                            <div className=\"row\">\n                                <p>\n                                    <Translation id=\"select_the_discounts_to_apply_your_campaign\" defaultMessage=\"Select the discounts to apply your campaign\" />\n                                </p>\n                                <div className=\"col-12\">\n                                    <div className=\"search-bar\">\n                                        <input\n                                            type=\"text\"\n                                            data-qa=\"query\"\n                                            className=\"search-box form-control\"\n                                            placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                            data-cy=\"Impersonate_modal__search_box\"\n                                            value={this.state.search}\n                                            onChange={e =>\n                                                this.setState({\n                                                    search: e.target.value\n                                                })\n                                            }\n                                        />\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"row\">\n                                <div className=\"col-12\">\n                                    <ReactTable\n                                        key={`discounts-table-${this.props.step}`}\n                                        className={'light'}\n                                        data={selectedMaterialsFiltered}\n                                        columns={[\n                                            {\n                                                id: 'image',\n                                                Header: <Translation id=\"image\" defaultMessage=\"Image\" />,\n                                                accessor: 'image',\n                                                Cell: ({ original }) => {\n                                                    original.style = { ...original.style, overflowX: 'visible' }\n                                                    return (\n                                                        <div className=\"list-result\" data-cy=\"catalog__product_sample_result\" type={original.type}>\n                                                            <DisplayOutletIndicator outletQuality={original.isSellingOutlet && original.outletQuality} style={{ top: 'initial' }} />\n                                                            <div className=\"product-image-container\">\n                                                                {original.thumbMd ? (\n                                                                    <img style={{ maxWidth: '100%' }} src={original.thumbMd} />\n                                                                ) : (\n                                                                    <img style={{ maxWidth: '100%', height: '76px' }} />\n                                                                )}\n                                                            </div>\n                                                        </div>\n                                                    )\n                                                },\n                                                sortable: false,\n                                                filterable: false\n                                            },\n                                            {\n                                                id: 'name',\n                                                Header: <Translation id=\"name\" defaultMessage=\"Name\" />,\n                                                accessor: 'name',\n                                                Cell: ({ original }) => {\n                                                    return (\n                                                        <div className=\"d-flex flex-column justify-content-center align-items-center h-100\">\n                                                            <ProductDisplayName product={original} />\n                                                            <DisplayBrand brand={original.brand} />\n                                                            <span style={{ fontSize: '0.8em' }}># {original.productId}</span>\n                                                        </div>\n                                                    )\n                                                },\n                                                filterable: false\n                                            },\n                                            {\n                                                id: 'thickness',\n                                                Header: <Translation id=\"thickness\" defaultMessage=\"Thickness\" />,\n                                                Cell: ({ original }) => {\n                                                    return (\n                                                        <div className=\"d-flex justify-content-center align-items-center h-100\">\n                                                            <DisplayThickness thickness={original.thickness} />\n                                                        </div>\n                                                    )\n                                                },\n                                                filterable: false\n                                            },\n                                            {\n                                                id: 'finish',\n                                                Header: <Translation id=\"finish\" defaultMessage=\"Finish\" />,\n                                                accessor: 'finish',\n                                                Cell: ({ original }) => {\n                                                    return (\n                                                        <div className=\"d-flex justify-content-center align-items-center h-100\">\n                                                            <DisplayDetail class=\"finish\" value={original.finish} />\n                                                        </div>\n                                                    )\n                                                },\n                                                filterable: false\n                                            },\n                                            {\n                                                id: 'type',\n                                                Header: <Translation id=\"type\" defaultMessage=\"Type\" />,\n                                                accessor: 'type',\n                                                Cell: ({ original }) => {\n                                                    return (\n                                                        <div className=\"d-flex justify-content-center align-items-center h-100 text-wrap\">\n                                                            {typeMap[original.type] ? typeMap[original.type] : <DisplayDetail class=\"finish\" value={original.type} />}\n                                                        </div>\n                                                    )\n                                                },\n                                                filterable: false\n                                            },\n                                            {\n                                                id: 'subtypeName',\n                                                accessor: 'subtypeName',\n                                                Header: <Translation id=\"subtypeName\" defaultMessage=\"Subtype\" />,\n                                                Cell: ({ original }) => {\n                                                    return (\n                                                        <div className=\"d-flex justify-content-center align-items-center h-100 text-wrap\">\n                                                            <DisplayDetail class=\"finish\" value={original.subtypeName} />\n                                                        </div>\n                                                    )\n                                                },\n                                                filterable: false\n                                            },\n                                            {\n                                                id: 'rotation',\n                                                accessor: 'indRotation',\n                                                Header: <Translation id=\"rotation\" defaultMessage=\"Rotation\" />,\n                                                Cell: ({ original }) => {\n                                                    let label = ''\n\n                                                    if (original.indRotation) {\n                                                        let lang = this.props.language.toUpperCase()\n                                                        if (!(lang in original.translations)) lang = 'Z2'\n                                                        if (lang in original.translations && original.translations[lang].indRotation) {\n                                                            label = `(${original.indRotation}) ${original.translations[lang].indRotation}`\n                                                        }\n                                                    }\n\n                                                    return (\n                                                        <div className=\"d-flex h-100 text-wrap\">\n                                                            <DisplayDetail class=\"finish\" value={label} />\n                                                        </div>\n                                                    )\n                                                },\n                                                filterable: false\n                                            },\n                                            {\n                                                id: 'actions',\n                                                Header: <Translation id=\"request-discount\" defaultMessage=\"Request discount\" />,\n                                                Cell: ({ original }) => {\n                                                    return (\n                                                        <div className=\"d-flex justify-content-center align-items-center h-100\">\n                                                            <input\n                                                                type=\"checkbox\"\n                                                                aria-label=\"Checkbox for following text input\"\n                                                                style={{ filter: 'grayscale(1)', width: '1.4em', height: '1.4em' }}\n                                                                checked={\n                                                                    this.props.discountMaterials[original.productId] &&\n                                                                    this.props.discountMaterials[original.productId].requestedDiscount\n                                                                }\n                                                                disabled={!this.canAskForDiscount(original)}\n                                                                onChange={e => this.markMaterial(original.productId, e.target.checked)}\n                                                            />\n                                                            {/*<span className=\"bt-delete\" onClick={() => this.removeMaterial(original)} style={{ cursor: 'pointer' }}>*/}\n                                                            {/*    <i className=\"fal fa-times\" />*/}\n                                                            {/*</span>*/}\n                                                        </div>\n                                                    )\n                                                },\n                                                sortable: false,\n                                                filterable: false\n                                            }\n                                        ]}\n                                        defaultPageSize={4}\n                                        pageSizeOptions={[4, 8, 10, 25, 50, 100]}\n                                        previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                        nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                        pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                        ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                                        onPageChange={() => this.forceUpdate()}\n                                    />\n                                    {formHandleSubmit}\n                                </div>\n                            </div>\n                        </div>\n                    </React.Fragment>\n                ) : (\n                    <React.Fragment>\n                        {headerStep}\n                        <div className=\"container request-discount-question\">\n                            <div className=\"row\">\n                                <div className=\"col-12 m-0 p-0\">\n                                    <div>\n                                        <p className=\"rdq-main-message\">\n                                            <strong>\n                                                <Translation\n                                                    id=\"request_discount_block_main_message\"\n                                                    defaultMessage=\"You cannot apply for discounts for this campaign because the start date is less than 7 calendar days.\"\n                                                />\n                                            </strong>\n                                        </p>\n                                    </div>\n                                    <div>\n                                        <p className=\"rdq-question\">\n                                            <Translation id=\"request_discount_block_ask_question\" defaultMessage=\"What do you want to do?\" />\n                                        </p>\n                                    </div>\n                                </div>\n                                <div className=\"col-12 m-0 p-0 buttons-row-rdq\">\n                                    <div>\n                                        <Button className=\"promotion-button promotion-button-back\" onClick={e => this.goToStepOne(e)}>\n                                            <Translation id=\"request_discount_block_return_step_one\" defaultMessage=\"Return to step 1 to change start date\" />\n                                        </Button>\n                                    </div>\n                                    <div>\n                                        {formHandleSubmit}\n                                        <button className=\"promotion-button inverted\" type=\"submit\" form=\"form_current_step\">\n                                            <Translation id=\"request_discount_block_continue\" defaultMessage=\"Continue to the next step without requesting discounts\" />\n                                        </button>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </React.Fragment>\n                )}\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        token: getToken(state),\n        language: getLanguage(state),\n        specialNames: getSpecialNames(state, 'specialNames'),\n        discountMaterials: getDiscountMaterials(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        requestDiscounts: () => dispatch(requestMaterialsDiscounts())\n    }\n}\nexport default ChooseDiscounts = withRouter(injectIntl(connect(mapStateToProps, mapDispatchToProps)(ChooseDiscounts)))\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport { defineMessages, injectIntl } from 'react-intl'\nimport Select from 'react-select'\nimport moment from 'moment'\nimport DatePicker from 'react-datepicker'\nimport I18nPromotionModal from './I18nPromotionModal'\nimport StepsBar from './StepsBar'\nimport Button from '../global/Button'\nimport ChooseBanner from './steps/ChooseBanner'\nimport ChooseCustomers from './steps/ChooseCustomers'\nimport ChooseArea from './steps/ChooseArea'\nimport ChooseMaterials from './steps/ChooseMaterials'\nimport GoBack from '../global/GoBack'\nimport ReactTooltip from 'react-tooltip'\nimport ChooseTemplate from './steps/ChooseTemplate'\nimport ChooseDiscounts from \"./steps/ChooseDiscounts\";\nimport {canViewDiscountStep} from \"../../store/promotions/reducers\";\nimport {cloneDeep} from \"lodash\"\nimport confirm from '../global/confirm';\nimport { mapValues } from 'lodash'\n\ndefineMessages({\n    country_AE: {\n        id: 'country_AE',\n        description: 'country_AE',\n        defaultMessage: 'United Arab Emirates'\n    },\n    country_AT: {\n        id: 'country_AT',\n        description: 'country_AT',\n        defaultMessage: 'Austria'\n    },\n    country_AU: {\n        id: 'country_AU',\n        description: 'country_AU',\n        defaultMessage: 'Australia'\n    },\n    country_BE: {\n        id: 'country_BE',\n        description: 'country_BE',\n        defaultMessage: 'Belgium'\n    },\n    country_BR: {\n        id: 'country_BR',\n        description: 'country_BR',\n        defaultMessage: 'Brazil'\n    },\n    country_CA: {\n        id: 'country_CA',\n        description: 'country_CA',\n        defaultMessage: 'Canada'\n    },\n    country_CH: {\n        id: 'country_CH',\n        description: 'country_CH',\n        defaultMessage: 'Switzerland'\n    },\n    country_DE: {\n        id: 'country_DE',\n        description: 'country_DE',\n        defaultMessage: 'Germany'\n    },\n    country_DK: {\n        id: 'country_DK',\n        description: 'country_DK',\n        defaultMessage: 'Denmark'\n    },\n    country_DU: {\n        id: 'country_DU',\n        description: 'country_DU',\n        defaultMessage: 'Country DU'\n    },\n    country_ES: {\n        id: 'country_ES',\n        description: 'country_ES',\n        defaultMessage: 'Spain'\n    },\n    country_FI: {\n        id: 'country_FI',\n        description: 'country_FI',\n        defaultMessage: 'Finland'\n    },\n    country_FR: {\n        id: 'country_FR',\n        description: 'country_FR',\n        defaultMessage: 'France'\n    },\n    country_GB: {\n        id: 'country_GB',\n        description: 'country_GB',\n        defaultMessage: 'United Kingdom'\n    },\n    country_IE: {\n        id: 'country_IE',\n        description: 'country_IE',\n        defaultMessage: 'Ireland'\n    },\n    country_IL: {\n        id: 'country_IL',\n        description: 'country_IL',\n        defaultMessage: 'Israel'\n    },\n    country_IT: {\n        id: 'country_IT',\n        description: 'country_IT',\n        defaultMessage: 'Italy'\n    },\n    country_JP: {\n        id: 'country_JP',\n        description: 'country_JP',\n        defaultMessage: 'Japan'\n    },\n    country_LT: {\n        id: 'country_LT',\n        description: 'country_LT',\n        defaultMessage: 'Lithuania'\n    },\n    country_MX: {\n        id: 'country_MX',\n        description: 'country_MX',\n        defaultMessage: 'Mexico'\n    },\n    country_MY: {\n        id: 'country_MY',\n        description: 'country_MY',\n        defaultMessage: 'Malaysia'\n    },\n    country_NL: {\n        id: 'country_NL',\n        description: 'country_NL',\n        defaultMessage: 'Netherlands'\n    },\n    country_NO: {\n        id: 'country_NO',\n        description: 'country_NO',\n        defaultMessage: 'Norway'\n    },\n    country_NZ: {\n        id: 'country_NZ',\n        description: 'country_NZ',\n        defaultMessage: 'New Zealand'\n    },\n    country_PL: {\n        id: 'country_PL',\n        description: 'country_PL',\n        defaultMessage: 'Poland'\n    },\n    country_PR: {\n        id: 'country_PR',\n        description: 'country_PR',\n        defaultMessage: 'Puerto Rico'\n    },\n    country_PT: {\n        id: 'country_PT',\n        description: 'country_PT',\n        defaultMessage: 'Portugal'\n    },\n    country_SE: {\n        id: 'country_SE',\n        description: 'country_SE',\n        defaultMessage: 'Sweden'\n    },\n    country_SG: {\n        id: 'country_SG',\n        description: 'country_SG',\n        defaultMessage: 'Singapore'\n    },\n    country_TR: {\n        id: 'country_TR',\n        description: 'country_TR',\n        defaultMessage: 'Turkey'\n    },\n    country_US: {\n        id: 'country_US',\n        description: 'country_US',\n        defaultMessage: 'United States'\n    },\n    country_ZA: {\n        id: 'country_ZA',\n        description: 'country_ZA',\n        defaultMessage: 'South Africa'\n    },\n    promotion_confirm_clean_customers_materials: {\n        id: 'promotion_confirm_clean_customers_materials',\n        description: 'promotion_confirm_clean_customers_materials',\n        defaultMessage: 'Are you sure you want to modify the promotion zones? Customers and materials related to this promotion will be deleted.'\n    },\n    promotion_preferences_title: {\n        id: 'promotion_preferences_title',\n        description: 'promotion_preferences_title',\n        defaultMessage: 'Newsletters, campaigns and promotions'\n    },\n    promotion_preferences_accept_notifications_check: {\n        id: 'promotion_preferences_accept_notifications_check',\n        description: 'promotion_preferences_accept_notifications_check',\n        defaultMessage: 'I want to receive notifications about promotions and offers from my center in eCosentino'\n    },\n    promotion_preferences_copy_email_address: {\n        id: 'promotion_preferences_copy_email_address',\n        description: 'promotion_preferences_copy_email_address',\n        defaultMessage: 'I want to use the email addresses of the rest of the notifications'\n    },\n    promotion_select_centers: {\n        id: 'promotion_select_centers',\n        description: 'promotion_select_centers',\n        defaultMessage: 'Select centers'\n    },\n    promotion_select_countries: {\n        id: 'promotion_select_countries',\n        description: 'promotion_select_countries',\n        defaultMessage: 'Select countries'\n    },\n    promotion_select_languages: {\n        id: 'promotion_select_languages',\n        description: 'promotion_select_languages',\n        defaultMessage: 'Languages'\n    },\n    promotion_select_market: {\n        id: 'promotion_select_market',\n        description: 'promotion_select_market',\n        defaultMessage: 'Select market'\n    },\n    promotion_select_user: {\n        id: 'promotion_select_user',\n        description: 'promotion_select_user',\n        defaultMessage: 'Select user'\n    },\n    promotion_select_center: {\n        id: 'promotion_select_center',\n        description: 'promotion_select_center',\n        defaultMessage: 'Select center'\n    },\n    details_of_the_promotion_it_must_include_terms_and_conditions_of_the_campaign: {\n        id: 'details_of_the_promotion_it_must_include_terms_and_conditions_of_the_campaign',\n        description: 'details_of_the_promotion_it_must_include_terms_and_conditions_of_the_campaign',\n        defaultMessage: 'Details of the promotion. It must include terms and conditions of the campaign'\n    },\n    not_applicable: {\n        id: 'not_applicable',\n        description: 'not_applicable',\n        defaultMessage: 'Not applicable'\n    },\n    rotation_discontinued_material: {\n        id: 'rotation_discontinued_material',\n        description: 'rotation_discontinued_material',\n        defaultMessage: 'Discontinued material'\n    },\n    rotation_low_rotation: {\n        id: 'rotation_low_rotation',\n        description: 'rotation_low_rotation',\n        defaultMessage: 'Low rotation'\n    },\n    rotation_discontinued_format: {\n        id: 'rotation_discontinued_format',\n        description: 'rotation_discontinued_format',\n        defaultMessage: 'Discontinued format'\n    },\n    rotation_material_no_portfolio: {\n        id: 'rotation_material_no_portfolio',\n        description: 'rotation_material_no_portfolio',\n        defaultMessage: 'Material no portfolio'\n    },\n    rotation_new_creation: {\n        id: 'rotation_new_creation',\n        description: 'rotation_new_creation',\n        defaultMessage: 'New creation'\n    },\n    rotation_discontinued_finish: {\n        id: 'rotation_discontinued_finish',\n        description: 'rotation_discontinued_finish',\n        defaultMessage: 'Discontinued finish'\n    },\n    rotation_high_rotation: {\n        id: 'rotation_high_rotation',\n        description: 'rotation_high_rotation',\n        defaultMessage: 'High rotation'\n    },\n    rotation_medium_rotation: {\n        id: 'rotation_medium_rotation',\n        description: 'rotation_medium_rotation',\n        defaultMessage: 'Medium rotation'\n    },\n    rotation_slow_moving: {\n        id: 'rotation_slow_moving',\n        description: 'rotation_slow_moving',\n        defaultMessage: 'Slow moving'\n    },\n    rotation_purchase_sale: {\n        id: 'rotation_purchase_sale',\n        description: 'rotation_purchase_sale',\n        defaultMessage: 'Purchase and sale'\n    },\n    confirm_unsaved_changes: {\n        id: 'confirm_unsaved_changes',\n        description: 'confirm_unsaved_changes',\n        defaultMessage: 'You have unsaved changes. Indicate if you want to save them below.'\n    },\n    save_and_continue: {\n        id: 'save_and_continue',\n        description: 'save_and_continue',\n        defaultMessage: 'Save and continue'\n    },\n    continue_without_saving: {\n        id: 'continue_without_saving',\n        description: 'continue_without_saving',\n        defaultMessage: 'Continue without saving'\n    }\n})\n\nconst TITLE_CHARS_LIMIT = 64\nconst DESC_CHARS_LIMIT = 256\n\nclass PromotionAdmin extends React.Component {\n\n    validDateToRequestDiscount = moment().add(7, 'days')\n\n    constructor(props) {\n        super(props)\n        const startDate = this.props.startDate ? moment(this.props.startDate) : moment()\n        this.state = {\n            promotionName: this.props.promotionName,\n            languages: this.props.languages,\n            startDate: startDate,\n            endDate: this.props.endDate ? moment(this.props.endDate) : moment().add(15, 'days'),\n            commercial_name: this.props.commercial_name,\n            description: this.props.description,\n            showModali18n: false,\n            objectToTranslate: null,\n            objectTrans: null,\n            urlPreview: null,\n            fetchedMarkets: this.props.getMarkets(),\n            fetchedCountries: [],\n            fetchedCentres: [],\n            //start banners\n            bannerLanding: null,\n            bannerHome: null,\n            bannerNewsLetter: null,\n            sideBannerNewsLetter: null,\n            bannerTitle: null,\n            bannerDescription: null,\n            //end banners\n\n            //alerts of validations form\n            alertCommercialNameRequired: false,\n            alertDescriptionRequired: false,\n            descriptionModalForDescription: null,\n            canViewDiscountRequest: startDate > this.validDateToRequestDiscount,\n            //Unsaved changes\n            hasUnsavedChanges: {\n                promotionNameDirty: false,\n                promotionLanguageDirty: false,\n                promotionStartDateDirty: false,\n                promotionEndDateDirty: false,\n                promotionCommercialNameDirty: false,\n                promotionDescriptionNameDirty: false\n            },\n            languagesCloned: null,\n            commercialNameCloned: null,\n            descriptionCloned: null\n        }\n\n\n        \n        // Create the references to connect child components with parent component.\n        this.references = {\n            chooseAreaRef: React.createRef(),\n            chooseCustomersRef: React.createRef(),\n            chooseMaterialsRef: React.createRef(),\n            chooseDiscountsRef: React.createRef(),\n            chooseTemplateRef: React.createRef(),\n            chooseBannerRef: React.createRef()\n        }\n\n        this.props.getMarkets()\n    }\n\n    componentDidMount() {\n        //Get the initial value of languages to have something to compare\n        const languagesCloned = cloneDeep(this.props.languages)\n        this.setState({ languagesCloned: languagesCloned })\n\n        //Get the initial value of commercial name to have something to compare\n        const commercialNameCloned = cloneDeep(this.props.commercial_name)\n        this.setState({ commercialNameCloned: commercialNameCloned })\n\n        //Get the initial value of description to have something to compare\n        const descriptionCloned = cloneDeep(this.props.description)\n        this.setState({ descriptionCloned: descriptionCloned })\n    }\n\n    /**\n     * Check if the promotion start date is more than 7 days before the promotion begins.\n     * @param {object} date momentjs \n     */\n    handleValidDateToShowDiscountStep(date) {\n        if (date > this.validDateToRequestDiscount) {\n            this.setState({ canViewDiscountRequest: true })\n        } else {\n            this.setState({ canViewDiscountRequest: false }) \n        }\n    }\n\n    /**\n     * Handle the confirm modal popup for each step.\n     */\n    triggerConfirmUnsavedChanges = () => {\n        return confirm(\n            this.props.intl.formatMessage({ id: 'confirm_unsaved_changes' }), {textCancel: this.props.intl.formatMessage({ id: 'continue_without_saving' }), textOk: this.props.intl.formatMessage({ id: 'save_and_continue' })}).then(\n            confirm => {\n                switch (this.props.step) {\n                    case 2:\n                        this.confirmFromStepTwo()\n                        break\n                    case 3:\n                        this.confirmFromStepThree()\n                        break\n                    case 4:\n                        this.confirmFromStepFour()\n                        break\n                    case 5:\n                        this.confirmFromStepFive()\n                        break\n                    case 6:\n                        this.confirmFromStepSix()\n                        break\n                    case 7:\n                        this.confirmFromStepSeven()\n                        break\n                    default:\n                        break\n                }\n\n              return this.props.stepBack(this.props.step - 1)\n            },\n            cancel => {\n                switch (this.props.step) {\n                    case 2:\n                        this.cancelFromStepTwo()\n                        break\n                    case 3:\n                        this.cancelFromStepThree()\n                        break\n                    case 4:\n                        this.cancelFromStepFour()\n                        break\n                    case 5:\n                        this.cancelFromStepFive()\n                        break\n                    case 6:\n                        this.cancelFromStepSix()\n                        break\n                    case 7:\n                        this.cancelFromStepSeven()\n                        break\n                    default:\n                        break\n                }\n\n                return this.props.stepBack(this.props.step - 1)\n           }\n        )\n    }\n\n    /**\n     * Handles the call to the submit function of step 2 according to the requested step.\n     */\n    confirmFromStepTwo = () => {\n        this.references.chooseAreaRef.current.handleSubmit()\n    }\n\n    /**\n     * Handles the call to the submit function of step 3 according to the requested step.\n     */\n    confirmFromStepThree = () => {\n        this.references.chooseCustomersRef.current.handleSubmit()\n    }\n\n    /**\n     * Handles the call to the submit function of step 4 according to the requested step.\n     */\n    confirmFromStepFour = () => {\n        this.references.chooseMaterialsRef.current.handleSubmit()\n    }\n\n    /**\n     * Handles the call to the submit function of step 5 according to the requested step.\n     */\n    confirmFromStepFive = () => {\n        this.references.chooseDiscountsRef.current.handleSubmit()\n    }\n\n    /**\n     * Handles the call to the submit function of step 6 according to the requested step.\n     */\n    confirmFromStepSix = () => {\n        this.references.chooseTemplateRef.current.handleSubmit() \n    }\n\n    /**\n     * Handles the call to the submit function of step 7 according to the requested step.\n     */\n    confirmFromStepSeven = () => {\n        this.references.chooseBannerRef.current.handleSubmit() \n    }\n\n    /**\n     * Handle the continue without saving action for step 2.\n     */\n    cancelFromStepTwo = () => {\n        /** @type {object} */\n        const chooseAreaRef = this.references.chooseAreaRef.current\n\n        /** @type {object} */\n        let unsavedChanges = chooseAreaRef && chooseAreaRef.state.hasUnsavedChanges\n\n        // Transform the object values to false value\n        unsavedChanges = mapValues(unsavedChanges, () => false)\n        // Update the global state\n        this.props.setUnsavedChangesStepTwo(unsavedChanges)\n    }\n\n    /**\n     * Handle the continue without saving action for step 3.\n     */\n    cancelFromStepThree = () => {\n        /** @type {object} */\n        const chooseCustomersRef = this.references.chooseCustomersRef.current\n\n        /** @type {object} */\n        let unsavedChanges = chooseCustomersRef && chooseCustomersRef.state.hasUnsavedChanges\n\n        // Transform the object values to false value\n        unsavedChanges = mapValues(unsavedChanges, () => false)\n        // Update the global state\n        this.props.setUnsavedChangesStepThree(unsavedChanges)\n    }\n\n    /**\n     * Handle the continue without saving action for step 4.\n     */\n    cancelFromStepFour = () => {\n        /** @type {object} */\n        const chooseMaterialsRef = this.references.chooseMaterialsRef.current\n\n        /** @type {object} */\n        let unsavedChanges = chooseMaterialsRef && chooseMaterialsRef.state.hasUnsavedChanges\n\n        // Transform the object values to false value\n        unsavedChanges = mapValues(unsavedChanges, () => false)\n        // Update the global state\n        this.props.setUnsavedChangesStepFour(unsavedChanges)\n    }\n\n    /**\n     * Handle the continue without saving action for step 5.\n     */\n    cancelFromStepFive = () => {\n        /** @type {object} */\n        const chooseDiscountsRef = this.references.chooseDiscountsRef.current\n\n        /** @type {object} */\n        let unsavedChanges = chooseDiscountsRef && chooseDiscountsRef.state.hasUnsavedChanges\n\n        // Transform the object values to false value\n        unsavedChanges = mapValues(unsavedChanges, () => false)\n        // Update the global state\n        this.props.setUnsavedChangesStepFive(unsavedChanges)\n    }\n\n    /**\n     * Handle the continue without saving action for step 6.\n     */\n    cancelFromStepSix = () => {\n        /** @type {object} */\n        const chooseTemplateRef = this.references.chooseTemplateRef.current\n\n        /** @type {object} */\n        let unsavedChanges = chooseTemplateRef && chooseTemplateRef.state.hasUnsavedChanges\n\n        // Transform the object values to false value\n        unsavedChanges = mapValues(unsavedChanges, () => false)\n        // Update the global state\n        this.props.setUnsavedChangesStepSix(unsavedChanges)\n    }\n\n    /**\n     * Handle the continue without saving action for step 7.\n     */\n    cancelFromStepSeven = () => {\n        /** @type {object} */\n        const chooseBannerRef = this.references.chooseBannerRef.current\n\n        /** @type {object} */\n        let unsavedChanges = chooseBannerRef && chooseBannerRef.state.hasUnsavedChanges\n\n        // Transform the object values to false value\n        unsavedChanges = mapValues(unsavedChanges, () => false)\n        // Update the global state\n        this.props.setUnsavedChangesStepSeven(unsavedChanges)\n    }\n\n    stepBack() {\n        if (this.props.step === 1 && this.props.hasUnsavedChangesStepOne) {\n            return this.triggerConfirmUnsavedChanges()\n        } else if (this.props.step === 2 && this.props.hasUnsavedChangesStepTwo) {\n            return this.triggerConfirmUnsavedChanges()\n        } else if (this.props.step === 3 && this.props.hasUnsavedChangesStepThree) {\n            return this.triggerConfirmUnsavedChanges()\n        } else if (this.props.step === 4 && this.props.hasUnsavedChangesStepFour) {\n            return this.triggerConfirmUnsavedChanges()\n        } else if (this.props.step === 5 && this.props.hasUnsavedChangesStepFive) {\n            return this.triggerConfirmUnsavedChanges()\n        } else if (this.props.step === 6 && this.props.hasUnsavedChangesStepSix) {\n            return this.triggerConfirmUnsavedChanges()\n        } else if (this.props.step === 7 && this.props.hasUnsavedChangesStepSeven) {\n            return this.triggerConfirmUnsavedChanges()\n        } else {\n            this.props.stepBack(this.props.step - 1)\n        }\n    }\n\n    getLanguages = () => {\n        return this.props.markets\n            .map(land => {\n                return { value: land.localecode, label: land.name, name: land.name, code: land.code }\n            })\n            .sort((a, b) => {\n                if (a.label < b.label) return -1\n                if (a.label > b.label) return 1\n                return 0\n            })\n    }\n\n    setDefaultLanguage() {\n        let commercial_name = this.props.translations.commercial_name\n        commercial_name['default_text'] = commercial_name[commercial_name['default']]\n        let description = this.props.translations.description\n        description['default_text'] = description[description['default']]\n\n        this.setState({\n            commercial_name: commercial_name,\n            description: description\n        })\n    }\n\n    updateTranslations(object, updatedTranslations) {\n        this.props.saveTranslationObject(object, updatedTranslations)\n        this.setState({\n            showModali18n: false,\n            objectToTranslate: null,\n            objectTrans: null,\n            [object]: updatedTranslations\n        }, () => {\n            if (object === 'commercial_name') this.handleCommercialNameUnsavedChanges()\n            if (object === 'description') this.handleDescriptionUnsavedChanges()\n        })\n\n        if (object === 'commercial_name') this.setState({ alertCommercialNameRequired: false })\n        if (object === 'description') this.setState({ alertDescriptionRequired: false })\n    }\n\n    /**\n     * @param {string} modalType \n     */\n    showi18nModal(modalType) {\n        const charLimit = modalType === 'description' ? DESC_CHARS_LIMIT : TITLE_CHARS_LIMIT\n        const limitWarning = this.props.intl.formatMessage({\n            id: 'details_of_the_promotion_it_must_not_exceed_n_chars',\n            defaultMessage: 'The text cannot exceed {value} characters'\n        }, {value:charLimit})\n        const descWarning = this.props.intl.formatMessage({\n            id: 'details_of_the_promotion_it_must_include_terms_and_conditions_of_the_campaign',\n            defaultMessage: 'Details of the promotion. It must include terms and conditions of the campaign'\n        })\n\n        if (modalType) {\n            this.setState({\n                showModali18n: true,\n                objectToTranslate: modalType,\n                objectTrans: this.props.translations[modalType],\n                descriptionModalForDescription: modalType === 'description' ?\n                    <div>\n                        <div>{descWarning}</div>\n                        <div>{limitWarning}</div>\n                    </div>\n                    : limitWarning,\n                charLimit: charLimit\n            }, () => {\n                this.handleDescriptionUnsavedChanges()\n                this.handleCommercialNameUnsavedChanges()\n            })\n        }\n    }\n\n    onCloseModal = e => {\n        this.setState({\n            showModali18n: false,\n            objectToTranslate: null,\n            objectTrans: null\n        }, () => {\n            this.handleDescriptionUnsavedChanges()\n            this.handleCommercialNameUnsavedChanges()\n        })\n    }\n\n    handleHeaderSubmit = e => {\n        if(e) e.preventDefault()\n        if (!!this.nameInput.value && !!this.state.startDate && !!this.state.endDate && !!this.props.commercial_name && !!this.props.description) {\n            this.setDefaultLanguage()\n            \n            //No more unsaved changes after send the form for step one\n            this.setState({ hasUnsavedChanges: {\n                ...this.state.hasUnsavedChanges,\n                promotionNameDirty: false,\n                promotionLanguageDirty: false,\n                promotionStartDateDirty: false,\n                promotionEndDateDirty: false,\n                promotionCommercialNameDirty: false,\n                promotionDescriptionNameDirty: false\n            }}, () => {\n                this.props.sendPromotionHeader(this.nameInput.value, this.state.startDate, this.state.endDate, this.props.commercial_name, this.props.description)\n                //Update global state after form submit\n                this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n\n                //Make sure the change step is the last function\n                //Only if event exists we use this change step. If not we use the one inside StepsBar component\n                if (e) {\n                    this.props.changeStep(this.props.step + 1)\n                }\n            }) \n        } else {\n            if (!this.props.commercial_name) this.setState({ alertCommercialNameRequired: true })\n            if (!this.props.description) this.setState({ alertDescriptionRequired: true })\n        }\n    }\n\n    /**\n     * Handle the state promotion name for unsaved changes.\n     * @param {object} event \n     */\n    handlePromotionName = (event) => {\n        const { value } = event.target\n\n        // Check if old value is same or diferent of new the value. Then update state.\n        this.setState({ promotionName: value }, () => {\n            if (this.props.promotionName !== this.state.promotionName) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionNameDirty: true} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n                })\n            } else if (this.props.promotionName === this.state.promotionName) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionNameDirty: false} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n                })\n            }\n        })\n    }\n\n    /**\n     * Handle the state start date for unsaved changes.\n     * @param {object} event momentjs\n     */\n    handlePromotionStartDate = (event) => {\n        this.handleValidDateToShowDiscountStep(event)\n\n        this.setState({ startDate: event }, () => {\n            const propsStartDate = moment(this.props.startDate).format('YYYY/MM/DD')\n            const stateStartDate = this.state.startDate && this.state.startDate.format('YYYY/MM/DD')\n\n            // Check if old value is same or diferent of new the value. Then update state.\n            if (propsStartDate !== stateStartDate) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionStartDateDirty: true} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n                })\n            } else if (propsStartDate === stateStartDate) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionStartDateDirty: false} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n                })\n            }\n        })\n    }\n\n    /**\n     * Handle the state end date for unsaved changes.\n     * @param {object} event momentjs\n     */\n    handlePromotionEndDate = (event) => {\n        this.setState({ endDate: event }, () => {\n            const propsEndDate = moment(this.props.endDate).format('YYYY/MM/DD')\n            const stateEndDate = this.state.endDate && this.state.endDate.format('YYYY/MM/DD')\n\n            // Check if old value is same or diferent of new the value. Then update state.\n            if (propsEndDate !== stateEndDate) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionEndDateDirty: true} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n                })\n            } else if (propsEndDate === stateEndDate) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionEndDateDirty: false} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n                })\n            }\n        })\n    }\n\n    /**\n     * Handle the state languages for unsaved changes.\n     * @param {object} selectedOption\n     */\n    handlePromotionLanguageUnsavedChanges = (selectedOption) => {\n        this.props.setAvailableLanguages(selectedOption)\n\n        this.setState({ languages: selectedOption }, () => {\n            const stateLanguages = this.state.languagesCloned\n            const propsLanguages = this.props.languages\n    \n            const stateJsonLanguages = stateLanguages && JSON.stringify(this.state.languagesCloned)\n            const propsJsonLanguages = propsLanguages && JSON.stringify(this.props.languages)\n    \n            // Check if old value is same or diferent of new the value. Then update state.\n            if (propsJsonLanguages !== stateJsonLanguages) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionLanguageDirty: true} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n                })\n            } else if (propsJsonLanguages === stateJsonLanguages) {\n                this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionLanguageDirty: false} }, () => {\n                    //Update global state\n                    this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n                })\n            }\n        })\n    }\n\n    /**\n     * Handle the state commercial name for unsaved changes.\n     */\n    handleCommercialNameUnsavedChanges = () => {\n        const stateCommercialName = this.state.commercialNameCloned && this.state.commercialNameCloned.default\n        const propsCommercialName = this.props.commercial_name && this.props.commercial_name.default\n\n        // Check if old value is same or diferent of new the value. Then update state.\n        if (propsCommercialName !== stateCommercialName) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionCommercialNameDirty: true} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n            })\n        } else if (propsCommercialName === stateCommercialName) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionCommercialNameDirty: false} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    /**\n     * Handle the state description for unsaved changes.\n     */\n    handleDescriptionUnsavedChanges = () => {\n        const stateDescription = this.state.descriptionCloned && this.state.descriptionCloned.default\n        const propsDescription = this.props.description && this.props.description.default\n\n        // Check if old value is same or diferent of new the value. Then update state.\n        if (propsDescription !== stateDescription) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionDescriptionNameDirty: true} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n            })\n        } else if (propsDescription === stateDescription) {\n            this.setState({ hasUnsavedChanges: {...this.state.hasUnsavedChanges, promotionDescriptionNameDirty: false} }, () => {\n                //Update global state\n                this.props.setUnsavedChangesStepOne(this.state.hasUnsavedChanges)\n            })\n        }\n    }\n\n    getComponentOfTheStep = () => {\n        let step = this.props.step\n\n        if (step > 4 && !this.props.canViewDiscountStep) step++\n\n        // eslint-disable-next-line default-case\n        switch (step) {\n            case 1:\n                return (\n                    <div>\n                        <div className=\"row\">\n                            <div className=\"col-12\">\n                                <h3 style={{ fontWeight: '400' }}>\n                                    <span style={{ fontWeight: '300' }}>\n                                        <Translation id=\"step\" defaultMessage={'Step'} /> {this.props.step}\n                                    </span>{' '}\n                                    <Translation id=\"promotion_line_general_info\" defaultMessage=\"General info\" />\n                                </h3>\n                                <p>\n                                    <Translation\n                                        id=\"fill_the_following_fields_with_the_general_information_of_your_campaign\"\n                                        defaultMessage=\"Fill the following fields with the general information of your campaign\"\n                                    />\n                                </p>\n                            </div>\n                        </div>\n                        <form id=\"form_current_step\" onSubmit={(e) => this.handleHeaderSubmit(e)}>\n                            <div className=\"row\">\n                                <div className=\"col-12\">\n                                    <div className=\"form-group input_name\">\n                                        <label htmlFor=\"input_name\">\n                                            <Translation id=\"campaign_name\" defaultMessage=\"Campaign name\" />{' '}\n                                            <i\n                                                className=\"fal fa-info-circle\"\n                                                style={{ margin: '5px', flex: '0 0 auto' }}\n                                                data-tip={this.props.intl.formatMessage({\n                                                    id: 'internal_name_of_the_promotion_not_show_to_the_customer',\n                                                    defaultMessage: 'Internal name of the promotion (not show to the customer)'\n                                                })}\n                                            />\n                                        </label>\n                                        <input\n                                            name=\"name\"\n                                            id=\"input_name\"\n                                            required\n                                            type=\"text\"\n                                            className=\"form-control\"\n                                            placeholder={this.props.intl.formatMessage({ id: 'name' })}\n                                            defaultValue={this.state.promotionName}\n                                            ref={node => {\n                                                this.nameInput = node\n                                            }}\n                                            data-cy=\"promotion-input_name\"\n                                            onChange={(event) => this.handlePromotionName(event)}\n                                        />\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"row\">\n                                <div className=\"col-12\">\n                                    <div className=\"form-group select_languages\">\n                                        <label htmlFor=\"select_languages\">\n                                            <Translation id=\"promotion_languages\" defaultMessage=\"Promotion languages\" />\n                                        </label>\n                                        <Select\n                                            required\n                                            id=\"select_languages\"\n                                            multi={true}\n                                            className=\"form-control\"\n                                            placeholder={this.props.intl.formatMessage({ id: 'promotion_select_languages' })}\n                                            value={this.props.languages}\n                                            onChange={selectedOption => {\n                                                    this.handlePromotionLanguageUnsavedChanges(selectedOption)\n                                                }\n                                            }\n                                            options={this.getLanguages()}\n                                        />\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"row reverse-flex\">\n                                <div className=\"col-md-6\">\n                                    <div className=\"col-12 m-0 p-0\">\n                                        <div className=\"form-group select_date align-items-center\">\n                                            <label htmlFor=\"input-date\" style={{ marginRight: '15px', marginBottom: '0px' }}>\n                                                <Translation id=\"campaign_start_date\" defaultMessage=\"Campaign start date\" />\n                                            </label>\n                                            <DatePicker\n                                                selected={this.state.startDate}\n                                                selectsStart={true}\n                                                onChange={selectedOption => this.handlePromotionStartDate(selectedOption)}\n                                                autoComplete=\"off\"\n                                                onKeyDown={e => e.preventDefault()}\n                                                showMonthDropdown\n                                                showYearDropdown\n                                                isClearable={!this.props.isAmortized}\n                                                className=\"form-control date\"\n                                                disabled={this.props.isAmortized}\n                                            />\n                                        </div>\n                                    </div>\n                                    <div className=\"col-12 m-0 p-0\">\n                                        <div className=\"form-group select_date align-items-center\">\n                                            <label htmlFor=\"input-date\" style={{ marginRight: '15px', marginBottom: '0px' }}>\n                                                <Translation id=\"promotion_end_date\" defaultMessage=\"Promotion end date\" />\n                                            </label>\n                                            <DatePicker\n                                                selected={this.state.endDate}\n                                                selectsStart={true}\n                                                onChange={selectedOption => this.handlePromotionEndDate(selectedOption)}\n                                                autoComplete=\"off\"\n                                                onKeyDown={e => e.preventDefault()}\n                                                showMonthDropdown\n                                                showYearDropdown\n                                                isClearable={!this.props.isAmortized}\n                                                className=\"form-control date\"\n                                                disabled={this.props.isAmortized}\n                                            />\n                                        </div>\n                                    </div>\n                                </div>\n                                <div className=\"col-md-6 promo-alert-message-container\">\n                                    <div className=\"alert mb-1 mt-1 alert-warning d-flex justify-content-center align-items-center\">\n                                        <div>\n                                            <i className=\"fal fa-info-circle\" />\n                                        </div>\n                                        <div>\n                                            <strong>\n                                                <Translation id=\"start_date_promotion_alert_message\" defaultMessage=\"If you are going to request discounts for this campaign, the start date must start in at least 7 calendar days.\" />\n                                            </strong>\n                                        </div>\n                                    </div>\n                                </div>                        \n                            </div>\n                            <div className=\"row\">\n                                <div className=\"col-12\">\n                                    <hr />\n                                    <h5>\n                                        <Translation id=\"enter_the_public_title_and_public_description\" defaultMessage=\"Enter the public title and public description\" />\n                                    </h5>\n                                </div>\n                                <div className=\"col-6\">\n                                    <div className=\"form-group set_commercial_name\">\n                                        <label htmlFor=\"commercial_name\">\n                                            <Translation id=\"commercial_name\" defaultMessage=\"Commercial name\" />\n                                        </label>\n                                        <Button className=\"promotion-button d-inline-block\" \n                                            disabled={this.props.languages.length === 0} \n                                            onClick={() => {\n                                                    this.showi18nModal('commercial_name')\n                                                    this.handleCommercialNameUnsavedChanges()\n                                                    this.handleDescriptionUnsavedChanges()\n                                                }\n                                            }>\n                                            <Translation id=\"promotion_edit_view_commercial_name\" defaultMessage=\"Edit/View commercial name\" />\n                                        </Button>\n                                    </div>\n                                </div>\n                                <div className=\"col-6\">\n                                    <div className=\"form-group set_description\">\n                                        <label htmlFor=\"description\">\n                                            <Translation id=\"description\" defaultMessage=\"Description\" />\n                                        </label>\n                                        <i\n                                            className=\"fal fa-info-circle\"\n                                            style={{ margin: '5px', flex: '0 0 auto' }}\n                                            data-tip={this.props.intl.formatMessage({\n                                                id: 'details_of_the_promotion_it_must_include_terms_and_conditions_of_the_campaign',\n                                                defaultMessage: 'Details of the promotion. It must include terms and conditions of the campaign'\n                                            })}\n                                        />\n                                        <ReactTooltip effect=\"solid\" place=\"top\" />\n                                        <Button className=\"promotion-button d-inline-block\" \n                                            disabled={this.props.languages.length === 0} \n                                            onClick={() => {\n                                                    this.showi18nModal('description')\n                                                    this.handleCommercialNameUnsavedChanges()\n                                                    this.handleDescriptionUnsavedChanges()\n                                                }\n                                            }>\n                                            <Translation id=\"promotion_edit_view_description\" defaultMessage=\"Edit/View description\" />\n                                        </Button>\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"row\">\n                                {this.state.alertCommercialNameRequired && (\n                                    <div className=\"col-12\">\n                                        <div className=\"alert alert-warning alert-dismissible d-flex justify-content-between\">\n                                            <Translation id=\"the_commercial_name_field_is_required\" defaultMessage=\"The commercial name field is required\" />\n                                            <div className=\"bt-close\" onClick={() => this.setState({ alertCommercialNameRequired: false })}>\n                                                <i className=\"fal fa-times\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                )}\n                                {this.state.alertDescriptionRequired && (\n                                    <div className=\"col-12\">\n                                        <div className=\"alert alert-warning alert-dismissible d-flex justify-content-between\">\n                                            <Translation id=\"the_description_field_is_required\" defaultMessage=\"The description field is required\" />\n                                            <div className=\"bt-close\" onClick={() => this.setState({ alertDescriptionRequired: false })}>\n                                                <i className=\"fal fa-times\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                )}\n                            </div>\n                            <ReactTooltip effect=\"solid\" place=\"top\" />\n                        </form>\n                    </div>\n                )\n            case 2:\n                return <ChooseArea {...this.props} ref={this.references.chooseAreaRef} handleReference={this.handleReference}/>\n            case 3:\n                return <ChooseCustomers {...this.props} ref={this.references.chooseCustomersRef} handleReference={this.handleReference}/>\n            case 4:\n                return <ChooseMaterials {...this.props} ref={this.references.chooseMaterialsRef} handleReference={this.handleReference}/>\n            case 5:\n                return <ChooseDiscounts {...this.props} canViewDiscountRequest={this.state.canViewDiscountRequest} ref={this.references.chooseDiscountsRef} handleReference={this.handleReference}/>\n            case 6:\n                return <ChooseTemplate {...this.props} ref={this.references.chooseTemplateRef} handleReference={this.handleReference}/>\n            case 7:\n                return <ChooseBanner {...this.props} ref={this.references.chooseBannerRef} handleReference={this.handleReference}/>\n        }\n    }\n\n    /**\n     * Handles the reference created to be able to pass information from the child components to the parent.\n     * @param {object} r reference \n     */\n    handleReference = (r) => {\n        this.references.chooseAreaRef.current = r\n        this.references.chooseCustomersRef.current = r\n        this.references.chooseMaterialsRef.current = r\n        this.references.chooseDiscountsRef.current = r\n        this.references.chooseTemplateRef.current = r\n        this.references.chooseBannerRef.current = r\n    }\n\n    render() {\n        if (this.props.step > 7) {\n            this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_PROMOTIONS_LIST' }))\n            return null\n        }\n\n        return (\n            <section id=\"section-promotion-admin\">\n                <div className=\"promotions\">\n                    <div className=\"container\">\n                        <div className=\"row\">\n                            <div className=\"col-12 pt-3\">\n                                <GoBack goBack={() => this.props.goAdminList(this.props.intl)}></GoBack>\n                            </div>\n                        </div>\n                        <div id=\"progressbar\" className={`promotion-card card my-4 p-1 p-sm-4`}>\n                            <StepsBar \n                                step={this.props.step}\n                                changeStep={this.props.changeStep}\n                                availableSteps={this.props.availableSteps}\n                                canViewDiscountStep={this.props.canViewDiscountStep}\n                                hasUnsavedChangesStepOne={this.props.hasUnsavedChangesStepOne}\n                                hasUnsavedChangesStepTwo={this.props.hasUnsavedChangesStepTwo}\n                                hasUnsavedChangesStepThree={this.props.hasUnsavedChangesStepThree}\n                                hasUnsavedChangesStepFour={this.props.hasUnsavedChangesStepFour}\n                                hasUnsavedChangesStepFive={this.props.hasUnsavedChangesStepFive}\n                                hasUnsavedChangesStepSix={this.props.hasUnsavedChangesStepSix}\n                                hasUnsavedChangesStepSeven={this.props.hasUnsavedChangesStepSeven}\n                                references={this.references}\n                                handleHeaderSubmit={this.handleHeaderSubmit}\n                                stepOneUnsavedChanges={this.state.hasUnsavedChanges}\n                                setUnsavedChangesStepOne={this.props.setUnsavedChangesStepOne}\n                                setUnsavedChangesStepTwo={this.props.setUnsavedChangesStepTwo}\n                                setUnsavedChangesStepThree={this.props.setUnsavedChangesStepThree}\n                                setUnsavedChangesStepFour={this.props.setUnsavedChangesStepFour}\n                                setUnsavedChangesStepFive={this.props.setUnsavedChangesStepFive}\n                                setUnsavedChangesStepSix={this.props.setUnsavedChangesStepSix}\n                                setUnsavedChangesStepSeven={this.props.setUnsavedChangesStepSeven}\n                            />\n                        </div>\n                        <div id=\"promotion_card\" className={`promotion-card card my-4 p-2 p-sm-4`}>\n                            {this.getComponentOfTheStep()}         \n                            <div className={`row ${!this.state.canViewDiscountRequest && this.props.canViewDiscountStep && this.props.step === 5 ? 'd-none' : '' }`}>\n                                <div className=\"col-12 buttons d-flex justify-content-between px-md-5 mt-4\">\n                                    <div className=\"d-flex\">\n                                        <Button id=\"back_button\" \n                                                className=\"promotion-button promotion-button-back\" \n                                                disabled={this.props.step <= 1}\n                                                onClick={() => this.stepBack()}>\n                                            <Translation id=\"back\" defaultMessage=\"Back\" />\n                                        </Button>\n                                    </div>\n                                    <button className=\"promotion-button inverted\" type=\"submit\" form=\"form_current_step\">\n                                        {this.props.step <= 6 ? <Translation id=\"save_and_next\" defaultMessage=\"Save and next\" /> : <Translation id=\"save\" defaultMessage=\"Save\" />}\n                                    </button>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                {this.state.showModali18n && (\n                    <I18nPromotionModal\n                        translations={this.state.objectTrans}\n                        languages={this.props.languages}\n                        title={this.props.intl.formatMessage({ id: this.state.objectToTranslate })}\n                        type={this.state.objectToTranslate}\n                        onCloseModal={() => this.onCloseModal()}\n                        onSaveForm={(object, updatedTranslations) => this.updateTranslations(object, updatedTranslations)}\n                        description={this.state.descriptionModalForDescription}\n                        limit={this.state.charLimit}\n                    />\n                )}\n            </section>\n        )\n    }\n}\n\nexport default injectIntl(PromotionAdmin)\n","import { connect } from 'react-redux'\n\nimport {\n    getImpersonatedBy,\n    getIsCampaignsPricingUser,\n    getSalesOrg,\n    getUserName,\n    getUserType\n} from '../../store/login/reducers'\nimport { getAvailableLands } from '../../store/ui/reducers'\nimport PromotionAdmin from './PromotionAdmin'\nimport * as reducer from '../../store/promotions/reducers'\nimport { getSelectedCenter } from '../../store/centers/reducers'\nimport * as action from '../../store/promotions/actions'\nimport {\n    getBannerDescription,\n    getBannerTitle,\n    getCommercialName,\n    getCurrentPromotionId,\n    getMaterialsSelected,\n    getMaterialsSelectedData,\n    getCustomersSelected,\n    getDescription,\n    getHeadEmailBannerData,\n    getHeadLandingBannerData,\n    getHomeBannerData,\n    getLandingTemplateId,\n    getLandingTemplates,\n    getLateralBanner,\n    getMailTemplateId,\n    getNewsLetterTemplates,\n    getPromotionCenters,\n    getPromotionCountries,\n    getPromotionEndDate,\n    getPromotionMarket,\n    getPromotionName,\n    getPromotionStartDate,\n    getAvailableSteps,\n    canViewDiscountStep,\n    getIsAmortized,\n    getDiscountStatus,\n    getUnsavedChangesStepOne,\n    getUnsavedChangesStepTwo,\n    getUnsavedChangesStepThree,\n    getUnsavedChangesStepFour,\n    getUnsavedChangesStepFive,\n    getUnsavedChangesStepSix,\n    getUnsavedChangesStepSeven\n} from '../../store/promotions/reducers'\nimport { push } from 'react-router-redux'\nimport { dispatchPushURL } from '../../store/ui/actions'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        currentPromotionId: getCurrentPromotionId(state),\n        availableSteps: getAvailableSteps(state),\n        salesOrg: getSalesOrg(state),\n        isSending: reducer.getIsSending(state),\n        isLoading: reducer.getIsLoading(state),\n        isAmortized: reducer.getIsAmortized(state),\n        alert: reducer.getAlert(state),\n        status: reducer.getStatus(state),\n        step: reducer.getStep(state),\n        userName: getUserName(state),\n        userType: getUserType(state),\n        impersonatedBy: getImpersonatedBy(state),\n        centerId: getSelectedCenter(state),\n        translations: reducer.getTranslations(state),\n        markets: getAvailableLands(state),\n        landingTemplates: getLandingTemplates(),\n        newsLetterTemplates: getNewsLetterTemplates(),\n        fetchedMarkets: reducer.getFetchedMarkets(state),\n        fetchedCountries: reducer.getFetchedCountries(state),\n        fetchedCenters: reducer.getFetchedCenters(state),\n        languages: reducer.getAvailableLanguages(state),\n        customersOfArea: reducer.getCustomersOfArea(state),\n        promotionName: getPromotionName(state),\n        startDate: getPromotionStartDate(state),\n        endDate: getPromotionEndDate(state),\n        commercial_name: getCommercialName(state),\n        description: getDescription(state),\n        market: getPromotionMarket(state),\n        countries: getPromotionCountries(state),\n        centers: getPromotionCenters(state),\n        landingTemplateId: getLandingTemplateId(state),\n        mailTemplateId: getMailTemplateId(state),\n\n        headLandingBannerData: getHeadLandingBannerData(state),\n        homeBannerData: getHomeBannerData(state),\n        headEmailBannerData: getHeadEmailBannerData(state),\n        lateralBanner: getLateralBanner(state),\n\n        customersSelected: getCustomersSelected(state),\n        materialsSelected: getMaterialsSelected(state),\n        materialsSelectedData: getMaterialsSelectedData(state),\n        canViewDiscountStep: canViewDiscountStep(state),\n        discountStatus:getDiscountStatus(state),\n        //Unsaved changes\n        hasUnsavedChangesStepOne: getUnsavedChangesStepOne(state),\n        hasUnsavedChangesStepTwo: getUnsavedChangesStepTwo(state),\n        hasUnsavedChangesStepThree: getUnsavedChangesStepThree(state),\n        hasUnsavedChangesStepFour: getUnsavedChangesStepFour(state),\n        hasUnsavedChangesStepFive: getUnsavedChangesStepFive(state),\n        hasUnsavedChangesStepSix: getUnsavedChangesStepSix(state),\n        hasUnsavedChangesStepSeven: getUnsavedChangesStepSeven(state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        sendPromotionHeader: (name, startDate, endDate, commercial_name, description) => {\n            let data = { name, startDate, endDate, commercial_name, description }\n            return dispatch(action.sendPromotionHeader(data))\n        },\n        sendPromotionTemplateSelected: (landingTemplateId, mailTemplateId) => {\n            return dispatch(action.sendTemplatesSelected({ landingTemplateId, mailTemplateId }))\n        },\n        saveTranslationObject: (object, updatedTrans) => {\n            return dispatch(action.updateTranslationObject(object, updatedTrans))\n        },\n        getMarkets: () => {\n            return dispatch(action.getMarkets())\n        },\n        getCountries: salesOrg => {\n            let data = { salesOrg }\n            return dispatch(action.getCountries(data))\n        },\n        getCenters: salesOrg => {\n            let data = { salesOrg }\n            return dispatch(action.getCenters(data))\n        },\n        sendPromotionArea: (market, countries, centers) => {\n            let data = { market, countries, centers }\n            return dispatch(action.sendPromotionArea(data))\n        },\n        fetchCustomersOfArea: (market, countries, centers) => {\n            return dispatch(action.fetchCustomersOfArea(market, countries, centers))\n        },\n        sendCustomersSelected: customers => {\n            return dispatch(action.sendCustomersSelected(customers))\n        },\n        sendMaterialsSelected: (materials, materialsSelectedData) => {\n            return dispatch(action.sendMaterialsSelected(materials, materialsSelectedData))\n        },\n        changeStep: step => dispatch(action.changeStep(step)),\n        stepBack: step => dispatch(action.changeStep(step)),\n        setAvailableLanguages: languages => {\n            return dispatch({ type: 'PROMOTIONS_SET_AVAILABLE_LANGUAGES', languages })\n        },\n        sendBanners: (bannerLanding, bannerHome, bannerNewsLetter, sideBannerNewsLetter, banner_title, banner_description) =>\n            dispatch(action.sendBanners(bannerLanding, bannerHome, bannerNewsLetter, sideBannerNewsLetter, banner_title, banner_description)),\n        uploadPromotionFile: formData => dispatch(action.uploadPromotionFile(formData)),\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        goAdminList: (intl) => {\n            dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_PROMOTIONS_LIST' })))\n        },\n        setUnsavedChangesStepOne: (changes) => {\n            return dispatch({ type: 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_ONE', changes })\n        },\n        setUnsavedChangesStepTwo: (changes) => {\n            return dispatch({ type: 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_TWO', changes })\n        },\n        setUnsavedChangesStepThree: (changes) => {\n            return dispatch({ type: 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_THREE', changes })\n        },\n        setUnsavedChangesStepFour: (changes) => {\n            return dispatch({ type: 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_FOUR', changes })\n        },\n        setUnsavedChangesStepFive: (changes) => {\n            return dispatch({ type: 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_FIVE', changes })\n        },\n        setUnsavedChangesStepSix: (changes) => {\n            return dispatch({ type: 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_SIX', changes })\n        },\n        setUnsavedChangesStepSeven: (changes) => {\n            return dispatch({ type: 'PROMOTIONS_SET_UNSAVED_CHANGES_STEP_SEVEN', changes })\n        }\n    }\n}\n\nconst PromotionAdminContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(PromotionAdmin)\n\nexport default PromotionAdminContainer\n","import React from 'react'\n\nimport PromotionAdminContainer from '../components/promotions/PromotionAdminContainer'\n\nconst PromotionAdminScreen = props => <PromotionAdminContainer {...props} />\n\nexport default PromotionAdminScreen\n","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport iconoTemporalAcabado from '../../../assets/img/acabado.png'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport LengthMeasureTranslation from '../../global/LengthMeasureTranslation'\nimport LengthMeasure from '../../global/LengthMeasure'\n\n//Displays\nimport DisplayProductInfo from './displays/DisplayProductInfo'\nimport DisplayBrand from './displays/DisplayBrand'\nimport DisplayProductInfoTable from './displays/DisplayProductInfoTable'\nimport DisplayThickness from './displays/DisplayThickness'\nimport DisplayGroupDtails from './displays/DisplayGroupDtails'\nimport DisplayDetail from './displays/DisplayDetail'\nimport DisplayPrice from './displays/DisplayPrice'\nimport DisplayPricePhase2 from './displays/DisplayPricePhase2'\nimport {injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport {getAdaptedFormat} from \"../../../helpers\";\n\n\nclass DetailsDefault extends React.Component {\n    // componentDidMount() {\n    //     console.log('DETAILS DEFAULT', this.props.product)\n    // }\n\n    state = { showHelp: false }\n    getUnitBy() {\n        const { product } = this.props\n        if (product.unitsByLot) return product.unitsByLot\n        else if (product.unitsByBox) return product.unitsByBox\n        else if (!product.unitsByLot && !product.unitsByBox) return <LengthMeasure product={product} />\n    }\n\n    render() {\n        const { product, canViewThresholdMax, userType } = this.props\n        const available = product.type === 'TABLA' ? <Translation id=\"tables\" defaultMessage=\"Slabs\" /> : <Translation id=\"available\" defaultMessage=\"Available\" />\n        let quantity\n        if (product.type === 'TABLA') {\n            quantity = (\n                <div>\n                    <LengthMeasureTranslation square={true} />\n                </div>\n            )\n        } else {\n            quantity = <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n        }\n        //const watchingOutlet = this.props.outlet ? true : false\n        const watchingOutlet = !!(this.props.outlet || (product.fromMall && product.outlet))\n        const stock = this.props.getStock()\n\n        return (\n            <DisplayProductInfo>\n                <DisplayBrand brand={product.brand} />\n                <div className=\"product-color-name\">\n                    <ProductDisplayName product={product} />\n                </div>\n                {this.props.isExclusiveHomeDepot && (\n                    <small>\n                        <span style={{ color: '#f96303' }}>\n                            <Translation id=\"home_depot_exclusive\" defaultMessage=\"Home Depot exclusive\"></Translation>\n                        </span>\n                    </small>\n                )}\n\n                <DisplayProductInfoTable\n                    th={[{ value: available }, { datacy: 'product_rectangle_result__surface', value: quantity }, { value: this.props.intl.formatMessage({ id: 'material_id' }) }]}\n                    td={[{ value: stock }, { datacy: 'product_rectangle_result__surface_value', value: this.getUnitBy() }, { value: product.productId }]}\n                />\n                <DisplayGroupDtails>\n                    <DisplayThickness thickness={product.thickness} />\n                    <DisplayDetail class=\"finish\" icon={iconoTemporalAcabado} value={product.finish} />\n                </DisplayGroupDtails>\n                <DisplayGroupDtails>\n                    <DisplayDetail class=\"subtypeName\" value={product.subtypeName} />\n                    <DisplayDetail class=\"measure-unit format\" value={this.props.adaptedFormat(product.format, {upper:true, showUnits:true})} />\n                </DisplayGroupDtails>\n                {product.fromMall ?\n                    <React.Fragment>\n                        {this.props.minimumOrder > 0 ?\n                            <DisplayGroupDtails>\n                                <DisplayDetail class=\"finish minimum\" value={this.props.minimumOrder} label={<Translation id=\"minimun_order\" defaultMessage=\"Minimun Order\" />} />\n                            </DisplayGroupDtails>\n                            :\n                            null\n                        }\n                        <DisplayGroupDtails>\n                            {product && userType !== 'ADMIN' ? \n                                <DisplayPricePhase2 product={product} /> \n                                :\n                                <span className=\"price-not-available\"><Translation id=\"price_not_available\" defaultMessage=\"Price not available\" /></span>}\n                        </DisplayGroupDtails>\n                    </React.Fragment>\n                :\n                    <DisplayGroupDtails>\n                        <DisplayPrice product={product} outlet={watchingOutlet} />\n                    </DisplayGroupDtails>\n                }\n            </DisplayProductInfo>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state)\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    null\n)(DetailsDefault)","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getSelectedCenter } from '../../../../store/centers/reducers'\nimport logoSilestone from '../../../../assets/img/logos/brands/logo-silestone.jpg'\nimport logoDekton from '../../../../assets/img/logos/brands/logo-dekton.jpg'\nimport logoDktn from '../../../../assets/img/logos/brands/logo-dktn.jpg'\nimport logoSensa from '../../../../assets/img/logos/brands/logo-sensa.jpg'\n\nconst mapStateToProps = state => {\n    return {\n        selectedCenter: getSelectedCenter(state)\n    }\n}\nconst logosBrands = {\n    SILESTONE: logoSilestone,\n    DEKTON: logoDekton,\n    DKTN: logoDktn,\n    SENSA: logoSensa\n}\nclass DisplayBrandLogo extends React.Component {\n    render() {\n        const brand = this.props.selectedCenter === 7130 && this.props.brand === 'DEKTON' ? 'DKTN' : this.props.brand\n        const logoBrand = logosBrands[brand]\n        return <div>{logoBrand ? <img src={logoBrand} alt=\"logo\" height=\"15\" /> : <div className=\"product-brand\">{brand.toLowerCase()}&reg;</div>}</div>\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(DisplayBrandLogo)\n)\n","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport iconoTemporalAcabado from '../../../assets/img/acabado.png'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport LengthMeasureTranslation from '../../global/LengthMeasureTranslation'\nimport LengthMeasure from '../../global/LengthMeasure'\n\n//Displays\nimport DisplayProductInfo from './displays/DisplayProductInfo'\nimport DisplayBrand from './displays/DisplayBrand'\nimport DisplayProductInfoTable from './displays/DisplayProductInfoTable'\nimport DisplayThickness from './displays/DisplayThickness'\nimport DisplayGroupDtails from './displays/DisplayGroupDtails'\nimport DisplayDetail from './displays/DisplayDetail'\nimport DisplayPrice from './displays/DisplayPrice'\nimport DisplayBrandLogo from './displays/DisplayBrandLogo'\n\nexport default class DetailsLandingDefault extends React.Component {\n    state = { showHelp: false }\n    getUnitBy() {\n        const { product } = this.props\n        if (product.unitsByLot) return product.unitsByLot\n        else if (product.unitsByBox) return product.unitsByBox\n        else if (!product.unitsByLot && !product.unitsByBox) return <LengthMeasure product={product} isSellingOutlet={this.props.isSellingOutlet ? 'X' : false}/>\n    }\n\n    render() {\n        const { product, canViewThresholdMax } = this.props\n        const available = product.type === 'TABLA' ? <Translation id=\"tables\" defaultMessage=\"Slabs\" /> : <Translation id=\"available\" defaultMessage=\"Available\" />\n        let quantity\n        if (product.type === 'TABLA') {\n            quantity = (\n                <div>\n                    <LengthMeasureTranslation square={true} />\n                </div>\n            )\n        } else {\n            quantity = <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n        }\n        const watchingOutlet = this.props.outlet ? true : false\n        let stock\n        if (watchingOutlet) {\n            stock = product.stock_outlet\n        } else {\n            if (product.threshold && product.threshold >= product.stock) {\n                stock = ' < ' + product.threshold\n            } else if (canViewThresholdMax && product.thresholdMax && product.thresholdMax <= product.stock) {\n                stock = ' > ' + product.thresholdMax\n            } else {\n                stock = product.stock\n            }\n        }\n\n        return (\n            <DisplayProductInfo>\n                <DisplayBrandLogo brand={product.brand} />\n                <div className=\"product-color-name\">\n                    <ProductDisplayName product={product} />\n                </div>\n                <DisplayProductInfoTable\n                    th={[{ value: available }, { datacy: 'product_rectangle_result__surface', value: quantity }, { value: this.props.intl.formatMessage({ id: 'material_id' }) }]}\n                    td={[{ value: stock }, { datacy: 'product_rectangle_result__surface_value', value: this.getUnitBy() }, { value: product.productId }]}\n                />\n                <DisplayGroupDtails>\n                    <DisplayThickness thickness={product.thickness} />\n                    <DisplayDetail class=\"finish\" icon={iconoTemporalAcabado} value={product.finish} />\n                </DisplayGroupDtails>\n                <DisplayGroupDtails>\n                    <DisplayDetail class=\"subtypeName\" value={product.subtypeName} />\n                    <DisplayDetail class=\"format\" value={product.format} />\n                </DisplayGroupDtails>\n\n                <DisplayGroupDtails>{<DisplayPrice product={this.props.product} outlet={this.props.outlet} />}</DisplayGroupDtails>\n            </DisplayProductInfo>\n        )\n    }\n}\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport DisplayDiscontinued from '../../catalog/rectangleResult/displays/DisplayDiscontinued'\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport DisplayNewIndicator from '../../catalog/rectangleResult/displays/DisplayNewIndicator'\nimport DisplayBlackIndicator from '../../catalog/rectangleResult/displays/DisplayBlackIndicator'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport ProductImage from '../../catalog/ProductImage'\nimport moment from 'moment'\nimport DetailsDefault from '../../catalog/rectangleResult/DetailsDefault'\nimport DetailsMktools from '../../catalog/rectangleResult/DetailsMktools'\nimport DetailsIkea from '../../catalog/rectangleResult/DetailsIkea'\nimport InputNumber from '../../global/InputNumber'\nimport Button from '../../global/Button'\nimport Translation from '../../global/Translation'\nimport { canBuy, getIsIkeaCenter, getIsMkToolsCenter, getNeedsSegmentation } from '../../../store/centers/reducers'\nimport { getQtyProductsCart } from '../../../store/cart/reducers'\nimport { addCartLine, addCartLineWithouthSeg } from '../../../store/cart/actions'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { getImpersonatedBy, getIsAdmin } from '../../../store/login/reducers'\nimport DetailsLandingDefault from '../../catalog/rectangleResult/DetailsLandingDefault'\n\nconst mapStateToProps = (state, ownProps) => {\n    let isOutletFixBoolean = ownProps.isSellingOutlet ? true : null\n    return {\n        isMkToolsCenter: getIsMkToolsCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        qtyProductCart: getQtyProductsCart(state),\n        canBuy: canBuy(state),\n        isAdmin: getIsAdmin(state),\n        impersonatedBy: getImpersonatedBy(state),\n        outlet: ownProps.isSellingOutlet !== undefined ? isOutletFixBoolean : ownProps.product.outlet,\n        needsSegmentation: getNeedsSegmentation(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        addCartLine: (product, qty, extra, callbackCenter, dektonGripRequested) => {\n            dispatch(addCartLine(product, qty, extra, callbackCenter, dektonGripRequested))\n        },\n        addCartLineWithouthSeg: (productId, qty, extra) => {\n            dispatch(addCartLineWithouthSeg(productId, qty, extra))\n        },\n        clickDetail: (product, list, index) => {\n            dispatch({ type: 'PRODUCT_CLICK', product, list, index })\n        }\n    }\n}\n\nclass ProductLandingOne extends React.Component {\n    constructor(props) {\n        super(props)\n        let firstState = {}\n        let step = 1\n        let qtyAdd = 1\n        if (this.props.product && this.props.product.typeId === '01') step = 1\n        else if (this.props.product.minQty[this.props.shippingMethod]) step = this.props.product.minQty[this.props.shippingMethod]\n\n        if (this.getMin()) qtyAdd = this.getMin()\n        else if (this.props.product && this.props.product.typeId === '01') qtyAdd = 1\n        else if (this.props.product.minQty[this.props.shippingMethod]) qtyAdd = this.props.product.minQty[this.props.shippingMethod]\n        firstState = { ...firstState, qtyToAdd: qtyAdd, step: step }\n\n        if (this.getLimit() === 0) firstState = { ...firstState, qtyToAdd: 0 }\n\n        this.state = firstState\n    }\n    getMin() {\n        return this.props.product.min\n    }\n    getLimit() {\n        if (this.props.product.discontinued) {\n            if (this.props.product.isMktool && this.getLimitDiscontinued() > this.getLimitMktool()) return this.getLimitMktool() < this.getMin() ? 0 : this.getLimitMktool()\n            else return this.getLimitDiscontinued()\n        } else if (this.props.product.isMktool) return this.getLimitMktool() < this.getMin() ? 0 : this.getLimitMktool()\n        else if (this.props.outlet && this.props.product.outlet) return this.getLimitDiscontinued()\n        else return null\n    }\n    getLimitMktool() {\n        let result = 0\n        if (this.props.product.isMktool) {\n            if (this.props.isMkToolsUsaCenter && (this.props.product.max || this.props.product.max === 0)) result = this.props.product.max\n            else result = 1000\n        }\n        if (this.props.qtyProductCart[this.props.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[this.props.product.productId], 10)\n        }\n        return result\n    }\n    getLimitDiscontinued() {\n        let result = 0\n        if (this.props.outlet) {\n            if (this.props.product.stock_outlet) {\n                result = parseInt(this.props.product.stock_outlet, 10)\n            }\n        } else {\n            if (this.props.product.stock) {\n                result = parseInt(this.props.product.stock, 10)\n            }\n        }\n        if (this.props.qtyProductCart[this.props.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[this.props.product.productId], 10)\n        }\n        return result\n    }\n    getValueWithMax() {\n        return this.state.qtyToAdd <= this.getLimit() ? this.state.qtyToAdd : this.getLimit()\n    }\n    isSample() {\n        return this.props.product.typeId === '01'\n    }\n    getType() {\n        let type = null\n        if (this.props.isIkeaCenter && this.props.product.brand === 'SERVICES') type = 'ikea_service'\n        else if (this.props.isIkeaCenter) type = 'ikea'\n        else if (this.props.isMkToolsCenter) type = 'mktools'\n        return type\n    }\n    getTypeProductForStyles() {\n        if (this.props.isIkeaCenter && (this.props.product.brand === 'DEKTON' || this.props.product.brand === 'SILESTONE')) return 'TABLA'\n        else return this.props.product.type\n    }\n    getTypeRectangleResult() {\n        let type = 'default'\n        if (this.props.isMkToolsCenter) type = 'mktool'\n        else if (this.props.isIkeaCenter) type = 'ikea'\n        return type\n    }\n    canDisplayDiscontinued() {\n        return !((['MK', 'SH', 'WH'].includes(this.props.product.webHeading) && this.props.product.discontinued === 'DD') || (this.props.product.discontinued === 'DD' || this.props.product.discontinued === 'DF'))\n    }\n\n    render() {\n        let details\n        switch (this.getTypeRectangleResult()) {\n            case 'default':\n                details = <DetailsLandingDefault {...this.props} product={this.props.product} />\n                break\n            case 'mktool':\n                details = <DetailsMktools {...this.props} product={this.props.product} />\n                break\n            case 'ikea':\n                details = <DetailsIkea {...this.props} product={this.props.product} />\n                break\n            default:\n                details = <DetailsDefault {...this.props} product={this.props.product} />\n                break\n        }\n        let todayMinusOneYear = new moment().subtract(365, 'days')\n        let today = new moment()\n        // let creationDate = moment('2018-08-20') // hace un año y dos dias ,no nuevo\n        // let creationDate = moment('2018-08-23') // hace 364 dias, nuevo\n        // let creationDate = moment('2019-02-23') // dentro de 6 meses, nuevo\n        // let creationDate = moment('2019-08-23') // mañana, no nuevo aun\n        let creationDate = moment(this.props.product.creationDate) // dentro de 1 año, no nuevo aun\n        return (\n            <div className=\"card product_landing_one\" type={this.getTypeProductForStyles()}>\n                <div className=\"row no-gutters\">\n                    <div className=\"col-5\">\n                        <div className=\"wrapper-product-image\">\n                            <div className=\"indicators\">\n                                {this.canDisplayDiscontinued() && (\n                                    <React.Fragment>\n                                        <DisplayDiscontinued discontinued={this.props.product.discontinued} />\n                                    </React.Fragment>\n                                )}\n\n                                {this.props.outlet && (\n                                    <DisplayOutletIndicator\n                                        outletQuality={this.props.product.outletQuality}\n                                        outletDeviated={this.props.isAdmin || this.props.impersonatedBy ? this.props.product.outletDeviated : null}\n                                    />\n                                )}\n\n                                {creationDate > todayMinusOneYear && creationDate < today && <DisplayNewIndicator />}\n                                {this.props.canViewPricesPhase3 && this.promotions.length && this.promotions[0].dealType === 'B' ? (\n                                    <DisplayBlackIndicator value={`${this.promotions[0].value}%`} productDiscounts={this.props.productDiscounts} />\n                                ) : null}\n                                {this.props.canViewPricesPhase3 && this.promotions.length && this.promotions[0].dealType === 'A' ? (\n                                    <DisplayBlackIndicator value={`New price`} productDiscounts={this.props.productDiscounts} />\n                                ) : null}\n                            </div>\n                            <LocalizedLink\n                                routeId=\"ROUTE_PRODUCT_DETAIL\"\n                                params={{ id: this.props.product.productId, outlet: this.props.outlet ? 'outlet' : '' }}\n                                onClick={() => {\n                                    // if (this.props.indexOfList !== undefined) this.props.clickDetail(this.props.product, this.props.list, this.props.indexOfList)\n                                    this.props.clickDetail(this.props.product, this.props.list, this.props.indexOfList)\n                                }}\n                            >\n                                <ProductImage product={this.props.product} />\n                            </LocalizedLink>\n                        </div>\n                    </div>\n                    <div className=\"offset-1 col-6\">\n                        {details}\n\n                        <div className=\"product-actions position-relative\">\n                            {this.props.isAdmin && <div className=\"position-absolute w-100 h-100\" style={{ zIndex: '10', cursor: 'not-allowed' }} />}\n                            {!this.props.product.haveOptions && (\n                                <div className=\"input-row\">\n                                    <div className=\"input\">\n                                        <InputNumber\n                                            value={this.getLimit() !== null ? this.getValueWithMax() : this.state.qtyToAdd}\n                                            change={qty =>\n                                                this.setState({\n                                                    qtyToAdd: qty\n                                                })\n                                            }\n                                            size=\"small\"\n                                            step={this.props.isIkeaCenter && this.props.product.unit === 'M2' ? 0.01 : this.state.step}\n                                            limit={this.getLimit()}\n                                            min={this.getMin()}\n                                            decimals={this.props.isIkeaCenter && this.props.product.unit === 'M2' ? 2 : 0}\n                                        />\n                                    </div>\n                                </div>\n                            )}\n\n                            <div className=\"bt-row\">\n                                {this.props.product.haveOptions ? (\n                                    this.props.canOnlyViewOutlet ? (\n                                        (this.props.product.lotViewAvailable === undefined || this.props.product.lotViewAvailable) && (\n                                            <LocalizedLink routeId=\"ROUTE_LOTS\" params={{ id: this.props.product.productId, outlet: 'outlet' }}>\n                                                <Button icon=\"shopping-cart\" size=\"small\" customClass=\"bt-add-cart\">\n                                                    <Translation id=\"options\" defaultMessage=\"Options\" />\n                                                </Button>\n                                            </LocalizedLink>\n                                        )\n                                    ) : (\n                                        <LocalizedLink routeId=\"ROUTE_PRODUCT_DETAIL\"\n                                                       params={{ id: this.props.product.productId, outlet: this.props.outlet ? 'outlet' : ''}}\n                                                       onClick={() => {\n                                                       // if (this.props.indexOfList !== undefined) this.props.clickDetail(this.props.product, this.props.list, this.props.indexOfList)\n                                                            this.props.clickDetail(this.props.product, this.props.list, this.props.indexOfList)\n                                                       }}\n                                        >\n                                            <Button icon=\"shopping-cart\" size=\"small\" customClass=\"bt-add-cart\">\n                                                <Translation id=\"options\" defaultMessage=\"Options\" />\n                                            </Button>\n                                        </LocalizedLink>\n                                    )\n                                ) : (\n                                    <Button\n                                        icon=\"shopping-cart\"\n                                        size=\"small\"\n                                        customClass=\"bt-add-cart\"\n                                        disabled={this.props.isAdding || (this.getLimit() != null ? this.getLimit() : 1) <= 0 || !this.state.qtyToAdd >= 1}\n                                        onClick={() => {\n                                            if (this.props.needsSegmentation) {\n                                                this.props.addCartLine(\n                                                    this.props.product.productId,\n                                                    this.state.qtyToAdd,\n                                                    { \n                                                        type: this.getType(), \n                                                        comingFromCampaign: true, \n                                                        outlet: this.props.outlet ? this.props.product.outletQuality : null \n                                                    },\n                                                    null,\n                                                    this.props.product.finish === 'AND' && ['DEKTON', 'DKTN'].includes(this.props.product.brand)\n                                                )\n                                            } else {\n                                                this.props.addCartLineWithouthSeg(this.props.product.productId, this.state.qtyToAdd, {\n                                                    type: this.getType(),\n                                                    promotionId: this.props.promotionId,\n                                                    outlet: this.props.outlet ? this.props.product.outletQuality : null\n                                                })\n                                            }\n                                        }}\n                                    >\n                                        <Translation id=\"add_to_cart\" defaultMessage=\"Add to cart\" />\n                                    </Button>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nconst ProductLandingOneContainer = withRouter(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(ProductLandingOne)\n)\nexport default injectIntl(ProductLandingOneContainer)\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport ProductLandingOne from './ProductLandingOne'\n\nclass LandingOne extends React.Component {\n    constructor(props) {\n        super(props)\n    }\n\n    render() {\n        const bannerSrc = this.props.headLandingBannerData.url ? this.props.headLandingBannerData.url : this.props.srcBanner\n\n        return (\n            <div className=\"container my-4\">\n                <section id=\"section-landing-promotions\">\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div>\n                                <h2 className=\"title\" dangerouslySetInnerHTML={{ __html: this.props.promotionTitle }} />\n                                <div dangerouslySetInnerHTML={{ __html: this.props.promotionDescription }} />\n                            </div>\n                            <div style={{ position: 'relative', marginBottom: '20px' }}>\n                                <div className=\"promotion-home-banner\">\n                                    <div className=\"promotion-home-banner-text\" style={{backgroundImage: 'url(' + bannerSrc + ')'}}>\n                                        <div dangerouslySetInnerHTML={{ __html: this.props.promotionBannerTitle }} />\n                                        <div dangerouslySetInnerHTML={{ __html: this.props.promotionBannerDescription }} />\n                                    </div>\n                                    <div className=\"promotion-home-banner-image\">\n                                        <img src={bannerSrc} alt=\"Promo Banner\" style={{ width: '100%' }} />\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div className=\"promotions-materials\">\n                                <div className=\"row\">\n                                    {this.props.products &&\n                                        this.props.products.map((item, key) => (\n                                            <div className=\"col-12 col-md-6 my-3 mx-auto \">\n                                                    <ProductLandingOne\n                                                        key={key + item.product.productId}\n                                                        product={item.product}\n                                                        promotionId={this.props.promotionId}\n                                                        isSellingOutlet={item.isSellingOutlet}\n                                                    />\n                                            </div>\n                                        ))}\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </section>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(LandingOne)\n","import React from 'react'\nimport Translation from '../../global/Translation'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport LengthMeasureTranslation from '../../global/LengthMeasureTranslation'\nimport LengthMeasure from '../../global/LengthMeasure'\nimport mallLarge from '../../../assets/img/logos/mall-large.jpg'\n//Displays\nimport DisplayProductInfo from './displays/DisplayProductInfo'\nimport DisplayBrand from './displays/DisplayBrand'\nimport DisplayGroupDtails from './displays/DisplayGroupDtails'\nimport DisplayDetail from './displays/DisplayDetail'\nimport DisplayStock from './displays/DisplayStock'\nimport DisplayPrice from './displays/DisplayPrice'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport { connect } from 'react-redux'\nimport { getAdaptedFormat, getReplaceDotWithComma } from '../../../helpers'\nimport DisplayNaturalStoneOrigin from './displays/DisplayNaturalStoneOrigin'\n\nclass DetailsDefaultV2TemporalFix extends React.Component {\n    state = { showHelp: false }\n    getUnitBy() {\n        const { product } = this.props\n        if (product.unitsByLot) return product.unitsByLot\n        else if (product.unitsByBox) return product.unitsByBox\n        else if (!product.unitsByLot && !product.unitsByBox) return <LengthMeasure product={product} />\n    }\n\n    render() {\n        const { product, canViewThresholdMax, intl } = this.props\n\n        let quantity\n        if (product.type === 'TABLA') {\n            quantity = (\n                <div style={{ display: 'inline' }}>\n                    <LengthMeasureTranslation square={true} />\n                </div>\n            )\n        } else {\n            quantity = <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n        }\n        const watchingOutlet = this.props.outlet ? true : false\n        let stock\n        if (watchingOutlet) {\n            stock = product.stock_outlet\n        } else {\n            stock = product.stock\n        }\n\n        return (\n            <DisplayProductInfo mallPromotionSection={this.props.mallPromotionSection}>\n                <div className=\"d-flex flex-wrap align-items-center justify-content-between\" style={{ columnGap: '16px', rowGap: 0 }}>\n                    <div>\n                        <DisplayBrand brand={product.brand} colorSerieDesc={product.colorSerieDesc} />\n                    </div>\n                    <div className=\"d-flex align-items-center justify-content-between\" style={{ gap: '8px' }}>\n                        {product.fromMall && (\n                            <div>\n                                <img style={{ width: '38px' }} src={mallLarge} alt=\"logo mall\" />\n                            </div>\n                        )}\n                    </div>\n                </div>\n\n                <div className=\"product-color-name\">\n                    <ProductDisplayName product={product} />\n                </div>\n                {!this.props.mallPromotionSection && (\n                    <div className=\"product-info-details_productid\">\n                        <div>\n                            <DisplayGroupDtails>\n                                <DisplayDetail class=\"productId\" value={product.productId} label={<Translation id=\"material_id\" defaultMessage=\"Material ID\" />} />\n                            </DisplayGroupDtails>\n                        </div>\n                    </div>\n                )}\n\n                {!this.props.notDescriptionProduct && !this.props.mallPromotionSection && (\n                    <React.Fragment>\n                        <div className=\"product-info-details__content\">\n                            <DisplayGroupDtails>\n                                <DisplayDetail\n                                    class=\"measure-unit format\"\n                                    value={this.props.adaptedFormat(product.format, { upper: true, showUnits: true })}\n                                    label={<Translation id=\"format\" defaultMessage=\"Format\" />}\n                                />\n                            </DisplayGroupDtails>\n                            <DisplayGroupDtails>\n                                <DisplayDetail class=\"subtype\" value={product.subtypeName} label={<Translation id=\"subtype\" defaultMessage=\"Subtype\" />} />\n                            </DisplayGroupDtails>\n                            <DisplayGroupDtails>\n                                <DisplayDetail\n                                    class=\"thickness\"\n                                    value={this.props.replaceDotWithComma(product.thickness, intl.locale)}\n                                    label={<Translation id=\"thickness\" defaultMessage=\"Thickness\" />}\n                                />\n                                {product.thickness && <span className=\"thickness-measure\">cm</span>}\n                            </DisplayGroupDtails>\n                            <DisplayGroupDtails>\n                                <DisplayDetail class=\"finish\" value={product.finish} label={<Translation id=\"finish\" defaultMessage=\"Finish\" />} />\n                            </DisplayGroupDtails>\n\n                            <DisplayGroupDtails>\n                                <div className=\"product_detail\">\n                                    <div className=\"text\">\n                                        <span className=\"bold-text\">\n                                            <Translation id=\"MAL\" defaultMessage=\"MAL\" />\n                                        </span>\n                                        :&nbsp;\n                                        {product.zaddon === 'MAL' ? <Translation id=\"yes\" defaultMessage=\"Yes\" /> : <Translation id=\"no\" defaultMessage=\"No\" />}\n                                    </div>\n                                </div>\n                            </DisplayGroupDtails>\n\n                            <DisplayNaturalStoneOrigin product={product} />\n                        </div>\n                        <DisplayStock\n                            value={stock}\n                            measure={quantity}\n                            surface={this.getUnitBy()}\n                            product={this.props.product}\n                            landingMall={this.props.landingMall}\n                            watchingOutlet={this.props.outlet}\n                            canViewThresholdMax={canViewThresholdMax}\n                        />\n                    </React.Fragment>\n                )}\n\n                {this.props.landingMall && (\n                    <React.Fragment>\n                        <div className=\"product-info-details__content\">\n                            <DisplayGroupDtails>\n                                <DisplayDetail\n                                    class=\"finish minimum\"\n                                    value={this.props.landingMall.minimumOrder || '1'}\n                                    label={<Translation id=\"minimun_order\" defaultMessage=\"Minimun Order\" />}\n                                />\n                            </DisplayGroupDtails>\n                        </div>\n                        \n                        <div class=\"box-buttons-lots\">\n                            {(this.props.landingMall.stock > 0 || this.props.landingMall.data.stock) > 0 &&\n                                this.props.landingMall.data.type === 'TABLA' &&\n                                (this.props.landingMall.data.lotViewAvailable === undefined || this.props.landingMall.data.lotViewAvailable ? (\n                                    <div className=\"buttons-lots\">\n                                        <LocalizedLink routeId=\"ROUTE_LOTS\" >\n                                            <div className=\"lots\">\n                                                <Translation id=\"view_lots\" defaultMessage=\"View lots\" />\n                                            </div>\n                                        </LocalizedLink>\n                                    </div>\n                                ) : (\n                                    <div className=\"buttons-lots\">\n                                        <React.Fragment>\n                                            <Translation id=\"lots\" defaultMessage=\"Lots\" /> \n                                        </React.Fragment>\n                                    </div>\n                                ))}\n                        </div>\n                    </React.Fragment>\n                )}\n\n                <DisplayGroupDtails>\n                    <DisplayPrice product={this.props.product} outlet={this.props.outlet} />\n                </DisplayGroupDtails>\n\n                {this.props.mallPromotionSection && (\n                    <React.Fragment>\n                        <div className=\"promotion-progress-bar\">\n                            <span\n                                style={{\n                                    width: `${\n                                        this.props.product.stock > 0\n                                            ? //(this.props.product.stock_mall / this.props.product.stock) * 100\n                                              100\n                                            : 0\n                                    }%`,\n                                    backgroundColor: `rgb(54, 165, 150)`\n                                }}\n                            ></span>\n                        </div>\n\n                        <DisplayGroupDtails>\n                            <DisplayStock value={stock} measure={quantity} surface={this.getUnitBy()} product={this.props.product} />\n                        </DisplayGroupDtails>\n                    </React.Fragment>\n                )}\n            </DisplayProductInfo>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        replaceDotWithComma: (element, locale) => getReplaceDotWithComma(element, locale, state)\n    }\n}\n\nexport default connect(mapStateToProps, null)(DetailsDefaultV2TemporalFix)\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport DisplayDiscontinued from '../../catalog/rectangleResult/displays/DisplayDiscontinued'\nimport DisplayOutletIndicator from '../../catalog/rectangleResult/displays/DisplayOutletIndicator'\nimport DisplayNewIndicator from '../../catalog/rectangleResult/displays/DisplayNewIndicator'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport ProductImage from '../../catalog/ProductImage'\nimport DetailsMktools from '../../catalog/rectangleResult/DetailsMktools'\nimport DetailsIkea from '../../catalog/rectangleResult/DetailsIkea'\nimport InputNumber from '../../global/InputNumber'\nimport Button from '../../global/Button'\nimport Translation from '../../global/Translation'\nimport { canBuy, getIsIkeaCenter, getIsMkToolsCenter, getNeedsSegmentation } from '../../../store/centers/reducers'\nimport { getQtyProductsCart } from '../../../store/cart/reducers'\nimport { addCartLine, addCartLineWithouthSeg } from '../../../store/cart/actions'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { getImpersonatedBy, getIsAdmin } from '../../../store/login/reducers'\nimport DetailsDefaultV2TemporalFix from '../../catalog/rectangleResult/DetailsDefaultV2TemporalFix'\nimport DisplayUpcomingIndicator from '../../catalog/rectangleResult/displays/DisplayUpcomingIndicator'\nimport { isNewIndicator, isUpcomingIndicator, canDisplayDiscontinued } from '../../../store/products/reducers'\n\nconst mapStateToProps = (state, ownProps) => {\n    let isOutletFixBoolean = ownProps.isSellingOutlet ? true : null\n    return {\n        isMkToolsCenter: getIsMkToolsCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        qtyProductCart: getQtyProductsCart(state),\n        canBuy: canBuy(state),\n        isAdmin: getIsAdmin(state),\n        impersonatedBy: getImpersonatedBy(state),\n        outlet: ownProps.isSellingOutlet !== undefined ? isOutletFixBoolean : ownProps.product.outlet,\n        needsSegmentation: getNeedsSegmentation(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        addCartLine: (product, qty, extra, callbackCenter, dektonGripRequested) => {\n            dispatch(addCartLine(product, qty, extra, callbackCenter, dektonGripRequested))\n        },\n        addCartLineWithouthSeg: (productId, qty, extra) => {\n            dispatch(addCartLineWithouthSeg(productId, qty, extra))\n        },\n        clickDetail: (product, list, index) => {\n            dispatch({ type: 'PRODUCT_CLICK', product, list, index })\n        }\n    }\n}\n\nclass ProductLandingTwo extends React.Component {\n    constructor(props) {\n        super(props)\n        let firstState = {}\n        let step = 1\n        let qtyAdd = 1\n        if (this.props.product && this.props.product.typeId === '01') step = 1\n        else if (this.props.product.minQty[this.props.shippingMethod]) step = this.props.product.minQty[this.props.shippingMethod]\n\n        if (this.getMin()) qtyAdd = this.getMin()\n        else if (this.props.product && this.props.product.typeId === '01') qtyAdd = 1\n        else if (this.props.product.minQty[this.props.shippingMethod]) qtyAdd = this.props.product.minQty[this.props.shippingMethod]\n        firstState = { ...firstState, qtyToAdd: qtyAdd, step: step }\n\n        if (this.getLimit() === 0) firstState = { ...firstState, qtyToAdd: 0 }\n\n        this.state = firstState\n    }\n    getMin() {\n        return this.props.product.min\n    }\n    getLimit() {\n        if (this.props.product.discontinued) {\n            if (this.props.product.isMktool && this.getLimitDiscontinued() > this.getLimitMktool()) return this.getLimitMktool() < this.getMin() ? 0 : this.getLimitMktool()\n            else return this.getLimitDiscontinued()\n        } else if (this.props.product.isMktool) return this.getLimitMktool() < this.getMin() ? 0 : this.getLimitMktool()\n        else if (this.props.outlet && this.props.product.outlet) return this.getLimitDiscontinued()\n        else return null\n    }\n    getLimitMktool() {\n        let result = 0\n        if (this.props.product.isMktool) {\n            if (this.props.isMkToolsUsaCenter && (this.props.product.max || this.props.product.max === 0)) result = this.props.product.max\n            else result = 1000\n        }\n        if (this.props.qtyProductCart[this.props.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[this.props.product.productId], 10)\n        }\n        return result\n    }\n    getLimitDiscontinued() {\n        let result = 0\n        if (this.props.outlet) {\n            if (this.props.product.stock_outlet) {\n                result = parseInt(this.props.product.stock_outlet, 10)\n            }\n        } else {\n            if (this.props.product.stock) {\n                result = parseInt(this.props.product.stock, 10)\n            }\n        }\n        if (this.props.qtyProductCart[this.props.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[this.props.product.productId], 10)\n        }\n        return result\n    }\n    getValueWithMax() {\n        return this.state.qtyToAdd <= this.getLimit() ? this.state.qtyToAdd : this.getLimit()\n    }\n    isSample() {\n        return this.props.product.typeId === '01'\n    }\n    getType() {\n        let type = null\n        if (this.props.isIkeaCenter && this.props.product.brand === 'SERVICES') type = 'ikea_service'\n        else if (this.props.isIkeaCenter) type = 'ikea'\n        else if (this.props.isMkToolsCenter) type = 'mktools'\n        return type\n    }\n    getTypeProductForStyles() {\n        if (this.props.isIkeaCenter && (this.props.product.brand === 'DEKTON' || this.props.product.brand === 'SILESTONE')) return 'TABLA'\n        else return this.props.product.type\n    }\n    getTypeRectangleResult() {\n        let type = 'default'\n        if (this.props.isMkToolsCenter) type = 'mktool'\n        else if (this.props.isIkeaCenter) type = 'ikea'\n        return type\n    }\n\n    render() {\n        let details\n        switch (this.getTypeRectangleResult()) {\n            case 'default':\n                details = <DetailsDefaultV2TemporalFix {...this.props} product={this.props.product} />\n                break\n            case 'mktool':\n                details = <DetailsMktools {...this.props} product={this.props.product} />\n                break\n            case 'ikea':\n                details = <DetailsIkea {...this.props} product={this.props.product} />\n                break\n            default:\n                details = <DetailsDefaultV2TemporalFix {...this.props} product={this.props.product} />\n                break\n        }\n\n        return (\n            <div className=\"rectangle-result-v2\" type={this.getTypeProductForStyles()}>\n                <div className=\"wrapper-product-image\">\n                    <div className=\"indicators\">\n                        {canDisplayDiscontinued(this.props.product.webHeading, this.props.product.discontinued) && (\n                            <React.Fragment>\n                                <DisplayDiscontinued discontinued={this.props.product.discontinued} />\n                            </React.Fragment>\n                        )}\n\n                        {this.props.outlet && (\n                            <DisplayOutletIndicator\n                                outletQuality={this.props.product.outletQuality}\n                                outletDeviated={this.props.isAdmin || this.props.impersonatedBy ? this.props.product.outletDeviated : null}\n                            />\n                        )}\n                        {isNewIndicator(this.props.product.creationDate) && <DisplayNewIndicator />}\n                        {isUpcomingIndicator(this.props.product.creationDate) && <DisplayUpcomingIndicator />}\n                    </div>\n                    <LocalizedLink\n                        routeId=\"ROUTE_PRODUCT_DETAIL\"\n                        params={{ id: this.props.product.productId, outlet: this.props.outlet ? 'outlet' : '' }}\n                        onClick={() => {\n                            if (this.props.indexOfList !== undefined) this.props.clickDetail(this.props.product, this.props.list, this.props.indexOfList)\n                        }}\n                    >\n                        <ProductImage product={this.props.product} />\n                    </LocalizedLink>\n                </div>\n                {details}\n                {this.props.canOnlyViewOutlet && (\n                    <div className=\"product-actions\">\n                        <div className=\"bt-row\">\n                            {(this.props.product.lotViewAvailable === undefined || this.props.product.lotViewAvailable) && (\n                                <LocalizedLink routeId=\"ROUTE_LOTS\" params={{ id: this.props.product.productId, outlet: 'outlet' }}>\n                                    <Button size=\"small\">\n                                        <Translation id=\"view_lots\" defaultMessage=\"View lots\" />\n                                    </Button>\n                                </LocalizedLink>\n                            )}\n                        </div>\n                    </div>\n                )}\n                {this.props.canBuy && (\n                    <div className={\"product-actions\"}>\n                    {!this.props.product.haveOptions && (\n                        <div className=\"input-row\">\n                            <div className=\"input\">\n                                <InputNumber\n                                    value={this.getLimit() !== null ? this.getValueWithMax() : this.state.qtyToAdd}\n                                    change={qty =>\n                                        this.setState({\n                                            qtyToAdd: qty\n                                        })\n                                    }\n                                    step={this.props.isIkeaCenter && this.props.product.unit === 'M2' ? 0.01 : this.state.step}\n                                    limit={this.getLimit()}\n                                    min={this.getMin()}\n                                    decimals={this.props.isIkeaCenter && this.props.product.unit === 'M2' ? 2 : 0}\n                                />\n                            </div>\n                        </div>\n                    )}\n                    <div className=\"bt-row\">\n                        {this.props.product.haveOptions ? (\n                            this.props.canOnlyViewOutlet ? (\n                                (this.props.product.lotViewAvailable === undefined || this.props.product.lotViewAvailable) && (\n                                    <LocalizedLink routeId=\"ROUTE_LOTS\" params={{ id: this.props.product.productId, outlet: 'outlet' }}>\n                                    <Button icon=\"shopping-cart\" size=\"small\" customClass=\"view-more-promo-btn cart\">\n                                            <Translation id=\"options\" defaultMessage=\"Options\" />\n                                        </Button>\n                                    </LocalizedLink>\n                                )\n                            ) : (\n                                <LocalizedLink routeId=\"ROUTE_PRODUCT_DETAIL\" params={{ id: this.props.product.productId, outlet: this.props.outlet ? 'outlet' : '' }}>\n                                    <Button icon=\"shopping-cart\" size=\"small\" customClass=\"view-more-promo-btn cart\">\n                                        <Translation id=\"options\" defaultMessage=\"Options\" />\n                                    </Button>\n                                </LocalizedLink>\n                            )\n                        ) : (\n                            <Button\n                                far={true}\n                                icon=\"cart-shopping\"\n                                inverted\n                                customClass=\"view-more-promo-btn cart\"\n                                disabled={this.props.isAdding || (this.getLimit() != null ? this.getLimit() : 1) <= 0 || !this.state.qtyToAdd >= 1}\n                                onClick={() => {\n                                    if (this.props.needsSegmentation) {\n                                        this.props.addCartLine(\n                                            this.props.product.productId,\n                                            this.state.qtyToAdd,\n                                            this.props.outlet ? { outlet: this.props.product.outletQuality } : null,\n                                            null,\n                                            this.props.product.finish === 'AND' && ['DEKTON', 'DKTN'].includes(this.props.product.brand)\n                                        )\n                                    } else {\n                                        this.props.addCartLineWithouthSeg(this.props.product.productId, this.state.qtyToAdd, {\n                                            type: this.getType()\n                                        })\n                                    }\n                                }}\n                            >\n                                <span className=\"btn-add-to-cart-text\"><Translation id=\"add\" defaultMessage=\"add\" /></span>\n                            </Button>\n                        )}\n                        </div>\n                    </div>\n                    )}\n            </div>\n            )\n        }\n}\nconst ProductLandingTwoContainer = withRouter(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(ProductLandingTwo)\n)\nexport default injectIntl(ProductLandingTwoContainer)\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport ProductLandingTwo from './ProductLandingTwo'\n\nclass LandingOne extends React.Component {\n    constructor(props) {\n        super(props)\n    }\n\n    render() {\n        const bannerSrc = this.props.headLandingBannerData.url ? this.props.headLandingBannerData.url : this.props.srcBanner\n\n        return (\n            <div className=\"container my-4\">\n                <section id=\"section-landing-promotions\" className=\"v2\">\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            <div>\n                                <h1 style={{ fontFamily: 'diagramm' }} className=\"title\" dangerouslySetInnerHTML={{ __html: this.props.promotionTitle }} />\n                                <div dangerouslySetInnerHTML={{ __html: this.props.promotionDescription }} />\n                            </div>\n                            <div style={{ position: 'relative', marginBottom: '20px' }}>\n                                <div className=\"promotion-home-banner\">\n                                    <div className=\"promotion-home-banner-text\" style={{backgroundImage: 'url(' + bannerSrc + ')'}}>\n                                        <div dangerouslySetInnerHTML={{ __html: this.props.promotionBannerTitle }} />\n                                        <div dangerouslySetInnerHTML={{ __html: this.props.promotionBannerDescription }} />\n                                    </div>\n                                    <div className=\"promotion-home-banner-image\">\n                                        <img src={bannerSrc} alt=\"Promo Banner\" style={{ width: '100%' }} />\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"products-promotion-landing-two\">\n                        {this.props.products && this.props.products.map((item, key) => (\n                            <React.Fragment>\n                                <ProductLandingTwo\n                                    key={key + item.product.productId}\n                                    product={item.product}\n                                    promotionId={this.props.promotionId}\n                                    isSellingOutlet={item.isSellingOutlet} />\n                            </React.Fragment>\n                        ))}\n                    </div>\n                </section>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(LandingOne)\n","import React from 'react'\nimport { injectIntl } from 'react-intl'\nimport LandingOne from './template/LandingOne'\nimport LandingTwo from './template/LandingTwo'\nimport Select from 'react-select'\nimport Translation from '../global/Translation'\nimport LocalizedLink from '../global/LocalizedLink'\nimport Error from '../../components/alerts/Error'\nimport GoBack from '../global/GoBack'\n\nclass LandingPromotions extends React.Component {\n    constructor(props) {\n        super(props)\n\n        if(!this.props.isLogged) {\n            this.props.loginRequired()\n        }\n        \n        this.props.fetchPromotionData(this.props.promotionId)\n        this.state = { userSelected: null }\n    }\n\n    template(templateId) {\n        switch (templateId) {\n            case '1':\n                return <LandingOne {...this.props} />\n            case '2':\n                return <LandingTwo {...this.props} />\n            default:\n                return null\n        }\n    }\n    componentWillUnmount() {\n        if (this.props.isAdmin) {\n            this.props.removePriceList()\n        }\n    }\n\n    render() {\n        if (!this.props.promotionData && this.props.error) return <Error alert={this.props.intl.formatMessage({ id: this.props.error })} />\n\n        return (\n            <div className={this.props.landingId === '2' ? \"catalog-background-color\" : \"\"}>\n                {this.props.isAdmin && (\n                    <div className=\"container\">\n                        <div className=\"row\">\n                            <div className=\"col-12 pt-3\">\n                                <GoBack></GoBack>\n                            </div>\n                        </div>\n                        <div className=\"row\">\n                            <div className=\"col-12\">\n                                <h2 className=\"my-4\">\n                                    <Translation id=\"campaigns_preview\" defaultMessage=\"Campaigns Preview\" />\n                                </h2>\n                            </div>\n                            <div className=\"col-4\">\n                                <LocalizedLink className=\"btn btn-outline-secondary mr-2\" routeId=\"ROUTE_PROMOTIONS_LIST\">\n                                    <Translation id=\"campaign_list\" defaultMessage=\"Campaing list\" />\n                                </LocalizedLink>{' '}\n                            </div>\n                            <div className=\"col-4 offset-4\">\n                                <Select\n                                    placeholder={this.props.intl.formatMessage({ id: 'promotion_select_user' })}\n                                    options={\n                                        this.props.users &&\n                                        this.props.users.map(item => {\n                                            return { label: item.name, value: item.login }\n                                        })\n                                    }\n                                    value={this.state.userSelected}\n                                    onChange={e => {\n                                        if (e) {\n                                            this.setState({ userSelected: e.value }, () => {\n                                                this.props.fetchUserPriceListByUser(this.state.userSelected)\n                                                this.props.gerPriceListByUserId(this.state.userSelected)\n                                            })\n                                        }\n                                    }}\n                                />\n                            </div>\n                        </div>\n                    </div>\n                )}\n                {this.template(this.props.landingId)}\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(LandingPromotions)\n","import { connect } from 'react-redux'\nimport LandingPromotions from './LandingPromotions'\nimport { withRouter } from 'react-router-dom'\nimport { fetchUserPriceListByUser } from '../../store/products/actions'\nimport { getDataLandingTemplateId, getPromotionDataProduct, getPromotionDescription, getPromotionTitle,getError,getPromotionLandingBanner, getHeadLandingBannerData, getBannerTitle, getBannerDescription } from '../../store/promotions/reducers'\nimport { getCenterName } from '../../store/centers/reducers'\nimport { fetchPromotionData } from '../../store/promotions/actions'\nimport { getIsAdmin, getIsLogged } from '../../store/login/reducers'\nimport { gerPriceListByUserId, loginRequired } from '../../store/login/actions'\nimport { usersSelector } from '../../store/impersonate/reducers'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        promotionId: match.params.promotionId,\n        promotion: '',\n        promotionProducts: [],\n        landingId: getDataLandingTemplateId(state),\n        // products: getFetchedProducts(state),\n        products: getPromotionDataProduct(state),\n        promotionTitle: getPromotionTitle(state),\n        //TODO: Cambiar el srcBanner por el selector\n        srcBanner: getPromotionLandingBanner(state),\n        // srcBanner: getSrcBanner(state),\n        promotionDescription: getPromotionDescription(state),\n        centerName: getCenterName(state),\n        isAdmin: getIsAdmin(state),\n        users: usersSelector(state),\n        error: getError(state),\n        headLandingBannerData: getHeadLandingBannerData(state),\n        promotionBannerTitle: getBannerTitle(state),\n        promotionBannerDescription: getBannerDescription(state),\n        isLogged: getIsLogged(state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchPromotionData: promotionId => {\n            dispatch(fetchPromotionData(promotionId))\n        },\n        fetchUserPriceListByUser: userId => {\n            dispatch(fetchUserPriceListByUser(userId))\n        },\n        gerPriceListByUserId: userId => {\n            dispatch(gerPriceListByUserId(userId))\n        },\n        removePriceList: () => {\n            dispatch({ type: 'REMOVE_PRICE_LIST' })\n            dispatch({ type: 'FETCH_PRODUCTS_DISCOUNTS_SUCCESS', discounts: [] })\n        },\n        loginRequired: () => {\n            dispatch(loginRequired())\n        },\n    }\n}\n\nconst LandingPromotionsContainer = withRouter(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(LandingPromotions)\n)\nexport default LandingPromotionsContainer\n","import React from 'react'\n\nimport LandingPromotionsContainer from '../components/promotions/LandingPromotionsContainer'\n\nconst LandingPromotionsScreen = props => <LandingPromotionsContainer {...props} />\n\nexport default LandingPromotionsScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport Spinner from '../global/Spinner'\nimport Alerts from '../alerts/Alerts'\nimport { defineMessages } from 'react-intl'\n\nimport Select from 'react-select'\n\ndefineMessages({\n    CUSTOMER_REQUIRED: {\n        id: 'WRITE_YOUR_SUGGESTION_HERE',\n        description: 'WRITE_YOUR_SUGGESTION_HERE',\n        defaultMessage: 'Write your suggestion here'\n    },\n    SUBJECT: {\n        id: 'subject',\n        description: 'subject',\n        defaultMessage: 'Subject'\n    }\n})\n\nexport default class Suggestion extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            validateCountCharacters: false,\n            countCharacters: 0\n        }\n    }\n    getTipology = () => {\n        let options = ['Portfolio', 'Checkout', 'Personal Area']\n        return options.map(val => {\n            return { value: val, label: val }\n        })\n    }\n    canSendSuggestion = () => {\n        return 160 <= this.state.countCharacters && this.state.countCharacters <= 1200\n    }\n    handleSubmit = e => {\n        e.preventDefault()\n        if (this.canSendSuggestion()) {\n            let suggestion =\n                'Type: ' +\n                this.props.userType +\n                '\\nImpersonate by: ' +\n                this.props.impersonatedBy +\n                '\\nCenterId: ' +\n                this.props.centerId +\n                '\\n\\n\\n' +\n                this.suggestionInput.value\n\n            this.props.sendSuggestion(this.nameInput.value, this.emailInput.value, this.subjectInput.value, this.state.tipology.label, suggestion).then(() => {\n                this.suggestionInput.value = ''\n                this.setState({ countCharacters: 0 })\n            })\n        }\n    }\n    render() {\n        let { isSending } = this.props\n        const spinner = isSending ? <Spinner isLoading={isSending} /> : null\n        return (\n            <section className=\"suggestions\">\n                <div className=\"container\">\n                    <div className=\"row\">\n                        <div className=\"col-10 offset-1\">\n                            <div className=\"suggestions-form\">\n                                <div className=\"row\">\n                                    <div className=\"col-10 offset-1\">\n                                        <h4>\n                                            <Translation id=\"msg_suggestion_mailbox\" defaultMessage=\"Suggestion mailbox\" />\n                                        </h4>\n                                    </div>\n                                </div>\n                                <div className=\"row\">\n                                    <div className=\"col-10 offset-1\">\n                                        {spinner}\n                                        {console.log('this.props.status:' + this.props.status)}\n                                        <Alerts alert={this.props.alert} status={this.props.status} />\n                                        <form onSubmit={this.handleSubmit}>\n                                            <div className=\"row\">\n                                                <div className=\"col-6\">\n                                                    <input\n                                                        name=\"email\"\n                                                        id=\"input_email\"\n                                                        required\n                                                        type=\"email\"\n                                                        className=\"form-control\"\n                                                        placeholder={this.props.intl.formatMessage({ id: 'email' })}\n                                                        ref={node => {\n                                                            this.emailInput = node\n                                                        }}\n                                                        data-cy=\"suggestions-input_email\"\n                                                    />\n                                                </div>\n                                                <div className=\"col-6\">\n                                                    <input\n                                                        name=\"name\"\n                                                        id=\"input_name\"\n                                                        required\n                                                        type=\"text\"\n                                                        className=\"form-control\"\n                                                        placeholder={this.props.intl.formatMessage({ id: 'name' })}\n                                                        ref={node => {\n                                                            this.nameInput = node\n                                                        }}\n                                                        data-cy=\"suggestions-input_name\"\n                                                    />\n                                                </div>\n                                            </div>\n                                            <div className=\"row\">\n                                                <div className=\"col-6\">\n                                                    <input\n                                                        name=\"subject\"\n                                                        id=\"input_name\"\n                                                        required\n                                                        type=\"text\"\n                                                        className=\"form-control\"\n                                                        placeholder={this.props.intl.formatMessage({ id: 'subject' })}\n                                                        ref={node => {\n                                                            this.subjectInput = node\n                                                        }}\n                                                        data-cy=\"suggestions-input_subject\"\n                                                    />\n                                                </div>\n                                                <div className=\"col-6\">\n                                                    <Select\n                                                        required\n                                                        className=\"form-control\"\n                                                        placeholder=\"Select a tipology\"\n                                                        value={this.state.tipology}\n                                                        onChange={value => {\n                                                            this.setState({ tipology: value })\n                                                        }}\n                                                        options={this.getTipology()}\n                                                    />\n                                                </div>\n                                            </div>\n                                            <div className=\"row\">\n                                                <div className=\"col-12\">\n                                                    <textarea\n                                                        minlength=\"160\"\n                                                        maxlength=\"1200\"\n                                                        name=\"suggestion\"\n                                                        id=\"textarea-suggestion\"\n                                                        className=\"form-control\"\n                                                        required\n                                                        onFocus={this.props.deleteAlert}\n                                                        placeholder={this.props.intl.formatMessage({ id: 'WRITE_YOUR_SUGGESTION_HERE' })}\n                                                        onChange={node =>\n                                                            this.setState({\n                                                                countCharacters: node.target.value.length\n                                                            })\n                                                        }\n                                                        ref={node => {\n                                                            this.suggestionInput = node\n                                                        }}\n                                                        data-cy=\"suggestions-text-area\"\n                                                    />\n                                                </div>\n                                                <div className=\"col-12 col-md-8\">\n                                                    <div className=\"suggestion__label_count\">\n                                                        <Translation id=\"minimum_characters\" defaultMessage=\"Minimum {val} characters\" values={{ val: 160 }} />\n                                                    </div>\n                                                </div>\n                                                <div className=\"col-12 col-md-4\">\n                                                    <div className=\"suggestion__the_count\">\n                                                        <span\n                                                            className={`current ${\n                                                                1200 >= this.state.countCharacters && this.state.countCharacters >= 160\n                                                                    ? 'validate'\n                                                                    : this.state.countCharacters > 1200\n                                                                    ? 'error'\n                                                                    : ''\n                                                            }`}\n                                                        >\n                                                            {this.state.countCharacters}\n                                                        </span>{' '}\n                                                        / <span className=\"count_max\">1200</span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div className=\"row\">\n                                                <div className=\"col-12 buttons\">\n                                                    <input\n                                                        type=\"submit\"\n                                                        className=\"bt bt-inverted \"\n                                                        data-cy=\"btn-send-suggestions\"\n                                                        value={this.props.intl.formatMessage({ id: 'send' })}\n                                                    />\n                                                </div>\n                                            </div>\n                                        </form>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\n","import { connect } from 'react-redux'\nimport Suggestion from './Suggestion'\nimport * as action from '../../store/suggestion/actions'\nimport * as reducer from '../../store/suggestion/reducers'\nimport { injectIntl } from 'react-intl'\nimport { getUserName, getUserType, getImpersonatedBy } from '../../store/login/reducers'\nimport { getSelectedCenter } from '../../store/centers/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        isSending: reducer.getIsSending(state),\n        alert: reducer.getAlert(state),\n        status: reducer.getStatus(state),\n        userName: getUserName(state),\n        userType: getUserType(state),\n        impersonatedBy: getImpersonatedBy(state),\n        centerId: getSelectedCenter(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        sendSuggestion: (name, email, subject, tipology, suggestion) => {\n            let data = { name, email, subject, tipology, message: suggestion }\n            return dispatch(action.sendSuggestion(data))\n        },\n        deleteAlert: () => {\n            return dispatch({ type: 'DEL_ALERT_SUGGESTION' })\n        }\n    }\n}\n\nconst SuggestionContainer = injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(Suggestion)\n)\n\nexport default SuggestionContainer\n","import * as api from '../api'\nimport { getToken } from '../login/reducers'\n\nexport const sendSuggestion = data => (dispatch, getState) => {\n    dispatch({ type: 'SEND_SUGGESTION_REQUEST', suggestion: data.suggestion })\n    return api\n        .sendSuggestion(getToken(getState()), data)\n        .then(response => {\n            dispatch({ type: 'SEND_SUGGESTION_SUCCESS', status: 200, alert: 'your_suggestions_has_been_sent' })\n            return Promise.resolve()\n        })\n        .catch(error => {\n            dispatch({ type: 'SEND_SUGGESTION_FAILURE', alert: error.response.data.err, status: error.response.status })\n            return Promise.reject()\n        })\n}\n","import React from 'react'\n\nimport SuggestionContainer from '../components/suggestion/SuggestionContainer'\n\nconst SuggestionScreen = props => <SuggestionContainer {...props} />\n\nexport default SuggestionScreen\n","import React, { Component } from 'react'\nimport { getChangelogItems, getIsLoading } from '../../store/changelog/reducers'\nimport { setLastView, fetchChangelogByProject } from '../../store/changelog/actions'\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\n\nimport Spinner from '../global/Spinner'\nimport Translation from '../global/Translation'\n\nconst mapStateToProps = state => {\n    return {\n        changelogItems: getChangelogItems(state),\n        isLoading: getIsLoading(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchChangelogByProject: () => dispatch(fetchChangelogByProject()),\n        setView: () => {\n            dispatch(setLastView())\n        },\n        rememberedCenter: () => {\n            dispatch({ type: 'REMEMBERED_CENTER' })\n        }\n    }\n}\n\nclass ChangeLog extends Component {\n    componentDidMount() {\n        if (!this.props.changelogItems)\n            this.props.fetchChangelogByProject().then(() => {\n                this.props.setView()\n            })\n        else this.props.setView()\n    }\n    render() {\n        let { changelogItems, isLoading } = this.props\n        if (isLoading)\n            return (\n                <div className=\"full-overlay\" style={{ backgroundColor: 'transparent' }}>\n                    <Spinner isLoading={isLoading} relative />\n                </div>\n            )\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-12\">\n                        <div className=\"changelog\">\n                            <h1 className=\"display-4\">\n                                <Translation defaultMessage=\"Changelog\" id=\"changelog\" />\n                            </h1>\n\n                            {changelogItems &&\n                                Object.keys(changelogItems).map(date => {\n                                    if (\n                                        //check if some functionality have items\n                                        Object.entries(changelogItems[date])\n                                            .map(([key, value]) => ({ key, value }))\n                                            .some(item => Object.entries(item.value).length > 0)\n                                    ) {\n                                        return (\n                                            <React.Fragment>\n                                                <h3 className=\"mb-4\" style={{ borderBottom: '1px solid rgba(0,0,0,0.1)' }}>\n                                                    {date}\n                                                </h3>\n                                                {Object.keys(changelogItems[date]).map(project => {\n                                                    if (Object.entries(changelogItems[date][project]).length > 0) {\n                                                        return (\n                                                            <div>\n                                                                <h5>{this.props.intl.formatMessage({ id: project })}</h5>\n                                                                <ul className=\"changelog-items\" style={{ listStyle: 'none' }}>\n                                                                    {Object.keys(changelogItems[date][project]).map(functionality => {\n                                                                        if (Object.entries(changelogItems[date][project][functionality]).length > 0) {\n                                                                            return (\n                                                                                <li>\n                                                                                    <h6>{this.props.intl.formatMessage({ id: functionality })}</h6>\n                                                                                    <ul className=\"changelog-items\" style={{ listStyle: 'none' }}>\n                                                                                        {Object.keys(changelogItems[date][project][functionality]).map(change => {\n                                                                                            return (\n                                                                                                <div>\n                                                                                                    <h6>\n                                                                                                        <span className=\"badge badge-primary mr-1\">\n                                                                                                            {this.props.intl.formatMessage({ id: change })}\n                                                                                                        </span>\n                                                                                                    </h6>\n                                                                                                    <ul className=\"changelog-items\" style={{ listStyle: 'none' }}>\n                                                                                                        {changelogItems[date][project][functionality][change].map((item, index) => {\n                                                                                                            return (\n                                                                                                                <li className=\"mb-1\">\n                                                                                                                    <div\n                                                                                                                        className=\"changelog–items__title collapsed\"\n                                                                                                                        data-toggle=\"collapse\"\n                                                                                                                        data-target={\n                                                                                                                            '#' + date + project + functionality + change + index\n                                                                                                                        }\n                                                                                                                        aria-controls={\n                                                                                                                            date + project + functionality + change + index\n                                                                                                                        }\n                                                                                                                    >\n                                                                                                                        <span>{item.title}</span>\n                                                                                                                        {item.description && (\n                                                                                                                            <div\n                                                                                                                                className=\"button_info button_info--changelog\"\n                                                                                                                                style={{ left: 'initial' }}\n                                                                                                                            >\n                                                                                                                                <i\n                                                                                                                                    className=\"fal fa-info-circle\"\n                                                                                                                                    style={{ margin: '5px' }}\n                                                                                                                                />\n                                                                                                                                <Translation\n                                                                                                                                    id=\"plus_info\"\n                                                                                                                                    defaultMessage=\"+ Info\"\n                                                                                                                                />\n                                                                                                                            </div>\n                                                                                                                        )}\n                                                                                                                    </div>\n                                                                                                                    {item.description && (\n                                                                                                                        <div\n                                                                                                                            id={date + project + functionality + change + index}\n                                                                                                                            className=\"collapse\"\n                                                                                                                        >\n                                                                                                                            <small>{item.description}</small>\n                                                                                                                        </div>\n                                                                                                                    )}\n                                                                                                                </li>\n                                                                                                            )\n                                                                                                        })}\n                                                                                                    </ul>\n                                                                                                </div>\n                                                                                            )\n                                                                                        })}\n                                                                                    </ul>\n                                                                                </li>\n                                                                            )\n                                                                        } else return null\n                                                                    })}\n                                                                </ul>\n                                                            </div>\n                                                        )\n                                                    } else return null\n                                                })}\n                                            </React.Fragment>\n                                        )\n                                    } else return null\n                                })}\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(ChangeLog)\n)\n","import React from 'react'\n\nimport ChangeLog from '../components/changelog/ChangeLog'\nconst ChangeLogScreen = props => <ChangeLog {...props} />\n\nexport default ChangeLogScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport ReactTable from 'react-table'\nimport Button from '../global/Button'\nimport ProductImage from '../catalog/ProductImage'\nimport ReactTooltip from 'react-tooltip'\nimport InputNumber from '../global/InputNumber'\n\nexport const getUnitBy = product => {\n    if (parseInt(product.center, 10) === 5200) return product.minQty['MKTOOLS'] || 1\n    if (product && product.typeId === '01') return 1\n    if (product.unitsByLot) return parseInt(product.unitsByLot, 10)\n    if (product.unitsByBox) return parseInt(product.unitsByBox, 10)\n    return 1\n}\nclass MktProductsMax extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            data: [],\n            isLoading: true,\n            search: ''\n        }\n    }\n    componentDidMount() {\n        this.props.fetchProductsMktToMax().then(() => {\n            this.setState({ data: this.props.products })\n        })\n    }\n\n    onChangeValue(productId, center, input, value) {\n        let data = this.state.data.map(item => {\n            if (item.productId === productId && item.center === center) {\n                switch (input) {\n                    case 'min':\n                        if (isNaN(value) && value !== '') value = 0\n                        return { ...item, min: value && parseInt(value, 10) }\n                    case 'max':\n                        if (isNaN(value) && value !== '') value = 0\n                        return { ...item, max: value && parseInt(value, 10) }\n                    case 'maxWeek':\n                        if (isNaN(value) && value !== '') value = 0\n                        return { ...item, maxWeek: value && parseInt(value, 10) }\n                    case 'maxMonth':\n                        if (isNaN(value) && value !== '') value = 0\n                        return { ...item, maxMonth: value && parseInt(value, 10) }\n                    case 'providerEmail':\n                        if (!value) value = ''\n                        return { ...item, providerEmail: value }\n                    case 'haveOptions':\n                        return { ...item, haveOptions: value }\n                    default:\n                        return item\n                }\n            } else return item\n        })\n        this.setState({ data: data })\n    }\n    getValue(productId, center, input) {\n        let product = this.state.data.filter(item => item.productId === productId && item.center === center)[0]\n        switch (input) {\n            case 'min':\n                return product.min\n            case 'max':\n                return product.max\n            case 'maxWeek':\n                return product.maxWeek\n            case 'maxMonth':\n                return product.maxMonth\n            case 'providerEmail':\n                return product.providerEmail\n            case 'haveOptions':\n                return product.haveOptions\n            default:\n                return 0\n        }\n    }\n    itemReset(item) {\n        let data = this.state.data.map(stateItem => {\n            if (stateItem.productId === item.productId && stateItem.center === item.center)\n                return this.props.products.filter(product => product.productId === item.productId && product.center === item.center)[0]\n            else return stateItem\n        })\n        this.setState({ data: data })\n    }\n    itemChanged(item) {\n        return !this.props.products.find(\n            ele =>\n                ele.productId === item.productId &&\n                ele.center === item.center &&\n                ele.max === item.max &&\n                ele.maxMonth === item.maxMonth &&\n                ele.maxWeek === item.maxWeek &&\n                ele.providerEmail === item.providerEmail &&\n                ele.min === item.min &&\n                ele.haveOptions === item.haveOptions\n        )\n    }\n    parseValues(items) {\n        return items.map(item => {\n            const newValues = { min: parseFloat(item.min), max: parseFloat(item.max), maxWeek: parseFloat(item.maxWeek), maxMonth: parseFloat(item.maxMonth) }\n            return { ...item, ...newValues }\n        })\n    }\n    checkValuesItem(item) {\n        let minOk = true\n        if (item.min) {\n            if (item.max) minOk = item.min <= item.max\n            if (item.maxWeek) minOk = item.min <= item.maxWeek\n            if (item.maxMonth) minOk = item.min <= item.maxMonth\n        }\n\n        let maxOk = true\n        if (item.max) {\n            if (item.min) maxOk = item.max >= item.min\n            if (item.maxWeek) maxOk = item.max <= item.maxWeek\n            if (item.maxMonth) maxOk = item.max <= item.maxMonth\n        }\n\n        let maxWeekOk = true\n        if (item.maxWeek) {\n            if (item.min) maxWeekOk = item.maxWeek >= item.min\n            if (item.max) maxWeekOk = item.maxWeek >= item.max\n            if (item.maxMonth) maxWeekOk = item.maxWeek <= item.maxMonth\n        }\n\n        let maxMonthOk = true\n        if (item.maxMonth) {\n            if (item.min) maxMonthOk = item.maxMonth >= item.min\n            if (item.max) maxMonthOk = item.maxMonth >= item.min\n            if (item.maxWeek) maxMonthOk = item.maxMonth >= item.min\n        }\n        return minOk && maxOk && maxWeekOk && maxMonthOk\n    }\n    saveItems(item = null) {\n        if (item !== null) {\n            if (this.checkValuesItem(item))\n                this.props\n                    .saveProductsMktToMax(this.parseValues(this.state.data.filter(stateItem => stateItem.productId === item.productId && stateItem.center === item.center)))\n                    .then(() => this.itemReset(item))\n            else this.props.showAlertFailure(item.productId)\n        } else {\n            let itemsWithError = this.state.data.filter(stateItem => !this.checkValuesItem(stateItem))\n            if (itemsWithError.length === 0)\n                this.props\n                    .saveProductsMktToMax(this.parseValues(this.state.data.filter(stateItem => this.itemChanged(stateItem))))\n                    .then(() => this.setState({ data: this.props.products }))\n            else this.props.showAlertFailure(itemsWithError.map(item => item.productId).toString())\n        }\n    }\n    renderProviderEmail = ({ original }) => (\n        <div>\n            <input\n                type=\"text\"\n                id={original.productId + original.center}\n                value={this.getValue(original.productId, original.center, 'providerEmail')}\n                key={original.productId + original.center}\n                style={{ width: '100%' }}\n                onChange={input => this.onChangeValue(original.productId, original.center, 'providerEmail', input.target.value, input.target)}\n            />\n        </div>\n    )\n    renderMin = ({ original }) => {\n        return (\n            <div>\n                {/*\n            //this was the old input on this section, changed to inputnumber to control step on mktools products\n             <input\n                type=\"text\"\n                value={this.getValue(original.productId, original.center, 'min')}\n                key={original.productId + original.center}\n                onChange={input => this.onChangeValue(original.productId, original.center, 'min', input.target.value)}\n            /> */}\n                <InputNumber\n                    value={this.getValue(original.productId, original.center, 'min')}\n                    change={value => this.onChangeValue(original.productId, original.center, 'min', value)}\n                    size=\"small\"\n                    step={getUnitBy(original)}\n                    allowNull={true}\n                />\n            </div>\n        )\n    }\n    renderMax = ({ original }) => (\n        <div>\n            {/*\n            //this was the old input on this section, changed to inputnumber to control step on mktools products\n             <input\n                type=\"text\"\n                value={this.getValue(original.productId, original.center, 'max')}\n                key={original.productId + original.center}\n                onChange={input => this.onChangeValue(original.productId, original.center, 'max', input.target.value)}\n            /> */}\n            <InputNumber\n                value={this.getValue(original.productId, original.center, 'max')}\n                change={value => this.onChangeValue(original.productId, original.center, 'max', value)}\n                size=\"small\"\n                step={getUnitBy(original)}\n                allowNull={true}\n            />\n        </div>\n    )\n    renderMaxMonth = ({ original }) => (\n        <div>\n            <input\n                type=\"text\"\n                value={this.getValue(original.productId, original.center, 'maxMonth')}\n                key={original.productId + original.center}\n                onChange={input => this.onChangeValue(original.productId, original.center, 'maxMonth', input.target.value)}\n            />\n        </div>\n    )\n    render() {\n        let maxColumnName = this.props.centerId == 5200 ? <Translation id=\"max_month\" defaultMessage=\"Max month\" /> : <Translation id=\"max_unit\" defaultMessage=\"Max unit\" />\n        const columns = [\n            {\n                Header: <Translation id=\"image\" defaultMessage=\"Image\" />,\n                accessor: 'image',\n                Cell: ({ original }) => (\n                    <div\n                        key={`img-${original.productId}-${original.center}`}\n                        style={{\n                            height: '55px',\n                            width: '80px'\n                        }}\n                    >\n                        <ProductImage product={original} />\n                    </div>\n                ),\n                maxWidth: 85,\n                className: 'cell_background-image'\n            },\n            { Header: <Translation id=\"id\" defaultMessage=\"ID\" />, accessor: 'productId', maxWidth: 75 },\n            { Header: <Translation id=\"product\" defaultMessage=\"Product\" />, accessor: 'productName', maxWidth: 125 },\n            { Header: <Translation id=\"center\" defaultMessage=\"Center\" />, accessor: 'center', maxWidth: 75 },\n            {\n                Header: () => (\n                    <span data-tip data-for=\"min\">\n                        <i className=\"fal fa-info-circle\" /> <Translation id=\"min_unit\" defaultMessage=\"Min unit\" />\n                    </span>\n                ),\n                accessor: 'min',\n                Cell: this.renderMin,\n                maxWidth: 160\n            },\n            {\n                Header: () => (\n                    <span data-tip data-for=\"max\">\n                        <i className=\"fal fa-info-circle\" /> {maxColumnName}\n                    </span>\n                ),\n                accessor: 'max',\n                Cell: this.renderMax,\n                maxWidth: 160\n            },\n            // {\n            //     Header: 'Max week',\n            //     accessor: 'maxWeek',\n            //     Cell: ({ original }) => (\n            //         <div>\n            //             <input\n            //                 type=\"text\"\n            //                 value={this.getValue(original.productId, original.center, 'maxWeek')}\n            //                 key={original.productId + original.center}\n            //                 onChange={input => this.onChangeValue(original.productId, original.center, 'maxWeek', input.target.value)}\n            //             />\n            //         </div>\n            //     ),\n            //     maxWidth: 75\n            // },\n            // {\n            //     Header: () => (\n            //         <span data-tip data-for=\"max-month\">\n            //             <i className=\"fal fa-info-circle\" /> Max month\n            //         </span>\n            //     ),\n            //     accessor: 'maxMonth',\n            //     Cell: this.renderMaxMonth,\n            //     maxWidth: 100\n            // },\n            {\n                Header: <Translation id=\"provider_email\" defaultMessage=\"Provider email\" />,\n                accessor: 'providerEmail',\n                Cell: this.renderProviderEmail,\n                minWidth: 200\n            },\n            {\n                Header: <Translation id=\"options\" defaultMessage=\"Options\" />,\n                accessor: 'haveOptions',\n                Cell: ({ original }) => (\n                    <div style={{ textAlign: 'center' }}>\n                        <input\n                            type=\"checkbox\"\n                            checked={this.getValue(original.productId, original.center, 'haveOptions')}\n                            key={original.productId + original.center}\n                            onChange={input => this.onChangeValue(original.productId, original.center, 'haveOptions', input.target.checked)}\n                        />{' '}\n                        <Translation id=\"options\" defaultMessage=\"Options\" />\n                    </div>\n                ),\n                minWidth: 120\n            },\n            {\n                Header: <Translation id=\"actions\" defaultMessage=\"Actions\" />,\n                Cell: ({ original }) => (\n                    <div className=\"group_buttons_row_table\">\n                        <Button size={'small'} disabled={!this.itemChanged(original)} onClick={() => this.itemReset(original)}>\n                            <i className=\"fa fa-undo\" />\n                        </Button>\n                        <Button size={'small'} disabled={!this.itemChanged(original)} onClick={() => this.saveItems(original)}>\n                            <i className=\"fa fa-save\" />\n                        </Button>\n                    </div>\n                ),\n                sortable: false\n            }\n        ]\n        let dataFiltered = this.state.data\n        if (this.state.search) {\n            dataFiltered = this.state.data.filter(\n                item =>\n                    item.productId.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    item.productName.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    item.center\n                        .toString()\n                        .toLowerCase()\n                        .includes(this.state.search.toLowerCase())\n            )\n        }\n        return (\n            <div className=\"mkt_products_admin\">\n                <div className=\"container mkt_products_admin__container\">\n                    <div className=\"toolbar\">\n                        <div className=\"toolbar__search search\">\n                            <div className=\"search-bar\">\n                                <input\n                                    type=\"text\"\n                                    data-qa=\"query\"\n                                    className=\"search-box form-control\"\n                                    placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                    value={this.state.search}\n                                    onChange={e =>\n                                        this.setState({\n                                            search: e.target.value\n                                        })\n                                    }\n                                />\n                            </div>\n                        </div>\n                        <div className=\"toolbar__filters filters\">\n                            <div>\n                                <Button onClick={() => this.setState({ data: this.props.products })}>\n                                    <i className=\"fa fa-undo\" /> <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\n                                </Button>\n                            </div>\n                            <div>\n                                <Button inverted onClick={() => this.saveItems()}>\n                                    <i className=\"fa fa-save\" /> <Translation id=\"save\" defaultMessage=\"Save\" />\n                                </Button>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"container\">\n                        <ReactTable\n                            data={dataFiltered}\n                            columns={columns}\n                            defaultPageSize={50}\n                            pageSizeOptions={[50, 100, 200]}\n                            className=\"-highlight\"\n                            style={{ height: 'calc(100vh - 425px)', minHeight: '450px' }}\n                            previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                            nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                            noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                            pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                            ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                        />\n                    </div>\n                </div>\n                <ReactTooltip id=\"min\" effect=\"solid\">\n                    <Translation id=\"minimum_of_units_per_order\" defaultMessage=\"Minimum of units per order\" />\n                </ReactTooltip>\n                <ReactTooltip id=\"max\" effect=\"solid\">\n                    <Translation id=\"maximum_of_units_per_order\" defaultMessage=\"Maximum of units per order\" />\n                </ReactTooltip>\n                <ReactTooltip id=\"max-month\" effect=\"solid\">\n                    <Translation id=\"maximum_of_units_per_month\" defaultMessage=\"Maximum of units per month\" />\n                </ReactTooltip>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(MktProductsMax)\n","import { connect } from 'react-redux'\nimport MktProductsMax from './MktProductsMax'\nimport { injectIntl } from 'react-intl'\nimport { fetchProductsMktToMax, saveProductsMktToMax, getImageBackground } from '../../store/products/actions'\nimport { getProductsMktToMax } from '../../store/products/reducers'\nimport { getSelectedCenter } from '../../store/centers/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        products: getProductsMktToMax(state),\n        centerId: getSelectedCenter(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchProductsMktToMax: () => dispatch(fetchProductsMktToMax()),\n        saveProductsMktToMax: products => dispatch(saveProductsMktToMax(products)),\n        getImageBackground: product => dispatch(getImageBackground(product)),\n        showAlertFailure: textFailure => dispatch({ type: 'FLOATING_ALERTS_ADD_FAILURE_MESSAGE', failureMessage: textFailure })\n    }\n}\n\nconst MktProductsMaxContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(MktProductsMax)\n\nexport default injectIntl(MktProductsMaxContainer)\n","import React from 'react'\n\nimport MktProductsMaxContainer from '../components/mkt-admin/MktProductsMaxContainer'\nimport ErrorContainer from '../components/alerts/ErrorContainer'\n\nconst mapStateToProps = state => {\n    return {\n        isAdminMkt: true\n    }\n}\n\nconst MktAdminProductsScreen = mapStateToProps().isAdminMkt ? () => <MktProductsMaxContainer /> : () => <ErrorContainer />\n\nexport default MktAdminProductsScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport Button from '../global/Button'\nimport Alerts from './Alerts'\n\nclass Maintenance extends React.Component {\n    componentDidMount() {\n        this.props.fetchMaintenance()\n    }\n    render() {\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-md-12\">\n                        <div className=\"error-template\">\n                            <div>\n                                <h1>\n                                    <Translation id=\"we_are_under_maintenance\" defaultMessage=\"We are under maintenance\" />\n                                </h1>\n                                <h2>\n                                    <Translation id=\"ecosentino_will_be_back_soon\" defaultMessage=\"e.Cosentino will be back soon!\" />\n                                </h2>\n\n                                <Translation id=\"thanks_for_your_patience\" defaultMessage=\"Thanks for your patience\" />\n                                {this.props.maintenanceScheduledText && (\n                                    <div>\n                                        <Alerts status=\"primary\" alert={<div dangerouslySetInnerHTML={{ __html: this.props.maintenanceScheduledText }} />} />\n                                    </div>\n                                )}\n                                <div className=\"logo-maintenance_wrapper\">\n                                    <i class=\"fal fa-cogs fa-9x\" />\n                                </div>\n\n                                <div>\n                                    <Button onClick={() => window.location.reload()}>\n                                        <Translation id=\"reload\" defaultMessage=\"Reload\" />\n                                    </Button>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default Maintenance\n","import { connect } from 'react-redux'\nimport Maintenance from './Maintenance'\nimport { getMaintenanceScheduled, getMaintenanceScheduledText } from '../../store/ui/reducers'\nimport { fetchMaintenance } from '../../store/ui/actions'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        maintenanceScheduled: getMaintenanceScheduled(state),\n        maintenanceScheduledText: getMaintenanceScheduledText(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchMaintenance: () => {\n            dispatch(fetchMaintenance())\n        }\n    }\n}\nconst ErrorContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(Maintenance)\n\nexport default ErrorContainer\n","import React from 'react'\n\nimport MaintenanceContainer from '../components/alerts/MaintenanceContainer'\n\nconst MaintenanceScreen = props => <MaintenanceContainer />\n\nexport default MaintenanceScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport LocalizedLink from '../global/LocalizedLink'\nimport iconLogoutV2 from '../../assets/img/icons/logoutv2.svg'\nimport MenuContainer from './MenuContainer'\n\nexport default class ResponsiveMenu extends React.Component {\n    render() {\n        \n        const userProfile2 = (\n            <div className=\"d-flex flex-column menu-configuration my-account-header-responsive\">\n                <div className=\"d-flex justify-content-between align-items-center\" style={{ padding: '0.5rem 1rem', fontWeight: '300', borderBottom: '1px solid #D8D8D8' }}>\n                    <div>\n                        <div className=\"mr-3\">\n                            <i className=\"fal fa-user fa-lg\" />\n                        </div>\n                        <div>\n                            <span>\n                                {this.props.name} {this.props.employeeId && <strong>{this.props.employeeId}</strong>}\n                                <br></br>\n                                <span className=\"txt-username\">{this.props.userType === 'SHOP' || this.props.userType === 'LOWES' ? this.props.email : this.props.username}</span>\n                            </span>\n                        </div>\n                    </div>\n                    <div className=\"close-button-userprofile\">\n                        <span\n                            onClick={() => {\n                                if (!this.props.showMenu) this.props.onToggleMenu(this.props.showMenu)\n                                if (this.props.showMenu && this.props.showPersonalData) {\n                                    this.props.onToggleMenu(this.props.showMenu)\n                                }\n                                this.props.onTogglePersonalData(this.props.showPersonalData)\n                            }}\n                        >\n                            <i class=\"fas fa-times\"></i>\n                        </span>\n                    </div>\n                </div>\n                <br></br>\n\n                {this.props.canRouteConfiguration && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('configuration') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'configuration', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        {this.props.isLowesCenter ? (\n                            <Translation id=\"store_profile\" defaultMessage=\"Store Profile\" />\n                        ) : (\n                            <Translation id=\"configuration\" defaultMessage=\"Configuration\" />\n                        )}\n                        <span className=\"arrow-right\">\n                            <i className=\"fal fa-chevron-right\"></i>\n                        </span>\n                    </LocalizedLink>\n                )}\n\n                {this.props.userType === 'SHOP' && (\n                    <React.Fragment>\n                        <LocalizedLink\n                            routeId=\"ROUTE_RESERVATIONS\"\n                            params={{ unassigned: 'unassigned' }}\n                            className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} linkMenu`}\n                        >\n                            <li className=\"nav-item\">\n                                <Translation id=\"unassigned_reservations\" defaultMessage=\"Unassigned reservations\" />{' '}\n                                {this.props.countReservations ? (\n                                    <span className=\"badge badge-pill badge-secondary\">\n                                        <span>{this.props.countReservations}</span>\n                                    </span>\n                                ) : null}\n                            </li>\n                            <span className=\"arrow-right\">\n                                <i className=\"fal fa-chevron-right\"></i>\n                            </span>\n                        </LocalizedLink>\n                        <LocalizedLink\n                            routeId=\"ROUTE_RESERVATIONS\"\n                            params={{ unassigned: '' }}\n                            className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} linkMenu`}\n                        >\n                            <li className=\"nav-item\">\n                                <Translation id=\"reservations_history\" defaultMessage=\"Reservations history\" />\n                            </li>\n                            <span className=\"arrow-right\">\n                                <i className=\"fal fa-chevron-right\"></i>\n                            </span>\n                        </LocalizedLink>\n                    </React.Fragment>\n                )}\n                {(this.props.userType === 'CUSTOMER' || this.props.isLowesCenter) && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('orders') !== -1 && window.location.pathname.indexOf('recurring-orders') === -1 && window.location.pathname.indexOf('pre-orders-cts') === -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'orders', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"orders_history\" defaultMessage=\"Orders history\" />\n                        <span className=\"arrow-right\">\n                            <i className=\"fal fa-chevron-right\"></i>\n                        </span>\n                    </LocalizedLink>\n                )}\n\n                {this.props.userType === 'CUSTOMER' && this.props.hasPreOrder && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('pre-orders-cts') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'pre-orders-cts', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"pre_orders_cts\" defaultMessage=\"Pre Orders CTS\" />\n                        <span className=\"arrow-right\">\n                            <i className=\"fal fa-chevron-right\"></i>\n                        </span>\n                    </LocalizedLink>\n                )}\n\n                {/*(this.props.userType === 'CUSTOMER' || this.props.isLowesCenter) && this.props.userType === 'CUSTOMER' && this.props.isIkeaCenter && (\n                <LocalizedLink\n                    className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${window.location.pathname.indexOf('orders') !== -1 && this.props.match.params.open === 'open' ? 'active' : ''} linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'orders', open: 'open' }}\n                    onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n\n                >\n                    <Translation id=\"open_orders\" defaultMessage=\"Open orders\" />\n                    <span className='arrow-right'><i className=\"fal fa-chevron-right\"></i></span>\n                </LocalizedLink>\n            )*/}\n                {this.props.canRouteOfferStatusHistory && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('offers') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'offers', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"quotes\" defaultMessage=\"Quotes\" />\n                        <span className=\"arrow-right\">\n                            <i className=\"fal fa-chevron-right\"></i>\n                        </span>\n                    </LocalizedLink>\n                )}\n                {this.props.isMktoolsCenter && this.props.userType === 'ADMIN' && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('transers') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'transfers', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"transfer_orders\" defaultMessage=\"Transfer orders\" />\n                        <span className=\"arrow-right\">\n                            <i className=\"fal fa-chevron-right\"></i>\n                        </span>\n                    </LocalizedLink>\n                )}\n\n                {this.props.userType === 'CUSTOMER' && !this.props.isMktoolsCenter && !this.props.isIkeaCenter && !this.props.isLowesCenter && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('recurring-orders') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'recurring-orders', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                        gtmLabel=\"ec_volver_a_comprar\"\n                    >\n                        <Translation id=\"recurring_orders_access\" defaultMessage=\"Recurring orders access\" />\n                        <span className=\"arrow-right\">\n                            <i className=\"fal fa-chevron-right\"></i>\n                        </span>\n                    </LocalizedLink>\n                )}\n\n                {this.props.userType === 'ADMIN' && this.props.isMktoolsCenter && this.props.isMktoolsAdmin && (\n                    <React.Fragment>\n                        <LocalizedLink\n                            className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                                window.location.pathname.indexOf('mkt-admin-products') !== -1 ? 'active' : ''\n                            } linkMenu`}\n                            routeId={'ROUTE_MKT_ADMIN_PRODUCTS'}\n                            params={{ filter: 'mkt-admin-products', open: '' }}\n                            onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                        >\n                            <Translation id=\"mkt_admin_products\" defaultMessage=\"Mktools admin\" />\n                            <span className=\"arrow-right\">\n                                <i className=\"fal fa-chevron-right\"></i>\n                            </span>\n                        </LocalizedLink>\n                        <LocalizedLink\n                            className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                                window.location.pathname.indexOf('mkt-admin-colors') !== -1 ? 'active' : ''\n                            } linkMenu`}\n                            routeId={'ROUTE_MKT_ADMIN_COLORS'}\n                            params={{ filter: 'mkt-admin-colors', open: '' }}\n                            onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                        >\n                            <Translation id=\"mkt_admin_colors\" defaultMessage=\"Admin colors\" />\n                            <span className=\"arrow-right\">\n                                <i className=\"fal fa-chevron-right\"></i>\n                            </span>\n                        </LocalizedLink>\n                    </React.Fragment>\n                )}\n\n                <LocalizedLink\n                    className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                        window.location.pathname.indexOf('segmentation') !== -1 ? 'active' : ''\n                    } linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'segmentation', open: '' }}\n                    onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                >\n                    <Translation id={'segmentation'} defaultMessage=\"Segmentation\" />\n                    <span className=\"arrow-right\">\n                        <i className=\"fal fa-chevron-right\"></i>\n                    </span>\n                </LocalizedLink>\n                <LocalizedLink\n                    className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                        window.location.pathname.indexOf('products-favourite') !== -1 ? 'active' : ''\n                    } linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'products-favourite', open: '' }}\n                    onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                >\n                    <Translation id=\"products_favourite\" defaultMessage=\"Favourite Products\" />\n                    <span className=\"arrow-right\">\n                        <i className=\"fal fa-chevron-right\"></i>\n                    </span>\n                </LocalizedLink>\n\n                {this.props.isUserMallAuthorized && this.props.isMallAdmin && (\n                    <LocalizedLink\n                        routeId=\"ROUTE_LANDING_MANAGER\"\n                        queryString=\"\"\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('landing-manager') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        params={{ filter: 'landing-manager', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"lndmngr\" defaultMessage=\"Landing Manager\" />\n                        <span className=\"arrow-right\">\n                            <i className=\"fal fa-chevron-right\"></i>\n                        </span>\n                    </LocalizedLink>\n                )}\n\n                {this.props.isCampaignAdmin && (\n                    <LocalizedLink\n                        routeId={'ROUTE_PROMOTIONS_LIST'}\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('promotions-list') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        params={{ filter: 'promotions-list', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"admin_campaigns\" defaultMessage=\"Admin campaigns\" />\n                        <span className=\"arrow-right\">\n                            <i className=\"fal fa-chevron-right\"></i>\n                        </span>\n                    </LocalizedLink>\n                )}\n\n                <span\n                    className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} linkMenu linkLogout`}\n                    onClick={() => {\n                        if (this.props.msalContext.accounts && this.props.msalContext.accounts[0]) {\n                            this.props.msalContext.instance.logoutRedirect()\n                        }\n                        this.props.onLogout()\n                    }}\n                >\n                    <div className=\"d-flex\">\n                        <div className=\"icon\" style={{ marginRight: '8px' }}>\n                            <img alt=\"\" src={iconLogoutV2} aria-hidden=\"true\" />\n                        </div>\n                        <Translation id=\"logout\" defaultMessage=\"Logout\" />\n                    </div>\n                </span>\n            </div>\n        )\n        return (\n            <nav id=\"mobile-main-menu\" className=\"d-xl-none navbar navbar-expand-xl navbar-light shadow-sm\">\n                <div className=\"navbar-collapse\" id=\"navbarSupportedContent\">\n                    <ul className=\"navbar-nav mr-auto\">                            \n                        {this.props.showPersonalData && userProfile2}\n                        {\n                            !this.props.showPersonalData &&\n                            < MenuContainer comp = {true} responsive={true} />\n                        }\n                        \n                    </ul>\n                </div>\n            </nav>\n        )\n    }\n}\n","import { connect } from 'react-redux'\nimport ResponsiveMenu from './ResponsiveMenu'\nimport { getIsLogged, getIsAdmin, getUserName, getName, getUserImage, getImpersonatedBy, getUserType, getEmail, getIsMktoolsAdmin, canViewPreorder, getUserAuthorization, getIsMallAdmin, getIsCampaignsPilotUser } from '../../store/login/reducers'\nimport { logout } from '../../store/login/actions'\nimport * as ui from '../../store/ui/actions'\nimport { getIsAdding } from '../../store/cart/reducers'\nimport { showMenuSelector, showPersonalDataSelector } from '../../store/ui/reducers'\nimport { canOffer, canViewCatalog, getIsIkeaCenter, getIsLowesCenter, getIsMkToolsCenter } from '../../store/centers/reducers'\nimport { getEmployeeId } from '../../store/big-account/reducers'\nimport {withMsal} from \"@azure/msal-react\";\n\nconst mapStateToProps = state => {\n    return {\n        username: getUserName(state),\n        name: getName(state),\n        userimage: getUserImage(state),\n        isLogged: getIsLogged(state),\n        isAdmin: getIsAdmin(state),\n        isAdding: getIsAdding(state),\n        showMenu: showMenuSelector(state),\n        showPersonalData: showPersonalDataSelector(state),\n        impersonatedBy: getImpersonatedBy(state),\n        userType: getUserType(state),\n        canViewCatalog: canViewCatalog(state),\n        email: getEmail(state),\n        employeeId: getEmployeeId(state),\n        canRouteOfferStatusHistory: canOffer(state),\n        canRouteConfiguration: true,\n        isMktoolsCenter: getIsMkToolsCenter(state),\n        isLowesCenter: getIsLowesCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        isMktoolsAdmin: getIsMktoolsAdmin(state),\n        hasPreOrder: canViewPreorder(state),\n        isUserMallAuthorized: getUserAuthorization(state),\n        isMallAdmin: getIsMallAdmin(state),\n        isCampaignAdmin: getIsCampaignsPilotUser(state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onToggleMenu: active => {\n            dispatch(ui.toggleMenu(active))\n        },\n        onShowUpLogin: () => {\n            dispatch(ui.showLoginModal())\n        },\n        onShowUpCart: () => {\n            dispatch(ui.showCartModal())\n        },\n        onShowUpImpersonate: () => {\n            dispatch(ui.showImpersonateModal())\n        },\n        onLogout: () => {\n            dispatch(logout())\n        },\n        onTogglePersonalData: active => {\n            dispatch(ui.showPersonalData(active))\n        },\n    }\n}\nconst ResponsiveMenuContainer = withMsal(connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ResponsiveMenu))\n\nexport default ResponsiveMenuContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport CartLineContainer from '../cart-line/CartLineContainer'\nimport Spinner from '../global/Spinner'\nimport getNumberFormat from \"../getNumberFormat\";\n\nconst MiniCartSummary = ({\n    lines,\n    totalQty,\n    total,\n    isIkeaCenter,\n    calculatingLinesPrice,\n    canViewPricesPhase2,\n    totalCoin,\n    lang\n}) => {\n    if (totalQty <= 0) {\n        return (\n            <div className=\"total cart-empty container-fluid\">\n                <div className=\"row\">\n                    <div className=\"label\">\n                        <Translation id=\"your_cart_is_empty\" defaultMessage=\"Your cart is empty\" />\n                    </div>\n                </div>\n            </div>\n        )\n    }\n    let numberFormat = getNumberFormat(lang, { maximumFractionDigits: 2, minimumFractionDigits:2 })\n    \n    if(totalCoin === 'JPY') {\n        numberFormat = getNumberFormat(lang, { maximumFractionDigits: 0, minimumFractionDigits: 0 })\n    }\n    return (\n        <div>\n            <div className={isIkeaCenter ? 'item-list container-fluid more-height' : 'item-list container-fluid'}>\n                {lines.map(line => line && <CartLineContainer line={line} key={line.lineId} onlyView={line.extra && line.extra.itsFree} typeLine={'checkout_v2'} type={'checkout'}/>)}\n            </div>\n            {!isIkeaCenter && (\n                <div className=\"total container-fluid\">\n                    <div className=\"row\">\n                        <div className=\"col-3 my-auto\">\n                            <div className=\"label\">\n                                <Translation id=\"total_items\" defaultMessage=\"Total\" />\n                            </div>\n                        </div>\n                        <div className=\"col-2  my-auto\">\n                            <div className=\"quantity\">{totalQty}</div>\n                        </div>\n\n                        {canViewPricesPhase2 && (\n                            <React.Fragment>\n                                <div className=\"col-2 col-md-2 my-auto text-right\">\n                                    <div className=\"label\">\n                                        <Translation id=\"total_import\" defaultMessage=\"Total\" />\n                                    </div>\n                                </div>\n\n                                <div className=\"col-4 my-auto\">\n                                    <div className=\"quantity\">\n                                        {calculatingLinesPrice ? (\n                                            <Spinner isLoading={true} relative small></Spinner>\n                                        ) : ( (!total) || (total && total == 0) ? (\n                                                <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                                            ) : total && (\n                                                <React.Fragment>\n                                                    {numberFormat.format(total)} {totalCoin}\n                                                </React.Fragment>\n                                            )\n                                        )}\n                                    </div>\n                                </div>\n                            </React.Fragment>\n                        )}\n                    </div>\n                </div>\n            )}\n        </div>\n    )\n}\nexport default MiniCartSummary\n","import React from 'react'\nimport Translation from '../../global/Translation'\nimport { defineMessages, injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getIsLoadingVoucher, getIsValidVoucher, getVoucher, getVoucherStatusText } from '../../../store/cart/reducers'\nimport { checkVoucher, removeVoucher } from '../../../store/cart/actions'\nimport { canViewPricesPhase3 } from '../../../store/products/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        isLoading: getIsLoadingVoucher(state),\n        voucher: getVoucher(state),\n        isValidVoucher: getIsValidVoucher(state),\n        voucherStatusText: getVoucherStatusText(state),\n        canViewPricesPhase3: canViewPricesPhase3(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        checkVoucher: voucher => {\n            if (voucher) dispatch(checkVoucher(voucher))\n        },\n        removeVoucher: voucher => dispatch(removeVoucher(voucher)).then(() => dispatch({ type: 'CART_CHECK_VALID_VOUCHER_RESET' })),\n        resetValidVoucher: () => dispatch({ type: 'CART_CHECK_VALID_VOUCHER_RESET' })\n    }\n}\n\nclass GroupInputVoucher extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { voucher: this.props.voucher, isValidVoucher: this.props.voucher !== '' ? true : null }\n    }\n\n    addVoucher() {\n        this.props.checkVoucher(this.state.voucher)\n    }\n    removeVoucher() {\n        this.props.resetValidVoucher()\n        this.props.removeVoucher(this.state.voucher)\n        this.setState({ voucher: '' })\n    }\n    render() {\n        if (!this.props.canViewPricesPhase3) return null\n        return (\n            <div\n                className={`form-group form-group__voucher ${\n                    this.props.isValidVoucher ? 'form-group__voucher--success' : this.props.isValidVoucher === false && !this.props.isLoading ? 'form-group__voucher--failure' : ''\n                }`}\n            >\n                <label htmlFor=\"input-voucher\">\n                    <Translation id=\"insert_voucher\" defaultMessage=\"Insert your Voucher\" />\n                </label>\n                {this.props.voucherStatusText && (\n                    <span>\n                        {' '}\n                        - <Translation id={this.props.voucherStatusText} />\n                    </span>\n                )}\n                <div className=\"input-group mb-3\">\n                    <div className=\"wrapper-input\">\n                        <input\n                            name=\"input-voucher\"\n                            data-cy=\"cart__input_voucher\"\n                            type=\"text\"\n                            className={`form-control input-voucher ${this.props.voucher ? 'disabled' : ''}`}\n                            disabled={this.props.voucher}\n                            value={this.props.voucher ? this.props.voucher : this.state.voucher}\n                            onChange={e => this.setState({ voucher: e.target.value }, this.props.resetValidVoucher)}\n                            onKeyPress={e => {\n                                if (e.key === 'ENTER') this.props.checkVoucher(this.state.voucher)\n                            }}\n                        />\n                        <div className=\"icons-status\">\n                            {this.props.isValidVoucher && <i className=\"far fa-check\" />}\n                            {this.props.isLoading && <i className=\"far fa-spinner fa-pulse\" />}\n                            {this.props.isValidVoucher === false && !this.props.isLoading && <button className=\"clean-voucher-btn\" onClick={() => this.removeVoucher()}><i className=\"far fa-times\" /></button>}\n                        </div>\n                    </div>\n                    <div className=\"input-group-append\">\n                        {!this.props.isValidVoucher ? (\n                            <button\n                                className=\"btn btn-outline-secondary\"\n                                type=\"button\"\n                                onClick={() => {\n                                    if (!this.props.isLoading) this.addVoucher()\n                                }}\n                                disabled={this.props.isLoading}\n                            >\n                                <Translation id=\"add\" defaultMessage=\"add\" />\n                            </button>\n                        ) : (\n                            <button\n                                className=\"btn btn-outline-secondary\"\n                                type=\"button\"\n                                onClick={() => {\n                                    if (!this.props.isLoading) this.removeVoucher()\n                                }}\n                                disabled={this.props.isLoading}\n                            >\n                                <Translation id=\"remove\" defaultMessage=\"Remove\" />\n                            </button>\n                        )}\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(injectIntl(GroupInputVoucher))\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport MiniCartSummary from './MiniCartSummary'\nimport IncentivesContainer from '../incentives/IncentivesContainer'\nimport confirm from '../global/confirm'\nimport GroupInputVoucher from '../checkout/global/GroupInputVoucher'\nimport MallIncentivesContainer from '../incentives/MallIncentivesContainer'\nimport { connect } from 'react-redux'\nimport { showBannerOldVersion } from '../../store/ui/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        showBanner: showBannerOldVersion(state),\n    }\n}\n\nclass MiniCart extends React.Component {\n    componentDidMount() {\n        this.props.fetchCart(this.props.selectedCenter)\n    }\n    confirmEmptyCart = () => {\n        confirm(this.props.intl.formatMessage({ id: 'CONFIRM' })).then(\n            confirm => {\n                this.props.emptyCart()\n            },\n            cancel => {}\n        )\n    }\n    canViewIncentives = () => {\n        if (!this.props.totalQty > 0) return false\n        else if (this.props.isIkeaCenter) return false\n        else return !(this.props.isMktoolsCart && this.props.userType === 'CUSTOMER');\n    }\n    render() {\n        const {\n            lines,\n            totalQty,\n            total,\n            onDelete,\n            changeCartLineQty,\n            show,\n            onClose,\n            shippingMethod,\n            onOpenBundleContent,\n            editSegmentation,\n            loadThisSegmentation,\n            showSegmentationModal,\n            changeCartLineSegmentation,\n            coin,\n            isIkeaCenter,\n            calculatingLinesPrice,\n            canViewPricesPhase2,\n            totalCoin,\n            lang,\n        } = this.props\n\n        if (!shippingMethod || !lines) {\n            return ''\n        }\n\n        const buttons = (\n            <div className=\"row no-gutters\">\n                <div className=\"col-12 col-md-4 p-1\">\n                    <Button onClick={() => this.confirmEmptyCart()}>\n                        <Translation id=\"empty\" defaultMessage=\"Empty\" />\n                    </Button>\n                </div>\n\n                <div className=\"col-12 col-md-8 p-1\">\n                    <LocalizedLink routeId=\"ROUTE_CHECKOUT\">\n                        <Button inverted datacy=\"modal_minicarrito__go_checkout\">\n                            <Translation id=\"checkout\" defaultMessage=\"Checkout\" />\n                        </Button>\n                    </LocalizedLink>\n                </div>\n            </div>\n        )\n\n        return (\n            <div>\n                <div className=\"modal-overlay\" style={{ display: show ? 'block' : 'none' }} onClick={onClose} />\n                <div id=\"mini-cart-container\" style={{ display: show ? 'block' : 'none' }}>\n                    <div id=\"mini-cart\">\n                        <header className=\"container-fluid\">\n                            <div className=\"row\">\n                                <div className=\"col-9 my-auto\"></div>\n                                <div className=\"col-3 my-auto text-right\">\n                                    <div className=\"bt-close\" onClick={onClose}>\n                                        <i className=\"fal fa-times\" />\n                                    </div>\n                                </div>\n                            </div>\n                        </header>\n                        <div>\n                            <MiniCartSummary\n                                {...this.props}\n                                lines={lines}\n                                totalQty={totalQty}\n                                total={total}\n                                totalCoin={totalCoin}\n                                onDelete={onDelete}\n                                editSegmentation={editSegmentation}\n                                changeCartLineQty={changeCartLineQty}\n                                shippingMethod={shippingMethod}\n                                onOpenBundleContent={onOpenBundleContent}\n                                loadThisSegmentation={loadThisSegmentation}\n                                showSegmentationModal={showSegmentationModal}\n                                changeCartLineSegmentation={changeCartLineSegmentation}\n                                coin={coin}\n                                isIkeaCenter={isIkeaCenter}\n                                calculatingLinesPrice={calculatingLinesPrice}\n                                canViewPricesPhase2={canViewPricesPhase2}\n                                lang={lang}\n                            />\n                        </div>\n                        <div className=\"incentive-wrapper\">{this.canViewIncentives() && <IncentivesContainer />}</div>\n                        {this.props.isMallCartForContainer && <MallIncentivesContainer />}\n                        {lines && lines.length > 0 && (\n                            <div className=\"container-fluid\">\n                                <GroupInputVoucher />\n                            </div>\n                        )}\n                        <footer className=\"container-fluid\"> {totalQty > 0 && buttons}</footer>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(MiniCart)\n)","import { connect } from 'react-redux'\nimport MiniCart from './MiniCart'\nimport { removeCartLine, changeCartLineQty, changeCartLineSegmentation, emptyCart, fetchCart } from '../../store/cart/actions'\nimport {\n    totalSelector,\n    qtySelector,\n    showModalSelector,\n    getLines,\n    getCalculatingLinesPrice,\n    totalCoin,\n    isMallCartForContainer,\n    getGoalMin,\n    weightSelector,\n    getKgPoundRatio,\n} from '../../store/cart/reducers'\nimport * as ui from '../../store/ui/actions'\nimport { getSelectedCenter, getShippingMethod, getCoin, getIsIkeaCenter, canOffer } from '../../store/centers/reducers'\n\nimport { injectIntl } from 'react-intl'\nimport * as segmentation from '../../store/segmentation/actions'\nimport { getUserType } from '../../store/login/reducers'\nimport { getLanguageDir, getLanguage } from '../../store/ui/reducers'\nimport { canViewPricesPhase2 } from '../../store/products/reducers'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\n\nconst mapStateToProps = state => {\n    let language = getLanguage(state)\n    let defaultUnit = language === 'en' || language === 'en-US' || language === 'fr-CA' ? 'LB' : 'KG'\n    let unit = getProfileConfiguration(state).weightUnit ? getProfileConfiguration(state).weightUnit : defaultUnit\n\n    return {\n        lines: getLines(state),\n        total: totalSelector(state),\n        totalQty: qtySelector(state),\n        show: showModalSelector(state),\n        selectedCenter: getSelectedCenter(state),\n        shippingMethod: getShippingMethod(state),\n        key: getSelectedCenter(state),\n        coin: getCoin(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        userType: getUserType(state),\n        languageDir: getLanguageDir(state),\n        calculatingLinesPrice: getCalculatingLinesPrice(state),\n        totalCoin: totalCoin(state),\n        canViewPricesPhase2: canViewPricesPhase2(state),\n        lang: getLanguage(state),\n        isMallCartForContainer: isMallCartForContainer(state),\n        unit,\n        goalMin: getGoalMin(state),\n        current: unit === 'KG' ? weightSelector(state) : Math.floor(weightSelector(state) * getKgPoundRatio()),\n        isOffer: canOffer(state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchCart: centerId => {\n            dispatch(fetchCart(centerId))\n        },\n        onDelete: lineId => {\n            dispatch(removeCartLine(lineId))\n        },\n        changeCartLineQty: (lineId, qty) => {\n            dispatch(changeCartLineQty(lineId, qty))\n        },\n        onClose: () => {\n            dispatch(ui.closeCartModal())\n        },\n        emptyCart: () => {\n            dispatch({ type: 'EMPTY_CART_BY_USER' })\n            dispatch(emptyCart())\n        },\n        onOpenBundleContent: product => {\n            dispatch(ui.openBundleContent(product))\n        },\n        loadThisSegmentation: seg => {\n            dispatch(segmentation.loadThisSegmentation(seg))\n        },\n        showSegmentationModal: (mode, callback) => {\n            dispatch(ui.showSegmentationModal(mode, callback))\n        },\n        changeCartLineSegmentation: lineId => {\n            dispatch(changeCartLineSegmentation(lineId))\n        }\n    }\n}\n\nconst MiniCartContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(MiniCart)\n\nexport default injectIntl(MiniCartContainer)\n","import React from 'react'\nimport Translation from '../../global/Translation'\n\nimport Button from '../../global/Button'\nimport ReactTable from 'react-table'\nimport { injectIntl } from 'react-intl'\n\nimport 'react-table/react-table.css'\nimport Spinner from '../../global/Spinner'\nimport confirm from '../../global/confirm'\nimport FormatCSVModal from '../../global/FormatCSVModal'\nimport axios from 'axios'\nimport { showBannerOldVersion } from '../../../store/ui/reducers'\nimport { connect } from 'react-redux'\n\nconst mapStateToProps = state => {\n    return {\n        showBanner: showBannerOldVersion(state)\n    }\n}\n\nclass ImpersonateModal extends React.Component {\n    constructor(props) {\n        super(props)\n\n        this.state = { search: '' }\n    }\n    componentDidMount() {\n        this.props.fetchUsersToImpersonate()\n    }\n    confirmImpersonate(original, onImpersonate, intl) {\n        confirm(intl.formatMessage({ id: 'IMPERSONATE_CONFIRM' }), {intl: intl}).then(\n            confirm => {\n                onImpersonate(original.login)\n            },\n            cancel => {}\n        )\n    }\n    \n    closeFormatCSVModal(format) {\n        this.setState({ showCSVFormat: false })\n\n        const FileDownload = require('js-file-download');\n        axios.get(process.env.REACT_APP_API_HOST + `/customers/csv?format=${format}`,\n            {headers: \n                {Authorization: `Bearer ${this.props.token}`},\n                'Content-Type': 'text/plain',\n                responseType: 'blob'\n            })\n        .then((response) => {\n                FileDownload(response.data, `customers.${format}`);\n        });\n    }\n\n    render() {\n        const { show, onClose, onImpersonate, impersonatedBy, isLogging, isLoading, languageDir } = this.props\n\n        if (this.props.users === null) {\n            return null\n        }\n\n        let usersFiltered = null\n\n        if (this.state.search) {\n            usersFiltered = this.props.users\n            usersFiltered = usersFiltered.filter(row => {\n                return row.login.toLowerCase().includes(this.state.search.toLowerCase()) || row.name.toLowerCase().includes(this.state.search.toLowerCase())\n            })\n        }\n        const users = usersFiltered !== null ? usersFiltered : this.props.users\n\n        const deimpersonate = impersonatedBy ? (\n            <Button onClick={() => onImpersonate(impersonatedBy)}>\n                <Translation id=\"back_to\" defaultMessage=\"Back to\" />\n                &nbsp;{impersonatedBy}\n            </Button>\n        ) : null\n        const spinner = isLogging ? <Spinner isLoading={isLogging} /> : null\n        const columns = [\n                \n            { Header: <Translation id=\"customer_id\" defaultMessage=\"Customer id\" />, accessor: 'login', minWidth: 80},\n            { Header: <Translation id=\"customer_name\" defaultMessage=\"Customer name\" />, accessor: 'name' },  \n            {\n                Header: '', className: \"impersonate-btn-table\",\n                Cell: ({ original }) => {\n                    return (\n                        <button gentle size=\"small\" className='impersonate-btn-v2' onClick={() => this.confirmImpersonate(original, onImpersonate, this.props.intl)}>\n                            <b> {window.innerWidth < 580 ? <i className=\"fal fa-check\" /> : <Translation id=\"impersonate\" defaultMessage=\"Impersonate\" />}</b>\n                        </button>\n                    )\n                }\n            },             \n        ]\n\n        return (\n            <div className='container-impersonate'>\n                {spinner}\n\n                <div\n                    className=\"modal-overlay\"\n                    style={{\n                        display: show ? 'block' : 'none'\n                    }}\n                    onClick={onClose}\n                />\n                <div id=\"modal-impersonate-container\" className='modal-impersonate v2' style={{ display: show ? 'block' : 'none' }}>\n                    <div id=\"mini-cart\">\n                        <div className=\"container-fluid\">\n                            <div className=\"row\">\n                                <div className=\"col-12\">\n                                    <header className=\"container-fluid\">\n                                        <div className=\"row\">\n                                            <div className=\"col-9 my-auto\">\n                                                <span>\n                                                    <Translation id=\"choose_customer\" defaultMessage=\"Choose customer\" />\n                                                </span>\n                                            </div>\n                                            <div className={`col-3 my-auto text-right`}>\n                                                <div className=\"bt-close\" onClick={onClose}>\n                                                    <i className=\"fal fa-times\" />\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </header>\n                                </div>\n                            </div>\n                            {this.props.userName != 'DBU' && this.props.impersonatedBy != 'DBU' && (\n                                <div className='search-bar-download'>\n                                    <div>\n                                        <div className='search-bar-v2'>\n                                            <input\n                                                type=\"text\"\n                                                data-qa=\"query\"\n                                                className='search-box-v2 heigth35'\n                                                placeholder={this.props.intl.formatMessage({ id: 'search' })}\n                                                data-cy=\"Impersonate_modal__search_box\"\n                                                value={this.state.search}\n                                                onChange={e =>\n                                                    this.setState({\n                                                        search: e.target.value\n                                                    })\n                                                }\n                                            />\n                                        </div>\n                                    </div>\n                                    <div className='download'>\n                                        {/* <a href={} data-cy=\"impersonate__link_download_users_list\"> */}\n                                        <Button\n                                            icon=\"download\"\n                                            customClass=\"only-icon heigth35\"\n                                            datacy=\"impersonate__link_download_users_list\"\n                                            onClick={() => this.setState({ showCSVFormat: true })}\n                                        />\n                                        {/* </a> */}\n                                    </div>\n                                </div>\n                            )}\n                            {this.state.showCSVFormat && <FormatCSVModal onClose={format => this.closeFormatCSVModal(format)} token={() => this.props.token}></FormatCSVModal>}\n                            {this.props.userName == 'DBU' || this.props.impersonatedBy == 'DBU' ? (\n                                <div className=\"row\">\n                                    <div className=\"col-8\">\n                                        <input\n                                            type=\"text\"\n                                            id=\"inputLogin\"\n                                            className=\"form-control\"\n                                            placeholder={this.props.intl.formatMessage({ id: 'identifier' })}\n                                            autoFocus\n                                            ref={node => {\n                                                this.usernameInput = node\n                                            }}\n                                        />\n                                    </div>\n                                    <div className=\"col-4\">\n                                        <Button gentle onClick={() => this.confirmImpersonate({ login: this.usernameInput.value }, onImpersonate, this.props.intl)}>\n                                            <Translation id=\"impersonate\" defaultMessage=\"Impersonate\" />\n                                        </Button>\n                                    </div>\n                                </div>\n                            ) : (\n                                <div className=\"row\">\n                                    <div\n                                        className=\"col-12\"\n                                        style={window.innerWidth < 580 ? { marginRight: '0px', marginLeft: '0px', paddingRight: '8px', paddingLeft: '8px' } : {}}\n                                    >\n                                        <ReactTable\n                                            data={users}\n                                            loading={isLoading}\n                                            loadingText={<Spinner isLoading={isLoading} />}\n                                            columns={columns}\n                                            defaultPageSize={4}\n                                            pageSizeOptions={[4, 8]}\n                                            previousText={<i className=\"fal fa-chevron-left\"></i>}\n                                            nextText={<i className=\"fal fa-chevron-right\"></i>}\n                                            noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                                            pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                            ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                                            rowsText={`elementos por página`}\n                                        />\n                                    </div>\n                                </div>\n                            )}\n\n                            <footer>\n                                <div className=\"row\">\n                                    <div className=\"col-12 col-md-6 my-auto d-none d-md-inline\">\n                                        <div className=\"go-back\" onClick={onClose}>\n                                            <i className={`fal fa-chevron-${languageDir === 'rtl' ? 'right' : 'left'}`} />\n                                            <span className=\"label\">\n                                                <Translation id=\"keep_my_user\" defaultMessage=\"Keep my user\" />\n                                            </span>\n                                        </div>\n                                    </div>\n                                    <div className={`col-12 col-md-6 my-auto text-right`}>{deimpersonate}</div>\n                                </div>\n                            </footer>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(ImpersonateModal)\n)","import { getUserName } from '../../../store/login/reducers';\nimport { connect } from 'react-redux'\nimport ImpersonateModal from './ImpersonateModal'\nimport { showModalSelector, usersSelector, getFetchingUsers } from '../../../store/impersonate/reducers'\nimport * as ui from '../../../store/ui/actions'\nimport { fetchUsersToImpersonate } from '../../../store/impersonate/actions'\nimport { getIsLogging, getImpersonatedBy, getToken } from '../../../store/login/reducers'\nimport { impersonate } from '../../../store/login/actions'\nimport { getLanguageDir } from '../../../store/ui/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        show: showModalSelector(state),\n        users: usersSelector(state),\n        impersonatedBy: getImpersonatedBy(state),\n        userName:getUserName(state),\n        isLogging: window.location.href.indexOf('landing-templates') == -1 && getIsLogging(state),\n        isLoading: getFetchingUsers(state),\n        token: getToken(state),\n        languageDir: getLanguageDir(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closeImpersonateModal())\n        },\n        onImpersonate: (userId) => {\n            dispatch(impersonate(userId))\n        },\n        fetchUsersToImpersonate: () => {\n            dispatch(fetchUsersToImpersonate())\n        }\n    }\n}\n\nconst ImpersonateContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ImpersonateModal)\n\nexport default ImpersonateContainer\n","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\nimport { showBannerOldVersion } from '../../store/ui/reducers'\nimport { connect } from 'react-redux'\nimport ProfileContainer from '../profile/ProfileContainer'\n\nconst mapStateToProps = state => {\n    return {\n        showBanner: showBannerOldVersion(state)\n    }\n}\n\nclass UserProfileModal extends React.Component {\n\n    render(){\n        return (\n            <div>\n                <div className=\"modal-overlay\" style={{\n                    display: this.props.show ? 'block' : 'none',\n                }} onClick={this.props.onClose} />\n                <div id=\"user-profile-modal-container\" className=\"user-profile user-profile-modal-container-v2\" style={{ display: this.props.show ? 'block' : 'none' }}>\n                    <ProfileContainer />\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(UserProfileModal)\n)","import { connect } from 'react-redux'\nimport ProfileModal from './ProfileModal'\nimport { logout } from '../../store/login/actions'\nimport { closeProfileModal } from '../../store/ui/actions'\nimport { showingProfileModal } from '../../store/ui/reducers'\nimport { getUserName, getName, getUserImage, getUserType, getEmail } from '../../store/login/reducers'\nimport { getEmployeeId } from '../../store/big-account/reducers'\n// import { fetchUnassignedReservations } from '../../store/api'\n//import { countUnassignedReservations } from '../../store/reservations/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        show: showingProfileModal(state),\n        username: getUserName(state),\n        name: getName(state),\n        userimage: getUserImage(state),\n        email: getEmail(state),\n        employeeId: getEmployeeId(state),\n        //totalUnassignedReservations: countUnassignedReservations(state),\n        userType: getUserType(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onLogout: () => {\n            dispatch(logout())\n        },\n        onClose: () => {\n            dispatch(closeProfileModal())\n        }\n        // fetchUnassignedReservations: () => {\n        //     dispatch(fetchUnassignedReservations())\n        // }\n    }\n}\n\nconst ProfileModalContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProfileModal)\n\nexport default ProfileModalContainer\n","import React from 'react'\n\nconst TipModal = props => {\n    const { title, children, onClose, customClass, showBody = true, color = 'white', borderColor = '#bccbd2' } = props\n\n    let dialogClasses = ''\n\n    if (customClass) {\n        dialogClasses += ' ' + customClass\n    }\n\n    return (\n        <div className=\"tip-modal fade show\" tabIndex=\"-1\" role=\"dialog\" data-backdrop=\"static\">\n            \n            <svg height=\"16\" width=\"32\" className=\"tip-modal-arrow\">\n                <polygon points=\"0,16 16,0 32,16\" style={{fill:color}} />\n                {/* <polyline points=\"0,16 16,0 32,16\" style={{fill:'none',strokeWidth:1,stroke:borderColor}} /> */}\n            </svg>\n\n            <div className={'tip-modal-dialog' + dialogClasses} role=\"document\" \n                style={{background:color,/*border:`1px solid ${borderColor}`*/}}\n            >\n                <div className=\"tip-modal-content\">  \n                    <i className=\"fas fa-times tip-modal-close\" onClick={onClose} aria-label=\"Close\"/>  \n                    <div className=\"tip-modal-header\">{title}</div>\n                    <div className=\"tip-modal-header-separator\"/>\n                    {showBody && <div className=\"tip-modal-body\">{children}</div>}\n                </div>\n            </div>\n\n            <svg height=\"16\" width=\"32\" className=\"tip-modal-arrow\">\n                <polygon points=\"0,16 16,0 32,16\" style={{fill:color}} />\n                {/* <polyline points=\"0,16 16,0 32,16\" style={{fill:'none',strokeWidth:1,stroke:borderColor}} /> */}\n            </svg>\n            \n        </div>\n    )\n}\n\nexport default TipModal\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport Translation from '../global/Translation'\nimport { injectIntl } from 'react-intl'\nimport LocalizedLink from '../global/LocalizedLink'\nimport ProductDisplayName from '../global/ProductDisplayName'\nimport ProductImage from '../catalog/ProductImage'\nimport DisplayBrand from '../catalog/rectangleResult/displays/DisplayBrand'\nimport { getConfigLineName } from '../orders/new-order-history/Utils'\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        closeCrossSellinModal: () => {\n            dispatch({ type: 'HIDE_CROSSELLLING_MODAL' })\n        }\n    }\n}\n\nclass SimpleCartLine extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { showHelp: false, showComment: false }\n    }\n\n    render() {\n        let { line, intl } = this.props\n\n        if (!line) return null\n\n        let image = null\n\n        if (line.cutToSize && line.cutToSize.thumb) {\n            image = <img alt=\"\" src={line.cutToSize.thumb} style={{maxWidth: '100%'}} />\n        } else if ((line.extra && (line.extra.type === 'wall_sample' || line.extra.type === 'custom_sample')) || (line.extra && line.extra.type === 'brochures')) {\n            image = <img alt=\"\" src={this.props.getImageBackground(line.product)} />\n        } else {\n            image = (\n                <LocalizedLink className=\"cart_line__link_image\" routeId=\"ROUTE_PRODUCT_DETAIL\" params={{ id: line.product.productId }} onClick={this.props.closeCrossSellinModal}>\n                    <ProductImage product={line.product} showTechnologies={false}/>\n                </LocalizedLink>\n            )\n        }\n\n        if (!line || !line.lineId) return null\n\n        if (line.extra && line.extra.itsFree && !this.props.canViewPricesPhase3) return null\n\n        return (\n            <div className=\"single-line-item row\" key={line.lineId}>\n                <div className=\"wrapper-product-image col-5\">{image}</div>\n\n                <div className=\"content col-7 pl-0\">\n                    <div className=\"description-and-input\">\n                        <div className=\"mini_cart_line_title mt-2\">\n                            <div className=\"title\">\n                                <div className=\"product-title\">\n                                    {line && line.cutToSize && line.cutToSize.config ? getConfigLineName(line.cutToSize.config) : <ProductDisplayName product={line.product} />}\n                                </div>\n                                <span className=\"subtitle\">\n                                    {line && line.cutToSize && line.cutToSize.config ? (\n                                        <React.Fragment>\n                                            <DisplayBrand brand={line.cutToSize.config.material.brand} />\n                                        </React.Fragment>\n                                    ) : (\n                                        <React.Fragment>\n                                            <DisplayBrand brand={line.brand} />\n                                            <span className=\"product-brand\">&nbsp;(ID {line.productId})</span>\n                                        </React.Fragment>\n                                    )}\n                                </span>\n                            </div>\n                        </div>\n\n                        <div className=\"mini_cart_line_block\">\n                            <div className=\"mini_cart_line_info\">\n                                {line && line.cutToSize && line.cutToSize.config && line.cutToSize.config.material && line.cutToSize.config.material.finish ? (\n                                    <div className=\"mini_cart_line_info__line\">\n                                        <Translation id=\"finish\" defaultMessage=\"Finish\" />\n                                        :&nbsp;<b>{intl.formatMessage({ id: line.cutToSize.config.material.finish }).toLowerCase()}</b>\n                                    </div>\n                                ) : line && line.product && line.product.finish ? (\n                                    <div className=\"mini_cart_line_info__line\">\n                                        <Translation id=\"finish\" defaultMessage=\"Finish\" />\n                                        :&nbsp;<b>{intl.formatMessage({ id: line.product.finish }).toLowerCase()}</b>\n                                    </div>\n                                ) : (\n                                    ''\n                                )}\n\n                                {line && line.product && line.product.zaddon === 'MAL' && (\n                                    <div className=\"mini_cart_line_info__line\">\n                                        <Translation id=\"MAL\" />\n                                    </div>\n                                )}\n\n                                <div className=\"mini_cart_line_info__line\">\n                                    <Translation id=\"added_units\" defaultMessage=\"Added units\" />\n                                    :&nbsp;<b>{line.qty}</b>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(connect(null, mapDispatchToProps)(SimpleCartLine))\n","import React from 'react'\n\nimport { typeMap } from './TypeMaps'\nimport { injectIntl } from 'react-intl'\n\nclass MultiProductDisplayName extends React.Component {\n    render() {\n        const { product, specialNames } = this.props\n        let LANG_TO_INDEX = {\n            da: 'EN',\n            de: 'DE',\n            'en-US': 'Z2',\n            en: 'EN',\n            es: 'ES',\n            fi: 'EN',\n            'fr-CA': 'Z2',\n            'en-CA': 'Z2',\n            fr: 'FR',\n            it: 'IT',\n            nl: 'NL',\n            no: 'EN',\n            pt: 'PT',\n            pl: 'EN',\n            sv: 'SV',\n            tr: 'TR' \n        }\n        let locale = LANG_TO_INDEX[this.props.intl.locale]\n\n        const typeName = typeMap[product.type]\n        let sufix = '';        \n        \n        if (product.colorFormulations && product.colorFormulations[0]) {\n            sufix += ' ' + product.colorFormulations[0].brand.toLowerCase()\n        }\n\n        if (product.translations && product.translations[locale]) {\n            sufix += ' ' + product.translations[locale].colorName.toLowerCase()\n        } \n\n        \n        return (\n            <span className=\"product-title\" data-cy=\"global__product_display_name\">\n                {typeName}\n                <span>{ sufix }</span>\n            </span>\n        )\n    }\n}\n\nexport default injectIntl(MultiProductDisplayName)\n","import React from 'react'\nimport Translation from '../../global/Translation'\nimport ProductDisplayName from '../../global/ProductDisplayName'\nimport LengthMeasureTranslation from '../../global/LengthMeasureTranslation'\nimport LengthMeasure from '../../global/LengthMeasure'\n\n//Displays\nimport DisplayProductInfo from './displays/DisplayProductInfo'\nimport DisplayBrand from './displays/DisplayBrand'\nimport DisplayGroupDtails from './displays/DisplayGroupDtails'\nimport DisplayPrice from './displays/DisplayPrice'\nimport MultiProductDisplayName from '../../global/MultiProductDisplayName'\n\nexport default class SimpleDetailsDefault extends React.Component {\n    state = { showHelp: false }\n    getUnitBy() {\n        const { product } = this.props\n        if (product.unitsByLot) return product.unitsByLot\n        else if (product.unitsByBox) return product.unitsByBox\n        else if (!product.unitsByLot && !product.unitsByBox) return <LengthMeasure product={product} />\n    }\n\n    render() {\n        const { product, canViewThresholdMax, isMulti } = this.props\n    \n        let quantity\n        if (product.type === 'TABLA') {\n            quantity = (\n                <div>\n                    <LengthMeasureTranslation square={true} />\n                </div>\n            )\n        } else {\n            quantity = <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n        }\n        const watchingOutlet = this.props.outlet ? true : false\n        let stock\n        if (watchingOutlet) {\n            stock = product.stock_outlet\n        } else {\n            if (product.threshold && product.threshold >= product.stock) {\n                stock = ' < ' + product.threshold\n            } else if (canViewThresholdMax && product.thresholdMax && product.thresholdMax <= product.stock) {\n                stock = ' > ' + product.thresholdMax\n            } else {\n                stock = product.stock\n            }\n        }\n\n        return (\n\n            <DisplayProductInfo>\n                {\n                    !isMulti ? (\n                        <div className=\"product-color-name\">\n                            <ProductDisplayName product={product} />\n                        </div>\n                    ) : (\n                        <div className=\"product-color-name\">\n                            <MultiProductDisplayName product={product} />\n                        </div>\n                    )\n                }                \n\n                {this.props.isExclusiveHomeDepot && (\n                    <small>\n                        <span style={{ color: '#f96303' }}>\n                            <Translation id=\"home_depot_exclusive\" defaultMessage=\"Home Depot exclusive\"></Translation>\n                        </span>\n                    </small>\n                )}\n\n                <span className=\"subtitle\">\n                    <DisplayBrand brand={product.brand}></DisplayBrand>\n                    {!isMulti && (<span className=\"product-brand\">&nbsp;(ID {product.productId})</span>)}\n                </span>\n\n                {\n                    !isMulti && (\n                        <DisplayGroupDtails>\n                            { <DisplayPrice product={this.props.product} outlet={this.props.outlet} showPriceDiscountDisclaimer={false}/> }\n                        </DisplayGroupDtails>\n                    )\n                }\n\n                \n            </DisplayProductInfo>\n        )\n    }\n}\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { addCartLine, addCartLineWithouthSeg } from '../../../store/cart/actions'\nimport { getShippingMethod, getNeedsSegmentation } from '../../../store/centers/reducers'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl, FormattedMessage } from 'react-intl'\nimport { getIsAdding, getQtyProductsCart } from '../../../store/cart/reducers'\nimport { discountsByProductId } from '../../../store/products/reducers'\nimport Translation from '../../global/Translation'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport Button from '../../global/Button'\nimport InputNumber from '../../global/InputNumber'\nimport ProductImage from '../ProductImage'\nimport DetailsDefault from './SimpleDetailsDefault'\nimport {setLastSelectedProduct} from \"../../../store/selected-objects/actions\";\n\nconst mapStateToProps = (state, ownProps) => {\n    const source = ownProps.result !== undefined ? ownProps.result._source : ownProps.product\n\n    return {\n        shippingMethod: getShippingMethod(state),\n        outlet: ownProps.match.params.outlet,\n        qtyProductCart: getQtyProductsCart(state),\n        needsSegmentation: getNeedsSegmentation(state),\n        isAdding: getIsAdding(state),\n        productDiscounts: discountsByProductId(state, source.productId, ownProps.match.params.outlet)\n    }\n}\n\nconst mapDispatchToProps = (dispatch, props) => {\n    return {\n        addCartLine: (productId, qty, extra, callbackCenter, dektonGripRequested) => {\n            dispatch(addCartLine(productId, qty, extra, callbackCenter, dektonGripRequested))\n        },\n        addCartLineWithouthSeg: (productId, qty, extra) => {\n            dispatch(addCartLineWithouthSeg(productId, qty, extra))\n        },\n        clickDetail: (product) => {\n            dispatch(setLastSelectedProduct(product))\n            dispatch({ type: 'PRODUCT_CLICK', product, list:props.list, index:props.indexOfList })\n        },\n        closeCrossSellinModal: () => {\n            dispatch({ type: 'HIDE_CROSSELLLING_MODAL'})\n        },\n        sendClickMetrics: (articleType) => {\n            dispatch({ type: 'CLICK_CROSS_SELLING_LINK', list:props.list, articleType})\n        }\n    }\n}\n\nclass SingleRectangleResult extends React.Component {\n    constructor(props) {\n        super(props)\n        const source = props.result !== undefined ? props.result._source : props.product\n        this.product = source\n\n        let firstState = {}\n        let step = 1\n        let qtyAdd = 1\n        if (this.product && (this.product.typeId === '01' || this.product.typeId === 'NEWS')) step = 1\n        else if (this.product.minQty[this.props.shippingMethod]) step = this.product.minQty[this.props.shippingMethod]\n\n        if (this.getMin()) qtyAdd = this.getMin()\n        else if (this.product && (this.product.typeId === '01' || this.product.typeId === 'NEWS')) qtyAdd = 1\n        else if (this.product.minQty[this.props.shippingMethod]) qtyAdd = this.product.minQty[this.props.shippingMethod]\n        firstState = { ...firstState, qtyToAdd: qtyAdd, step: step, promotions: [] }\n\n        if (this.getLimit() === 0) firstState = { ...firstState, qtyToAdd: 0 }\n\n        this.state = firstState\n        //this.generatePromotionTags()\n    }\n    generatePromotionTags() {\n\n        let allPromotions = []\n\n        let sorting = {\n            Z70D: { val: 0 },\n            Z71D: { val: 1 },\n            Z73D: { val: 2 },\n            ZQ00: { val: 3 }\n        }\n\n        if (this.props.productDiscounts && Object.keys(this.props.productDiscounts).length > 0) {\n            allPromotions = allPromotions.concat(this.props.productDiscounts)\n        }\n        if (this.props.outlet) {\n            allPromotions = this.validateOutletPromotions(allPromotions)\n        }\n        let promotionsUpdated = allPromotions.sort((a, b) => {\n            if (sorting[b.conditionClass] && sorting[a.conditionClass]) {\n                // console.log(a.conditionClass)\n                // console.log(sorting[a.conditionClass].val)\n                if (a.conditionClass == b.conditionClass) {\n                    if (a.conditionClass == 'Z71D') {\n                        //Discunt higher more favorable.\n                        if (a.value > b.value) {\n                            return -1\n                        }\n                        if (a.value < b.value) {\n                            return 1\n                        }\n                    } else {\n                        if (a.value > b.value) {\n                            return 1\n                        }\n                        if (a.value < b.value) {\n                            return -1\n                        }\n                    }\n                }\n\n                return sorting[a.conditionClass].val - sorting[b.conditionClass].val\n            }\n\n            // a must be equal to b\n            return 1\n        })\n\n        this.setState({ promotions: promotionsUpdated })\n    }\n\n    getMin() {\n        return this.product.min\n    }\n\n    getLimit() {\n        if (this.product.discontinued || (this.props.outlet && this.product.outlet)) {\n            return this.getLimitDiscontinued()\n        }\n        return null\n    }\n\n    getLimitDiscontinued() {\n        let result = 0\n        if (this.props.outlet) {\n            if (this.product.stock_outlet) {\n                result = parseInt(this.product.stock_outlet, 10)\n            }\n        } else {\n            if (this.product.stock) {\n                result = parseInt(this.product.stock, 10)\n            }\n        }\n        if (this.props.qtyProductCart[this.product.productId]) {\n            result = result - parseInt(this.props.qtyProductCart[this.product.productId], 10)\n        }\n        return result\n    }\n\n    getValueWithMax() {\n        return this.state.qtyToAdd <= this.getLimit() ? this.state.qtyToAdd : this.getLimit()\n    }\n\n    componentDidMount() {\n        this.generatePromotionTags()\n    }\n\n    componentDidUpdate(prevProps, prevState) {\n        if (prevProps.productDiscounts !== this.props.productDiscounts) {\n            this.generatePromotionTags()\n        }\n    }\n\n    validateOutletPromotions = allPromotions => {\n        if (allPromotions == undefined || allPromotions == null || Object.keys(allPromotions).length == 0) return []\n        //remove other outlet types promos.\n        allPromotions = Object.values(allPromotions).filter(promo => {\n            if (promo.outlet && promo.outlet == true && promo.outlet_types != this.product.outletQuality) {\n                return false\n            }\n            return true\n        })\n\n        return allPromotions\n    }\n\n    handleClickLink = (articleType) => {\n        this.props.closeCrossSellinModal()\n        this.props.sendClickMetrics(articleType)\n    }\n\n    render() {\n        if (this.getLimit() && this.getValueWithMax() < this.state.qtyToAdd) this.setState({ qtyToAdd: this.getValueWithMax() })\n\n        const isMulti = this.props.count && this.props.count > 1\n        const extra = {}\n\n        if (this.props.outlet) extra.outlet = this.product.outletQuality\n        if (this.props.list) extra.analyticsTag = this.props.list\n        if (this.props.sectionFlag) {\n            extra.crossSelling = true\n            extra.sectionFlag = this.props.sectionFlag\n        }\n\n        return (\n            <div className=\"single-rectangle-result row\" type={this.product.type}>\n                <div className=\"wrapper-product-image col-5\">\n                    <LocalizedLink\n                        routeId=\"ROUTE_PRODUCT_DETAIL\"\n                        // target=\"_parent\"\n                        params={{ id: this.product.productId, outlet: this.props.outlet ? 'outlet' : '' }}\n                        onClick={() => {\n                            const product = this.product\n                            if (this.props.list) {\n                                product.extra = {...product.extra, analyticsTag:this.props.list}\n                            }\n                            this.props.clickDetail(product)\n                            this.props.closeCrossSellinModal()\n                        }}\n                    >\n                        <ProductImage product={this.product} showTechnologies={false}/>\n                    </LocalizedLink>\n                </div>\n\n                <div className=\"col-7 pl-0\">\n\n                    <DetailsDefault {...this.props} isMulti={isMulti} product={this.product} />\n\n                    {\n                        !isMulti && (\n                            <div className=\"product-actions row no-gutters\">\n                                <div className=\"input-row col-6\">\n                                    <div className=\"input\">\n                                        <InputNumber\n                                            value={this.getLimit() !== null ? this.getValueWithMax() : this.state.qtyToAdd}\n                                            change={qty =>\n                                                this.setState({\n                                                    qtyToAdd: qty\n                                                })\n                                            }\n                                            size=\"small\"\n                                            step={this.props.isIkeaCenter && this.product.unit === 'M2' ? 0.01 : this.state.step}\n                                            limit={this.getLimit()}\n                                            min={this.getMin()}\n                                            decimals={this.props.isIkeaCenter && this.product.unit === 'M2' ? 2 : 0}\n                                            oldStyle={true}\n                                        />\n                                    </div>\n                                </div>\n\n                                <div className=\"bt-row col-6 pl-3\">\n                                    <Button\n                                        //icon=\"shopping-cart\"\n                                        size=\"small\"\n                                        customClass=\"bt-add-cart\"\n                                        disabled={this.props.isAdding || (this.getLimit() != null ? this.getLimit() : 1) <= 0 || !this.state.qtyToAdd >= 1}\n                                        onClick={() => {\n                                            this.props.closeCrossSellinModal()\n                                            if (this.props.needsSegmentation) {\n                                                this.props.addCartLine(\n                                                    this.product.productId,\n                                                    this.state.qtyToAdd,\n                                                    extra,\n                                                    null,\n                                                    this.product.finish === 'AND' && ['DEKTON', 'DKTN'].includes(this.product.brand)\n                                                )\n                                            } else {\n                                                this.props.addCartLineWithouthSeg(this.product.productId, this.state.qtyToAdd, { crossSelling:true })\n                                            }\n                                        }}\n                                    >\n                                        <Translation id=\"add\" defaultMessage=\"Add\" />\n                                    </Button>\n                                </div>\n                            </div>\n                        )\n                    }\n\n                    {\n                        isMulti && (\n                            <div className=\"product-actions row no-gutters\">\n                                <div className=\"bt-row col-12 mt-1\">\n                                    <Button\n                                        //icon=\"shopping-cart\"\n                                        size=\"small\"\n                                        customClass=\"bt-add-cart\"\n                                        disabled={this.props.isAdding || (this.getLimit() != null ? this.getLimit() : 1) <= 0 || !this.state.qtyToAdd >= 1}\n                                    >\n                                        <LocalizedLink routeId=\"ROUTE_CATALOG\"\n                                                       queryString={`?q=${this.product.colorName}&type[0]=${this.product.type}&cross-selling`}\n                                                       params={{ outlet: '' }}\n                                                       onClick={() => {this.handleClickLink(this.product.type)}}\n                                                       gtmLabel=\"ec_cs_popup_carrito\"\n                                        >\n                                            <FormattedMessage id=\"see_n_models\" defaultMessage=\"See {modelCount} models\" values={{ modelCount: this.props.count }} />\n                                        </LocalizedLink>\n                                    </Button>\n                                </div>\n                            </div>\n                        )\n                    }\n\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(SingleRectangleResult)\n    )\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport {injectIntl, defineMessages} from 'react-intl'\n\nimport { connect } from 'react-redux'\n\nimport TipModal from '../global/TipModal'\nimport { getCurrentCartCrossSelling, showCrossSellingModal } from '../../store/crossSelling/reducers'\nimport SimpleCartLine from '../cart-line/SimpleCartLine'\nimport { getLastLine } from '../../store/cart/reducers'\nimport SingleRectangleResult from '../catalog/rectangleResult/SingleRectangleResult'\nimport { canViewCrosselling } from '../../store/login/reducers'\n\ndefineMessages({\n    added_products_to_your_cart: {\n        id: 'added_products_to_your_cart',\n        description: 'You have added products to your cart!',\n        defaultMessage: 'You have added products to your cart!'\n    }\n})\n\n\nconst mapStateToProps = state => {\n    return {               \n        showCrossSellingModal: showCrossSellingModal(state),\n        crossSelling: getCurrentCartCrossSelling(state),\n        line : getLastLine(state),\n        canViewCrosselling: canViewCrosselling(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        hide: () => dispatch({type: 'HIDE_CROSSELLLING_MODAL'}),\n        sendMetrics: (lines) => dispatch({type: 'SHOW_CROSS_SELLING_MODAL', lines})\n    }\n}\n\nclass CrossSellingModal extends React.Component {\n    constructor(props) {\n        super(props)\n    }\n\n    componentDidMount() {\n        let hide = this.props.hide\n        window.addEventListener('click', function(e) {\n            let element = document.getElementById('cross-selling-modal')\n            if(element){\n                if (!document.getElementById('cross-selling-modal').contains(e.target)) {\n                    hide()\n                }\n            }\n        })\n    }\n\n\n    componentDidUpdate(prevProps) {\n        if (prevProps.crossSelling !== this.props.crossSelling) {\n            if (this.props.crossSelling) this.props.sendMetrics(this.props.crossSelling)\n        }\n    }\n\n    isProductTypeSlab = () => {\n        const { line } = this.props\n\n        if (line && line.cutToSize && line.cutToSize.config) {\n            return false\n        }\n\n        if (line && line.product && line.product.type && line.product.type == 'TABLA') {\n            return true\n        }\n\n        return false\n    }\n\n    render() {\n        const { line, crossSelling, showCrossSellingModal , hide, intl} = this.props\n        const showCrossSelling = crossSelling && ((crossSelling.single && crossSelling.single.length) || crossSelling.multi)\n        let index = 1\n\n        if (!showCrossSellingModal ||!line) return null\n        return (\n            <div className=\"cross-selling-modal fade show\" id='cross-selling-modal'>\n                <TipModal onClose={hide} title={intl.formatMessage({ id: 'added_products_to_your_cart' })} >\n                    <SimpleCartLine line={line}/>\n                    { showCrossSelling && canViewCrosselling && this.isProductTypeSlab() && (\n                        <div className=\"cross-selling-list-section\">\n                            <div className=\"tip-modal-header py-2\">\n                                <Translation id=\"bought_together\" defaultMessage=\"Usually bought together\"/>\n                            </div>\n\n                            <div className=\"cross-selling-list\">\n                                {\n                                    crossSelling.single && crossSelling.single.map(product => (\n                                        <SingleRectangleResult product={product} key={product.productId} list={'crossselling-popupcarrito'} indexOfList={index++} sectionFlag=\"CA\"/>\n                                    )\n                                )}\n                                {\n                                    crossSelling.multi && (\n                                        <SingleRectangleResult product={crossSelling.multi} list={'crossselling-popupcarrito'} key={crossSelling.multi.productId} count={crossSelling.multi_size} sectionFlag=\"CA\"/>\n                                    )\n                                }\n                            </div>\n                        </div>\n                    )}\n                    { !showCrossSelling && (\n                        <div style={{height:'8px'}} />\n                    )}\n                    \n                </TipModal>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(CrossSellingModal)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\nimport iconLogoutV2 from '../../assets/img/icons/logoutv2.svg'\nimport MiniCartContainer from '../mini-cart/MiniCartContainer'\nimport iconProfile from '../../assets/img/icons/user.svg'\nimport iconProfileInverted from '../../assets/img/icons/user-inverted.svg'\nimport iconCart from '../../assets/img/icons/carrito.svg'\nimport iconBars from '../../assets/img/icons/bars.svg'\nimport iconList from '../../assets/img/icons/list.svg'\nimport closeViewOn from '../../assets/img/icons/close-black.svg'\nimport ImpersonateContainer from './impersonate/ImpersonateContainer'\nimport ProfileModalContainer from '../profile-modal/ProfileModalContainer'\nimport Button from '../global/Button'\nimport CrossSellingModal from '../cross-selling/CrossSellingModal'\nimport LocalizedLink from '../global/LocalizedLink'\n\nexport default class IconButtons extends React.Component {\n\n    componentDidMount() {\n        this.props.fetchCart(this.props.selectedCenter)\n    }\n\n    render() {\n        const totalBadge = this.props.isLogged && this.props.totalQty ? <span className=\"badge badge-pill badge-secondary\"><span>{this.props.totalQty}</span></span> : null\n        const countReservationsBadge =\n            this.props.isLogged && this.props.countReservations ? <span className=\"badge badge-pill badge-secondary\"><span>{this.props.countReservations}</span></span> : null\n        const changeLogBadge =\n            this.props.selectedCenter !== this.props.LowesCenterId && this.props.isLogged && !this.props.changesRead ? (\n                <span className=\"badge badge-pill badge-primary\">!</span>\n            ) : null\n        const miniCart =\n            this.props.isLogged && this.props.canViewCart ? (\n                <li>\n                    {this.props.totalQty > 0 ? (\n                        <LocalizedLink routeId=\"ROUTE_CHECKOUT\">\n                            <span\n                                id=\"cart-doll\"\n                                className=\"cart\"\n                                data-cy=\"user_menu__cart_doll\"\n                            >\n                                <img alt=\"\" className={this.props.isAddingCallApi ? 'icon shake-horizontal-slow shake-constant' : 'icon'} src={iconCart} />\n                                {totalBadge}\n                            </span>\n                        </LocalizedLink>\n                    ) : (\n                        <span\n                            id=\"cart-doll\"\n                            className=\"cart\"\n                            data-cy=\"user_menu__cart_doll\"\n                        >\n                            <img alt=\"\" className={this.props.isAddingCallApi ? 'icon shake-horizontal-slow shake-constant' : 'icon'} src={iconCart} />\n                            {totalBadge}\n                        </span>\n                    )}\n                </li>\n            ) : null\n\n        const impersonateButton = this.props.canImpersonate ? (            \n            <li className=\"d-inline\">\n                <span\n                    id=\"impersonate-doll\"\n                    data-cy=\"user_menu__impersonate_doll\"\n                    onClick={() => {\n                        this.props.onToggleImpersonate(this.props.showImpersonate)\n                    }}\n                >\n                    <img alt=\"\" className=\"icon\" src={iconList} />\n                </span>\n            </li>\n        ) : null\n        const userBadge = this.props.isLogged ? (\n            <li className=\"\">\n                <span\n                    id=\"profile-doll\"\n                    className=\"cart\"\n                    data-cy=\"user_menu__profile_doll\"\n                    onClick={() => {                        \n                        if (!this.props.showMenu) this.props.onToggleMenu(this.props.showMenu)\n                        if (this.props.showMenu && this.props.showPersonalData) {\n                            this.props.onToggleMenu(this.props.showMenu)\n                        }\n                        this.props.onTogglePersonalData(this.props.showPersonalData)\n                    }}\n                >\n                    <img alt=\"\" src={this.props.userimage || iconProfile} className=\"icon\" style={{ borderRadius: this.props.userimage ? '100%' : '' }} />\n                    <span className=\"d-none d-xl-inline my-account-text\">\n                        <Translation id=\"my_account\" defaultMessage=\"My account\" />\n                    </span>\n                    {countReservationsBadge}\n                    {this.props.userType === 'ADMIN' ? changeLogBadge : null}\n                </span>\n            </li>\n        ) : (\n            <li className=\"d-none d-lg-inline\">\n                <span className=\"cart\" onClick={this.props.onShowUpLogin}>\n                    <Button size=\"medium\" inverted style={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }} dataQas=\"global_header-login-button-desktop\">\n                        <img alt=\"\" src={iconProfileInverted} style={{margin:'0px 5px',width:'16px',position:'relative',top:'-1px'}} />\n                        <Translation id=\"login\" defaultMessage=\"Login\" />\n                    </Button>\n                </span>\n            </li>\n        )\n\n        const userProfile2 = (\n            <div className=\"d-flex flex-column menu-configuration my-account-header\">\n                {\n                    <React.Fragment>\n                        <div className=\"linkMenu\" style={{ padding: '0.5rem 1rem', fontWeight: '300' }}>\n                            <div className=\"mr-3\">\n                                <i className=\"fal fa-user fa-lg\" />\n                            </div>\n                            <div>\n                                <span>\n                                    {this.props.name} {this.props.employeeId && <strong>{this.props.employeeId}</strong>}\n                                    <br></br>\n                                    <span className=\"txt-username\">\n                                        {this.props.userType === 'SHOP' || this.props.userType === 'LOWES' ? this.props.email : this.props.username}\n                                    </span>\n                                </span>\n                            </div>\n                        </div>\n                    </React.Fragment>\n                }\n\n                {this.props.canRouteConfiguration && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('configuration') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'configuration', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        {this.props.isLowesCenter ? (\n                            <Translation id=\"store_profile\" defaultMessage=\"Store Profile\" />\n                        ) : (\n                            <Translation id=\"configuration\" defaultMessage=\"Configuration\" />\n                        )}\n                    </LocalizedLink>\n                )}\n\n                {this.props.userType === 'SHOP' && (\n                    <React.Fragment>\n                        <LocalizedLink\n                            routeId=\"ROUTE_RESERVATIONS\"\n                            params={{ unassigned: 'unassigned' }}\n                            className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                                window.location.pathname.indexOf('orders') !== -1 && window.location.pathname.indexOf('recurring-orders') === -1 ? 'active' : ''\n                            } linkMenu`}\n                        >\n                            <li className=\"nav-item\">\n                                <Translation id=\"unassigned_reservations\" defaultMessage=\"Unassigned reservations\" />{' '}\n                                {this.props.countReservations ? (\n                                    <span className=\"badge badge-pill badge-secondary\">\n                                        <span>{this.props.countReservations}</span>\n                                    </span>\n                                ) : null}\n                            </li>\n                        </LocalizedLink>\n                        <LocalizedLink\n                            routeId=\"ROUTE_RESERVATIONS\"\n                            params={{ unassigned: '' }}\n                            className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                                window.location.pathname.indexOf('orders') !== -1 && window.location.pathname.indexOf('recurring-orders') === -1 ? 'active' : ''\n                            } linkMenu`}\n                        >\n                            <li className=\"nav-item\">\n                                <Translation id=\"reservations_history\" defaultMessage=\"Reservations history\" />\n                            </li>\n                        </LocalizedLink>\n                    </React.Fragment>\n                )}\n                {(this.props.userType === 'CUSTOMER' || this.props.isLowesCenter) && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('orders') !== -1 && window.location.pathname.indexOf('recurring-orders') === -1 && window.location.pathname.indexOf('pre-orders-cts') === -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'orders', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"orders_history\" defaultMessage=\"Orders history\" />\n                    </LocalizedLink>\n                )}\n\n                {this.props.userType === 'CUSTOMER' && this.props.hasPreOrder && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('pre-orders-cts') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'pre-orders-cts', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"pre_orders_cts\" defaultMessage=\"Pre Orders CTS\" />\n                    </LocalizedLink>\n                )}\n\n                {this.props.canRouteOrders && this.props.userType === 'CUSTOMER' && this.props.isIkeaCenter && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('orders') !== -1 && this.props.match.params.open === 'open' ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'orders', open: 'open' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"open_orders\" defaultMessage=\"Open orders\" />\n                    </LocalizedLink>\n                )}\n\n                {this.props.canRouteOfferStatusHistory && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('offers') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'offers', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"quotes\" defaultMessage=\"Quotes\" />\n                    </LocalizedLink>\n                )}\n\n                {this.props.canRouteTransfers && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('transers') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'transfers', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"transfer_orders\" defaultMessage=\"Transfer orders\" />\n                    </LocalizedLink>\n                )}\n\n                {this.props.userType === 'CUSTOMER' && !this.props.isMktoolsCenter && !this.props.isIkeaCenter && !this.props.isLowesCenter && (\n                    <LocalizedLink\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('recurring-orders') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'recurring-orders', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                        gtmLabel=\"ec_volver_a_comprar\"\n                    >\n                        <Translation id=\"recurring_orders_access\" defaultMessage=\"Recurring orders access\" />\n                    </LocalizedLink>\n                )}\n\n                {this.props.userType === 'ADMIN' && this.props.isMktoolsCenter && this.props.isMktoolsAdmin && (\n                    <React.Fragment>\n                        <LocalizedLink\n                            className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                                window.location.pathname.indexOf('mkt-admin-products') !== -1 ? 'active' : ''\n                            } linkMenu`}\n                            routeId={'ROUTE_MKT_ADMIN_PRODUCTS'}\n                            params={{ filter: 'mkt-admin-products', open: '' }}\n                            onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                        >\n                            <Translation id=\"mkt_admin_products\" defaultMessage=\"Mktools admin\" />\n                        </LocalizedLink>\n                        <LocalizedLink\n                            className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                                window.location.pathname.indexOf('mkt-admin-colors') !== -1 ? 'active' : ''\n                            } linkMenu`}\n                            routeId={'ROUTE_MKT_ADMIN_COLORS'}\n                            params={{ filter: 'mkt-admin-colors', open: '' }}\n                            onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                        >\n                            <Translation id=\"mkt_admin_colors\" defaultMessage=\"Admin colors\" />\n                        </LocalizedLink>\n                    </React.Fragment>\n                )}\n\n                <LocalizedLink\n                    className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                        window.location.pathname.indexOf('segmentation') !== -1 ? 'active' : ''\n                    } linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'segmentation', open: '' }}\n                    onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                >\n                    <Translation id={'segmentation'} defaultMessage=\"Segmentation\" />\n                </LocalizedLink>\n\n                <LocalizedLink\n                    className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                        window.location.pathname.indexOf('products-favourite') !== -1 ? 'active' : ''\n                    } linkMenu`}\n                    routeId=\"ROUTE_PROFILE\"\n                    params={{ filter: 'products-favourite', open: '' }}\n                    onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                >\n                    <Translation id=\"products_favourite\" defaultMessage=\"Favourite Products\" />\n                </LocalizedLink>\n\n                {this.props.isUserMallAuthorized && this.props.isMallAdmin && (\n                    <LocalizedLink\n                        routeId=\"ROUTE_LANDING_MANAGER\"\n                        queryString=\"\"\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('landing-manager') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        params={{ filter: 'landing-manager', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <Translation id=\"lndmngr\" defaultMessage=\"Landing Manager\" />\n                    </LocalizedLink>\n                )}\n\n                {this.props.isCampaignAdmin && (\n                    <LocalizedLink\n                        routeId={'ROUTE_PROMOTIONS_LIST'}\n                        className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} ${\n                            window.location.pathname.indexOf('promotions-list') !== -1 ? 'active' : ''\n                        } linkMenu`}\n                        params={{ filter: 'promotions-list', open: '' }}\n                        onClick={() => this.props.onTogglePersonalData(this.props.showPersonalData)}\n                    >\n                        <li className=\"nav-item\">\n                            <Translation id=\"admin_campaigns\" defaultMessage=\"Admin campaigns\" />\n                        </li>\n                    </LocalizedLink>\n                )}\n\n                <span\n                    className={`${this.props.withButtons ? 'configuration-btn btn btn-secondary' : ''} linkMenu linkLogout`}\n                    onClick={() => {\n                        this.props.onTogglePersonalData(this.props.showPersonalData)\n                        if (this.props.msalContext.accounts && this.props.msalContext.accounts[0]) {\n                            this.props.msalContext.instance.logoutRedirect()\n                        }\n                        this.props.onLogout()\n                    }}\n                >\n                    <div className=\"d-flex\">\n                        <div className=\"icon\" style={{ marginRight: '8px' }}>\n                            <img alt=\"\" src={iconLogoutV2} aria-hidden=\"true\" />\n                        </div>\n                        <Translation id=\"logout\" defaultMessage=\"Logout\" />\n                    </div>\n                </span>\n            </div>\n        )\n\n        const logButton = (\n            <li className=\"login-btn-responsive d-lg-none\">\n                <span className=\"cart\" onClick={this.props.onShowUpLogin}>\n                    <Button size=\"medium\" inverted style={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }} dataQas=\"global_header-login-button-responsive\">\n                        <img alt=\"\" src={iconProfileInverted} style={{ margin: '0px 5px', width: '16px', position: 'relative', top: '-1px' }} />\n                        <Translation id=\"login\" defaultMessage=\"Login\" />\n                    </Button>\n                </span>\n            </li>\n        )\n\n        return (\n            <div>\n                <nav id=\"top-side-menu\" onMouseLeave={() => {\n                    //this.props.onTogglePersonalData(true)                    \n                    //this.props.onTogglePersonalData(true)                    \n                }}>\n                    \n                    {this.props.isLogged && <ProfileModalContainer />}\n                    {this.props.canImpersonate && <ImpersonateContainer />}\n                    {/*MiniCartContainer only shows in V1 I believe*/}\n                    {/* {this.props.isLogged && this.props.canViewCart && <MiniCartContainer />} */}\n\n                    <ul>\n                        {impersonateButton}\n                        {miniCart}\n                        {userBadge}\n                        {\n                            this.props.showPersonalData &&  window.innerWidth > 1199 && \n                            <React.Fragment>\n                                <div className=\"modal-overlay\" id='profile-modal-bg' style={{\n                                    display: 'block',\n                                }} onClick={() => {\n                                    this.props.onTogglePersonalData(this.props.showPersonalData)\n                                }} />\n                                {userProfile2}\n                            </React.Fragment>\n                        }\n                      {\n                        !this.props.isLogged &&\n                        logButton\n                      }\n                        \n                        <li className=\"d-xl-none burger-menu\">\n                            <span\n                                id=\"menu-doll\"\n                                className=\"cart\"\n                                onClick={() => {\n                                    if (this.props.showPersonalData){\n                                        this.props.onTogglePersonalData(this.props.showPersonalData)\n                                    }else{\n                                        this.props.onToggleMenu(this.props.showMenu)\n                                    }\n                                }}\n                            >\n                                <img alt=\"\" className={`icon ${!this.props.showMenu ? \"\" : (this.props.showPersonalData ? \"\" : \"close-btn-icon\") }`} src={!this.props.showMenu ? iconBars : (this.props.showPersonalData ? iconBars : closeViewOn)} />\n                            </span>\n                        </li>\n                        \n                    </ul>\n                </nav>\n                {this.props.canViewCrossellin && <CrossSellingModal />}                \n            </div>\n        )\n    }\n}\n","import { connect } from 'react-redux'\nimport IconButtons from './IconButtons'\nimport { qtySelector, showModalSelector, getIsAddingCallApi } from '../../store/cart/reducers'\nimport {\n    getIsLogged,\n    getIsAdmin,\n    getUserName,\n    getUserImage,\n    getImpersonatedBy,\n    getUserType,\n    getName,\n    getIsMallAdmin,\n    getUserAuthorization,\n    getIsCampaignsPilotUser,\n    getIsMktoolsAdmin,\n    canViewCrosselling,\n    canViewPreorder\n} from '../../store/login/reducers'\nimport { logout } from '../../store/login/actions'\nimport * as ui from '../../store/ui/actions'\nimport { showMenuSelector, showingProfileModal, showPersonalDataSelector, showBannerOldVersion, showingNewVersionModal } from '../../store/ui/reducers'\nimport { showModalSelector as showModalSelectorImpersonate, canImpersonate } from '../../store/impersonate/reducers'\nimport { canBuy, getSelectedCenter, getIsLowesCenter, canViewCart, getLowesCenterId, canOffer, getIsMkToolsCenter, getIsIkeaCenter } from '../../store/centers/reducers'\nimport { countUnassignedReservations } from '../../store/reservations/reducers'\nimport { getChangesRead } from '../../store/changelog/reducers'\nimport {withMsal} from \"@azure/msal-react\";\nimport { fetchCart } from '../../store/cart/actions'\n\n\nconst mapStateToProps = state => {\n    return {\n        username: getUserName(state),\n        userType: getUserType(state),\n        userimage: getUserImage(state),\n        totalQty: qtySelector(state),\n        countReservations: countUnassignedReservations(state),\n        isLogged: getIsLogged(state),\n        isAdmin: getIsAdmin(state),\n        isAddingCallApi: getIsAddingCallApi(state),\n        showMenu: showMenuSelector(state),\n        showPersonalData: showPersonalDataSelector(state),\n        showCart: showModalSelector(state),\n        showProfile: showingProfileModal(state),\n        showImpersonate: showModalSelectorImpersonate(state),\n        impersonatedBy: getImpersonatedBy(state),\n        canBuy: canBuy(state),\n        canViewCart: canViewCart(state),\n        changesRead: getChangesRead(state),\n        selectedCenter: getSelectedCenter(state),\n        isLowesCenter: getIsLowesCenter(state),\n        canImpersonate: canImpersonate(state),\n        canViewCrossellin: canViewCrosselling(state),\n        LowesCenterId: getLowesCenterId(),\n        name: getName(state),\n        canRouteOfferStatusHistory: canOffer(state),\n        canRouteConfiguration: true,\n        isMktoolsCenter: getIsMkToolsCenter(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        showBanner: showBannerOldVersion(state),\n        show: showingNewVersionModal(state),\n        isMallAdmin: getIsMallAdmin(state),\n        isUserMallAuthorized: getUserAuthorization(state),\n        isCampaignAdmin: getIsCampaignsPilotUser(state),\n        isMktoolsAdmin: getIsMktoolsAdmin(state),\n        hasPreOrder: canViewPreorder(state),\n        canRouteTransfers: getIsMkToolsCenter(state) && getUserType(state) === 'ADMIN'\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onShowUpLogin: () => {\n            dispatch(ui.showLoginModal())\n        },\n        onShowUpCart: () => {\n            dispatch(ui.showCartModal())\n        },\n        onShowUpImpersonate: () => {\n            dispatch(ui.showImpersonateModal())\n        },\n        onShowUpProfile: () => {\n            dispatch(ui.showProfileModal())\n        },\n        onToggleCart: active => {\n            dispatch(ui.toggleCart(active))\n        },\n        onToggleMenu: active => {\n            dispatch(ui.toggleMenu(active))\n        },\n        onTogglePersonalData: active => {\n            dispatch(ui.showPersonalData(active))\n        },\n        onToggleProfile: active => {\n            dispatch(ui.toggleProfile(active))\n        },\n        onToggleImpersonate: active => {\n            dispatch(ui.toggleImpersonate(active))\n        },\n        onLogout: () => {\n            dispatch(logout())\n        },\n        fetchCart: centerId => {\n            dispatch(fetchCart(centerId))\n        },\n    }\n}\nconst IconButtonsContainer = withMsal(\n  connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(IconButtons))\n\nexport default IconButtonsContainer\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\n\nimport { showLanguageSelector, getAvailableLands, getLanguage } from '../../store/ui/reducers'\nimport * as ui from '../../store/ui/actions'\nimport logo from '../../assets/img/e.cosentino.svg'\nimport Cookies from 'js-cookie'\nimport { push } from 'react-router-redux'\nimport chevronDown from '../../assets/img/icons/chevron-down.svg'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        showLanguageSelector: showLanguageSelector(state),\n        markets: getAvailableLands(state),\n        localeSelected: getLanguage(state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        onClose: () => {\n            dispatch(ui.closeLanguageModal())\n        },\n        onShowSelector: seg => {\n            dispatch(ui.showLanguageModal())\n        },\n        push: url => {\n            dispatch(push(url))\n        },\n        setLocale: locale => {\n            dispatch(ui.setLanguage(locale))\n        }\n    }\n}\n\nclass LanguageSelector extends React.Component {\n\n    changeLocale = locale => {\n        const {push, setLocale} = this.props\n        Cookies.set('defaultLanguage', locale)\n\n        let url = locale === 'en-US' ? '' : ('/' + locale)\n        if (locale === 'en-US') url += '/'\n        setLocale(locale)\n        push(url)\n        this.props.onClose()\n    }\n\n    shouldComponentUpdate(nextProps, nextState) {\n        if (this.props.location !== nextProps.localeSelected) {\n            return true\n        }\n    }\n\n    render() {\n        const code = this.props.intl.messages.landCode\n        const selectedMarket = this.props.markets.find(option => this.props.localeSelected === option.localecode)\n        return (\n            <div>\n                <div onClick={this.props.onShowSelector} className=\"selected-language\" key={this.props.key}>\n                    <span className=\"d-lg-inline\">\n                        <React.Fragment>\n                            <strong style={{ textTransform: \"uppercase\" }}>{selectedMarket.localecode.split(\"-\")[0]} ({selectedMarket.code})</strong>\n                            <img alt=\"\" src={chevronDown} />\n                        </React.Fragment>\n                        \n                    </span>\n                </div>\n                <div className={'market-selector text-center ' + (this.props.showLanguageSelector ? 'open' : '')}>\n                    <div className=\"container-fluid bg-gray-lighter\">\n                        <div className=\"row\">\n                            <div className=\"col-sm-8 col-md-6 col-lg-4 col-centered\">\n                                <header className=\"logo-cosentino-lan text-uppercase\">\n                                    <img src={logo} alt=\"\"/>\n                                    <br/>\n                                    <Translation id=\"select_your_language\" defaultMessage=\"Select your language\"/>\n                                </header>\n                            </div>\n                        </div>\n                    </div>\n\n                    <div className=\"container-fluid bg-gray-light text-center p-2 mb-1\">\n                        <div className=\"row\">\n                            <div className=\"col-sm-10 col-centered market-selector-info\">\n                                <span className={`flag-icon flag-icon-${code} mx-1`}/>\n                                <b>\n                                    <Translation id=\"localeName\" defaultMessage=\"English (United States)\"/>\n                                </b>\n                            </div>\n                        </div>\n                    </div>\n\n                    <div className=\"container country-list\">\n                        <div className=\"row\">\n                            <div className=\"col-md-11 col-lg-10 col-centered\">\n                                <ul className=\"continentes\">\n                                    <li className=\"selected\">\n                                        <ul className=\"row\">\n                                            {this.props.markets.map(land => {\n                                                return (\n                                                    <li className=\"col-sm-3\" key={land.localecode}>\n                                                        <a\n                                                            href=\"javascript:void(0)\"\n                                                            onClick={() => this.changeLocale(land.localecode)}\n                                                            className=\"market-link__pais\"\n                                                        >\n                                                            <span className={`flag-icon flag-icon-${land.code} mx-1`}/>\n                                                            {land.name}\n                                                        </a>\n                                                    </li>\n                                                )\n                                            })}\n                                        </ul>\n                                    </li>\n                                </ul>\n                            </div>\n                        </div>\n                    </div>\n\n                    <button onClick={this.props.onClose} className=\"btn btn-cerrar\"\n                            data-role=\"market-selector-switcher\">\n                        Cerrar\n                    </button>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(LanguageSelector)\n)\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport Translation from './Translation'\nimport Select from 'react-select'\nimport { getShippingAddressFilteredToSelectByCenter, isLoadingShippingAddress } from '../../store/shipping-addresses/reducers'\nimport { injectIntl } from 'react-intl'\nimport Button from './Button'\nimport { changeEndiShippingAddress } from '../../store/shipping-addresses/actions'\nimport { logout } from '../../store/login/actions'\nimport Spinner from './Spinner'\n\nconst mapStateToProps = state => {\n    return {\n        shippingAddressesFilteredByCenter: getShippingAddressFilteredToSelectByCenter(state),\n        isLoading: isLoadingShippingAddress(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        changeShippingAddress: shippingAddressEcosentinoKey => {\n            dispatch(changeEndiShippingAddress(shippingAddressEcosentinoKey))\n        },\n        logout: () => dispatch(logout())\n    }\n}\nclass SelectShippingAddress extends React.Component {\n    state = {\n        shippingAddressEcosentinoKey: null\n    }\n    changeShippingAddress(shippingAddressEcosentinoKey) {\n        this.setState({ shippingAddressEcosentinoKey: shippingAddressEcosentinoKey })\n    }\n    render() {\n        return (\n            <div className={'remember-select-center card h-25 p-4'}>\n                <h3>\n                    <Translation\n                        id=\"please_select_your_shipping_address_to_continue_with_your_reservation\"\n                        defaultMessage=\"Please select your shipping address to continue with your reservation\"\n                    />\n                </h3>\n                {this.props.isLoading ? (\n                    <div className=\"my-4\">\n                        <Spinner isLoading={this.props.isLoading} relative />\n                    </div>\n                ) : this.props.shippingAddressesFilteredByCenter.length ? (\n                    <Select\n                        className=\"form-control\"\n                        placeholder={`${this.props.intl.formatMessage({ id: 'select_shipping_address' })}...`}\n                        value={this.state.shippingAddressEcosentinoKey}\n                        onChange={e => {\n                            e && this.changeShippingAddress(e.value)\n                        }}\n                        options={this.props.shippingAddressesFilteredByCenter}\n                        clearable={false}\n                    />\n                ) : (\n                    <div style={{ fontSize: '1rem' }}>\n                        <p style={{ fontSize: '1.2em' }}>\n                            <Translation\n                                id={'your_shipping_address_is_not_valid_please_contact_your_cosentino_admin'}\n                                defaultMessage={'Your shipping address is not valid. Please contact your Cosentino admin'}\n                            />\n                        </p>\n                        <p style={{ fontSize: '1em' }}>\n                            <Translation id={'please_change_center'} defaultMessage={'Please change center'} />\n                        </p>\n                    </div>\n                )}\n                {!this.props.isLoading && (\n                    <div className=\"d-flex h-100 justify-content-end align-items-end pt-2\">\n                        {this.props.shippingAddressesFilteredByCenter.length ? (\n                            <Button disabled={!this.state.shippingAddressEcosentinoKey} onClick={() => this.props.changeShippingAddress(this.state.shippingAddressEcosentinoKey)}>\n                                <i className=\"fa fa-check\" /> <Translation id=\"accept\" />\n                            </Button>\n                        ) : (\n                            <Button onClick={() => this.props.logout()}>\n                                <i className=\"fa fa-times\" /> <Translation id=\"logout\" />\n                            </Button>\n                        )}\n                    </div>\n                )}\n            </div>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(SelectShippingAddress)\n)\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\nimport { getIsIkeaCenter } from '../../store/centers/reducers'\nimport SelectShippingAddress from './SelectShippingAddress'\n\nconst mapStateToProps = state => {\n    return { userPreferences: getProfileConfiguration(state), isIkeaCenter: getIsIkeaCenter(state) }\n}\nclass AssignCenterInfoModal extends React.Component {\n    render() {\n        return (\n            <div className=\"global__assign_center_info_modal\" data-cy=\"global__assign_center_info_modal\">\n                <div\n                    className=\"full-overlay\"\n                    style={{ display: this.props.show ? 'block' : 'none', zIndex: 200, background: 'rgba(77,77,77, 0.8)', top: '40px' }}\n                    onClick={!this.props.isIkeaCenter && this.props.onClose}\n                >\n                    <div className=\"container\">\n                        <div className=\"row h-100\">\n                            <div className=\"col-12 h-100 d-flex justify-content-center mt-5\">\n                                {this.props.showSelectShippingAddress && <SelectShippingAddress />}\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default connect(\n    mapStateToProps,\n    null\n)(AssignCenterInfoModal)\n","import React from 'react'\r\n\r\nimport PropTypes from 'prop-types'\r\nimport { confirmable } from 'react-confirm'\r\nimport Button from './Button'\r\n\r\nclass ConfirmDialogIkeaCenter extends React.Component {\r\n    constructor(props) {\r\n        super(props)\r\n        this.state = { employeeId: this.props.options.employeeId }\r\n        this.form = React.createRef()\r\n    }\r\n\r\n    render() {\r\n        let { show, proceed, cancel, confirmation, options } = this.props\r\n        return (\r\n            <div>\r\n                <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} />\r\n                <div id=\"confirm-container\" className=\"confirm\" style={{ display: show ? 'block' : 'none' }}>\r\n                    <div className=\"container-fluid\">\r\n                        <div className=\"row\">\r\n                            <div className=\"col-12 container\">\r\n                                <header className=\"container-fluid\">\r\n                                    <div className=\"row\">\r\n                                        <div className=\"col-12\">\r\n                                            <div>\r\n                                                <h2>{confirmation}</h2>\r\n                                                <div className=\"row\">\r\n                                                    <div className=\"col-12\">\r\n                                                        <div className=\"form-group employee-id\">\r\n                                                            <form\r\n                                                                ref={this.form}\r\n                                                                onSubmit={e => {\r\n                                                                    e.preventDefault()\r\n                                                                    if (\r\n                                                                        (!HTMLFormElement.prototype.reportValidity && /[0-9]{8}/.test(this.state.employeeId)) ||\r\n                                                                        this.form.current.reportValidity()\r\n                                                                    )\r\n                                                                        options.setEmployeeId(this.state.employeeId).then(() => proceed('same as cancel'))\r\n                                                                }}\r\n                                                            >\r\n                                                                <label htmlFor=\"employee-id\">\r\n                                                                    <span>{this.props.strEmployeeId}</span>:\r\n                                                                </label>{' '}\r\n                                                                <input\r\n                                                                    data-cy=\"ikea__input_employeeId-center_select\"\r\n                                                                    pattern=\"[0-9]{8}\"\r\n                                                                    title=\"8 digits (12345678)\"\r\n                                                                    placeholder=\"12345678\"\r\n                                                                    required\r\n                                                                    onChange={e =>\r\n                                                                        this.setState({\r\n                                                                            employeeId: e.target.value\r\n                                                                        })\r\n                                                                    }\r\n                                                                    defaultValue={options.employeeId}\r\n                                                                    name=\"employee-id\"\r\n                                                                    type=\"text\"\r\n                                                                />\r\n                                                            </form>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div className=\"row\">\r\n                                                    <div className=\"col-6 col-md-3 offset-md-3\">\r\n                                                        <Button onClick={() => cancel('arguments will be passed to the callback')} datacy=\"confirm_dialog__cancel\">\r\n                                                            CANCEL\r\n                                                        </Button>\r\n                                                    </div>\r\n                                                    <div className=\"col-6 col-md-3\">\r\n                                                        <Button\r\n                                                            disabled={!(this.state.employeeId && this.state.employeeId !== '')}\r\n                                                            onClick={() => {\r\n                                                                if (\r\n                                                                    (!HTMLFormElement.prototype.reportValidity && /[0-9]{8}/.test(this.state.employeeId)) ||\r\n                                                                    this.form.current.reportValidity()\r\n                                                                )\r\n                                                                    options.setEmployeeId(this.state.employeeId).then(() => proceed('same as cancel'))\r\n                                                            }}\r\n                                                            datacy=\"confirm_dialog__ok\"\r\n                                                        >\r\n                                                            OK\r\n                                                        </Button>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </header>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\nConfirmDialogIkeaCenter.propTypes = {\r\n    show: PropTypes.bool, // from confirmable. indicates if theyarn start dialog is shown or not.\r\n    proceed: PropTypes.func, // from confirmable. call to close the dialog with promise resolved.\r\n    cancel: PropTypes.func, // from confirmable. call to close the dialog with promise rejected.\r\n    dismiss: PropTypes.func, // from confirmable. call to only close the dialog.\r\n    confirmation: PropTypes.string, // arguments of your confirm function\r\n    options: PropTypes.object // arguments of your confirm function\r\n}\r\n\r\n// confirmable HOC pass props `show`, `dismiss`, `cancel` and `proceed` to your component.\r\nexport default confirmable(ConfirmDialogIkeaCenter)\r\n","import { createConfirmation } from 'react-confirm'\nimport ConfirmDialogIkeaCenter from './ConfirmDialogIkeaCenter'\n\n// create confirm function\nconst confirm = createConfirmation(ConfirmDialogIkeaCenter)\n\nexport default function(confirmation, strEmployeeId, options = {}) {\n    return confirm({ confirmation, strEmployeeId, options })\n}\n","import React from 'react'\r\n\r\nimport Select from 'react-select'\r\nimport iconLocation from '../../assets/img/icons/location.svg'\r\nimport { injectIntl } from 'react-intl'\r\nimport confirmIkeaCenter from '../global/confirmIkeaCenter'\r\n\r\nconst confirmChangeCenter = (store, onChangeIkeaShippingAddress, employeeId, setEmployeeId, intl) => {\r\n    confirmIkeaCenter(intl.formatMessage({ id: 'CHANGE_STORE_CONFIRM' }), intl.formatMessage({ id: 'employee_id' }), { employeeId, setEmployeeId }).then(\r\n        confirm => {\r\n            onChangeIkeaShippingAddress(store, intl)\r\n        },\r\n        cancel => {}\r\n    )\r\n}\r\n\r\nconst IkeaShippingAddress = ({ shippingAddress, intl, onChangeIkeaShippingAddress, selectedShippingAddress, keepHere, employeeId, setEmployeeId }) => {\r\n    if (!shippingAddress || shippingAddress.length === 0) return null\r\n\r\n    let options = shippingAddress\r\n        ? shippingAddress.map(shippingAddress => {\r\n              return { value: shippingAddress.shippingAddressId, label: shippingAddress.customerName }\r\n          })\r\n        : null\r\n\r\n    let input = (\r\n        <React.Fragment>\r\n        <Select\r\n            onChange={selectOption => {\r\n                if (selectOption !== null) confirmChangeCenter(selectOption.value, onChangeIkeaShippingAddress, employeeId, setEmployeeId, intl)\r\n            }}\r\n            value={selectedShippingAddress}\r\n            options={options}\r\n            clearable={false}\r\n            className={'Select_center center' + selectedShippingAddress}\r\n        />       \r\n        </React.Fragment>\r\n    )\r\n\r\n    return (\r\n        <div className=\"select-center\">\r\n            {input}\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default injectIntl(IkeaShippingAddress)\r\n","import { connect } from 'react-redux'\r\nimport { canViewCatalog } from '../../store/centers/reducers'\r\nimport IkeaShippingAddress from './IkeaShippingAddress'\r\nimport { getShippingAddresses, getSelectedShippingAddressForIkea } from '../../store/shipping-addresses/reducers'\r\nimport { changeIkeaShippingAddress } from '../../store/shipping-addresses/actions'\r\nimport { getEmployeeId } from '../../store/big-account/reducers'\r\nimport { dispatchPushURL } from '../../store/ui/actions'\r\n\r\nconst mapStateToProps = state => {\r\n    return {\r\n        shippingAddress: getShippingAddresses(state),\r\n        canViewCatalog: canViewCatalog(state),\r\n        key: getSelectedShippingAddressForIkea(state),\r\n        selectedShippingAddress: getSelectedShippingAddressForIkea(state),\r\n        employeeId: getEmployeeId(state)\r\n    }\r\n}\r\nconst mapDispatchToProps = dispatch => {\r\n    return {\r\n        onChangeIkeaShippingAddress: (shippingAddressId, intl) => {\r\n            dispatch(changeIkeaShippingAddress(shippingAddressId))\r\n            dispatch({ type: 'REMEMBERED_CENTER' })\r\n            dispatch(dispatchPushURL(intl.formatMessage({ id: 'ROUTE_CATALOG' }).replace(':outlet?', '')))\r\n        },\r\n        rememberedCenter: () => {\r\n            dispatch({ type: 'REMEMBERED_CENTER' })\r\n        },\r\n        setEmployeeId: employeeId => Promise.resolve(dispatch({ type: 'SET_EMPLOYEE_ID', employeeId }))\r\n    }\r\n}\r\n\r\nconst IkeaShippingAddressContainer = connect(\r\n    mapStateToProps,\r\n    mapDispatchToProps\r\n)(IkeaShippingAddress)\r\n\r\nexport default IkeaShippingAddressContainer\r\n","import { getEmailUsedToLogin, getDataFromSalesforce } from '../../store/login/reducers';\nimport React from 'react'\nimport Translation from '../global/Translation'\nimport logo from '../../assets/img/icons/ecosentino.svg'\nimport CentersContainer from '../centers/CentersContainer'\nimport { injectIntl } from 'react-intl'\n\nimport { connect } from 'react-redux'\nimport LanguageSelector from '../language-selector/LanguageSelector'\nimport { getIsLogged, getUserName, getName, getUserType } from '../../store/login/reducers'\nimport AssignCenterInfoModal from '../global/AssignCenterInfoModal'\n\nimport { getIsRemembered, getAnimateChangeCenter, getCenters, getIsIkeaCenter, getIsLowesCenter, getIsEndiCenter } from '../../store/centers/reducers'\nimport IkeaShippingAddressContainer from '../centers/IkeaShippingAddressContainer'\nimport { getIsShippingAddressRemembered, getShippingAddresses, getShippingAddressFilteredToSelectByCenter, isLoadingShippingAddress } from '../../store/shipping-addresses/reducers'\nimport { getEmployeeId } from '../../store/big-account/reducers'\nimport { dispatchPushURL } from '../../store/ui/actions'\nimport LocalizedLink from '../global/LocalizedLink'\n\nconst mapStateToProps = state => {\n    return {\n        username: getUserName(state),\n        name: getName(state),\n        email: getEmailUsedToLogin(state),\n        userType: getUserType(state),\n        isLogged: getIsLogged(state),\n        isRemembered: getIsRemembered(state),\n        isShippingAddressRemembered: getIsShippingAddressRemembered(state),\n        animateChangeCenter: getAnimateChangeCenter(state),\n        centers: getCenters(state),\n        shippingAddress: getShippingAddresses(state),\n        isIkeaCenter: getIsIkeaCenter(state),\n        employeeId: getEmployeeId(state),\n        isLowesCenter: getIsLowesCenter(state),\n        isEndiCenter: getIsEndiCenter(state),\n        sippingAddressFilteredToSelectByCenter: getShippingAddressFilteredToSelectByCenter(state),\n        isShippingAddressLoading: isLoadingShippingAddress(state),\n        dataFromSalesforce: getDataFromSalesforce(state),\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onSubmit: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        rememberedCenter: () => {\n            dispatch({ type: 'REMEMBERED_CENTER' })\n        },\n        toggleShowIkeaModalEmployeeId: open => {\n            dispatch({ type: 'TOGGLE_SHOW_IKEA_MODAL_EMPLOYEE_ID', open: open })\n        },   push: url => {\n            dispatch(dispatchPushURL(url))\n        },\n    }\n}\nclass TopRibbonV2 extends React.Component {\n    \n    getWeURLAccessByEnvironment = () => {\n        return process.env.REACT_APP_WE_ACCESS_URL\n    }\n\n    render() {\n        const { username, name, email, isRemembered, isIkeaCenter, employeeId, isLowesCenter, sippingAddressFilteredToSelectByCenter } = this.props\n        const showRememberSelectCenter = !isRemembered && isIkeaCenter\n        const showRememberSelectShippingAddress =\n            this.props.isLogged &&\n            !this.props.isShippingAddressRemembered &&\n            this.props.isEndiCenter &&\n            this.props.sippingAddressFilteredToSelectByCenter.length !== 1 &&\n            !this.props.isShippingAddressLoading\n\n        return (\n            <div id=\"top-ribbon-v2\" className=\"top-ribbon-v2 d-md-block\">\n                {sippingAddressFilteredToSelectByCenter && (\n                    <AssignCenterInfoModal\n                            show={showRememberSelectCenter || showRememberSelectShippingAddress}\n                            showSelectShippingAddress={showRememberSelectShippingAddress}\n                            onClose={() => {\n                                this.props.rememberedCenter()\n                        }}\n                    />\n                )}\n                <div className=\"container-fluid\">\n                    <div className={`row no-gutters align-items-center `} style={{ justifyContent: 'space-between' }}>\n                        <div className=\" d-lg-block d-none\">\n                            {isIkeaCenter ? (\n                                <div style={{display: 'flex', columnGap: '16px'}}>\n                                    {this.props.isLogged && (\n                                        <span style={{fontSize:'14px'}}>\n                                            {email ? email : username}\n                                        </span>\n                                    )}\n                                    <span id=\"username\" style={{width:'fit-content'}}>\n                                        <Translation id=\"employee_id\" defaultMessage=\"Employee Id\" />: {employeeId}\n                                    </span>\n                                    <span style={{ cursor: 'pointer' }} onClick={() => this.props.toggleShowIkeaModalEmployeeId()}>\n                                        <i className=\"fal fa-edit\" />\n                                    </span>\n                                </div>\n                            ) : isLowesCenter ? (\n                                <React.Fragment>\n                                    {/* <Translation id=\"lowes_store\" defaultMessage=\"Lowes Store: \" /> */}\n                                    <span> {name}</span>\n                                    {this.props.isLogged && (\n                                        <span style={{fontSize:'14px'}}>\n                                            {email ? email : username}\n                                        </span>\n                                    )}\n                                </React.Fragment>\n                            ) : (username &&\n                                this.props.dataFromSalesforce &&\n                                this.props.dataFromSalesforce.is_user_active_on_sf) ? (\n                                    <span id=\"\">\n                                        <a className=\"go-to-cosentinowe\" href={this.getWeURLAccessByEnvironment()} data-cy={'go_back'}>\n                                            <span className=\"label\">\n                                                <Translation id=\"go_to_cosentino_we\" defaultMessage=\"Employee Id\" />{' | '}\n                                            </span>\n                                        </a>\n                                        {this.props.isLogged && (\n                                            <span style={{fontSize:'14px'}}>\n                                                {email ? email : username}\n                                            </span>\n                                        )}\n                                    </span>\n                                ) : (this.props.isLogged && (\n                                    <span style={{fontSize:'14px'}}>\n                                        {email ? email : username}\n                                    </span>\n                                )\n                            )}\n                        </div>\n\n                        <div id=\"logo\" className=\"logo-cosentino\" style={{ textAlign: 'center' }}>\n                            {/* //REVIEW: ¿Es necesario con el redirect que hay en el home.js? */}\n                            {this.props.center === 7777 ? (\n                                this.props.userType === 'ADMIN' ? (\n                                    <LocalizedLink routeId=\"ROUTE_CATALOG_LOWES_ADMIN\" params={{ filter: 'home' }}>\n                                        <img alt=\"eCosentino-logo\" src={logo} />\n                                    </LocalizedLink>\n                                ) : (\n                                    <LocalizedLink routeId=\"ROUTE_CATALOG_LOWES\" params={{ filter: 'home' }}>\n                                        <img alt=\"eCosentino-logo\" src={logo} />\n                                    </LocalizedLink>\n                                )\n                            ) : (\n                                <LocalizedLink routeId=\"ROUTE_HOME\">\n                                    <img alt=\"eCosentino-logo\" src={logo} />\n                                </LocalizedLink>\n                            )}\n                        </div>\n\n                        <div style={{display:'flex', columnGap: '24px', alignItems: 'center'}}>\n                            <div className={`center-selector ${this.props.isIkeaCenter ? 'ikea' : ''}`}>\n                                {this.props.isIkeaCenter ? <IkeaShippingAddressContainer /> : <CentersContainer />}\n                            </div>\n                            <div className=\"language-selector-topRibbon\">\n                                <LanguageSelector />\n                            </div>\n                        </div>\n\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(TopRibbonV2)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport { injectIntl } from 'react-intl'\n\nimport { withRouter } from 'react-router-dom'\n\nclass LowesAdminViewSelector extends React.Component {\n    render() {\n        const { match } = this.props\n        if (this.props.small) {\n            return (\n                <div className=\"lowes-container\">\n                    <LocalizedLink className={match.params.filter === 'pog' && !match.params.open ? 'active' : ''} routeId=\"ROUTE_CATALOG_LOWES_ADMIN\" params={{ filter: 'pog' }}>\n                        <div className=\"lowes-button\">\n                            <span className=\"lowes-title\">\n                                <i className=\"fas fa-th-large\">\n                                    {' '}\n                                    <Translation id=\"pog\" defaultMessage=\"POG\" />\n                                </i>\n                            </span>\n                        </div>\n                    </LocalizedLink>\n                    <LocalizedLink\n                        className={match.params.filter === 'stores' && !match.params.open ? 'active' : ''}\n                        routeId=\"ROUTE_CATALOG_LOWES_ADMIN\"\n                        params={{ filter: 'stores' }}\n                    >\n                        <div className=\"lowes-button\">\n                            <span className=\"lowes-title\">\n                                <i className=\"fas fa-user\">\n                                    {' '}\n                                    <Translation id=\"stores\" defaultMessage=\"Stores\" />\n                                </i>\n                            </span>\n                        </div>\n                    </LocalizedLink>\n                    <LocalizedLink\n                        className={match.params.filter === 'reports' && !match.params.open ? 'active' : ''}\n                        routeId=\"ROUTE_CATALOG_LOWES_ADMIN\"\n                        params={{ filter: 'reports' }}\n                    >\n                        <div className=\"lowes-button\">\n                            <span className=\"lowes-title\">\n                                <i className=\"fas fa-list\">\n                                    {' '}\n                                    <Translation id=\"reports\" defaultMessage=\"Reports\" />\n                                </i>\n                            </span>\n                        </div>\n                    </LocalizedLink>\n                </div>\n            )\n        }\n        return (\n            <div className=\"container\">\n                <div className=\"lowes-container\" style={{ height: 'calc(100vh - 346px)' }}>\n                    <div className=\"lowes-col\">\n                        <LocalizedLink\n                            className={match.params.filter === 'pog' && !match.params.open ? 'active' : ''}\n                            routeId=\"ROUTE_CATALOG_LOWES_ADMIN\"\n                            params={{ filter: 'pog' }}\n                        >\n                            <div className=\"lowes-button\">\n                                <i className=\"fas fa-th-large lowes-icon fa-5x\" />\n                                <span className=\"lowes-title\">\n                                    {' '}\n                                    <Translation id=\"pog\" defaultMessage=\"POG\" />\n                                </span>\n                            </div>\n                        </LocalizedLink>\n                    </div>\n                    <div className=\"lowes-col\">\n                        <LocalizedLink\n                            className={match.params.filter === 'stores' && !match.params.open ? 'active' : ''}\n                            routeId=\"ROUTE_CATALOG_LOWES_ADMIN\"\n                            params={{ filter: 'stores' }}\n                        >\n                            <div className=\"lowes-button\">\n                                <i className=\"fas fa-user lowes-icon fa-5x\" />\n                                <span className=\"lowes-title\">\n                                    {' '}\n                                    <Translation id=\"stores\" defaultMessage=\"Stores\" />\n                                </span>\n                            </div>\n                        </LocalizedLink>\n                    </div>\n                    <div className=\"lowes-col\">\n                        <LocalizedLink\n                            className={match.params.filter === 'reports' && !match.params.open ? 'active' : ''}\n                            routeId=\"ROUTE_CATALOG_LOWES_ADMIN\"\n                            params={{ filter: 'reports' }}\n                        >\n                            <div className=\"lowes-button\">\n                                <i className=\"fas fa-list lowes-icon fa-5x\" />\n                                <span className=\"lowes-title\">\n                                    {' '}\n                                    <Translation id=\"reports\" defaultMessage=\"Reports\" />\n                                </span>\n                            </div>\n                        </LocalizedLink>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(withRouter(LowesAdminViewSelector))\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport { injectIntl } from 'react-intl'\n\nimport { withRouter } from 'react-router-dom'\n\nclass LowesViewSelector extends React.Component {\n    render() {\n        const { match, small } = this.props\n        if (small) {\n            return (\n                <div className=\"lowes-container\">\n                    {/*<LocalizedLink*/}\n                    {/*    className={match.params.filter === 'brochures' && !match.params.open ? 'active' : ''}*/}\n                    {/*    routeId=\"ROUTE_CATALOG_LOWES\"*/}\n                    {/*    params={{ filter: 'brochures' }}*/}\n                    {/*>*/}\n                    {/*    <div className=\"lowes-button\">*/}\n                    {/*        <span className=\"lowes-title\">*/}\n                    {/*            <i className=\"fas fa-newspaper\">*/}\n                    {/*                {' '}*/}\n                    {/*                <Translation id=\"brochures\" defaultMessage=\"Brochures\" />*/}\n                    {/*            </i>*/}\n                    {/*        </span>*/}\n                    {/*    </div>*/}\n                    {/*</LocalizedLink>*/}\n                    <LocalizedLink\n                        className={match.params.filter === 'customer-samples' && !match.params.open ? 'active' : ''}\n                        routeId=\"ROUTE_CATALOG_LOWES\"\n                        params={{ filter: 'customer-samples' }}\n                    >\n                        <div className=\"lowes-button\">\n                            <span className=\"lowes-title\">\n                                <i className=\"fas fa-tags\">\n                                    {' '}\n                                    <Translation id=\"customer_samples\" defaultMessage=\"Customer Samples\" />{' '}\n                                </i>\n                            </span>\n                        </div>\n                    </LocalizedLink>\n                    <LocalizedLink\n                        className={match.params.filter === 'reports' && !match.params.open ? 'active' : ''}\n                        routeId=\"ROUTE_PROFILE\"\n                        params={{ filter: 'orders', open: '' }}\n                    >\n                        <div className=\"lowes-button\">\n                            <span className=\"lowes-title\">\n                                <i className=\"fas fa-chart-bar\">\n                                    {' '}\n                                    <Translation id=\"order_history\" defaultMessage=\"Order history\" />\n                                </i>\n                            </span>\n                        </div>\n                    </LocalizedLink>\n                </div>\n            )\n        } else {\n            return (\n                <div className=\"container\">\n                    {/* <div className=\"lowes-container-left\">\n                        <div className=\"lowes-step\">Step 1</div>\n                        <h2>\n                            <Translation id=\"what_would_you_like_to_do\" defaultMessage=\"What would you like to do?\" />\n                        </h2>\n                    </div> */}\n                    <div className=\"lowes-container\" style={{ height: 'calc(100vh - 346px)' }}>\n                        {/*<div className=\"lowes-col\">*/}\n                        {/*    <LocalizedLink*/}\n                        {/*        className={match.params.filter === 'brochures' && !match.params.open ? 'active' : ''}*/}\n                        {/*        routeId=\"ROUTE_CATALOG_LOWES\"*/}\n                        {/*        params={{ filter: 'brochures' }}*/}\n                        {/*    >*/}\n                        {/*        <div className=\"lowes-button\">*/}\n                        {/*            /!* <i className=\"fas fa-th-large fa-2x\" /> *!/*/}\n                        {/*            <span className=\"lowes-title\">*/}\n                        {/*                {' '}*/}\n                        {/*                <Translation id=\"brochures\" defaultMessage=\"Brochures\" />{' '}*/}\n                        {/*            </span>*/}\n                        {/*            <span className=\"lowes-subtitle\">*/}\n                        {/*                <Translation id=\"order_brochures\" defaultMessage=\"Order Brochures\" />*/}\n                        {/*            </span>*/}\n                        {/*        </div>*/}\n                        {/*    </LocalizedLink>*/}\n                        {/*</div>*/}\n                        <div className=\"lowes-col\">\n                            <LocalizedLink\n                                className={match.params.filter === 'customer-samples' && !match.params.open ? 'active' : ''}\n                                routeId=\"ROUTE_CATALOG_LOWES\"\n                                params={{ filter: 'customer-samples' }}\n                            >\n                                <div className=\"lowes-button\">\n                                    {/* <i className=\"fas fa-user fa-2x\" />{' '} */}\n                                    <span className=\"lowes-title\">\n                                        <Translation id=\"customer_samples\" defaultMessage=\"Customer Samples\" />{' '}\n                                    </span>\n                                    <span className=\"lowes-subtitle\">\n                                        <Translation id=\"selling_customer\" defaultMessage=\"Order 2x4 Silestone Customer Samples\" />\n                                    </span>\n                                </div>\n                            </LocalizedLink>\n                        </div>\n                    </div>\n                </div>\n            )\n        }\n    }\n}\n\nexport default injectIntl(withRouter(LowesViewSelector))\n","import React from 'react'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport ResponsiveMenuContainer from './ResponsiveMenuContainer'\nimport IconButtonsContainer from './IconButtonsContainer'\nimport logo from '../../assets/img/icons/ecosentino.svg'\nimport TopRibbonV2 from './TopRibbonV2'\nimport LoadingBar from 'react-redux-loading-bar'\nimport { injectIntl } from 'react-intl'\nimport IkeaModalEmployeeId from '../global/IkeaModalEmployeeId'\nimport LowesAdminViewSelector from '../catalog-lowes/LowesAdminViewSelector'\nimport LowesViewSelector from '../catalog-lowes/LowesViewSelector'\nimport { connect } from 'react-redux'\nimport { getIsShowBannerComments, getVirtualVisitURL } from '../../store/login/reducers'\nimport $ from 'jquery'\nimport { hasFeedback } from '../../store/login/actions'\nimport Toggle from 'react-toggle'\nimport { getHideAllBannerCatalog } from '../../store/ui/reducers'\nimport { withRouter } from 'react-router-dom'\nimport MenuContainer from './MenuContainer'\n\nconst mapStateToProps = state => {\n    return {\n        isShowBannerComments: getIsShowBannerComments(state),\n        URLVirtualVisit: getVirtualVisitURL(state),\n        isHideAllBannerCatalog: getHideAllBannerCatalog(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        hasBanner: () => dispatch(hasFeedback('BANNER_NEW_VERSION_EXPERIENCE'))\n    }\n}\n\nclass HeaderV2 extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            showBannerComments: false,\n        }\n        if (window.location.host === 'localhost:3000') this.entorno = 'local'\n        else if (window.location.href.indexOf('qas-') > -1) this.entorno = 'qas'\n        else if (window.location.href.indexOf('dev-') > -1) this.entorno = 'dev'\n        else if (window.location.href.indexOf('pre-') > -1) this.entorno = 'pre'\n\n        if (this.entorno) this.props.fetchInfoEnv()\n        this.props.fetchCenterPreferences()\n    }\n\n    componentDidMount() {\n        this.props.fetchUserLandings()\n        this.props.hasBanner()\n        this.showBannerComments()\n    }\n\n    showBannerComments(){\n        if(this.props.isShowBannerComments){\n            setTimeout(() => {\n                if(window.data_analytics){\n                    window.data_analytics.sendEvent(\"feedback_component\", \"view\", \"view\")\n                }\n                $('.banner-comments').show()\n            }, 15000)\n        }\n    }\n\n    render() {\n        const { infoDev } = this.props\n        const responsiveMenu = this.props.showMenu ? <ResponsiveMenuContainer /> : null\n\n        return (\n            <header id=\"header\" className=\"header-v2\">\n                {this.entorno && (\n                    <a href={process.env.REACT_APP_API_HOST + '/backoffice/env'} target=\"_blank\" rel=\"noopener noreferrer\">\n                        <div className={`identification_flag identification_flag--${this.entorno}`}>\n                            <span>\n                                {this.entorno}\n                                {process.env.REACT_APP_BRANCH && (\n                                    <React.Fragment>\n                                        {' '}\n                                        <span style={{ fontSize: '10px' }}>{process.env.REACT_APP_BRANCH}</span>\n                                    </React.Fragment>\n                                )}\n                                <br />\n                                {infoDev && (\n                                    <div style={{ fontSize: '12px' }}>\n                                        <span>back: {infoDev.branch ? infoDev.branch : '????'}</span>\n                                        <br />\n                                        <span>MF: {infoDev.mf}</span> || <span>OD: {infoDev.odata}</span> || <span>CH: {infoDev.checkout}</span>\n                                    </div>\n                                )}\n                            </span>\n                            <Toggle\n                                defaultChecked={this.props.translateMode}\n                                onChange={() => {\n                                    this.props.toggleTranslateMode()\n                                }}\n                            />\n                        </div>\n                    </a>\n                )}\n                <TopRibbonV2 showMenu={this.props.showMenu}/>\n\n                <div id=\"main-header\">\n                    <div className=\"container-fluid\" >\n                        <div className=\"no-gutters align-items-center logo-container\">\n                            <div id=\"logo\" className=\"col-xl-2 col-4 logo-cosentino d-xl-none d-block\">\n                                        {/* //REVIEW: ¿Es necesario con el redirect que hay en el home.js? */}\n                                        {this.props.center === 7777 ? (\n                                            this.props.userType === 'ADMIN' ? (\n                                                <LocalizedLink routeId=\"ROUTE_CATALOG_LOWES_ADMIN\" params={{ filter: 'home' }}>\n                                                    <img alt=\"\" src={logo} />\n                                                </LocalizedLink>\n                                            ) : (\n                                                <LocalizedLink routeId=\"ROUTE_CATALOG_LOWES\" params={{ filter: 'home' }}>\n                                                    <img alt=\"\" src={logo} />\n                                                </LocalizedLink>\n                                            )\n                                        ) : (\n                                            <LocalizedLink routeId=\"ROUTE_HOME\">\n                                                <img alt=\"\" src={logo} />\n                                            </LocalizedLink>\n                                        )}\n                            </div>\n                            {this.props.maintenanceMode ? null : (\n                                <React.Fragment>                                    \n                                    <nav id=\"main-menu\">\n                                        {this.props.isLowesCenter ? (\n                                            this.props.isLowesAdmin ? (\n                                                <LowesAdminViewSelector small />\n                                            ) : (\n                                                <LowesViewSelector small />\n                                            )\n                                        ) : (\n                                            // <div>\n                                            //     <img alt=\"\" className=\"icon\" src={iconList} style={{ marginRight: '5px' }} />\n                                            //     <span>Categorias</span>\n                                            // </div>\n                                                <MenuContainer comp = {true}/> \n                                        )}\n                                    </nav>                                    \n                             \n                                    <div className={`btns-header`}>\n                                        <IconButtonsContainer />\n                                    </div>\n                                </React.Fragment>\n                            )}\n                        </div>\n                    </div>\n                    <LoadingBar className=\"loading-bar\" showFastActions />\n                </div>\n                {responsiveMenu}\n                <IkeaModalEmployeeId />\n            </header>\n        )\n    }\n}\n\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(HeaderV2)\n    )\n)\n","import { connect } from 'react-redux'\nimport { showMenuSelector, getTranslateMode } from '../../store/ui/reducers'\nimport { fetchCenterPreferences } from '../../store/centers/actions'\nimport { canViewCatalog, getSelectedCenter, getIsLowesCenter, getLowesCenterId } from '../../store/centers/reducers'\nimport { getUserType, getIsLowesAdmin } from '../../store/login/reducers'\nimport { fetchInfoEnv } from '../../store/infoEnv/actions'\nimport { getInfoEnv } from '../../store/infoEnv/reducers'\nimport { getMaintenanceMode } from '../../store/maintenance-mode/reducers'\nimport { toggleTranslateMode } from '../../store/ui/actions'\nimport { fetchUserLandings } from '../../store/landing/actions'\nimport HeaderV2 from \"./HeaderV2\";\n\nconst mapStateToProps = state => {\n    return {\n        showMenu: showMenuSelector(state),\n        canViewCatalog: canViewCatalog(state),\n        center: getSelectedCenter(state),\n        userType: getUserType(state),\n        infoDev: getInfoEnv(state),\n        maintenanceMode: getMaintenanceMode(state),\n        isLowesCenter: getIsLowesCenter(state),\n        isLowesAdmin: getIsLowesAdmin(state),\n        translateMode: getTranslateMode(state),\n        LowesCenterId: getLowesCenterId()\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchCenterPreferences: () => {\n            dispatch(fetchCenterPreferences())\n        },\n        fetchUserLandings: () => {\n            dispatch(fetchUserLandings())\n        },\n        fetchInfoEnv: () => dispatch(fetchInfoEnv()),\n        toggleTranslateMode: () => dispatch(toggleTranslateMode())\n    }\n}\n\nconst HeaderContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(HeaderV2)\n\nexport default HeaderContainer\n","import * as api from '../api'\n\nexport const fetchInfoEnv = () => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_INFO_DEV_REQUEST'\n    })\n    return api\n        .fetchInfoEnv()\n        .then(response => {\n            dispatch({ type: 'FETCH_INFO_DEV_SUCCESS', infoEnv: response.data })\n        })\n        .catch(() => {\n            dispatch({ type: 'FETCH_INFO_DEV_FAILURE', extra: 'do nothing' })\n        })\n}\n","import { connect } from 'react-redux'\nimport { getLastVisitedProduct } from '../../store/products/reducers'\nimport { getIsLogged } from '../../store/login/reducers'\nimport Translation from \"../global/Translation\";\nimport React from \"react\";\nimport ProductsSlider from \"./ProductsSlider\";\nimport { fetchLastVisitedProducts } from \"../../store/products/actions\";\nimport {getSelectedCenter} from \"../../store/centers/reducers\";\n\nconst mapStateToProps = state => {\n    return {\n        products: getLastVisitedProduct(state),\n        hide: !getIsLogged(state),\n        title: <Translation id=\"recently_view_products\" defaultMessage=\"Recently view products\" />,\n        analyticsTag: 'recently_seen',\n        gtmLabel: 'ec_carrusel_recently_seen',\n        currentCenter: getSelectedCenter(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetch: () => {\n            return dispatch(fetchLastVisitedProducts())\n        }\n    }\n}\n\nconst RecentlyVisitedProductsContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ProductsSlider)\n\n\nexport default RecentlyVisitedProductsContainer\n","import React from 'react'\n\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { push } from 'react-router-redux'\nimport { getUserType, getSalesOrg, getIsLogged } from '../../store/login/reducers'\nimport { getSelectedCenter, hasPromoActivated } from '../../store/centers/reducers'\nimport { dispatchPushURL } from '../../store/ui/actions'\n\nconst mapStateToProps = state => {\n    return {\n        userType: getUserType(state),\n        center: getSelectedCenter(state),\n        salesOrg: getSalesOrg(state),\n        isLogged: getIsLogged(state),\n        isPromoActive: hasPromoActivated(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onSubmit: url => {\n            dispatch(dispatchPushURL(url))\n        }\n    }\n}\nconst DeveloperBar = ({ userType, center, salesOrg, isLogged, isPromoActive }) => {\n    let production = process.env.REACT_APP_API_HOST === 'https://apiepro.cosentino.com' ? true : false\n    return (\n        <div style={{ background: production ? 'red' : 'aquamarine', color: production ? 'white' : 'black', position: 'fixed', bottom: '0', width: '100%', zIndex: '1000' }}>\n            <div className=\"container\">\n                <div className=\"row align-items-center\">\n                    <div className=\"col-lg-12\" style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\n                        <span>API: {process.env.REACT_APP_API_HOST}</span>\n                        {isLogged && (\n                            <React.Fragment>\n                                <span>userType: {userType}</span>\n                                <span>center: {center}</span>\n                                <span>salesOrg: {salesOrg}</span>\n                                <span>promoActive: {isPromoActive ? 'yes' : 'no'}</span>\n                            </React.Fragment>\n                        )}\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(DeveloperBar)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport silestone from '../../assets/img/logos/brands/logo-silestone.svg'\nimport dekton from '../../assets/img/logos/brands/logo-dekton.svg'\nimport dktn from '../../assets/img/DKTN.svg'\nimport sensa from '../../assets/img/logos/brands/logo-sensa.svg'\nimport pinterest from '../../assets/img/icons/pinterest.svg'\nimport instagram from '../../assets/img/icons/instagram.svg'\nimport youtube from '../../assets/img/icons/youtube.svg'\nimport facebook from '../../assets/img/icons/facebook.svg'\nimport twitter from '../../assets/img/icons/twitter.svg'\nimport linkedin from '../../assets/img/icons/linkedin.svg'\nimport naturalStone from '../../assets/img/logos/brands/logo-natural-stone.svg'\nimport LocalizedLink from '../global/LocalizedLink'\nimport RecentlyVisitedProductsContainer from '../products/RecentlyVisitedProductsContainer'\nimport { withRouter } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport MenuContainer from '../header/MenuContainer'\nimport DeveloperBar from '../global/DeveloperBar'\nimport { getUsaCanadaSalesOrg } from '../../store/centers/reducers'\nimport { getUsaCaPrTermsAndConditionsByLang } from '../../helpers'\n\nclass FooterV2 extends React.Component {\n    render() {\n        const { salesOrg } = this.props\n\n        return (\n            <div>\n                {process.env.NODE_ENV !== 'production' && <DeveloperBar />}\n\n                {/* <Suggestions /> */}\n                {!this.props.location.pathname.includes(this.props.intl.formatMessage({ id: 'ROUTE_CHECKOUT' })) &&\n                    !window.location.href.includes('landing') &&\n                    !this.props.isOrderHistoryScreen &&\n                    !this.props.isShippingHistoryScreen && (\n                        <div className=\"recently-visited-products-container\">\n                            {<RecentlyVisitedProductsContainer sectionFlag=\"VR\" />}\n                        </div>\n                    )}\n                <footer className=\"footer footer-v2\">\n                    <div className=\"container-fluid\">\n                        <div className=\"row footer-links\">\n                            <div className=\"col-12 col-md-3\">\n                                <ul className=\"about-footer\">\n                                    <li>\n                                        <strong>\n                                            <Translation id=\"about_cosentino\" defaultMessage=\"About Cosentino\" />\n                                        </strong>\n                                    </li>\n                                    <p>\n                                        <Translation\n                                            id=\"cosentino_group_is_a_global\"\n                                            defaultMessage=\"Cosentino Group is a global, Spanish, family-owned company that produces and distributes high value innovative surfaces for the world of design and architecture. It works together with its clients and partners to provide with solutions that offer design and value, and inspire the life of many people.\"\n                                        />\n                                    </p>\n                                    <a target={'_blank'} href=\"https://www.cosentino.com/cosentino-group/\">\n                                        <Translation id=\"view_more\" defaultMessage=\"View more\" />\n                                    </a>\n                                </ul>\n                            </div>\n                            <div className=\"col-12 col-md-3\">\n                                <ul>\n                                    <li className=\"chevron-reponsive-footer\">\n                                        <strong>\n                                            <Translation id=\"sitemap\" defaultMessage=\"Sitemap\" />\n                                        </strong>\n                                        <i\n                                            className=\"fal fa-chevron-down\"\n                                            id=\"chevron-down\"\n                                            onClick={() => {\n                                                document.querySelectorAll(`#links-footer`).forEach(e => {\n                                                    e.style.display = 'block'\n                                                })\n                                                document.querySelectorAll(`#chevron-up`).forEach(e => {\n                                                    e.style.display = 'block'\n                                                })\n                                                document.querySelectorAll(`#chevron-down`).forEach(e => {\n                                                    e.style.display = 'none'\n                                                })\n                                            }}\n                                        />\n                                        <i\n                                            className=\"fal fa-chevron-up\"\n                                            id=\"chevron-up\"\n                                            style={{ display: 'none' }}\n                                            onClick={() => {\n                                                document.querySelectorAll(`#links-footer`).forEach(e => {\n                                                    e.style.display = 'none'\n                                                })\n                                                document.querySelectorAll(`#chevron-up`).forEach(e => {\n                                                    e.style.display = 'none'\n                                                })\n                                                document.querySelectorAll(`#chevron-down`).forEach(e => {\n                                                    e.style.display = 'block'\n                                                })\n                                            }}\n                                        />\n                                    </li>\n                                    <div id=\"links-footer\">\n                                        <MenuContainer responsive={true} footer={true} />\n                                    </div>\n                                </ul>\n                            </div>\n                            <div className=\"col-12 col-md-3\">\n                                <ul>\n                                    <li className=\"chevron-reponsive-footer\">\n                                        <strong>Cosentino We</strong>\n                                        <i\n                                            className=\"fal fa-chevron-down\"\n                                            id=\"chevron-down2\"\n                                            onClick={() => {\n                                                document.querySelectorAll(`#links-footer2`).forEach(e => {\n                                                    e.style.display = 'block'\n                                                })\n                                                document.querySelectorAll(`#chevron-up2`).forEach(e => {\n                                                    e.style.display = 'block'\n                                                })\n                                                document.querySelectorAll(`#chevron-down2`).forEach(e => {\n                                                    e.style.display = 'none'\n                                                })\n                                            }}\n                                        />\n                                        <i\n                                            className=\"fal fa-chevron-up\"\n                                            id=\"chevron-up2\"\n                                            style={{ display: 'none' }}\n                                            onClick={() => {\n                                                document.querySelectorAll(`#links-footer2`).forEach(e => {\n                                                    e.style.display = 'none'\n                                                })\n                                                document.querySelectorAll(`#chevron-up2`).forEach(e => {\n                                                    e.style.display = 'none'\n                                                })\n                                                document.querySelectorAll(`#chevron-down2`).forEach(e => {\n                                                    e.style.display = 'block'\n                                                })\n                                            }}\n                                        />\n                                    </li>\n                                    <div id=\"links-footer2\">\n                                        <li>\n                                            <a href=\"https://www.cosentino.com/professional/cosentino-we/\" target={'_blank'}>\n                                                <Translation id=\"how_does_it_work\" defaultMessage=\"How does it work?\" />\n                                            </a>\n                                        </li>\n                                        {/*<li>\n                                            <a target={\"_blank\"} href=\"https://we.cosentino.com/s/register?language=en_GB&_ga=2.121019777.823869124.1658757583-1365358577.1589184868\">\n                                                <Translation id=\"register_an_account\" defaultMessage=\"Register an account\" />\n                                            </a>\n                                        </li>*/}\n                                        <li>\n                                            <a target={'_blank'} href=\"https://we.cosentino.com/s/rewards?language=en\">\n                                                <Translation id=\"benefits\" defaultMessage=\"Benefits\" />\n                                            </a>\n                                        </li>\n                                    </div>\n                                </ul>\n                            </div>\n                            <div className=\"social-links col-12 col-md-3\">\n                                <ul>\n                                    <li>\n                                        <strong>\n                                            <Translation id=\"follow_us\" defaultMessage=\"Follow us\" />\n                                        </strong>\n                                    </li>\n                                    <li>\n                                        <a href=\"http://facebook.com/grupocosentino\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                            <img src={facebook} alt=\"facebook\" />\n                                        </a>\n                                        <a href=\"http://instagram.com/grupocosentino\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                            <img src={instagram} alt=\"instagram\" />\n                                        </a>\n                                        <a href=\"https://www.pinterest.es/grupocosentino/\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                            <img src={pinterest} alt=\"pinterest\" />\n                                        </a>\n                                        <a href=\"https://www.linkedin.com/company/cosentino/\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                            <img src={linkedin} alt=\"linkedin\" />\n                                        </a>\n                                        <a href=\"http://twitter.com/grupocosentino\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                            <img src={twitter} alt=\"twitter\" />\n                                        </a>\n                                        <a href=\"http://youtube.com/cosentinotv\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                            <img src={youtube} alt=\"youtube\" />\n                                        </a>\n                                    </li>\n                                </ul>\n                            </div>\n                        </div>\n                        <div className=\"row brands \" style={{ margin: '40px 0px' }}>\n                            {!this.props.isAustralianCenter && (\n                                <div className=\"col-12 col-md-auto text-center p-2\">\n                                    <a href=\"https://qr.cosentino.com/brand/silestone\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                        <img src={silestone} alt=\"Silestone\" className=\"img-fluid silestone\" />\n                                    </a>\n                                </div>\n                            )}\n                            <div className=\"col-12 col-md-auto text-center p-2\">\n                                <a href=\"https://qr.cosentino.com/brand/dekton\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                    {this.props.selectedCenter === 7130 ? (\n                                        <img src={dktn} alt=\"Dekton\" className=\"img-fluid dekton\" />\n                                    ) : (\n                                        <img src={dekton} alt=\"Dekton\" className=\"img-fluid dekton\" />\n                                    )}\n                                </a>\n                            </div>\n                            <div className=\"col-12 col-md-auto text-center p-2\">\n                                <a href=\"https://qr.cosentino.com/brand/sensa\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                    <img src={sensa} alt=\"Sensa\" className=\"img-fluid sensa\" />\n                                </a>\n                            </div>\n                            <div className=\"col-12 col-md-auto text-center p-2\">\n                                <a href=\"https://qr.cosentino.com/brand/scalea\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                    <img src={naturalStone} alt=\"Natural Stone\" className=\"img-fluid natural-stone\" />\n                                </a>\n                            </div>\n                        </div>\n\n                        <div className=\"legal row\">\n                            <div className=\"col-12 col-md-6 col-lg-3\">\n                                <ul>\n                                    <li>\n                                        © Cosentino S.A. <Translation id=\"all_rights_reserved\" defaultMessage=\"All rights reserved\" />\n                                    </li>\n                                </ul>\n                            </div>\n                            <div className=\"col-12 col-md-6\" style={{ textAlign: 'center' }}>\n                                <ul>\n                                    <li>\n                                        <LocalizedLink routeId=\"ROUTE_COOKIES\" target=\"_blank\">\n                                            <Translation id=\"cookies_policy\" defaultMessage=\"Cookies policy\" />\n                                        </LocalizedLink>\n                                    </li>\n                                    <li>\n                                        <LocalizedLink routeId=\"ROUTE_PRIVACY\" target=\"_blank\">\n                                            <Translation id=\"privacy_policy\" defaultMessage=\"Privacy policy\" />\n                                        </LocalizedLink>\n                                    </li>\n\n                                    {getUsaCanadaSalesOrg().includes(salesOrg) ? (\n                                        <li>\n                                            <a href={getUsaCaPrTermsAndConditionsByLang(this.props.language)} target=\"_blank\" rel=\"nofollow noopener noreferrer\" style={{ fontWeight: 'default' }}>\n                                                <Translation id=\"general_conditions_of_sale\" defaultMessage=\"General conditions of sale\" />\n                                            </a>\n                                        </li>\n                                    ) : (\n                                        <li>\n                                            <a\n                                                href=\"https://assetstools.cosentino.com/api/v1/bynder/doc/511A2D40-054A-41D5-89CE81CF6DB105D8/cgv.pdf\"\n                                                target=\"_blank\"\n                                                rel=\"nofollow noopener noreferrer\"\n                                                style={{ fontWeight: 'default' }}\n                                            >\n                                                <Translation id=\"general_conditions_of_sale\" defaultMessage=\"General conditions of sale\" />\n                                            </a>\n                                        </li>\n                                    )}\n                                </ul>\n                            </div>\n                            <br />\n                            <br />\n                        </div>\n                    </div>\n                </footer>\n            </div>\n        )\n    }\n}\n\nexport default withRouter(injectIntl(FooterV2))\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport ecosentinoNegativeLogo from '../../assets/img/logos/brands/ecosentino-logo-negative.svg'\nimport silestoneLogo from '../../assets/img/logos/brands/logo-silestone.svg'\nimport dektonLogo from '../../assets/img/logos/brands/logo-dekton.svg'\nimport dktnLogo from '../../assets/img/DKTN.svg'\nimport sensaLogo from '../../assets/img/logos/brands/logo-sensa.svg'\nimport naturalStoneLogo from '../../assets/img/logos/brands/logo-natural-stone.svg'\nimport Translation from '../global/Translation'\nimport LocalizedLink from '../global/LocalizedLink'\nimport { getUsaCanadaSalesOrg } from '../../store/centers/reducers'\nimport { getUsaCaPrTermsAndConditionsByLang } from '../../helpers'\nimport DeveloperBar from '../global/DeveloperBar'\n\nconst TinyFooter = props => {\n    const { selectedCenter, salesOrg, language , isAustralianCenter} = props\n\n    return (\n        \n        <footer className=\"tinyfooter-main-container\">\n            {process.env.NODE_ENV !== 'production' && <DeveloperBar />}\n            <div className=\"tinyfooter-main-container__first-level\">\n                <div className=\"tinyfooter-main-container__first-level--ecosentino-logo\">\n                    <img src={ecosentinoNegativeLogo} alt=\"eCosentino\" />\n                </div>\n                <div className=\"tinyfooter-main-container__first-level--cosentino-brands\">\n                    {!isAustralianCenter && (\n                        <div>\n                            <a href=\"https://qr.cosentino.com/brand/silestone\" target=\"_blank\" rel=\"noopener noreferrer\">\n                                <img src={silestoneLogo} alt=\"Silestone\" className=\"silestone-brand\" />\n                            </a>\n                        </div>\n                    )}\n                    <div>\n                        <a href=\"https://qr.cosentino.com/brand/dekton\" target=\"_blank\" rel=\"noopener noreferrer\">\n                            {selectedCenter == 7130 ? <img src={dktnLogo} alt=\"DKTN\" className=\"dktn-brand\" /> : <img src={dektonLogo} alt=\"Dekton\" className=\"dekton-brand\" />}\n                        </a>\n                    </div>\n                    <div>\n                        <a href=\"https://qr.cosentino.com/brand/sensa\" target=\"_blank\" rel=\"noopener noreferrer\">\n                            <img src={sensaLogo} alt=\"Sensa\" className=\"sensa-brand\" />\n                        </a>\n                    </div>\n                    <div>\n                        <a href=\"https://qr.cosentino.com/brand/scalea\" target=\"_blank\" rel=\"noopener noreferrer\">\n                            <img src={naturalStoneLogo} alt=\"Natural Stone\" className=\"natural-stone-brand\" />\n                        </a>\n                    </div>\n                </div>\n            </div>\n            <div className=\"tinyfooter-main-container__second-level\">\n                <div>\n                    <span>\n                        © Cosentino S.A. <Translation id=\"all_rights_reserved\" defaultMessage=\"All rights reserved\" />\n                    </span>\n                </div>\n                <div className=\"tinyfooter-main-container__second-level--terms\">\n                    <div>\n                        <LocalizedLink routeId=\"ROUTE_COOKIES\" target=\"_blank\">\n                            <Translation id=\"cookies_policy\" defaultMessage=\"Cookies policy\" />\n                        </LocalizedLink>\n                    </div>\n                    <div>\n                        <LocalizedLink routeId=\"ROUTE_PRIVACY\" target=\"_blank\">\n                            <Translation id=\"privacy_policy\" defaultMessage=\"Privacy policy\" />\n                        </LocalizedLink>\n                    </div>\n                    <div>\n                        {getUsaCanadaSalesOrg().includes(salesOrg) ? (\n                            <a href={getUsaCaPrTermsAndConditionsByLang(language)} target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n                                <Translation id=\"general_conditions_of_sale\" defaultMessage=\"General conditions of sale\" />\n                            </a>\n                        ) : (\n                            <a\n                                href=\"https://assetstools.cosentino.com/api/v1/bynder/doc/511A2D40-054A-41D5-89CE81CF6DB105D8/cgv.pdf\"\n                                target=\"_blank\"\n                                rel=\"nofollow noopener noreferrer\"\n                            >\n                                <Translation id=\"general_conditions_of_sale\" defaultMessage=\"General conditions of sale\" />\n                            </a>\n                        )}\n                    </div>\n                </div>\n            </div>\n        </footer>\n    )\n}\n\nexport default TinyFooter\n","import React from 'react'\n\nimport HeaderContainer from '../header/HeaderContainer'\nimport GlobalModals from './GlobalModals'\nimport { connect } from 'react-redux'\nimport * as ui from '../../store/ui/reducers'\nimport { getSelectedCenter, isAustralianCenter, getSalesOrg } from '../../store/centers/reducers'\nimport Raven from 'raven-js'\nimport { fetchMaintenance } from '../../store/ui/actions'\nimport { Notification, NotificationGroup } from '@progress/kendo-react-notification';\nimport { removeToastNotification } from '../../store/toast-notifications/actions'\nimport Spinner from '../global/Spinner'\nimport { withRouter } from 'react-router-dom'\nimport { getIsOrderHistoryScreen, getIsShippingHistoryScreen, getLanguage } from '../../store/ui/reducers'\nimport FooterV2 from '../footer/FooterV2'\nimport TinyFooter from '../footer/TinyFooter'\nimport Translation from '../global/Translation'\nimport somethingWentWrongIcon from '../../assets/img/logos/something-went-wrong-icon.svg'\nimport Button from '../global/Button'\nimport LocalizedLink from '../global/LocalizedLink'\n\nconst mapStateToProps = state => {\n    return {\n        showingAnyModal: ui.showingAnyModal(state),\n        selectedCenter: getSelectedCenter(state),\n        maintenanceScheduledText: ui.getMaintenanceScheduledText(state),\n        toastNotifications: state.toastNotifications,\n        loader: state.loader,\n        isOrderHistoryScreen: getIsOrderHistoryScreen(state),\n        isShippingHistoryScreen: getIsShippingHistoryScreen(state),\n        isConfigurableBathEditScreen: ui.getIsConfigurableBathEditScreen(state),\n        isConfigurablePlanAcceptanceScreen: ui.getIsConfigurablePlanAcceptanceScreen(state),\n        isAustralianCenter: isAustralianCenter(state),\n        language: getLanguage(state),\n        salesOrg: getSalesOrg(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchMaintenance: () => {\n            dispatch(fetchMaintenance())\n        },\n        removeToastNotification: id => dispatch(removeToastNotification(id))\n    }\n}\nclass Layout extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = { error: null, errorInfo: null, showMaintenanceText: null }\n    }\n\n    componentDidCatch(error, errorInfo) {\n        // Catch errors in any components below and re-render with error message\n        this.setState({\n            error: error,\n            errorInfo: errorInfo\n        })\n\n        if (process.env.NODE_ENV === 'production') {\n            Raven.captureException(error, { extra: errorInfo })\n        }\n\n        // You can also log error messages to an error reporting service here\n    }\n\n    componentDidMount() {\n        this.props.fetchMaintenance()\n    }\n\n    render() {\n        if (this.props.showingAnyModal) {\n            document.body.classList.add('noscroll')\n        } else {\n            document.body.classList.remove('noscroll')\n        }\n        if (this.state.errorInfo) {\n            return (\n                <div>\n                    <HeaderContainer />\n                    <div className=\"container\" style={{ minHeight: 'calc(100vh - 323px)' }}>\n                        <div className=\"row\">\n                            <div className=\"col py-4\">\n                                <div className=\"something__went__wrong\">\n                                    <div>\n                                        <img src={somethingWentWrongIcon} alt=\"Something Went Wrong\" />\n                                    </div>\n                                    <h2>\n                                        <Translation id=\"something_went_wrong\" defaultMessage=\"Something went wrong\" />\n                                    </h2>\n                                    <div className=\"something__went__wrong--text\">\n                                        <p>\n                                            <Translation id=\"our_team_has_been_notified\" defaultMessage=\"Our team has been notified.\" />\n                                        </p>\n                                        <p><Translation id=\"you_can_also_fill_out\" defaultMessage=\"You can also fill out\" /> <span onClick={() => Raven.lastEventId() && Raven.showReportDialog()}><Translation id=\"this_form\" defaultMessage=\"this form\" /></span> <Translation id=\"to_help_us_resolve_the_issue\" defaultMessage=\"to help us resolve the issue.\" /></p>\n                                        <p><Translation id=\"thank_you\" defaultMessage=\"Thank you\" /></p>\n                                        <div className=\"btn-call-to-action\">\n                                            <LocalizedLink routeId=\"ROUTE_HOME\">\n                                                <Button className={'bt-inverted'}>\n                                                    <Translation id=\"keep_buying\" default Message=\"Keep buying\" />\n                                                </Button>\n                                            </LocalizedLink>\n                                        </div>\n                                    </div>\n                                </div>\n                                {process.env.NODE_ENV !== 'production' && (\n                                    <details style={{ whiteSpace: 'pre-wrap' }}>\n                                        {this.state.error && this.state.error.toString()}\n                                        <br />\n                                        {this.state.errorInfo.componentStack}\n                                    </details>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n\n                    <FooterV2\n                        selectedCenter={this.props.selectedCenter}\n                        isOrderHistoryScreen={this.props.isOrderHistoryScreen}\n                        isShippingHistoryScreen={this.props.isShippingHistoryScreen}\n                        isAustralianCenter={this.props.isAustralianCenter}\n                        language={this.props.language}\n                        salesOrg={this.props.salesOrg}\n                    />\n                    <GlobalModals />\n                </div>\n            )\n        }\n        return (\n            <div id=\"wrapper-full\" className={'v2'}>\n                <div id=\"wrapper-header\">\n                    <HeaderContainer />\n                </div>\n                <div id=\"wrapper-contain\">{this.props.children}</div>\n                {this.props.toastNotifications.length > 0 && (\n                    <NotificationGroup className={'top right'}>\n                        {this.props.toastNotifications.map((t, i) => (\n                            <Notification\n                                key={i}\n                                closable={true}\n                                type={{\n                                    style: t.type,\n                                    icon: true\n                                }}\n                                onClose={() => this.props.removeToastNotification(t.id)}\n                            >\n                                {t.text}\n                            </Notification>\n                        ))}\n                    </NotificationGroup>\n                )}\n\n                {this.props.loader.length > 0 && (\n                    <div id=\"global-loader\" className=\"global-loader-wrapper\">\n                        <Spinner relative={true} isLoading={true} />\n                    </div>\n                )}\n\n                \n                {this.props.isConfigurableBathEditScreen || this.props.isConfigurablePlanAcceptanceScreen ? (\n                    <TinyFooter selectedCenter={this.props.selectedCenter} salesOrg={this.props.salesOrg}  language={this.props.language} isAustralianCenter={this.props.isAustralianCenter}/>\n                ) : (\n                    <div id=\"wrapper-footer\">\n                        <FooterV2\n                            selectedCenter={this.props.selectedCenter}\n                            isOrderHistoryScreen={this.props.isOrderHistoryScreen}\n                            isShippingHistoryScreen={this.props.isShippingHistoryScreen}\n                            isAustralianCenter={this.props.isAustralianCenter}\n                            language={this.props.language}\n                            salesOrg={this.props.salesOrg}\n                        />\n                    </div>\n                )}\n              \n                <GlobalModals />\n            </div>\n        )\n    }\n}\n\nLayout = withRouter(connect(mapStateToProps, mapDispatchToProps)(Layout))\n\nexport default Layout\n","import React, { Component } from 'react'\r\nimport { injectIntl } from 'react-intl'\r\n\r\nclass ElaborationType extends Component {\r\n\r\n    render () {\r\n        const {title, icon, description} = this.props\r\n\r\n        return (\r\n            <div className={\"custom-products-card\"}>\r\n                <div className=\"custom-products-card__img\">\r\n                    <img src={icon} alt={title} />\r\n                </div>\r\n                <div className=\"custom-products-card__title\">\r\n                    <h5>{title}</h5>\r\n                </div>\r\n                <div className=\"custom-products-card__content\">\r\n                    <p>{description}</p>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default injectIntl(ElaborationType)","import React, { Component } from 'react'\nimport { injectIntl } from 'react-intl'         \nimport ElaborationType from './ElaborationType'\nimport { ElaborationOptionsMap } from './CutToSizeMaps'\nimport Translation from '../global/Translation'\nimport backgroundImageV2 from '../../assets/img/cut-to-size/Path-v2.png'\nimport LocalizedLink from \"../global/LocalizedLink\";\n\n\nclass ElaborationTypeSelector extends Component {\n\n    render () {\n        const {materials} = this.props\n\n        return (\n            <div name=\"cut_to_size_elaboration_type_selector\">\n                <div className=\"row no-gutters\">\n                    <h2 className=\"questa-bold title-cts\">\n                        <Translation id=\"custom_products\" defaultMessage=\"Custom Products\" />\n                    </h2>\n                </div>\n                {\n                    materials && (\n                        <React.Fragment>\n                            <div className=\"custom-products-block\">\n                                {\n                                    Object.keys(materials).filter(el => el !== 'BUDGET').map(elaboration => {\n                                        const option = ElaborationOptionsMap[elaboration]\n                                        return (\n                                            <div key={`id_${elaboration}`} className=\"custom-products-block__key\">\n                                                <LocalizedLink routeId={'ROUTE_CUT_TO_SIZE'} header={true} queryString={`?type=${elaboration.toLowerCase()}`} params={{'outlet':''}} gtmLabel={option.gtmLabel}>\n                                                    <ElaborationType\n                                                        id={elaboration}\n                                                        brands={Object.keys(materials[elaboration])}\n                                                        title={this.props.intl.formatMessage(option.name)}\n                                                        icon={option.image}\n                                                        description={this.props.intl.formatMessage(option.text)}\n                                                    />\n                                                </LocalizedLink>\n                                            </div>\n                                        )\n                                    })\n                                }\n                            </div>\n\n                            <div className=\"custom-products-banner-block\">\n                                <div className=\"custom-products-banner-block__content\">\n                                    <div>\n                                        <h4><Translation id=\"dont_find_your_cut\" defaultMessage=\"Don't find the cut to size you need?\" /></h4>\n                                    </div>\n                                    <div>\n                                        <LocalizedLink routeId={'ROUTE_CUT_TO_SIZE'} header={true} queryString={`?type=${this.props.hasPreOrder ? 'preorder' : 'budget'}`} params={{'outlet':''}}>\n                                            <button dataQas=\"cts_main_request-quotation-button\">\n                                                {\n                                                    this.props.hasPreOrder ?\n                                                        <span><Translation id=\"request_for_preorder\" defaultMessage=\"Request an order/offer\" /></span>\n                                                        :\n                                                        <span><Translation id=\"request_for_quote\" defaultMessage=\"Request for quote\" /></span>\n                                                }\n                                                <i class=\"fas fa-chevron-right\"></i>\n                                            </button>\n                                        </LocalizedLink>                             \n                                    </div>\n                                </div>\n                                <div className=\"custom-products-banner-block__img\">\n                                    <img src={backgroundImageV2} alt=\"Request an order\" />\n                                </div>\n                            </div>\n                        </React.Fragment>\n                    )\n                }\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(ElaborationTypeSelector)","import React from 'react'\nimport createClass from 'create-react-class'\nimport PropTypes from 'prop-types'\n\nconst stringOrNode = PropTypes.oneOfType([PropTypes.string, PropTypes.node])\n\nexport const colorOption = createClass({\n    propTypes: {\n        children: PropTypes.node,\n        className: PropTypes.string,\n        isDisabled: PropTypes.bool,\n        isFocused: PropTypes.bool,\n        isSelected: PropTypes.bool,\n        onFocus: PropTypes.func,\n        onSelect: PropTypes.func,\n        option: PropTypes.object.isRequired\n    },\n    handleMouseDown(event) {\n        event.preventDefault()\n        event.stopPropagation()\n        this.props.onSelect(this.props.option, event)\n    },\n    handleMouseEnter(event) {\n        this.props.onFocus(this.props.option, event)\n    },\n    handleMouseMove(event) {\n        if (this.props.isFocused) return\n        this.props.onFocus(this.props.option, event)\n    },\n    render() {\n        let imageStyle = {\n            borderRadius: 3,\n            display: 'inline-block',\n            marginRight: 10,\n            position: 'relative',\n            top: -2,\n            verticalAlign: 'middle',\n            height: '20px'\n        }\n        return (\n            <div\n                className={this.props.className}\n                onMouseDown={this.handleMouseDown}\n                onMouseEnter={this.handleMouseEnter}\n                onMouseMove={this.handleMouseMove}\n                title={this.props.option.title}\n            >\n                <img src={this.props.option.thumb} alt=\"\" style={imageStyle} />\n\n                {this.props.children}\n            </div>\n        )\n    }\n})\nexport const colorValue = createClass({\n    propTypes: {\n        children: PropTypes.node,\n        placeholder: stringOrNode,\n        value: PropTypes.object\n    },\n    render() {\n        let imageStyle = {\n            borderRadius: 3,\n            display: 'inline-block',\n            marginRight: 10,\n            position: 'relative',\n            top: -2,\n            verticalAlign: 'middle',\n            height: '20px'\n        }\n        return (\n            <div className=\"Select-value\" title={this.props.value.title}>\n                <span className=\"Select-value-label\">\n                    <img src={this.props.value.thumb} alt=\"\" style={imageStyle} />\n\n                    {this.props.children}\n                </span>\n            </div>\n        )\n    }\n})","export const getFinishOptions = (props, state) => {\n    if (state.selectedColor && props.secondaryParams && props.secondaryParams.relations) {\n        let filtered = props.secondaryParams.relations.filter((p) => {\n            let check = true;\n            if (state.selectedFormat) check = check && p.format === state.selectedFormat\n            if (state.selectedThickness) check = check && p.thickness === state.selectedThickness\n            if (state.selectedAddon) check = check && p.addon === state.selectedAddon\n            return check;\n        })\n        const rawFinish = [...new Set(filtered.map(v => v.finish))]\n\n        return rawFinish.map(finished => {\n            const label = props.intl.formatMessage({ id: finished })\n            return {\n                label,\n                value: finished\n            }\n        })\n    }\n    return null\n}\n\nexport const getThicknessOptions = (props, state) => {\n    if (state.selectedColor && props.secondaryParams && props.secondaryParams.relations) {\n        let filtered = props.secondaryParams.relations.filter((p) => {\n            let check = true;\n            if (state.selectedFormat) check = check && p.format === state.selectedFormat\n            if (state.selectedFinished) check = check && p.finish === state.selectedFinished\n            if (state.selectedAddon) check = check && p.addon === state.selectedAddon\n            return check;\n        })\n        const rawThickness = [...new Set(filtered.map(v => v.thickness))].sort()\n\n        return rawThickness.map(thickness => {\n            return {\n                label: thickness + ' cm',\n                value: thickness\n            }\n        })\n    }\n    return null\n}\n\nexport const getAddonOptions = (props, state) => {\n    if (state.selectedColor && props.secondaryParams && props.secondaryParams.relations) {\n\n        let filtered = props.secondaryParams.relations.filter((p) => {\n            let check = true;\n            if (state.selectedFormat) check = check && p.format === state.selectedFormat\n            if (state.selectedFinished) check = check && p.finish === state.selectedFinished\n            if (state.selectedThickness) check = check && p.thickness === state.selectedThickness\n            return check;\n        })\n        const rawAddons = [...new Set(filtered.map(v => v.addon))]\n        return rawAddons.map(addon => {\n            return {\n                label: addon === 'MAL' ? props.intl.formatMessage({ id: 'with_mesh' }) : props.intl.formatMessage({ id: 'without_mesh' }),\n                value: addon\n            }\n        })\n    }\n    return null\n}","import React, { Component } from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport GoBack from '../global/GoBack'\nimport Button from '../global/Button'\nimport Translation from '../global/Translation'\nimport { getCutToSizeSecondaryParams, getCutToSizeMaterials, getCutToSizeCatalog, getCutToSizeCustomerPricingGroup } from '../../store/cut-to-size/reducers'\nimport { askForBudget } from '../../store/cut-to-size/actions'\nimport { colorOption, colorValue } from './ColorOptions'\nimport { fetchCutToSizeSecondaryParams } from '../../store/cut-to-size/actions'\nimport ElaborationDetails from './ElaborationDetails'\nimport { Messages, BrandOptionsMap } from './CutToSizeMaps'\nimport FloatingAlert from '../alerts/FloatingAlert'\nimport { showToastNotification } from '../../store/toast-notifications/actions'\nimport LocalizedLink from \"../global/LocalizedLink\";\nimport {getAddonOptions, getFinishOptions, getThicknessOptions} from \"./CalculateFromOptions\";\n\nconst FILE_LIMIT = 4 //MB\nconst BYTES_IN_MB = 1024 * 1024\nconst DEFAULT_FILE_TYPE = 'BX01'\n\n\nconst mapStateToProps = state => {\n    return {\n        secondaryParams: getCutToSizeSecondaryParams(state),\n        materials: getMaterials(state),\n        catalog: getCutToSizeCatalog(state),\n        pricingGroup: getCutToSizeCustomerPricingGroup(state),\n    }\n}\n\n//Tratar genéricos como solo corte\nconst getMaterials = (state) => {\n    const materials = Object.assign({}, getCutToSizeMaterials(state))\n    if (materials) {\n        materials['BUDGET'] = materials['SOLO_CORTE']\n    }\n    return materials\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchSecondaryParams: (elaboration, brand, color, pricingGroup, hasSoleriaDekton, callback) => {\n            const elaborationType = elaboration === 'BUDGET' ? 'SOLO_CORTE' : elaboration\n            dispatch(fetchCutToSizeSecondaryParams(elaborationType, brand, color, pricingGroup, hasSoleriaDekton, callback))\n        },\n        askForBudget: (formData, callback) => dispatch(askForBudget(formData, callback)),\n        showToastNotification: (text = '', type = 'none', duration = 10000) => dispatch(showToastNotification(text, type, duration)),\n    }\n}\n\n\nclass CutToSizeFormBudget extends Component {\n\n    state = {\n        selectedBrand: null,\n        selectedColor: null,\n        currentColorOptions: [],\n        currentBrandOptions: [],\n        selectedThickness: null,\n        selectedFinished: null,\n        selectedAddon: null,\n        selectedFiles: {},\n        quoteFile: null,\n        showExceedFileSizeAlert: false,\n        comments: null\n    }\n\n    componentDidMount() {\n        Object.keys(this.props.materials[this.props.selectedElaboration]).forEach(brand => {\n            this.state.currentBrandOptions.push({\n                label: BrandOptionsMap[brand].name,\n                value: brand\n            })\n        })\n\n        this.fillColors()\n        this.updateOptions()\n        this.forceUpdate()\n    }\n\n    fillColors = () => {\n        Object.entries(this.props.materials[this.props.selectedElaboration]).forEach(([brand, brandColors]) => {\n            brandColors.forEach(colorKey => {\n                const catalogColor = this.props.catalog[colorKey]\n                if (catalogColor) {\n                    this.state.currentColorOptions.push({\n                        label: catalogColor.name + ' (' + brand + ')',\n                        value: colorKey,\n                        thumb: catalogColor.thumb,\n                        brand: brand\n                    })\n                }\n\n                this.state.currentColorOptions.sort((a, b) => a.label.localeCompare(b.label))\n            })\n        })\n    }\n\n    resetProducts = () => {\n        this.setState({\n            selectedBrand: null,\n            selectedColor: null,\n            selectedFormat: null,\n            selectedThickness: null,\n            selectedFinished: null,\n            selectedAddon: null\n        })\n\n        for (let m in this.state.selectedFiles) delete this.state.selectedFiles[m]\n        const fileInputs = window.top.document.querySelectorAll('.attach-file')\n        if (fileInputs) fileInputs.forEach(i => (i.value = ''))\n        const radio = window.top.document.querySelectorAll('input[type=\"radio\"]')\n        if (radio) radio.forEach(r => (r.checked = false))\n        const text = window.top.document.querySelectorAll('input[type=\"text\"]')\n        if (text) text.forEach(r => (r.value = null))\n        this.qtyToAdd = 1\n    }\n\n    updateOptions = () => {\n        if (this.state.currentBrandOptions.length === 1 && this.state.currentBrandOptions[0].value != this.state.selectedBrand)\n            this.handleSelectBrand(this.state.currentBrandOptions[0])\n        if (this.state.currentColorOptions.length === 1 && this.state.currentColorOptions[0].value != this.state.selectedColor)\n            this.handleSelectColor(this.state.currentColorOptions[0])\n    }\n\n    handleSelectBrand = brandOption => {\n        const brand = brandOption ? brandOption.value : null\n        const { materials, catalog, selectedElaboration } = this.props\n        this.resetProducts()\n        this.state.currentColorOptions.length = 0\n\n        if (brand) {\n            const materialColors =  materials[selectedElaboration][brand]\n\n            materialColors.forEach(color => {\n                if (catalog[color]) {\n                    this.state.currentColorOptions.push({\n                        label: catalog[color].name,\n                        value: color,\n                        thumb: catalog[color].thumb,\n                        brand: brand\n                    })\n                }\n            })\n            this.state.currentColorOptions.sort((a, b) => a.label.localeCompare(b.label))\n        } else{\n            this.fillColors()\n        }\n\n        this.setState({ selectedBrand: brand }, this.updateOptions)\n    }\n\n    handleSelectColor = colorOption => {\n        if (colorOption) {\n            if (this.props.secondaryParams) this.props.secondaryParams.length = 0\n            this.props.fetchSecondaryParams(\n                this.props.selectedElaboration,\n                colorOption.brand,\n                colorOption.value,\n                this.props.pricingGroup,\n                false,\n                () => {\n                    this.setState({\n                        selectedThickness: null,\n                        selectedFinished: null,\n                        selectedAddon: null,\n                        width: null,\n                        height: null,\n                        selectedColor: colorOption && colorOption.value,\n                        selectedBrand: colorOption.brand\n                    })\n                }\n            )\n        } else {\n            this.setState({\n                selectedThickness: null,\n                selectedFinished: null,\n                selectedAddon: null,\n                width: null,\n                height: null,\n                selectedColor: null\n            })\n        }\n    }\n\n    handleSelectFinish = finishOptions => {\n        const finish = finishOptions && finishOptions.value\n        if (finish === this.state.selectedFinished) return\n        this.setState({ selectedFinished: finish })\n        if (!finish) {\n            this.setState({ selectedThickness: null, selectedAddon: null })\n        }\n    }\n\n    handleSelectThickness = thicknessOption => {\n        const thickness = thicknessOption && thicknessOption.value\n        if (thickness === this.state.selectedThickness) return\n        this.setState({ selectedThickness: thickness })\n    }\n\n    handleSelectAddon = addonOption => {\n        const addon = addonOption && addonOption.value\n        if (addon === this.state.selectedAddon) return\n\n        this.setState({ selectedAddon: addon })\n    }\n\n    disableSendButton = () => {\n        return (\n            !this.state.selectedBrand ||\n            !this.state.selectedColor ||\n            !this.state.selectedThickness ||\n            !this.state.selectedAddon ||\n            !this.state.selectedFinished\n        )\n    }\n\n    onFileChange = async (event, type) => {\n        const file = event.target.files[0]\n        if (file) {\n            const fileSizeInMB = file.size / BYTES_IN_MB\n            if (fileSizeInMB > FILE_LIMIT) {\n                this.setState({ showExceedFileSizeAlert: true })\n                event.target.value = ''\n            } else {\n                this.setState({ quoteFile: file })\n            }\n        } else {\n            this.setState({ quoteFile: null })\n        }\n    }\n\n    submitData = () => {\n        const formData = new FormData()\n        formData.append('brand', this.state.selectedBrand)\n        formData.append('colorId', this.state.selectedColor)\n        formData.append('finish', this.state.selectedFinished)\n        formData.append('thickness', this.state.selectedThickness)\n        formData.append('addon', this.state.selectedAddon)\n        formData.append('file', this.state.quoteFile)\n        formData.append('comment', this.state.comments)\n\n        this.props.askForBudget(formData, () => this.props.showToastNotification(this.props.intl.formatMessage({ id: 'success_request_quote' }), 'success'))\n    }\n\n    qtyToAdd = 1\n\n    render() {\n        const { selectedBrand, selectedColor, selectedThickness, currentBrandOptions, currentColorOptions } = this.state\n        const { intl, selectedElaboration } = this.props\n\n        if (!selectedElaboration) return null\n\n        const finishesOptions = getFinishOptions(this.props, this.state)\n        const thicknessOptions = getThicknessOptions(this.props, this.state)\n        const addonsOptions = getAddonOptions(this.props, this.state)\n\n        if (addonsOptions && addonsOptions.length === 1) this.handleSelectAddon(addonsOptions[0])\n        if (thicknessOptions && thicknessOptions.length === 1) this.handleSelectThickness(thicknessOptions[0])\n        if (thicknessOptions && finishesOptions.length === 1) this.handleSelectFinish(finishesOptions[0])\n\n        return (\n            <section className=\"cut_to_size\">\n                <div className=\"cut_to_size__go_back mt-4 mb-3\">\n                    <LocalizedLink routeId={'ROUTE_CUT_TO_SIZE'} header={true} queryString={''} params={{'outlet':''}}>\n                        <GoBack\n                            text={intl.formatMessage(Messages.BACK_SELECT_ELABORATED_TYPE)}\n                            dataCY={'product_detail__go_back'}\n                        />\n                    </LocalizedLink>\n                </div>\n\n                <div className=\"container form\">\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-7\">\n                            <div style={{ width: '100%' }}>\n                                <ElaborationDetails\n                                    id={selectedElaboration}\n                                />\n                            </div>\n                        </div>\n                        <div className=\"col-12 col-md-5 cut_to_size__filters\">\n                            {/**************** MARCA **********************/}\n                            {selectedElaboration && (\n                                <div className=\"group__input\">\n                                    <label htmlFor=\"brand-select\" className=\"form-label\">\n                                        <Translation id=\"brand\" defaultMessage=\"Brand\" />\n                                    </label>\n                                    <div className=\"contain__select--brand\">\n                                        <Select\n                                            id=\"brand-select\"\n                                            placeholder={this.props.intl.formatMessage(Messages.CHOOSE_BRAND)}\n                                            options={currentBrandOptions}\n                                            value={selectedBrand}\n                                            onChange={selectedOption => this.handleSelectBrand(selectedOption)}\n                                            disabled={!currentBrandOptions || currentBrandOptions.length <= 1}\n                                            className={`${!currentBrandOptions || currentBrandOptions.length <= 1 ? ' disabled' : ' '}`}\n                                        />\n                                    </div>\n                                </div>\n                            )}\n\n                            {/**************** COLORES **********************/}\n                            <div className=\"group__input\">\n                                <label htmlFor=\"color-select\" className=\"form-label\">\n                                    <Translation id=\"color\" defaultMessage=\"Color\" />\n                                </label>\n                                <Select\n                                    id=\"color-select\"\n                                    placeholder={this.props.intl.formatMessage(Messages.CHOOSE_COLOR)}\n                                    options={currentColorOptions}\n                                    value={selectedColor}\n                                    onChange={selectedOption => this.handleSelectColor(selectedOption)}\n                                    optionComponent={colorOption}\n                                    valueComponent={colorValue}\n                                    disabled={!currentColorOptions || currentColorOptions.length <= 1}\n                                    className={`${!currentColorOptions || currentColorOptions.length <= 1 ? ' disabled' : ' '}`}\n                                />\n                            </div>\n\n                            {/**************** ACABADOS **********************/}\n                            <div className=\"group__input group__input--finish\">\n                                <label htmlFor=\"finish-select\" className=\"form-label\">\n                                    <Translation id=\"finish\" defaultMessage=\"Finish\" />\n                                </label>\n                                <Select\n                                    id=\"finish-select\"\n                                    placeholder={this.props.intl.formatMessage(Messages.CHOOSE_FINISH)}\n                                    options={finishesOptions}\n                                    value={this.state.selectedFinished}\n                                    onChange={selectedOption => this.handleSelectFinish(selectedOption)}\n                                    disabled={!finishesOptions || finishesOptions.length === 0 }\n                                    className={`capitalize ${!finishesOptions || finishesOptions.length === 0 ? ' disabled' : ''}`}\n                                />\n                            </div>\n\n                            {/**************** GROSOR **********************/}\n                            <div className=\"group__input group__input--thickness\">\n                                <label htmlFor=\"thickness-select\" className=\"form-label\">\n                                    <Translation id=\"thickness\" defaultMessage=\"Thickness\" />\n                                </label>\n                                <Select\n                                    id=\"thickness-select\"\n                                    // clearable={false}\n                                    placeholder={this.props.intl.formatMessage(Messages.CHOOSE_THICKNESS)}\n                                    options={thicknessOptions}\n                                    value={selectedThickness}\n                                    onChange={selectedOption => this.handleSelectThickness(selectedOption)}\n                                    disabled={!thicknessOptions || thicknessOptions.length <= 1}\n                                    className={`${!thicknessOptions || thicknessOptions.length === 0 ? ' disabled' : ''}`}\n                                />\n                            </div>\n\n                            {/**************** ADDONS **********************/}\n                            <div className=\"group__input group__input--addon\">\n                                <label htmlFor=\"addon-select\" className=\"form-label\">\n                                    <Translation id=\"MAL\" defaultMessage=\"Meshed\" />\n                                </label>\n                                <div data-qas=\"cts_form_default-addon-dropdown\">\n                                    <Select\n                                        id=\"addon-select\"\n                                        placeholder={this.props.intl.formatMessage(Messages.CHOOSE_OPTION)}\n                                        options={addonsOptions}\n                                        value={this.state.selectedAddon}\n                                        onChange={selectedOption => this.handleSelectAddon(selectedOption)}\n                                        disabled={!addonsOptions || addonsOptions.length <= 1}\n                                        className={`capitalize ${!addonsOptions || addonsOptions.length === 0 ? ' disabled' : ''}`}\n                                        // clearable={addonsOptions && addonsOptions.length > 1}\n                                    />\n                                </div>\n                            </div>\n\n                            {/**************** ADJUNTAR DOCUMENTO **********************/}\n                            <div className=\"colgroup__input\">\n                                <label htmlFor=\"attach_file\" className=\"form-label\">\n                                    <Translation id=\"document\" defaultMessage=\"Document\" />\n                                </label>\n                                <div>\n                                    <input\n                                        id=\"attach_file\"\n                                        className=\"attach-file\"\n                                        type=\"file\"\n                                        onChange={e => this.onFileChange(e, DEFAULT_FILE_TYPE)}\n                                        // accept=\"image/jpeg, image/png, application/pdf\"\n                                    />\n                                </div>\n                                <small>\n                                    <Translation id=\"exceed_file_limit\" defaultMessage={`The file has a limit of {fileLimit} MB`} values={{ fileLimit: FILE_LIMIT }} />\n                                </small>\n                            </div>\n\n                            {/**************** COMENTARIOS **********************/}\n                            <div className=\"group__input\">\n                                <label htmlFor=\"input-comments\" className=\"form-label\">\n                                    <Translation id=\"comment\" defaultMessage=\"Comments\" />\n                                </label>\n                                <textarea\n                                    className=\"form-control\"\n                                    id=\"input-comments\"\n                                    rows=\"3\"\n                                    maxLength=\"2499\"\n                                    onChange={e => {\n                                        e && this.setState({ comments: e.target.value })\n                                    }}\n                                />\n                            </div>\n\n                            {/**************** SOLICITAR PRESUPUESTO **********************/}\n                            <div className=\"mt-1\">\n                                <Button\n                                    customClass=\"bt-dark gt\"\n                                    dataCY=\"product_detail__add\"\n                                    disabled={this.disableSendButton()}\n                                    onClick={() => (this.submitData())}\n                                    gtmLabel=\"ec_cam_submit\"\n                                >\n                                    <Translation id=\"request_for_quote\" defaultMessage=\"Request quotation\" />\n                                </Button>\n                            </div>\n                        </div>{' '}\n\n                        {this.state.showExceedFileSizeAlert && (\n                            <FloatingAlert\n                                warningMessage={<Translation id=\"exceed_file_limit\" defaultMessage={`The file has a limit of {fileLimit} MB`} values={{ fileLimit: FILE_LIMIT }} />}\n                                onClose={() => {\n                                    this.setState({ showExceedFileSizeAlert: false })\n                                }}\n                            />\n                        )}\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(CutToSizeFormBudget)\n)\n","import { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { getProfileConfiguration } from '../../store/profile-configuration/reducers'\nimport { getLocaleWithft2 } from '../../store/products/reducers'\n\nconst mapStateToProps = state => {\n    return { userPreferences: getProfileConfiguration(state), localeWithft2: getLocaleWithft2(state) }\n    // return { userPreferences: 'PL', localeWithft2: getLocaleWithft2(state) }\n}\n\nexport const formatValue = value => {\n    if (typeof value == 'number') {\n        const strValue = value.toString()\n        const intDecParts = strValue.split('.')\n        const decimalPart = intDecParts.length > 1 && intDecParts[1]\n        if (decimalPart) {\n            const decSize = Math.min(2, decimalPart.length)\n            return value.toFixed(decSize)\n        }\n    }\n\n    return value\n}\n\nconst CalculateMeasure = ({ cm, ft, withUnit = false, userPreferences, intl, localeWithft2 }) => {\n    let conversionFactor = 0.393701\n    if (cm !== undefined) {\n        const userLengthPrefer = userPreferences.lengthUnit === 'M2' ? cm : conversionFactor * cm\n        const userUnitPrefer = userPreferences.lengthUnit === 'M2' ? 'cm' : 'inch'\n        const lengthDefault = localeWithft2.includes(intl.locale) ? conversionFactor * cm : cm\n        const unitDefault = localeWithft2.includes(intl.locale) ? 'inch' : 'cm'\n        const value = formatValue(userPreferences.lengthUnit ? userLengthPrefer : lengthDefault)\n        const unit = userPreferences.lengthUnit ? userUnitPrefer : unitDefault\n        return withUnit ? value + ' ' + unit : value\n    } else if (ft !== undefined) {\n        const userLengthPrefer = userPreferences.lengthUnit === 'M2' ? ft / conversionFactor : ft\n        const userUnitPrefer = userPreferences.lengthUnit === 'M2' ? 'cm' : 'inch'\n        const lengthDefault = localeWithft2.includes(intl.locale) ? ft : ft / conversionFactor\n        const unitDefault = localeWithft2.includes(intl.locale) ? 'inch' : 'cm'\n        const value = formatValue(userPreferences.lengthUnit ? userLengthPrefer : lengthDefault)\n        const unit = userPreferences.lengthUnit ? userUnitPrefer : unitDefault\n        return withUnit ? value + ' ' + unit : value\n    } else {\n        const userUnitPrefer = userPreferences.lengthUnit === 'M2' ? 'cm' : 'inch'\n        const unitDefault = localeWithft2.includes(intl.locale) ? 'inch' : 'cm'\n        const unit = userPreferences.lengthUnit ? userUnitPrefer : unitDefault\n        return unit\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(CalculateMeasure)\n)\n","import React from 'react'\nimport createClass from 'create-react-class'\nimport PropTypes from 'prop-types'\n\nconst stringOrNode = PropTypes.oneOfType([PropTypes.string, PropTypes.node])\n\nexport const modelOption = createClass({\n    propTypes: {\n        children: PropTypes.node,\n        className: PropTypes.string,\n        isDisabled: PropTypes.bool,\n        isFocused: PropTypes.bool,\n        isSelected: PropTypes.bool,\n        onFocus: PropTypes.func,\n        onSelect: PropTypes.func,\n        option: PropTypes.object.isRequired\n    },\n    handleMouseDown(event) {\n        event.preventDefault()\n        event.stopPropagation()\n        this.props.onSelect(this.props.option, event)\n    },\n    handleMouseEnter(event) {\n        this.props.onFocus(this.props.option, event)\n    },\n    handleMouseMove(event) {\n        if (this.props.isFocused) return\n        this.props.onFocus(this.props.option, event)\n    },\n    render() {\n        let style = {\n            display: 'flex',\n            alignItems: 'center',\n            columnGap: '8px'\n        }\n        return (\n            <div\n                className={this.props.className}\n                onMouseDown={this.handleMouseDown}\n                onMouseEnter={this.handleMouseEnter}\n                onMouseMove={this.handleMouseMove}\n                title={this.props.option.title}\n                style={style}\n            >\n                {/*<div style={{width:'25%', justifyContent:'center', display:'flex'}} dangerouslySetInnerHTML={{__html: this.props.option.image}}></div>*/}\n                <div style={{width:'25%', justifyContent:'center', display:'flex', maxHeight:'64px'}} >\n                    <img src={this.props.option.image} alt=\"\" style={{maxWidth:\"-webkit-fill-available\"}}/>\n                </div>\n                <div>{this.props.children}</div>\n            </div>\n        )\n    }\n})\nexport const modelValue = createClass({\n    propTypes: {\n        children: PropTypes.node,\n        placeholder: stringOrNode,\n        value: PropTypes.object\n    },\n    render() {\n        let style = {\n            display: 'flex',\n            height: '100%',\n            columnGap: '8px'\n        }\n        return (\n            <div className=\"Select-value\" title={this.props.value.title} style={{padding:\"4px 10px\"}}>\n                <div className=\"Select-value-label\" style={style} >\n                    <img src={this.props.value.image} alt=\"\"/>\n                    {/*<div dangerouslySetInnerHTML={{__html: this.props.value.image}}/>*/}\n                    {this.props.value.label}\n                </div>\n            </div>\n        )\n    }\n})","import { formatValue } from './../global/CalculateMeasure';\nimport React, { Component } from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport GoBack from '../global/GoBack'\nimport InputNumber from '../global/InputNumber'\nimport Button from '../global/Button'\nimport { addCartLineCutToSize } from '../../store/cart/actions'\nimport Translation from '../global/Translation'\nimport {\n    getCutToSizeSecondaryParams,\n    getCutToSizeMaterials,\n    getCutToSizeCatalog,\n    getCutToSizeCustomerPricingGroup,\n    getCutToSizeSoleriaColors\n} from '../../store/cut-to-size/reducers'\nimport {askForBudget, downloadPackagingTypesPdf} from '../../store/cut-to-size/actions'\nimport { colorOption, colorValue } from './ColorOptions'\nimport { modelOption, modelValue } from './ModelOptions'\nimport { fetchCutToSizeSecondaryParams } from '../../store/cut-to-size/actions'\nimport ElaborationDetails from './ElaborationDetails'\nimport { Messages, BrandOptionsMap } from './CutToSizeMaps'\nimport FloatingAlert from '../alerts/FloatingAlert'\nimport { showToastNotification } from '../../store/toast-notifications/actions'\nimport Modal from '../global/Modal'\nimport { v4 as uuidv4 } from 'uuid'\nimport _ from 'lodash'\nimport {\n    getAdaptedFormat,\n    getCmOrInches,\n    getMeasureFromMetric,\n    getMetricMeasureFromInput\n} from \"../../helpers\";\nimport {getDefaultFurniturePackaging, setDefaultFurniturePackaging} from \"../../store/profile-configuration/reducers\";\nimport { dispatchPushURL } from '../../store/ui/actions'\nimport history from \"../global/history\";\nimport {canViewPreorder} from \"../../store/login/reducers\";\nimport LocalizedLink from \"../global/LocalizedLink\";\nimport {getAddonOptions, getFinishOptions, getThicknessOptions} from \"./CalculateFromOptions\";\n\nconst FILE_LIMIT = 4 //MB\nconst BYTES_IN_MB = 1024 * 1024\nconst BLUEPRINT_FILE_TYPE = 'BX01' //plano\nconst PACKAGING_LABELS_FILE_TYPE = 'BX10' //etiquetas\nconst PACKAGING_DOCUMENT_FILE_TYPE = 'BX03' //documento dentro del paquete\n\nconst ACCEPTED_EXT = {\n    BX01:[\n        'image/svg+xml',\n        'image/jpeg',\n        'image/png',\n        'application/dxf',\n        'application/pdf'\n    ],\n    BX10:[\n        'image/jpeg',\n        'image/png',\n        'application/dxf',\n        'application/pdf'\n    ],\n    BX03:[\n        'application/msword',\n        'application/pdf',\n        'image/jpeg',\n        'image/png',\n    ]\n}\n\n\nconst mapStateToProps = state => {\n    return {\n        secondaryParams: getCutToSizeSecondaryParams(state),\n        materials: getMaterials(state),\n        catalog: getCutToSizeCatalog(state),\n        soleriaColors: getCutToSizeSoleriaColors(state),\n        pricingGroup: getCutToSizeCustomerPricingGroup(state),\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        units: getCmOrInches(state),\n        measureFromMetric: (measure, decimals) => getMeasureFromMetric(measure, decimals, state),\n        metricMeasureFromInput: (measure, decimals) => getMetricMeasureFromInput(measure, decimals, state),\n        defaultFurniturePackaging: getDefaultFurniturePackaging(state),\n        setDefaultFurniturePackaging: (defaultPackaging) => setDefaultFurniturePackaging(state, defaultPackaging),\n        hasPreOrder: canViewPreorder(state)\n    }\n}\n\n//Tratar genéricos como solo corte\nconst getMaterials = (state) => {\n    const materials = getCutToSizeMaterials(state)\n    return _.cloneDeep(materials)\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchSecondaryParams: (elaboration, brand, color, pricingGroup, hasSoleriaDekton, callback) => {\n            dispatch(fetchCutToSizeSecondaryParams(elaboration, brand, color, pricingGroup, hasSoleriaDekton, callback))\n        },\n        addCartLineCutToSize: (qty, cutToSize) => {\n            dispatch(addCartLineCutToSize(qty, cutToSize))\n        },\n        showToastNotification: (text = '', type = 'none', duration = 10000) => dispatch(showToastNotification(text, type, duration)),\n        downloadPackagingTypesPdf: () => dispatch(downloadPackagingTypesPdf()),\n        goToURL: (url) => {\n            return dispatch(dispatchPushURL(url, 1))\n        }\n    }\n}\n\nconst CM_DECIMALS = 2\nconst IN_DECIMALS = 0\nconst MIN_WIDTH = 30\nconst MIN_HEIGHT = 30\nconst MAX_WIDTH = 270\nconst MAX_HEIGHT = 170\nconst MIN_RADIUS = 0.2\nconst MAX_RADIUS = 30\nconst SECURITY_MARGIN = 5\nconst MAX_INSERTS = 100\n\n\n\nclass CutToSizeFurniture extends Component {\n\n    _minWidth = this.props.measureFromMetric(MIN_WIDTH, IN_DECIMALS)\n    _minHeight = this.props.measureFromMetric(MIN_HEIGHT, IN_DECIMALS)\n    _securityMargin = this.props.measureFromMetric(SECURITY_MARGIN)\n    _minRadius = this.props.measureFromMetric(MIN_RADIUS, IN_DECIMALS)\n    _maxRadius = this.props.measureFromMetric(MAX_RADIUS, IN_DECIMALS)\n\n    _models = null\n    _modelsOptions = null\n    _modelsInfo = null\n    qtyToAdd = 1;\n\n\n    state = {\n        activeForm:'MAIN_PIECE',\n        selectedModel: null,\n        selectedPackaging: this.props.defaultFurniturePackaging,\n        setPackingAsDefault: false,\n        selectedBrand: null,\n        selectedColor: null,\n        selectedEdge: null,\n        selectedBevel: null,\n        selectedThickness: null,\n        selectedFinished: null,\n        selectedAddon: null,\n        selectedQuality: null,\n        selectedFiles: {},\n        width: null,\n        height: null,\n        radius: null,\n        insertsQuantity: null,\n        bevel: null,\n        currentColorOptions: [],\n        currentBrandOptions: [],\n        showDetail: false,\n        showExceedFileSizeAlert: false,\n        comments: null,\n        currentModelImageOption: 0,\n        extensions: {},\n        // selectedModelOption: null,\n        // selectedExtensions: [],\n        // currentMeasures: new Set(),\n        // modelsOptions: {},\n        extWidth: null,\n        extHeight: null,\n    }\n\n    constructor(props) {\n        super(props)\n        this.widthInput = React.createRef()\n        this.heightInput = React.createRef()\n        this.radiusInput = React.createRef()\n        this.insertsInput = React.createRef()\n    }\n\n    componentDidMount() {\n\n        Object.keys(this.props.materials['SOLO_CORTE']).forEach(brand => {\n            const allowedBrands = this.props.materials[this.props.selectedElaboration].brands\n\n            if (allowedBrands.includes(brand)) {\n                this.state.currentBrandOptions.push(\n                    {\n                        label: BrandOptionsMap[brand].name,\n                        value: brand\n                    }\n                )\n            } else {\n                delete this.props.materials['SOLO_CORTE'][brand]\n            }\n        })\n\n        this.fillColors()\n\n        this._models = this.props.materials[this.props.selectedElaboration].models\n        this._modelsOptions = this.props.materials[this.props.selectedElaboration].options\n        this._modelsInfo = this.props.materials[this.props.selectedElaboration].info\n\n        this.updateOptions()\n        // this.forceUpdate()\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        // esto solo para marcar un radio button por defecto!!!\n        if (prevState.activeForm !== this.state.activeForm) {\n            const key = this.state.activeForm.replace('EXTENSION_', '')\n            const extension = this.state.extensions[key]\n            if (extension) {\n                if (extension.refs.samePatternYes.current) extension.refs.samePatternYes.current.checked = extension.samePattern\n                if (extension.refs.samePatternNo.current) extension.refs.samePatternNo.current.checked = !extension.samePattern\n            }\n        }\n    }\n\n    fillColors = () => {\n        Object.entries(this.props.materials['SOLO_CORTE']).forEach(([brand,brandColors]) => {\n            brandColors.forEach(colorKey => {\n                const catalogColor = this.props.catalog[colorKey]\n                if (catalogColor) {\n                    this.state.currentColorOptions.push({\n                        label: catalogColor.name + ' (' + brand + ')',\n                        value: colorKey,\n                        thumb: catalogColor.thumb,\n                        brand: brand\n                    })\n                } \n                \n                this.state.currentColorOptions.sort((a, b) => a.label.localeCompare(b.label))\n            })\n        }) \n    }\n\n    // getModelOutlineImages(modelName) {\n    //      const model = modelName && ModelsOutlines && ModelsOutlines.filter(m => (Object.keys(m)[0].indexOf(modelName.toLowerCase()) !== -1))\n    //      return model && model.map(m => Object.values(m)[0])\n    // }\n\n    // getModelDetailImages(modelName) {\n    //     const model = modelName && ModelsDetails && ModelsDetails.filter(m => (Object.keys(m)[0].indexOf(modelName.toLowerCase()) !== -1))\n    //     return model && model.map(m => Object.values(m)[0])\n    // }\n\n    resetProducts = () => {\n        this.qtyToAdd = 1\n        this.setState({\n            selectedBrand: null,\n            selectedColor: null,\n            selectedThickness: null,\n            selectedFinished: null\n        })\n\n        // for (let m in this.state.selectedFiles) delete this.state.selectedFiles[m]\n        // for (let o in this.state.selectedModelOption) delete this.state.selectedModelOption[o]\n        // const fileInputs = window.top.document.querySelectorAll('.attach-file')\n        // if (fileInputs) fileInputs.forEach(i => i.value = '')\n        // const radio = window.top.document.querySelectorAll('input[type=\"radio\"]')\n        // if (radio) radio.forEach(r => r.checked = false)\n        // const text = window.top.document.querySelectorAll('input[type=\"text\"]')\n        // if (text) text.forEach(r => r.value = null)\n\n    }\n\n    updateOptions = () => {\n        if (this.state.currentBrandOptions.length === 1 && this.state.currentBrandOptions[0].value != this.state.selectedBrand) this.handleSelectBrand(this.state.currentBrandOptions[0])\n        if (this.state.currentColorOptions.length === 1 && this.state.currentColorOptions[0].value != this.state.selectedColor) this.handleSelectColor(this.state.currentColorOptions[0])\n        // const thicknessOptions = this.getThicknessOptions()\n        // if (thicknessOptions && thicknessOptions.length === 1) this.setState({selectedThickness : thicknessOptions[0].value})\n        // const finishOptions = this.getFinishOptions()\n        // if (finishOptions && finishOptions.length === 1) this.setState({selectedFinished : finishOptions[0].value})\n\n        // if (this.state.selectedModel) {\n        //     let width = parseFloat(this.getModelWidth())\n        //     let height = parseFloat(this.getModelHeight())\n\n        //     width = isNaN(width) ? null : width\n        //     height = isNaN(height) ? null : height\n\n        //     this.setState({ width, height })\n        // }\n\n        // this.forceUpdate()\n    }\n\n    goToPreOrder = () => {\n        let url = this.props.goToURL(this.props.intl.formatMessage({ id: 'ROUTE_CUT_TO_SIZE' }))\n        history.push({ pathname: url, search: 'type=budget'})\n    }\n\n    // resetSelectedExtensions = () => {\n    //     const exts = this.getModelExtension()\n    //     const extSize = exts ? exts.length : 0\n    //     this.state.selectedExtensions.length = extSize\n    //     this.state.selectedExtensions.fill(false)\n    // }\n    //\n    // resetSelectedOptions = () => {\n    //     for (let o in this.state.modelsOptions) delete this.state.modelsOptions[o]\n    // }\n    //\n    // resetCurrentMeasures = () => {\n    //     this.state.currentMeasures.clear()\n    //     const width = this.getModelWidth()\n    //     const height = this.getModelHeight()\n    //     const radius = this.getModelHasRadius() ? 'R' : null\n    //\n    //     if (ALLOWED_MEASURES.includes(width)) this.state.currentMeasures.add(width)\n    //     if (ALLOWED_MEASURES.includes(height)) this.state.currentMeasures.add(height)\n    //     if (ALLOWED_MEASURES.includes(radius)) this.state.currentMeasures.add(radius)\n    // }\n    //\n    // updateExtendableMeasures = () => {\n    //     this.resetCurrentMeasures()\n    //     const extensions = this.getModelExtension()\n    //     if (extensions) {\n    //         this.state.selectedExtensions.forEach((isChecked, index) => {\n    //             if (isChecked) {\n    //                 const ext = extensions[index]\n    //                 if (ALLOWED_MEASURES.includes(ext.width)) this.state.currentMeasures.add(ext.width)\n    //                 if (ALLOWED_MEASURES.includes(ext.height)) this.state.currentMeasures.add(ext.height)\n    //             }\n    //         })\n    //     }\n    //     this.forceUpdate()\n    // }\n\n    handleSelectModel = (modelOption, extKey) => {\n        const model = modelOption ? modelOption.value : null\n\n        if (extKey) {\n            this.state.extensions[extKey].shape = model\n            this.state.extensions[extKey].width = null\n            this.state.extensions[extKey].height = null\n            this.state.extensions[extKey].radius = null\n\n            if (this.state.extensions[extKey].refs.widthInput && this.state.extensions[extKey].refs.widthInput.current) this.state.extensions[extKey].refs.widthInput.current.value = null\n            if (this.state.extensions[extKey].refs.heightInput && this.state.extensions[extKey].refs.heightInput.current) this.state.extensions[extKey].refs.heightInput.current.value = null\n            if (this.state.extensions[extKey].refs.radiusInput && this.state.extensions[extKey].refs.radiusInput.current) this.state.extensions[extKey].refs.radiusInput.current.value = null\n            this.forceUpdate()\n        } else {\n            // this.resetProducts()\n            this.setState({\n                selectedModel: model,\n                currentModelImageOption: 0,\n                // selectedModelOption: null,\n                width: null,\n                height: null,\n                radius: null,\n                extWidth: null,\n                extHeight: null,\n                selectedEdge: null,\n                selectedBevel: null,\n                extensions: {}\n            }, () => {\n                // this.resetSelectedExtensions()\n                // this.resetSelectedOptions()\n                // this.resetCurrentMeasures()\n                // this.forceUpdate()\n            })\n            if (this.widthInput && this.widthInput.current) this.widthInput.current.value = null\n            if (this.heightInput && this.heightInput.current) this.heightInput.current.value = null\n            if (this.radiusInput && this.radiusInput.current) this.radiusInput.current.value = null\n            if (this.insertsInput && this.insertsInput.current) this.insertsInput.current.value = null\n        }\n    }    \n\n    handleSelectBrand = brandOption => {\n        const brand = brandOption ? brandOption.value : null\n        const { materials, catalog } = this.props\n        this.resetProducts()\n        this.state.currentColorOptions.length = 0\n\n        if (brand) {\n            const materialColors = materials['SOLO_CORTE'][brand]\n\n            materialColors.forEach(color => {\n                if (catalog[color]) {\n                    this.state.currentColorOptions.push({\n                        label: catalog[color].name,\n                        value: color,\n                        thumb: catalog[color].thumb,\n                        brand: brand\n                    })\n                }\n            })  \n            this.state.currentColorOptions.sort((a, b) => a.label.localeCompare(b.label))          \n        } else {\n            this.fillColors()\n        }\n\n        this.setState({ selectedBrand: brand }, this.updateOptions)        \n    }\n\n    handleSelectColor = colorOption => {\n        if (colorOption) {\n            if (this.props.secondaryParams) this.props.secondaryParams.length = 0\n            this.props.fetchSecondaryParams(\n                'SOLO_CORTE',\n                colorOption.brand,\n                colorOption.value,\n                this.props.pricingGroup,\n                false,\n                () => {\n                    this.setState({\n                        selectedThickness: null,\n                        selectedFinished: null,\n                        selectedAddon: null,\n                        width: null,\n                        height: null,\n                        selectedColor: colorOption && colorOption.value,\n                        selectedBrand: colorOption.brand\n                    })\n                }\n            )\n        } else {\n            this.setState({\n                selectedThickness: null,\n                selectedFinished: null,\n                selectedAddon: null,\n                width: null,\n                height: null,\n                selectedColor: null\n            })\n        }\n    }\n\n    handleSelectFinish = finishOptions => { \n        const finish = finishOptions && finishOptions.value\n        if (finish === this.state.selectedFinished) return\n        this.setState({ selectedFinished: finish })\n        if (!finish) {\n            this.setState({ selectedThickness: null, selectedAddon: null })\n        }\n    }\n\n    handleSelectThickness = thicknessOption => {\n        const thickness = thicknessOption && thicknessOption.value\n        if (thickness === this.state.selectedThickness) return\n        this.setState({ selectedThickness: thickness })\n    }\n\n    handleSelectAddon = addonOption => {\n        const addon = addonOption && addonOption.value\n        if (addon === this.state.selectedAddon) return\n\n        this.setState({ selectedAddon: addon })\n    }\n\n    handleChangeWidth = (value, extKey, flipMax) => {\n        value = Math.max(Math.min(value, (flipMax ? this._maxHeight : this._maxWidth)), 0)\n        this.setWidth(value, extKey)\n    }\n\n    handleChangeMinWidth = (value, extKey) => {\n        if (value) {\n            value = Math.max(value, this._minWidth)\n            this.setWidth(value, extKey)\n        }        \n    }\n\n    setWidth = (value, extKey) => {\n        value = formatValue(value)\n        if (extKey) {\n            this.state.extensions[extKey].width = value\n            const extDimensionsByShape = this.getDimensionsByShape(this.state.extensions[extKey].shape)\n            if (extDimensionsByShape.isSquare || extDimensionsByShape.hasDiameter) this.state.extensions[extKey].height = value\n            if (this.state.extensions[extKey].refs.widthInput) this.state.extensions[extKey].refs.widthInput.current.value = value\n            this.forceUpdate()\n        }\n        else {\n            this.setState({ width: value })\n            if (this.isHeightEqualA()) this.setState({ height: value })\n            if (this.widthInput.current) this.widthInput.current.value = value\n        }\n    }\n\n\n    handleChangeHeight = (value, extKey) => {\n        value = value && Math.max(Math.min(value, this._maxHeight), 0)\n        this.setHeight(value, extKey)\n    }\n\n    handleChangeMinHeight = (value, extKey) => {\n        if (value) {\n            value = Math.max(value, this._minHeight)\n            this.setHeight(value, extKey)\n        }\n    }\n\n    setHeight = (value, extKey) => {\n        value = formatValue(value)\n        if (extKey) {\n            this.state.extensions[extKey].height = value\n            this.forceUpdate()\n            if (this.state.extensions[extKey].refs.heightInput) this.state.extensions[extKey].refs.heightInput.current.value = value\n        }\n        else {\n            this.setState({ height: value })\n            if (this.heightInput.current) this.heightInput.current.value = value\n        }\n    }\n\n    handleChangeRadius = (value, extKey) => {\n        value = value && Math.max(Math.min(value, this._maxRadius), this._minRadius)\n        value = formatValue(value)\n        if (extKey) {\n            this.state.extensions[extKey].radius = value\n            this.forceUpdate()\n            if (this.state.extensions[extKey].refs.radiusInput) this.state.extensions[extKey].refs.radiusInput.current.value = value\n        }\n        else {\n            this.setState({ radius: value })\n            if (this.radiusInput.current) this.radiusInput.current.value = value\n        }\n    }\n\n    handleChangeInsertsQuantity = (value) => {\n        value = value && Math.max(Math.min(value, MAX_INSERTS), 0)\n        this.setState({ insertsQuantity: value })\n        if (this.insertsInput.current) this.insertsInput.current.value = value\n    }\n\n    handleChangeBevel = bevelOption => {\n        const bevel = bevelOption && bevelOption.value\n        if (bevel === this.state.selectedBevel) return\n        this.setState({ selectedBevel: bevel })\n    }\n\n    handleSelectEdge = edgeOption => {\n        const edge = edgeOption && edgeOption.value\n        if (edge === this.state.selectedEdge) return\n        this.setState({ selectedEdge: edge, selectedBevel: !!edge ? this.state.selectedBevel : null})\n    }\n\n    handleSelectPackaging = packagingOption => {\n        const packaging = packagingOption && packagingOption.value\n        if (packaging === this.state.selectedPackaging) return\n        this.setState({ selectedPackaging: packaging })\n    }\n\n    // disableSendButton = () => {\n    //\n    //     const hasExtension = this.state.selectedExtensions.length > 0\n    //     let disableByExtensions = false\n    //     let disableByOptions = false\n    //\n    //     const requiredOptions = this._modelsOptions && this._modelsOptions.filter(o => o.required === true)\n    //     if (requiredOptions && requiredOptions.length > 0) {\n    //         const requieredCumplished = requiredOptions.map(op => {\n    //             return (op.id in this.state.modelsOptions)\n    //         })\n    //         disableByOptions = requieredCumplished.find(r => r === false) === undefined ? false : true\n    //     }\n    //\n    //\n    //\n    //     if (hasExtension) {\n    //         const selectedExtensions = this.state.selectedExtensions.map((e, index) => {return {index, value:e}}).filter(e => e.value === true)\n    //         const filteredSelectedExtensions = selectedExtensions.map(e => {\n    //             if (e.index === 0) {\n    //                 return this.state.height !== null && this.state.width !== null\n    //             }\n    //             else return this.state.extHeight !== null && this.state.extWidth !== null\n    //         }).filter(e => e === true)\n    //\n    //         disableByExtensions = selectedExtensions.length === 0 || filteredSelectedExtensions.length !== selectedExtensions.length // ||selectedExtensions.find(e => e === false)\n    //     }\n    //\n    //     return !this.state.selectedBrand ||\n    //             !this.state.selectedColor ||\n    //             !this.state.selectedThickness ||\n    //             !this.state.selectedFinished ||\n    //             (!hasExtension && (!this.state.height || !this.state.width)) ||\n    //             disableByExtensions ||\n    //             disableByOptions\n    //             // ((this.isSoleria() || this.isRodapie()) && !this.state.selectedFormat) ||\n    //             // (this.isRodapie() && !this.state.height) ||\n    //             // (this.isJusCut() && (!this.state.height || !this.state.width))\n    // }\n\n    setActiveForm = (activeForm, elementId) => this.setState({ activeForm }, () => {\n        const id = elementId ? elementId : activeForm\n        const element = document.getElementById(id)\n        element.scrollIntoView({block: \"center\"})\n        // const header = document.getElementById(\"header\")\n        // const headerHeight = header.offsetHeight\n        // window.scroll({top: headerHeight})\n    })\n\n    addExtension = () => {\n        const key = uuidv4()\n        this.state.extensions[key] = {\n            shape: null,\n            width: null,\n            height: null,\n            radius: null,\n            samePattern: true,\n            quantity: 1,\n            refs: {\n                widthInput: React.createRef(),\n                heightInput: React.createRef(),\n                radiusInput: React.createRef(),\n                samePatternYes: React.createRef(),\n                samePatternNo: React.createRef()\n            }\n        }\n        const extensionFormKey = 'EXTENSION_' + key\n        this.setActiveForm(extensionFormKey)\n    }\n\n    removeExtension = key => {\n        delete this.state.extensions[key]\n        const lastExtensionIndex = Object.keys(this.state.extensions).length - 1\n        if (lastExtensionIndex >= 0) {\n            const lastExtensionKey = Object.keys(this.state.extensions)[lastExtensionIndex]\n            const extensionFormKey = 'EXTENSION_' + lastExtensionKey\n            this.setActiveForm(extensionFormKey)\n        }\n        else {\n            this.setActiveForm('PACKAGING_AND_LABELING')\n        }\n    }\n\n\n    // clearProduct = () => {\n    //     this.setState({ selectedProduct: null })\n    // }\n    //\n    // onResize = (event, { size }, conversionFactor) => {\n    //     this.setState({ width: parseInt(size.width / conversionFactor, 10), height: parseInt(size.height / conversionFactor, 10) })\n    // }\n\n    onFileChange = async (event, type) => {\n        const file = event.target.files[0];\n        if (file) {\n            // if (!ACCEPTED_EXT[type].includes(file.type)) {\n            //     event.target.value = null\n            //     this.state.selectedFiles[type] = null\n            // } else\n            {\n                const fileSizeInMB = file.size / BYTES_IN_MB\n                if (fileSizeInMB > FILE_LIMIT) {\n                    this.setState({showExceedFileSizeAlert: true})\n                    event.target.value = '';\n                } else {\n                    this.state.selectedFiles[type] = file;\n                }\n            }\n        } else {\n            delete this.state.selectedFiles[type]\n            // this.state.selectedFiles[type] = null;\n        }\n        this.forceUpdate()\n    }\n\n    getFinishOptions = () => {\n        \n        const rawFinish = this.props.secondaryParams && this.state.selectedColor && this.props.secondaryParams.finishes\n        \n        if (rawFinish) {\n            const finishOptions = rawFinish.map(finished => {\n                if (finished !== '') {\n                    const label = this.props.intl.formatMessage({ id: finished })\n                    return {\n                        label,\n                        value: finished\n                    }\n                }                    \n                else return null\n            })\n            if (finishOptions.length === 1) this.handleSelectFinish(finishOptions[0])\n            return finishOptions\n        }\n    }\n\n    getThicknessOptions = () => {\n\n        const rawThickness = this.props.secondaryParams && this.state.selectedColor && this.props.secondaryParams.thicknesses.sort()\n        \n        if (rawThickness) {\n            const thicknessOptions = rawThickness.map(thickness => {\n                return {\n                    label: thickness + ' cm',\n                    value: thickness\n                }\n            })   \n            if (thicknessOptions.length === 1) this.handleSelectThickness(thicknessOptions[0])\n            return thicknessOptions\n        }\n    }\n\n    getDimensionsByShape = (shape) => {\n        if (shape && this._models && this._models[shape]) {\n            const hasDiameter = this._models[shape].width === 'A' && !(!!this._models[shape].height)\n            const isSquare = this._models[shape].width === 'A' && this._models[shape].height === 'A'\n            const hasRadius = !!this._models[shape].radius\n            let dimensionInputsCount = 1\n            if (!hasDiameter || !isSquare) ++dimensionInputsCount\n            if (hasRadius) ++dimensionInputsCount\n            return {\n                isSquare,\n                hasDiameter,\n                hasRadius,\n                dimensionInputsCount\n            }\n        }\n    }\n\n\n    getModelWidth = () => this.state.selectedModel && \n                            this._models && \n                            this._models[this.state.selectedModel] &&\n                            this._models[this.state.selectedModel].width\n\n    getModelHeight = () => this.state.selectedModel && \n                            this._models && \n                            this._models[this.state.selectedModel] &&\n                            this._models[this.state.selectedModel].height\n\n    getModelHasRadius = () => this.state.selectedModel &&\n                            this._models &&\n                            this._models[this.state.selectedModel] &&\n                            !!this._models[this.state.selectedModel].radius\n\n    getShapeHasRadius = (shape) => this._models &&\n                            this._models[shape] &&\n                            !!this._models[shape].radius\n\n    getModelOptions = () => this.state.selectedModel && \n                            this._models && \n                            this._models[this.state.selectedModel] &&\n                            this._models[this.state.selectedModel].options\n\n    getModelInfo = () => this.state.selectedModel && \n                            this._models && \n                            this._models[this.state.selectedModel] &&\n                            this._models[this.state.selectedModel].info\n\n    getGenericInfo = () => this.state.selectedModel && this._modelsInfo\n                            \n    getModelExtension = () => this.state.selectedModel && \n                            this._models && \n                            this._models[this.state.selectedModel] &&\n                            this._models[this.state.selectedModel].ext\n\n    getModelOutlineImages = () => this.state.selectedModel && \n                            this._models && \n                            this._models[this.state.selectedModel] &&\n                            this._models[this.state.selectedModel].outline_images\n\n    getModelDetailImages = () => this.state.selectedModel && \n                            this._models && \n                            this._models[this.state.selectedModel] &&\n                            this._models[this.state.selectedModel].detail_images\n\n    // getModelDimensions() {\n    //     const options = this.getModelOptions()\n    //     return options && options.dimensions.map((v, index) => {\n    //         let dim = v[0]\n    //         if (v[1]) dim += `X${v[1]}`\n    //         return {\n    //             label: `${this.props.intl.formatMessage({id:\"option\", defaultMessage:\"Option\"})} ${index+1}: ${dim} cm`,\n    //             value: index\n    //         }\n    //     })\n    // }\n    //\n    // getModelsRadioOptions() {\n    //     return this._modelsOptions && this._modelsOptions.filter(o => o.type === 'radio')\n    // }\n    //\n    // getModelsFileOptions() {\n    //     return this._modelsOptions && this._modelsOptions.filter(o => o.type === 'file')\n    // }\n    //\n    // getModelsTextOptions() {\n    //     return this._modelsOptions && this._modelsOptions.filter(o => o.type === 'text')\n    // }\n    //\n    // handleSelectModelOption = (modelOption) => {\n    //     const optionIndex = modelOption && modelOption.value\n    //     if (optionIndex === this.state.selectedModelOption) return\n    //     const allOptions = this.getModelOptions().dimensions\n    //     const currentOption = allOptions[optionIndex]\n    //\n    //     let height\n    //     if (currentOption[1]) {\n    //         height = currentOption[1]\n    //     } else {\n    //         const modelHeight = Number.parseFloat(this.getModelHeight())\n    //         const modelHasHeight = !Number.isNaN(modelHeight)\n    //         height = modelHasHeight ? modelHeight : currentOption[0]\n    //     }\n    //\n    //     this.setState({\n    //         selectedModelOption: optionIndex,\n    //         width: currentOption[0],\n    //         height\n    //     })\n    // }\n    //\n    // handleSelectModelsOptions = (e, option, innerOption) => {\n    //     let value\n    //\n    //     switch (option.type) {\n    //         case \"radio\":\n    //             value = innerOption.value\n    //             // if (!value) delete this.state.modelsOptions[option.id]\n    //             // else this.state.modelsOptions[option.id] = {comments: value}\n    //             break\n    //         case \"text\":\n    //             value = e.target.value\n    //             // if (!value) delete this.state.modelsOptions[option.id]\n    //             // else this.state.modelsOptions[option.id] = {sap_field: option.sap_field, value: value}\n    //             break\n    //         case \"file\":\n    //             value = e.target.value\n    //             // if (!value) delete this.state.modelsOptions[option.id]\n    //             // else this.state.modelsOptions[option.id] = {has_file: true}\n    //             break\n    //     }\n    //\n    //     if (!value) {\n    //         delete this.state.modelsOptions[option.id]\n    //     }\n    //     else {\n    //         const optionsState = {}\n    //         if (option.as_comment) {\n    //             optionsState.comments = value\n    //         } else if (option.sap_field) {\n    //             optionsState.sap_field = option.sap_field\n    //             optionsState.value = value\n    //         } else {\n    //             optionsState.has_value = true\n    //         }\n    //         this.state.modelsOptions[option.id] = optionsState\n    //     }\n    // }\n\n    // getZModel = () => {\n    //     if (this.isCustomFurniture()) {\n    //         const selectedModel = this.state.selectedModelOption ? this.state.selectedModelOption : 0\n    //         let model = this._models && this._models[this.state.selectedModel].z_models[selectedModel]\n    //         if (!model) model = this._models && this._models[this.state.selectedModel].z_models[0]\n    //         return model\n    //     }\n    // }\n\n    isMainPieceDone = () => {\n        const passRadius = !this.getModelHasRadius() || !!this.state.radius\n        // const passBlueprint = !(!!this.state.insertsQuantity) || !!this.state.selectedFiles[BLUEPRINT_FILE_TYPE]\n        const passBlueprint = !!this.state.selectedFiles[BLUEPRINT_FILE_TYPE]\n        return !!this.state.selectedModel &&\n                !!this.state.selectedColor &&\n                !!this.state.selectedFinished &&\n                !!this.state.selectedThickness &&\n                !!this.state.selectedAddon &&\n                !!this.state.width && !!this.state.height &&\n                passRadius && passBlueprint\n    }\n\n    isExtensionDone = (extKey) => {\n        const ext = this.state.extensions[extKey]\n        return !!ext && !!ext.shape && ext.width && ext.height && (!this.getShapeHasRadius(ext.shape) || !!ext.radius)\n    }\n\n    areExtensionsDone = () => {\n        try {\n            Object.keys(this.state.extensions).forEach(key => {\n                if (!this.isExtensionDone(key)) {\n                    throw \"undone\";\n                }\n            })\n        } catch (e) {\n            return false\n        }\n        return true\n    }\n\n    isPackagingDone = () => {\n        return !!this.state.selectedPackaging\n    }\n\n    isHeightEqualA = () =>  this.getModelHeight() === 'A' || !this.getModelHeight()\n\n\n    submitCartLine = () => {\n\n        let width = parseFloat(this.state.width)\n        let height = parseFloat(this.state.height)\n        let radius = parseFloat(this.state.radius)\n        height = this.props.metricMeasureFromInput(height, CM_DECIMALS)\n        width = this.props.metricMeasureFromInput(width, CM_DECIMALS)\n        radius = this.props.metricMeasureFromInput(radius, CM_DECIMALS)\n\n        const extensions = Object.values(this.state.extensions).map(ext => {\n            let extWidth = parseFloat(ext.width)\n            let extHeight = parseFloat(ext.height)\n            let extRadius = parseFloat(ext.radius)\n            extWidth = this.props.metricMeasureFromInput(extWidth, CM_DECIMALS)\n            extHeight = this.props.metricMeasureFromInput(extHeight, CM_DECIMALS)\n            extRadius = this.props.metricMeasureFromInput(extRadius, CM_DECIMALS)\n\n            return {\n                quantity: ext.quantity,\n                shape: ext.shape,\n                shapeType: this.props.materials[this.props.selectedElaboration].models[ext.shape].shape_type,\n                width: Math.round((extWidth + Number.EPSILON) * 100) / 100,\n                height: Math.round((extHeight + Number.EPSILON) * 100) / 100,\n                radius: Math.round((extRadius + Number.EPSILON) * 100) / 100,\n                samePattern: ext.samePattern ? 'YES' : 'NO'\n            }\n        })\n\n        this.props.addCartLineCutToSize(\n            this.qtyToAdd, {\n                elaboration: this.props.selectedElaboration,\n                colorName: this.props.catalog[this.state.selectedColor].name,\n                brand: this.state.selectedBrand,\n                colorId: this.state.selectedColor,\n                finish: this.state.selectedFinished,\n                thickness: this.state.selectedThickness,\n                addon: this.state.selectedAddon,\n                width: Math.round((width + Number.EPSILON) * 100) / 100,\n                height: Math.round((height + Number.EPSILON) * 100) / 100,\n                radius: Math.round((radius + Number.EPSILON) * 100) / 100,\n                files: this.state.selectedFiles,\n                shape: this.state.selectedModel,\n                edge: this.state.selectedEdge,\n                bevel: this.state.selectedBevel,\n                inserts: this.state.insertsQuantity,\n                shapeType: this.props.materials[this.props.selectedElaboration].models[this.state.selectedModel].shape_type,\n                packaging: this.state.selectedPackaging,\n                setDefaultPackaging: this.state.setPackingAsDefault,\n                extensions,\n                thumb: this.props.catalog[this.state.selectedColor].img,\n                units: this.props.units\n        })\n\n        this.props.setDefaultFurniturePackaging(this.state.selectedPackaging)\n\n    }\n\n    /**********************************************************************************************/\n\n\n\n    getMeasureLabel = (dimensionsByShape) => {\n        if (dimensionsByShape) {\n            if (dimensionsByShape.hasDiameter) return this.props.intl.formatMessage(Messages.DIAMETER)\n            else if (dimensionsByShape.isSquare) return this.props.intl.formatMessage(Messages.SIDE)\n        }\n        return this.props.intl.formatMessage({ id: 'length' })\n    }\n\n    render() {\n        const { selectedBrand, selectedColor, selectedModel, selectedPackaging, setPackingAsDefault,\n                selectedEdge, selectedThickness, currentBrandOptions, selectedBevel, currentColorOptions,\n                width, height, radius } = this.state\n        const { intl, selectedElaboration, materials, secondaryParams, catalog, units} = this.props\n\n        if (!selectedElaboration) return null\n\n        const modelOptions = selectedElaboration && materials[selectedElaboration] && Object.entries(materials[selectedElaboration].models).map(([key,value]) => {\n            return {\n                label: this.props.intl.formatMessage(Messages[key]),\n                value: key,\n                image: process.env.REACT_APP_API_HOST + value.shape\n            }\n         })\n\n        const packagingOptions = selectedElaboration && materials[selectedElaboration] && Object.entries(materials[selectedElaboration].packaging).map(([key,value]) => {\n            return {\n                label: this.props.intl.formatMessage(Messages[key]),\n                value: key\n            }\n        })\n\n        const edgeOptions = selectedModel && selectedThickness && Object.entries(materials[selectedElaboration].edges)\n            .filter(([key,edge]) => {\n                if (edge.avoid && edge.avoid[selectedModel]) return false\n                if (!edge.restrictions) return true\n                const shapeType = materials[selectedElaboration].models[selectedModel].shape_type\n                const allowedThicknessByEdge = edge.restrictions[selectedBrand] && edge.restrictions[selectedBrand][shapeType]\n                return !!allowedThicknessByEdge && allowedThicknessByEdge.includes(selectedThickness)\n            })\n            .map(([key,edge]) => {\n                return {\n                    label: this.props.intl.formatMessage(Messages[key]),\n                    value: key,\n                    image: process.env.REACT_APP_API_HOST + edge.image\n                }\n            })\n\n        const bevelOptions = selectedThickness && selectedEdge && materials[selectedElaboration].edges[selectedEdge].bevel\n            && Object.entries(materials[selectedElaboration].bevels)\n            .filter(([key,bevel]) => {\n                if (!bevel.restrictions) return true\n                return bevel.restrictions.includes(selectedThickness)\n            })\n            .map(([key,bevel]) => {\n                return {\n                    label: bevel.label,\n                    value: key\n                }\n            })\n\n        const modelOptionsFilteredByEdge = modelOptions && modelOptions.filter((po) => {\n            if (!selectedEdge) return true\n            const selectedEdgeData = materials[selectedElaboration].edges[selectedEdge]\n            if (!selectedEdgeData.restrictions) return true\n            const shapeType = materials[selectedElaboration].models[po.value].shape_type\n            const allowedThicknessByEdge = selectedEdgeData.restrictions[selectedBrand] && selectedEdgeData.restrictions[selectedBrand][shapeType]\n            return !!allowedThicknessByEdge && allowedThicknessByEdge.includes(selectedThickness)\n        })\n\n        // const finishesOptions = this.getFinishOptions()\n        // const thicknessOptions = this.getThicknessOptions()\n\n        const finishesOptions = getFinishOptions(this.props, this.state)\n        const thicknessOptions = getThicknessOptions(this.props, this.state)\n        const addonsOptions = getAddonOptions(this.props, this.state)\n\n        if (addonsOptions && addonsOptions.length === 1) this.handleSelectAddon(addonsOptions[0])\n        if (thicknessOptions && thicknessOptions.length === 1) this.handleSelectThickness(thicknessOptions[0])\n        if (thicknessOptions && finishesOptions.length === 1) this.handleSelectFinish(finishesOptions[0])\n\n        if (catalog && catalog[selectedColor] && /\\d+[xX]\\d+/.exec(catalog[selectedColor].format)) {\n            const maxValues = catalog[selectedColor].format.split(/[xX]/)\n            if (maxValues[0]) maxValues[0] -= this._securityMargin\n            if (maxValues[1]) maxValues[1] -= this._securityMargin\n            this._maxWidth = Math.max(maxValues[0], maxValues[1])\n            this._maxHeight = Math.min(maxValues[0], maxValues[1])\n        } else {\n            this._maxWidth = MAX_WIDTH\n            this._maxHeight = MAX_HEIGHT\n        }\n        this._maxWidth = this.props.measureFromMetric(this._maxWidth, IN_DECIMALS)\n        this._maxHeight = this.props.measureFromMetric(this._maxHeight, IN_DECIMALS)\n\n        const modelImage = this.getModelOutlineImages()\n        const modelDetail = this.getModelDetailImages()\n        // const modelExtensions = this.getModelExtension()\n        // const modelDimensionsOptions = this.getModelDimensions()\n        // const modelsRadioOptions = this.getModelsRadioOptions()\n        // const modelsFileOptions = this.getModelsFileOptions()\n        // const modelsTextOptions = this.getModelsTextOptions()\n\n\n        // const hasMeasureA = this.state.currentMeasures.has('A')\n        // const hasMeasureB = this.state.currentMeasures.has('B')\n        // // const hasMeasureC = this.state.currentMeasures.has('C')\n        // // const hasMeasureD = this.state.currentMeasures.has('D')\n        // const hasDiameter = this.state.currentMeasures.has('0')\n        // const hasRadius = this.state.currentMeasures.has('R')\n        //\n        // let measureInputsCount = 1\n        // if (hasMeasureB) ++measureInputsCount\n        // if (hasRadius) ++measureInputsCount\n\n        const dimensionsByShape = this.getDimensionsByShape(this.state.selectedModel)\n        const extensionsLenght = Object.keys(this.state.extensions).length\n        let extensionsCounter = 0\n\n        const isMainPieceDone = this.isMainPieceDone()\n        const isPackagingDone = this.isPackagingDone()\n\n\n        return (\n            <section className=\"cut_to_size\">\n                <div className=\"cut_to_size__go_back mt-4 mb-3\">\n                    <LocalizedLink routeId={'ROUTE_CUT_TO_SIZE'} header={true} queryString={''} params={{'outlet':''}}>\n                        <GoBack\n                            text={intl.formatMessage(Messages.BACK_SELECT_ELABORATED_TYPE)}\n                            dataCY={'product_detail__go_back'}\n                        />\n                    </LocalizedLink>\n                </div>\n\n                <div className=\"container form\">\n                    <div className=\"row\">\n                        <div className=\"col-12 col-md-7\">\n                            <div style={{ width: '100%' }}>\n                                <ElaborationDetails\n                                    id={selectedElaboration}\n                                    modelImage={modelImage}\n                                    hasDetail={modelDetail ? true : false}\n                                    showDetail={() => this.setState({ showDetail: true })}\n                                    setCurrentModelOption={index => this.setState({ currentModelImageOption: index })}\n                                    modelInfo={this.getModelInfo()}\n                                    genericInfo={this.getGenericInfo()}\n                                    currentModelOption={this.state.currentModelImageOption}\n                                />\n                            </div>\n                        </div>\n                        <div className=\"col-12 col-md-5\">\n                            <div\n                                className={`mt-2 ${this.state.activeForm == 'MAIN_PIECE' ? 'cut_to_size__filters--active' : 'cut_to_size__filters'}`}\n                                style={{\n                                    padding: this.state.activeForm == 'MAIN_PIECE' ? '24px 24px 16px 24px' : '8px 24px 8px 24px'\n                                }}\n                            >\n                                <h5 onClick={() => this.setState({ activeForm: 'MAIN_PIECE' })} style={{ cursor: 'pointer', marginInlineStart: '-8px' }}>\n                                    <div className={`desp_cirle_mark${isMainPieceDone ? '_success' : ''}`}>{isMainPieceDone ? <i className=\"fa fa-check\" /> : 1}</div>\n                                    <Translation id=\"main_piece\" defaultMessage=\"Main piece\" />\n                                    &nbsp;&nbsp;\n                                    <i className={this.state.activeForm == 'MAIN_PIECE' ? 'fa fa-caret-down' : 'fa fa-caret-right'} aria-hidden=\"true\" />\n                                </h5>\n                                <div className={`${this.state.activeForm == 'MAIN_PIECE' ? 'd-block' : 'd-none'}`}>\n                                    {/*<div className=\"d-block\">*/}\n                                    {/**************** MODELO PREDEFINIDO **********************/}\n                                    {selectedElaboration && (\n                                        <React.Fragment>\n                                            <div className=\"group__input m-0\">\n                                                <label htmlFor=\"model-select\" className=\"form-label\">\n                                                    <Translation id=\"predefined_model\" defaultMessage=\"Predefined model\" />*\n                                                </label>\n                                                <div className=\"contain__select--model\">\n                                                    <Select\n                                                        id=\"model-select\"\n                                                        placeholder={this.props.intl.formatMessage(Messages.CHOOSE_MODEL)}\n                                                        options={modelOptions}\n                                                        optionComponent={modelOption}\n                                                        valueComponent={modelValue}\n                                                        value={selectedModel}\n                                                        onChange={selectedOption => this.handleSelectModel(selectedOption)}\n                                                    />\n                                                </div>\n                                            </div>\n                                            <div className=\"field-info\">\n                                                {this.props.hasPreOrder && (\n                                                    <React.Fragment>\n                                                        <Translation id=\"dont-find-shape\" defaultMessage=\"Don't find the shape you are looking for? Ask your quotation\" />\n                                                        <span style={{ color: '#007bff' }}>\n                                                            &nbsp;\n                                                            <a\n                                                                href=\"#\"\n                                                                onClick={e => {\n                                                                    e.preventDefault()\n                                                                    this.goToPreOrder()\n                                                                }}\n                                                            >\n                                                                <Translation id=\"here\" defaultMessage=\"here\" />\n                                                            </a>\n                                                        </span>\n                                                    </React.Fragment>\n                                                )}\n                                            </div>\n                                        </React.Fragment>\n                                    )}\n                                    {/**************** MARCA **********************/}\n                                    {selectedElaboration && (\n                                        <div className=\"group__input\">\n                                            <label htmlFor=\"brand-select\" className=\"form-label\">\n                                                <Translation id=\"brand\" defaultMessage=\"Brand\" />*\n                                            </label>\n                                            <div className=\"contain__select--brand\">\n                                                <Select\n                                                    id=\"brand-select\"\n                                                    placeholder={this.props.intl.formatMessage(Messages.CHOOSE_BRAND)}\n                                                    options={currentBrandOptions}\n                                                    value={selectedBrand}\n                                                    onChange={selectedOption => this.handleSelectBrand(selectedOption)}\n                                                    disabled={!currentBrandOptions || currentBrandOptions.length <= 1}\n                                                    className={`${!currentBrandOptions || currentBrandOptions.length <= 1 ? ' disabled' : ' '}`}\n                                                />\n                                            </div>\n                                        </div>\n                                    )}\n                                    {/**************** COLORES **********************/}\n                                    <div className=\"group__input\">\n                                        <label htmlFor=\"color-select\" className=\"form-label\">\n                                            <Translation id=\"color\" defaultMessage=\"Color\" />*\n                                        </label>\n                                        <Select\n                                            id=\"color-select\"\n                                            placeholder={this.props.intl.formatMessage(Messages.CHOOSE_COLOR)}\n                                            options={currentColorOptions}\n                                            value={selectedColor}\n                                            onChange={selectedOption => this.handleSelectColor(selectedOption)}\n                                            optionComponent={colorOption}\n                                            valueComponent={colorValue}\n                                            disabled={!currentColorOptions || currentColorOptions.length <= 1}\n                                            className={`${!currentColorOptions || currentColorOptions.length <= 1 ? ' disabled' : ' '}`}\n                                        />\n                                    </div>\n                                    {/**************** ACABADOS **********************/}\n                                    <div className=\"group__input group__input--finish\">\n                                        <label htmlFor=\"finish-select\" className=\"form-label\">\n                                            <Translation id=\"finish\" defaultMessage=\"Finish\" />*\n                                        </label>\n                                        <Select\n                                            id=\"finish-select\"\n                                            placeholder={this.props.intl.formatMessage(Messages.CHOOSE_FINISH)}\n                                            options={finishesOptions}\n                                            value={this.state.selectedFinished}\n                                            onChange={selectedOption => this.handleSelectFinish(selectedOption)}\n                                            disabled={!finishesOptions || finishesOptions.length === 0}\n                                            className={`capitalize ${!finishesOptions || finishesOptions.length === 0 ? ' disabled' : ''}`}\n                                        />\n                                    </div>\n                                    {/**************** GROSOR **********************/}\n                                    <div className=\"group__input group__input--thickness\">\n                                        <label htmlFor=\"thickness-select\" className=\"form-label\">\n                                            <Translation id=\"thickness\" defaultMessage=\"Thickness\" />*\n                                        </label>\n                                        <Select\n                                            id=\"thickness-select\"\n                                            // clearable={false}\n                                            placeholder={this.props.intl.formatMessage(Messages.CHOOSE_THICKNESS)}\n                                            options={thicknessOptions}\n                                            value={this.state.selectedThickness}\n                                            onChange={selectedOption => this.handleSelectThickness(selectedOption)}\n                                            disabled={!thicknessOptions || thicknessOptions.length <= 1}\n                                            className={`${!thicknessOptions || thicknessOptions.length === 0 ? ' disabled' : ''}`}\n                                        />\n                                    </div>\n\n                                    {/**************** ADDONS **********************/}\n                                    <div className=\"group__input group__input--addon\">\n                                        <label htmlFor=\"addon-select\" className=\"form-label\">\n                                            <Translation id=\"MAL\" defaultMessage=\"Meshed\" />*\n                                        </label>\n                                        <div data-qas=\"cts_form_default-addon-dropdown\">\n                                            <Select\n                                                id=\"addon-select\"\n                                                placeholder={this.props.intl.formatMessage(Messages.CHOOSE_OPTION)}\n                                                options={addonsOptions}\n                                                value={this.state.selectedAddon}\n                                                onChange={selectedOption => this.handleSelectAddon(selectedOption)}\n                                                disabled={!addonsOptions || addonsOptions.length <= 1}\n                                                className={`capitalize ${!addonsOptions || addonsOptions.length === 0 ? ' disabled' : ''}`}\n                                                // clearable={addonsOptions && addonsOptions.length > 1}\n                                            />\n                                        </div>\n                                    </div>\n\n                                    {/**************** MEDIDAS **********************/}\n                                    {dimensionsByShape && (\n                                        <div className=\"row\">\n                                            <div className={`col-${12 / dimensionsByShape.dimensionInputsCount}`}>\n                                                <label htmlFor=\"width-input\" className=\"measures-label\">\n                                                    {/*{this.props.intl.formatMessage(Messages.MEASURE_A)} (cm)*/}\n                                                    {this.getMeasureLabel(dimensionsByShape)} ({units})*\n                                                </label>\n                                                <input\n                                                    type=\"number\"\n                                                    id=\"width-input\"\n                                                    placeholder={this.getMeasureLabel(dimensionsByShape)}\n                                                    required\n                                                    ref={this.widthInput}\n                                                    value={width}\n                                                    min={this._minWidth}\n                                                    onBlur={event => this.handleChangeMinWidth(event.target.value)}\n                                                    onChange={event => this.handleChangeWidth(event.target.value, null, this.isHeightEqualA())}\n                                                    disabled={!selectedColor}\n                                                    className={`form-control ${selectedColor ? ' ' : ' disabled'}`}\n                                                />\n                                            </div>\n\n                                            {!dimensionsByShape.isSquare && !dimensionsByShape.hasDiameter && (\n                                                <div className={`col-${12 / dimensionsByShape.dimensionInputsCount}`}>\n                                                    <label htmlFor=\"height-input\" className=\"measures-label\">\n                                                        <Translation id=\"width\" defaultMessage=\"Width\" /> ({units})*\n                                                    </label>\n                                                    <input\n                                                        type=\"number\"\n                                                        id=\"height-input\"\n                                                        placeholder={this.props.intl.formatMessage({ id: 'width' })}\n                                                        required\n                                                        ref={this.heightInput}\n                                                        value={height}\n                                                        onBlur={event => this.handleChangeMinHeight(event.target.value)}\n                                                        min={this._minHeight}\n                                                        onChange={event => this.handleChangeHeight(event.target.value)}\n                                                        disabled={!selectedColor}\n                                                        className={`form-control ${selectedColor ? ' ' : ' disabled'}`}\n                                                    />\n                                                </div>\n                                            )}\n\n                                            {dimensionsByShape.hasRadius && (\n                                                <div className={`col-${12 / dimensionsByShape.dimensionInputsCount}`}>\n                                                    <label htmlFor=\"radius-input\" className=\"measures-label\">\n                                                        <Translation id=\"radius\" defaultMessage=\"Radius\" /> ({units})*\n                                                    </label>\n                                                    <input\n                                                        type=\"number\"\n                                                        id=\"radius-input\"\n                                                        placeholder={this.props.intl.formatMessage({ id: 'radius' })}\n                                                        required\n                                                        ref={this.radiusInput}\n                                                        value={radius}\n                                                        onChange={event => this.handleChangeRadius(event.target.value)}\n                                                        disabled={!selectedColor}\n                                                        className={`form-control ${selectedColor ? ' ' : ' disabled'}`}\n                                                    />\n                                                </div>\n                                            )}\n\n                                            <div className=\"col-12\">\n                                                <div className=\"field-info\">\n                                                    {this.props.intl.formatMessage(Messages.MAX_DIMENSIONS)}:&nbsp;\n                                                    {dimensionsByShape.hasDiameter || dimensionsByShape.isSquare ? this._maxHeight : this._maxWidth}&nbsp;\n                                                    {!dimensionsByShape.isSquare && !dimensionsByShape.hasDiameter ? `x ${this._maxHeight} ` : ''}\n                                                    {/*{dimensionsByShape.hasRadius ? `x ${this._maxRadius}` : ''}&nbsp;*/}\n                                                    {units}\n                                                    {/* { this.props.intl.formatMessage(Messages.MAX_DIMENSIONS)}: <CalculateMeasure cm={this._maxWidth}/> x <CalculateMeasure cm={this._maxHeight}/> <CalculateMeasure/> */}\n                                                </div>\n                                            </div>\n                                        </div>\n                                    )}\n\n                                    {/**************** TIPOS DE CANTO  **********************/}\n                                    {edgeOptions && (\n                                        <div className=\"group__input\">\n                                            <label htmlFor=\"edge-select\" className=\"form-label\">\n                                                <Translation id=\"edge\" defaultMessage=\"Edge\" />\n                                            </label>\n                                            <div className=\"contain__select--edge\">\n                                                <Select\n                                                    id=\"edge-select\"\n                                                    placeholder={this.props.intl.formatMessage(Messages.CHOOSE_EDGE)}\n                                                    options={edgeOptions}\n                                                    optionComponent={modelOption}\n                                                    valueComponent={modelValue}\n                                                    value={selectedEdge}\n                                                    onChange={selectedOption => this.handleSelectEdge(selectedOption)}\n                                                />\n                                            </div>\n                                        </div>\n                                    )}\n                                    {/**************** BISEL DIMENSIONES *************************/}\n                                    {bevelOptions && (\n                                        <div className=\"group__input\">\n                                            <label htmlFor=\"bevel-select\" className=\"form-label\">\n                                                <Translation id=\"bevel\" defaultMessage=\"Bevel\" />\n                                            </label>\n                                            <div className=\"contain__select--bevel\">\n                                                <Select\n                                                    id=\"bevel-select\"\n                                                    placeholder={this.props.intl.formatMessage(Messages.CHOOSE_BEVEL)}\n                                                    options={bevelOptions}\n                                                    value={selectedBevel}\n                                                    onChange={selectedOption => this.handleChangeBevel(selectedOption)}\n                                                />\n                                            </div>\n                                        </div>\n                                    )}\n                                    {/**************** Nº DE INSERTOS *************************/}\n                                    <div className=\"row\">\n                                        <div className=\"col-12\">\n                                            <label htmlFor=\"inserts-input\" className=\"form-label\">\n                                                <Translation id=\"inserts_qty\" defaultMessage=\"Inserts quantity\" />\n                                            </label>\n                                            <input\n                                                type=\"number\"\n                                                id=\"inserts-input\"\n                                                ref={this.insertsInput}\n                                                placeholder={this.props.intl.formatMessage({ id: 'inserts_qty' })}\n                                                value={this.state.insertsQuantity}\n                                                step={1}\n                                                onChange={event => this.handleChangeInsertsQuantity(event.target.value)}\n                                                disabled={!selectedColor}\n                                                className={`form-control ${selectedColor ? ' ' : ' disabled'}`}\n                                                onKeyPress={e => {\n                                                    if (!/[0-9]/.test(e.key)) e.preventDefault()\n                                                }}\n                                            />\n                                        </div>\n                                        <div className=\"col-12\">\n                                            <div className=\"field-info\">\n                                                <Translation id=\"inserts-advise\" defaultMessage=\"The position of the inserts must be correctly indicated on the attached drawing\" />\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    {/**************** ADJUNTAR DOCUMENTO **********************/}\n                                    <div className=\"colgroup__input\">\n                                        <label htmlFor=\"attach_blueprint_file\" className=\"form-label\">\n                                            <Translation id=\"blueprint\" defaultMessage=\"Blueprint\" />*{/*{this.state.insertsQuantity > 0 ? '*' : ''}*/}\n                                        </label>\n                                        <div className=\"attach-file\">\n                                            <input\n                                                id=\"attach_blueprint_file\"\n                                                type=\"file\"\n                                                accept={ACCEPTED_EXT[BLUEPRINT_FILE_TYPE].join()}\n                                                onChange={e => this.onFileChange(e, BLUEPRINT_FILE_TYPE)}\n                                                // accept=\"image/jpeg, image/png, application/pdf\"\n                                            />\n                                            {!!this.state.selectedFiles[BLUEPRINT_FILE_TYPE] && (\n                                                <i\n                                                    className=\"fal fa-times null_attached_file_button\"\n                                                    onClick={e => {\n                                                        const fileInput = document.getElementById('attach_blueprint_file')\n                                                        fileInput.value = null\n                                                        this.state.selectedFiles[BLUEPRINT_FILE_TYPE] = null\n                                                        this.forceUpdate()\n                                                    }}\n                                                />\n                                            )}\n                                        </div>\n                                        <div className=\"field-info\">\n                                            <Translation id=\"exceed_file_limit\" defaultMessage={`The file has a limit of {fileLimit} MB`} values={{ fileLimit: FILE_LIMIT }} />\n                                        </div>\n                                    </div>\n                                    {/**************** COMENTARIOS **********************/}\n                                    {/*        <div className=\"group__input\">*/}\n                                    {/*            <label htmlFor=\"input-comments\" className=\"form-label\">*/}\n                                    {/*                <Translation id=\"comment\" defaultMessage=\"Comments\" />*/}\n                                    {/*            </label>*/}\n                                    {/*            <textarea*/}\n                                    {/*                className=\"form-control\"*/}\n                                    {/*                id=\"input-comments\"*/}\n                                    {/*                rows=\"3\"*/}\n                                    {/*                maxLength=\"2499\"*/}\n                                    {/*                onChange={e => {*/}\n                                    {/*                    e && this.setState({comments:e.target.value})*/}\n                                    {/*                }}*/}\n                                    {/*            />*/}\n                                    {/*        </div> */}\n                                    {/**************** CANTIDAD **********************/}\n                                    <div className=\"row\">\n                                        <div className=\"col-6 group__input\">\n                                            <div>\n                                                <label htmlFor=\"quantity-input\" className=\"form-label\">\n                                                    <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                                </label>\n                                                <InputNumber\n                                                    id=\"quantity-input\"\n                                                    className=\"form-control\"\n                                                    value={this.qtyToAdd}\n                                                    change={qty => {\n                                                        this.qtyToAdd = qty\n                                                        this.forceUpdate()\n                                                    }}\n                                                    step={1}\n                                                    oldStyle={true}\n                                                />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div>\n                                        <span className=\"field-info\"><strong><Translation id=\"mandatory_field_meaning\" defaultMessage=\"* Means mandatory field\" /></strong></span>\n                                    </div>\n                                    {/**************** ADD EXTENSION **********************/}\n                                    {isMainPieceDone && extensionsLenght === 0 && (\n                                        <div className=\"row\">\n                                            <div className=\"col-12 group__input mb-1\">\n                                                <span style={{ fontWeight: 500, cursor: 'pointer' }} onClick={this.addExtension}>\n                                                    <i className=\"fa fa-plus\" style={{ fontWeight: 500 }} />\n                                                    &nbsp;&nbsp;\n                                                    <Translation id=\"add-extension\" defaultMessage=\"Add extension\" />\n                                                </span>\n                                                <div className=\"field-info m-0 px-2\">\n                                                    <Translation\n                                                        id=\"ext_explanation\"\n                                                        defaultMessage=\"Extra piece, with the same characteristics as the main piece, which allows you to change the shape and size of the table\"\n                                                    />\n                                                </div>\n                                            </div>\n                                        </div>\n                                    )}\n                                </div>\n                            </div>\n                            {/******************************** EXTENSIONES **************************************/}\n                            {Object.entries(this.state.extensions).map(([key, extension]) => {\n                                const extensionKey = 'EXTENSION_' + key\n                                const isOpen = this.state.activeForm === extensionKey\n                                ++extensionsCounter\n                                const isLastExtension = extensionsLenght === extensionsCounter\n                                const extDimensionsByShape = this.getDimensionsByShape(extension.shape)\n                                const isExtensionDone = this.isExtensionDone(key)\n\n                                return (\n                                    <div\n                                        id={extensionKey}\n                                        key={extensionKey}\n                                        className={`mt-2 cut_to_size__filters ${isOpen ? 'cut_to_size__filters--active' : ''}`}\n                                        style={{\n                                            padding: isOpen ? '24px 24px 16px 24px' : '8px 24px 8px 24px'\n                                        }}\n                                    >\n                                        <h5 onClick={() => this.setActiveForm(extensionKey)} style={{ cursor: 'pointer', marginInlineStart: '-8px' }}>\n                                            <div className={`desp_cirle_mark${isExtensionDone ? '_success' : ''}`}>\n                                                {isExtensionDone ? <i className=\"fa fa-check\" /> : 1 + extensionsCounter}\n                                            </div>\n                                            <Translation id=\"extension\" defaultMessage=\"Extension\" />\n                                            &nbsp;&nbsp;\n                                            <i className={isOpen ? 'fa fa-caret-down' : 'fa fa-caret-right'} aria-hidden=\"true\" />\n                                        </h5>\n                                        <div className={isOpen ? 'd-block' : 'd-none'}>\n                                            {/**************** MODELO PREDEFINIDO **********************/}\n                                            <div className=\"group__input\">\n                                                <label htmlFor={`${key}_model-select`} className=\"form-label\">\n                                                    <Translation id=\"shape\" defaultMessage=\"Shape\" />*\n                                                </label>\n                                                <div className=\"contain__select--model\">\n                                                    <Select\n                                                        id={`${key}_model-select`}\n                                                        placeholder={this.props.intl.formatMessage(Messages.CHOOSE_SHAPE)}\n                                                        options={modelOptionsFilteredByEdge}\n                                                        optionComponent={modelOption}\n                                                        valueComponent={modelValue}\n                                                        value={extension.shape}\n                                                        onChange={selectedOption => this.handleSelectModel(selectedOption, key)}\n                                                    />\n                                                </div>\n                                            </div>\n\n                                            {extDimensionsByShape && (\n                                                <div className=\"row\">\n                                                    <div className={`col-${12 / extDimensionsByShape.dimensionInputsCount}`}>\n                                                        <label htmlFor={`${key}_width-input`} className=\"measures-label\">\n                                                            {this.getMeasureLabel(extDimensionsByShape)} ({units})*\n                                                        </label>\n                                                        <input\n                                                            type=\"number\"\n                                                            id={`${key}_width-input`}\n                                                            placeholder={this.getMeasureLabel(extDimensionsByShape)}\n                                                            required\n                                                            ref={extension.refs.widthInput}\n                                                            value={extension.width}\n                                                            onChange={event => this.handleChangeWidth(event.target.value, key, extDimensionsByShape.isSquare || extDimensionsByShape.hasDiameter)}\n                                                            onBlur={event => this.handleChangeMinWidth(event.target.value, key)}\n                                                            min={this._minWidth}\n                                                            className=\"form-control\"\n                                                        />\n                                                    </div>\n                                                    {!extDimensionsByShape.isSquare && !extDimensionsByShape.hasDiameter && (\n                                                        <div className={`col-${12 / extDimensionsByShape.dimensionInputsCount}`}>\n                                                            <label htmlFor={`${key}_height-input`} className=\"measures-label\">\n                                                                <Translation id=\"width\" defaultMessage=\"Width\" /> ({units})*\n                                                            </label>\n                                                            <input\n                                                                type=\"number\"\n                                                                id={`${key}_height-input`}\n                                                                placeholder={this.props.intl.formatMessage({ id: 'width' })}\n                                                                required\n                                                                ref={extension.refs.heightInput}\n                                                                value={extension.height}\n                                                                onChange={event => this.handleChangeHeight(event.target.value, key)}\n                                                                onBlur={event => this.handleChangeMinHeight(event.target.value, key)}\n                                                                min={this._minHeight}\n                                                                className=\"form-control\"\n                                                            />\n                                                        </div>\n                                                    )}\n                                                    {extDimensionsByShape.hasRadius && (\n                                                        <div className={`col-${12 / extDimensionsByShape.dimensionInputsCount}`}>\n                                                            <label htmlFor={`${key}_radius-input`} className=\"measures-label\">\n                                                                <Translation id=\"radius\" defaultMessage=\"Radius\" /> ({units})*\n                                                            </label>\n                                                            <input\n                                                                type=\"number\"\n                                                                id={`${key}_radius-input`}\n                                                                placeholder={this.props.intl.formatMessage({ id: 'radius' })}\n                                                                required\n                                                                ref={extension.refs.radiusInput}\n                                                                value={extension.radius}\n                                                                onChange={event => this.handleChangeRadius(event.target.value, key)}\n                                                                className=\"form-control\"\n                                                            />\n                                                        </div>\n                                                    )}\n                                                    <div className=\"col-12\">\n                                                        <div className=\"field-info mb-2\">\n                                                            {this.props.intl.formatMessage(Messages.MAX_DIMENSIONS)}:&nbsp;\n                                                            {extDimensionsByShape.hasDiameter || extDimensionsByShape.isSquare ? this._maxHeight : this._maxWidth}&nbsp;\n                                                            {!extDimensionsByShape.isSquare && !extDimensionsByShape.hasDiameter ? `x ${this._maxHeight} ` : ''}\n                                                            {/*{extDimensionsByShape.hasRadius ? `x ${this._maxRadius}` : ''}&nbsp;*/}\n                                                            {units}\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            )}\n\n                                            {/**************** MISMO PATRÓN *******************/}\n                                            <div className=\"group__input\">\n                                                <label htmlFor={`${key}_pattern_radio`} className=\"form-label\">\n                                                    <Translation id=\"use_same_pattern\" defaultMessage=\"Do you want to use same vein or pattern as main piece?\" />\n                                                </label>\n                                                <div id={`${key}_pattern_radio`} className=\"d-flex\">\n                                                    <div>\n                                                        <input\n                                                            id={`${key}_pattern_radio_yes`}\n                                                            style={{\n                                                                transform: 'scale(1.5)',\n                                                                margin: '4px'\n                                                            }}\n                                                            // checked={this.state.extensions[key].samePattern}\n                                                            ref={extension.refs.samePatternYes}\n                                                            value=\"true\"\n                                                            name=\"same_pattern_radio\"\n                                                            type=\"radio\"\n                                                            onClick={e => (extension.samePattern = true)}\n                                                        />\n                                                        <label htmlFor={`${key}_pattern_radio_yes`} className=\"form-label\">\n                                                            &nbsp;\n                                                            <b>\n                                                                <Translation id=\"yes\" defaultMessage=\"Yes\" />\n                                                            </b>\n                                                        </label>\n                                                    </div>\n                                                    <div style={{ width: '16px' }} />\n                                                    <div>\n                                                        <input\n                                                            id={`${key}_pattern_radio_no`}\n                                                            style={{\n                                                                transform: 'scale(1.5)',\n                                                                margin: '4px'\n                                                            }}\n                                                            // checked={!this.state.extensions[key].samePattern}\n                                                            ref={extension.refs.samePatternNo}\n                                                            name=\"same_pattern_radio\"\n                                                            value=\"false\"\n                                                            type=\"radio\"\n                                                            onClick={e => (extension.samePattern = false)}\n                                                        />\n                                                        <label htmlFor={`${key}_pattern_radio_no`} className=\"form-label\">\n                                                            &nbsp;\n                                                            <b>\n                                                                <Translation id=\"no\" defaultMessage=\"No\" />\n                                                            </b>\n                                                        </label>\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                            {/**************** CANTIDAD **********************/}\n                                            <div className=\"row\">\n                                                <div className=\"col-6 group__input\">\n                                                    <div>\n                                                        <label htmlFor={`${key}_quantity-input`} className=\"form-label\">\n                                                            <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                                        </label>\n                                                        <InputNumber\n                                                            id={`${key}_quantity-input`}\n                                                            className=\"form-control\"\n                                                            value={extension.quantity}\n                                                            change={qty => {\n                                                                extension.quantity = qty\n                                                                this.forceUpdate()\n                                                            }}\n                                                            step={1}\n                                                            oldStyle={true}\n                                                        />\n                                                    </div>\n                                                </div>\n                                            </div>\n\n                                            {/****************  ADD/DEL EXTENSIONS  **********************/}\n                                            <div className=\"row\">\n                                                <div className=\"col-12 group__input\" style={{ margin: '0.4rem 0' }}>\n                                                    <div style={{ fontyWeight: 500, cursor: 'pointer' }} onClick={() => this.removeExtension(key)}>\n                                                        <i className=\"fa fa-minus\" style={{ fontWeight: 500 }} />\n                                                        &nbsp;&nbsp;\n                                                        <Translation id=\"del-this-extension\" defaultMessage=\"Delete this extension\" />\n                                                    </div>\n                                                </div>\n                                                {isLastExtension && (\n                                                    <div className=\"col-12 group__input mb-1\">\n                                                        <div style={{ fontWeight: 500, cursor: 'pointer' }} onClick={this.addExtension}>\n                                                            <i className=\"fa fa-plus\" style={{ fontWeight: 500 }} />\n                                                            &nbsp;&nbsp;\n                                                            <Translation id=\"add-additional-extension\" defaultMessage=\"Add an additional extension\" />\n                                                        </div>\n                                                    </div>\n                                                )}\n                                            </div>\n                                        </div>\n                                    </div>\n                                )\n                            })}\n                            {/********************************* PACKAGING ***************************************/}\n                            <div\n                                id=\"PACKAGING_AND_LABELING\"\n                                className={`mt-2 ${this.state.activeForm == 'PACKAGING_AND_LABELING' ? 'cut_to_size__filters--active' : 'cut_to_size__filters'}`}\n                                style={{\n                                    padding: this.state.activeForm == 'PACKAGING_AND_LABELING' ? '24px 24px 16px 24px' : '8px 24px 8px 24px'\n                                }}\n                            >\n                                <h5 onClick={() => this.setActiveForm('PACKAGING_AND_LABELING')} style={{ cursor: 'pointer', marginInlineStart: '-8px' }}>\n                                    <div className={`desp_cirle_mark${isPackagingDone ? '_success' : ''}`}>\n                                        {isPackagingDone ? <i className=\"fa fa-check\" /> : 2 + extensionsCounter}\n                                    </div>\n                                    <Translation id=\"packaging_labeling\" defaultMessage=\"Packaging and Labeling\" />\n                                    &nbsp;&nbsp;\n                                    <i className={this.state.activeForm == 'PACKAGING_AND_LABELING' ? 'fa fa-caret-down' : 'fa fa-caret-right'} /*aria-hidden=\"true\"*/ />\n                                </h5>\n                                <div className={`${this.state.activeForm == 'PACKAGING_AND_LABELING' ? 'd-block' : 'd-none'}`}>\n                                    <div className=\"group__input mb-0\">\n                                        <label htmlFor=\"brand-select\" className=\"form-label\">\n                                            <Translation id=\"packaging\" defaultMessage=\"Packaging\" />*\n                                        </label>\n                                        <div className=\"contain__select--packaging\">\n                                            <Select\n                                                id=\"packaging-select\"\n                                                placeholder={this.props.intl.formatMessage(Messages.CHOOSE_PACKAGING)}\n                                                options={packagingOptions}\n                                                value={selectedPackaging}\n                                                onChange={selectedOption => this.handleSelectPackaging(selectedOption)}\n                                                // disabled={!currentBrandOptions || currentBrandOptions.length <= 1}\n                                                // className={`${!currentBrandOptions || currentBrandOptions.length <= 1 ? ' disabled' : ' '}`}\n                                            />\n                                        </div>\n                                    </div>\n                                    <div className=\"field-info\">\n                                        <Translation id=\"packaging_info_link\" defaultMessage=\"Information about types of packaging\" />\n                                        <span style={{ color: '#007bff' }}>\n                                            &nbsp;\n                                            <a\n                                                href=\"#\"\n                                                onClick={e => {\n                                                    e.preventDefault()\n                                                    this.props.downloadPackagingTypesPdf()\n                                                }}\n                                            >\n                                                <Translation id=\"here\" defaultMessage=\"here\" />\n                                            </a>\n                                        </span>\n                                    </div>\n\n                                    <div className=\"group__input d-flex align-items-baseline mt-1\">\n                                        <input\n                                            id=\"set-default-packaging-cb\"\n                                            style={{\n                                                transform: 'scale(1.5)',\n                                                margin: '4px'\n                                            }}\n                                            value={setPackingAsDefault}\n                                            type=\"checkbox\"\n                                            onClick={e => this.setState({ setPackingAsDefault: e.target.checked })}\n                                        />\n                                        &nbsp;&nbsp;\n                                        <div style={{ transform: 'translate(0, -2px)' }}>\n                                            <label\n                                                style={{\n                                                    fontSize: '0.8rem',\n                                                    fontyWeight: 500,\n                                                    margin: 0\n                                                }}\n                                                htmlFor=\"set-default-packaging-cb\"\n                                                className=\"form-label\"\n                                            >\n                                                <Translation id=\"set-default-packaging\" defaultMessage=\"Set this packaging type as default\" />\n                                            </label>\n                                            <div style={{ fontSize: '0.65rem', fontyWeight: 300, margin: 0 }}>\n                                                <Translation id=\"set-default-packaging-advise\" defaultMessage=\"You can change this setting at any moment\" />\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    {/**************** ADJUNTAR ETIQUETAS **********************/}\n                                    <div className=\"colgroup__input\">\n                                        <label htmlFor=\"attach_labels_file\" className=\"form-label\">\n                                            <Translation id=\"packaging_labels\" defaultMessage=\"Packaging labels\" />\n                                        </label>\n                                        <div className=\"attach-file\">\n                                            <input\n                                                id=\"attach_labels_file\"\n                                                type=\"file\"\n                                                accept={ACCEPTED_EXT[PACKAGING_LABELS_FILE_TYPE].join()}\n                                                onChange={e => this.onFileChange(e, PACKAGING_LABELS_FILE_TYPE)}\n                                                // accept=\"image/jpeg, image/png, application/pdf\"\n                                            />\n                                            {!!this.state.selectedFiles[PACKAGING_LABELS_FILE_TYPE] && (\n                                                <i\n                                                    className=\"fal fa-times null_attached_file_button\"\n                                                    onClick={e => {\n                                                        const fileInput = document.getElementById('attach_labels_file')\n                                                        fileInput.value = null\n                                                        delete this.state.selectedFiles[PACKAGING_LABELS_FILE_TYPE]\n                                                        // this.state.selectedFiles[PACKAGING_LABELS_FILE_TYPE] = null\n                                                        this.forceUpdate()\n                                                    }}\n                                                />\n                                            )}\n                                        </div>\n                                        <div className=\"field-info\">\n                                            <Translation\n                                                style={{ all: 'revert' }}\n                                                id=\"exceed_file_limit\"\n                                                defaultMessage={`The file has a limit of {fileLimit} MB`}\n                                                values={{ fileLimit: FILE_LIMIT }}\n                                            />\n                                        </div>\n                                    </div>\n\n                                    {/**************** ADJUNTAR DOCUMENTO **********************/}\n                                    <div className=\"colgroup__input\">\n                                        <label htmlFor=\"attach_packaging_document_file\" className=\"form-label\">\n                                            <Translation id=\"attached_document\" defaultMessage=\"Attached document\" />\n                                        </label>\n                                        <div className=\"attach-file\">\n                                            <input\n                                                id=\"attach_packaging_document_file\"\n                                                type=\"file\"\n                                                accept={ACCEPTED_EXT[PACKAGING_DOCUMENT_FILE_TYPE].join()}\n                                                onChange={e => this.onFileChange(e, PACKAGING_DOCUMENT_FILE_TYPE)}\n                                                // accept=\"image/jpeg, image/png, application/pdf\"\n                                            />\n                                            {!!this.state.selectedFiles[PACKAGING_DOCUMENT_FILE_TYPE] && (\n                                                <i\n                                                    className=\"fal fa-times null_attached_file_button\"\n                                                    onClick={e => {\n                                                        const fileInput = document.getElementById('attach_packaging_document_file')\n                                                        fileInput.value = null\n                                                        delete this.state.selectedFiles[PACKAGING_DOCUMENT_FILE_TYPE]\n                                                        // this.state.selectedFiles[PACKAGING_DOCUMENT_FILE_TYPE] = null\n                                                        this.forceUpdate()\n                                                    }}\n                                                />\n                                            )}\n                                        </div>\n                                        <div className=\"field-info\">\n                                            <Translation\n                                                id=\"attached_document_info\"\n                                                defaultMessage={'Add here the information you want to include within the packaging. May involve expenses and associated costs'}\n                                            />\n                                        </div>\n                                    </div>\n                                    <div>\n                                        <span className=\"field-info\"><strong><Translation id=\"mandatory_field_meaning\" defaultMessage=\"* Means mandatory field\" /></strong></span>\n                                    </div>\n                                </div>\n                            </div>\n                            {/********************************** SELECTED ITEMS **************************************/}\n                            {selectedModel && (\n                                <div className=\"mt-3 pb-3 cut_to_size__filters\">\n                                    <div style={{ fontSize: '1rem', fontWeight: 500, marginBottom: '8px' }}>\n                                        <Translation id=\"selected-items\" defaultMessage=\"Selected items\" />\n                                    </div>\n                                    <div className=\"d-flex mb-1 align-items-start\">\n                                        <img\n                                            src={process.env.REACT_APP_API_HOST + materials[selectedElaboration].models[selectedModel].shape}\n                                            width=\"32px\"\n                                            style={{ margin: '0 16px' }}\n                                        />\n                                        <div>\n                                            <div style={{ fontSize: '0.9rem', fontWeight: 700 }}>\n                                                <Translation id=\"main_piece\" defaultMessage=\"Main piece\" />\n                                                &nbsp;({this.qtyToAdd} ud)\n                                            </div>\n                                            <div style={{ fontSize: '0.8rem' }}>\n                                                <strong>\n                                                    <div style={{ textTransform: 'capitalize' }}>\n                                                        {selectedModel && this.props.intl.formatMessage(Messages[selectedModel])}\n                                                        {selectedBrand && ` / ${selectedBrand.toLowerCase()}`}\n                                                        {selectedColor && ` / ${catalog[selectedColor].name.toLowerCase()}`}\n                                                    </div>\n                                                </strong>\n                                                {!!this.state.selectedThickness && (\n                                                    <div>\n                                                        <strong>\n                                                            <Translation id=\"thickness\" defaultMessage=\"Thickness\" />:\n                                                        </strong>\n                                                        &nbsp;{this.state.selectedThickness} cm\n                                                    </div>\n                                                )}\n                                                {!!this.state.selectedFinished && (\n                                                    <div>\n                                                        <strong>\n                                                            <Translation id=\"finish\" defaultMessage=\"Finish\" />:\n                                                        </strong>\n                                                        &nbsp;{this.props.intl.formatMessage({ id: this.state.selectedFinished })}\n                                                    </div>\n                                                )}\n                                                {!!(this.state.width && this.state.height) && !dimensionsByShape.hasDiameter && (\n                                                    <div>\n                                                        <strong>\n                                                            <Translation id=\"dimensions\" defaultMessage=\"Dimensions\" />:\n                                                        </strong>\n                                                        &nbsp;{this.state.width}x{this.state.height} {units}\n                                                    </div>\n                                                )}\n                                                {!!this.state.width && dimensionsByShape.hasDiameter && (\n                                                    <div>\n                                                        <strong>\n                                                            <Translation id=\"diameter\" defaultMessage=\"Diameter\" />:\n                                                        </strong>\n                                                        &nbsp;{/*&#8960;*/}\n                                                        {this.state.width} {units}\n                                                    </div>\n                                                )}\n                                                {!!this.state.radius && (\n                                                    <div>\n                                                        <strong>\n                                                            <Translation id=\"radius\" defaultMessage=\"Radius\" />:\n                                                        </strong>\n                                                        &nbsp;{this.state.radius} {units}\n                                                    </div>\n                                                )}\n                                                {!!this.state.selectedEdge && (\n                                                    <div>\n                                                        <strong>\n                                                            <Translation id=\"edge\" defaultMessage=\"Edge\" />:\n                                                        </strong>\n                                                        &nbsp;{this.props.intl.formatMessage({ id: this.props.intl.formatMessage(Messages[this.state.selectedEdge]) })}\n                                                    </div>\n                                                )}\n                                                {!!this.state.selectedBevel && (\n                                                    <div>\n                                                        <strong>\n                                                            <Translation id=\"bevel\" defaultMessage=\"Bevel\" />:\n                                                        </strong>\n                                                        &nbsp;{materials[selectedElaboration].bevels[this.state.selectedBevel].label}\n                                                    </div>\n                                                )}\n                                                {!!this.state.insertsQuantity && (\n                                                    <div>\n                                                        <strong>\n                                                            <Translation id=\"inserts_qty\" defaultMessage=\"Inserts quantity\" />:\n                                                        </strong>\n                                                        &nbsp;{this.state.insertsQuantity}\n                                                    </div>\n                                                )}\n                                            </div>\n                                        </div>\n                                    </div>\n                                    {/************ EXTENSIONS *******************/}\n                                    {Object.values(this.state.extensions).map(ext => {\n                                        const extDimensionsByShape = this.getDimensionsByShape(ext.shape)\n\n                                        return (\n                                            ext.shape && (\n                                                <div className=\"d-flex mb-1 d-flex mb-1 align-items-start\">\n                                                    <img\n                                                        src={process.env.REACT_APP_API_HOST + materials[selectedElaboration].models[ext.shape].shape}\n                                                        width=\"32px\"\n                                                        style={{ margin: '0 16px' }}\n                                                    />\n                                                    <div>\n                                                        <div style={{ fontSize: '0.9rem', fontWeight: 700 }}>\n                                                            <Translation id=\"extension\" defaultMessage=\"Extension\" />\n                                                            &nbsp;({ext.quantity} ud)\n                                                        </div>\n                                                        <div style={{ fontSize: '0.8rem' }}>\n                                                            <strong>\n                                                                <div style={{ textTransform: 'capitalize' }}>{ext.shape && this.props.intl.formatMessage(Messages[ext.shape])}</div>\n                                                            </strong>\n                                                            {!!(ext.width && ext.height) && !extDimensionsByShape.hasDiameter && (\n                                                                <div>\n                                                                    <strong>\n                                                                        <Translation id=\"dimensions\" defaultMessage=\"Dimensions\" />:\n                                                                    </strong>\n                                                                    &nbsp;{ext.width}x{ext.height} {units}\n                                                                </div>\n                                                            )}\n                                                            {!!ext.width && extDimensionsByShape.hasDiameter && (\n                                                                <div>\n                                                                    <strong>\n                                                                        <Translation id=\"diameter\" defaultMessage=\"Diameter\" />:\n                                                                    </strong>\n                                                                    &nbsp;{ext.width} {units}\n                                                                </div>\n                                                            )}\n                                                            {!!ext.radius && (\n                                                                <div>\n                                                                    <strong>\n                                                                        <Translation id=\"radius\" defaultMessage=\"Radius\" />:\n                                                                    </strong>\n                                                                    &nbsp;{ext.radius} {units}\n                                                                </div>\n                                                            )}\n                                                            {!!ext.samePattern && (\n                                                                <div>\n                                                                    <Translation id=\"same_pattern\" defaultMessage=\"Same vein or pattern as main piece\" />\n                                                                </div>\n                                                            )}\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            )\n                                        )\n                                    })}\n                                    {/************ PACKAGING *******************/}\n                                    {selectedPackaging && (\n                                        <div className=\"d-flex mb-1\">\n                                            {/*<img src={process.env.REACT_APP_API_HOST + materials[selectedElaboration].models[ext.shape].shape}*/}\n                                            {/*     width=\"32px\"*/}\n                                            {/*     style={{margin:\"0 16px\"}}*/}\n                                            {/*/>*/}\n                                            <div style={{ width: '64px' }} />\n                                            <div>\n                                                <div style={{ fontSize: '0.9rem', fontWeight: 700 }}>\n                                                    <Translation id=\"packaging\" defaultMessage=\"Packaging\" />\n                                                </div>\n                                                <div style={{ fontSize: '0.8rem' }}>{this.props.intl.formatMessage(Messages[selectedPackaging])}</div>\n                                            </div>\n                                        </div>\n                                    )}\n                                </div>\n                            )}\n                            <div className=\"mt-3 cut_to_size__filters\" style={{ borderBottom: 'none' }}>\n                                {/*********************** PRECIO **************************/}\n                                {/*<div className=\"group__input\">*/}\n                                {/*    <div>*/}\n                                {/*        <label htmlFor=\"price-text\" className=\"form-label\">*/}\n                                {/*            <Translation id=\"price\" defaultMessage=\"Price\" />*/}\n                                {/*        </label>*/}\n                                {/*        <div id=\"price-text\" className=\"form-control text-left\" style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>*/}\n                                {/*            {secondaryParams && secondaryParams.unitaryPrice ? (*/}\n                                {/*                `${secondaryParams.unitaryPrice * this.qtyToAdd}€`*/}\n                                {/*            ) : (*/}\n                                {/*                <Translation id=\"price_not_available\" defaultMessage=\"Price not available\" />*/}\n                                {/*            )}*/}\n                                {/*        </div>*/}\n                                {/*    </div>*/}\n                                {/*</div>*/}\n                                {/**************** AÑADIR AL CARRITO **********************/}\n                                <div className=\"mt-1\">\n                                    <Button\n                                        customClass=\"bt-dark gt\"\n                                        icon=\"shopping-cart\"\n                                        dataCY=\"product_detail__add\"\n                                        // disabled={this.disableSendButton()}\n                                        disabled={!isMainPieceDone || !this.areExtensionsDone() || !isPackagingDone}\n                                        onClick={this.submitCartLine}\n                                    >\n                                        <Translation id=\"add\" defaultMessage=\"Add\" />\n                                    </Button>\n                                </div>\n                            </div>{' '}\n                            {/*** cut_to_size__filters */}\n                            {this.state.showDetail && (\n                                <Modal size=\"xl\" title={selectedModel} onClose={() => this.setState({ showDetail: false })}>\n                                    <img src={process.env.REACT_APP_API_HOST + modelDetail[this.state.currentModelImageOption]} width=\"100%\" />\n                                </Modal>\n                            )}\n                            {this.state.showExceedFileSizeAlert && (\n                                <FloatingAlert\n                                    warningMessage={\n                                        <Translation id=\"exceed_file_limit\" defaultMessage={`The file has a limit of {fileLimit} MB`} values={{ fileLimit: FILE_LIMIT }} />\n                                    }\n                                    onClose={() => {\n                                        this.setState({ showExceedFileSizeAlert: false })\n                                    }}\n                                />\n                            )}\n                        </div>\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(CutToSizeFurniture)\n)\n","import React, { Component } from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\nimport { injectIntl } from 'react-intl'\nimport GoBack from '../global/GoBack'\nimport InputNumber from '../global/InputNumber'\nimport Button from '../global/Button'\nimport { addCartLineCutToSize } from '../../store/cart/actions'\nimport Translation from '../global/Translation'\nimport { getCutToSizeSecondaryParams, getCutToSizeMaterials, getCutToSizeCatalog, getCutToSizeCustomerPricingGroup,getCutToSizeSoleriaColors } from '../../store/cut-to-size/reducers'\nimport { colorOption, colorValue } from './ColorOptions'\nimport { fetchCutToSizeSecondaryParams } from '../../store/cut-to-size/actions'\nimport ElaborationDetails from './ElaborationDetails'\nimport { Messages, BrandOptionsMap } from './CutToSizeMaps'\nimport FloatingAlert from '../alerts/FloatingAlert'\nimport { showToastNotification } from '../../store/toast-notifications/actions'\nimport {\n    getAdaptedFormat,\n    getCmOrInches,\n    getMeasureFromMetric,\n    getMetricMeasureFromInput\n} from \"../../helpers\";\nimport LocalizedLink from \"../global/LocalizedLink\";\nimport {cloneDeep} from \"lodash\";\nimport {getAddonOptions, getFinishOptions, getThicknessOptions} from \"./CalculateFromOptions\";\n\nconst FILE_LIMIT = 4 //MB\nconst BYTES_IN_MB = 1024 * 1024\nconst DEFAULT_FILE_TYPE = 'BX01'\n\n\nconst mapStateToProps = state => {\n    return {\n        secondaryParams: getCutToSizeSecondaryParams(state),\n        materials: getMaterials(state),\n        catalog: getCutToSizeCatalog(state),\n        soleriaColors: getCutToSizeSoleriaColors(state),\n        pricingGroup: getCutToSizeCustomerPricingGroup(state),\n        adaptedFormat: (format, params) => getAdaptedFormat(format, params, state),\n        units: getCmOrInches(state),\n        measureFromMetric: (measure, decimals) => getMeasureFromMetric(measure, decimals, state),\n        metricMeasureFromInput: (measure, decimals) => getMetricMeasureFromInput(measure, decimals, state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchSecondaryParams: (elaboration, brand, color, pricingGroup, hasSoleriaDekton, callback) => {\n            dispatch(fetchCutToSizeSecondaryParams(elaboration, brand, color, pricingGroup, hasSoleriaDekton, callback))\n        },\n        addCartLineCutToSize: (qty, cutToSize) => {\n            dispatch(addCartLineCutToSize(qty, cutToSize))\n        },\n        showToastNotification: (text = '', type = 'none', duration = 10000) => dispatch(showToastNotification(text, type, duration)),\n    }\n}\n\n//Tratar genéricos como solo corte\nconst getMaterials = (state) => {\n    const materials = Object.assign({}, getCutToSizeMaterials(state))\n    if (materials) {\n        materials['BUDGET'] = materials['SOLO_CORTE']\n    }\n    return materials\n}\n\nconst CM_DECIMALS = 2\nconst IN_DECIMALS = 0\nconst MIN_WIDTH = 1\nconst MIN_HEIGHT = 1\nconst MAX_WIDTH = 270 \nconst MAX_HEIGHT = 170\nconst SECURITY_MARGIN = 5\n\nconst INITIAL_STATE = {\n    selectedBrand: null,\n    selectedColor: null,\n    currentColorOptions: [],\n    currentBrandOptions: [],\n    width: null,\n    height: null,\n    selectedThickness: null,\n    selectedFinished: null,\n    selectedFormat: null,\n    selectedQuality: null,\n    selectedAddon: null,\n    selectedFiles: {},\n    quoteFile: null,\n    showDetail: false,\n    showExceedFileSizeAlert: false,\n    comments: null\n}\n\nclass CutToSizeDefault extends Component {\n\n    _minWidth = this.props.measureFromMetric(MIN_WIDTH, IN_DECIMALS)\n    _minHeight = this.props.measureFromMetric(MIN_HEIGHT, IN_DECIMALS)\n    _securityMargin = this.props.measureFromMetric(SECURITY_MARGIN)\n\n    constructor(props) {\n        super(props)\n        this.widthInput = React.createRef()\n        this.heightInput = React.createRef()\n        this.state = cloneDeep(INITIAL_STATE)\n    }\n\n    isSoleria = () => this.props.selectedElaboration === 'SOLERIA'\n    isRodapie = () => this.props.selectedElaboration === 'RODAPIES'\n    isJusCut = () => this.props.selectedElaboration === 'SOLO_CORTE'\n\n    componentDidMount() {\n       this.init()\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (prevProps.selectedElaboration !== this.props.selectedElaboration) {\n            this.setState(cloneDeep(INITIAL_STATE), this.init)\n        }\n    }\n\n    init = () => {\n        Object.keys(this.props.materials[this.props.selectedElaboration]).forEach(brand => {\n            this.state.currentBrandOptions.push(\n                {\n                    label: BrandOptionsMap[brand].name,\n                    value: brand\n                }\n            )\n        })\n\n        this.fillColors()\n\n        if (this.widthInput && this.widthInput.current) this.widthInput.current.addEventListener(\"keyup\", (event) => {\n                event.preventDefault();\n                if (event.keyCode === 13) {\n                    this.handleChangeWidth(event.target.value)\n                }\n            }\n        )\n        if (this.heightInput && this.heightInput.current) this.heightInput.current.addEventListener(\"keyup\", (event) => {\n                event.preventDefault();\n                if (event.keyCode === 13) {\n                    this.handleChangeHeight(event.target.value)\n                }\n            }\n        )\n\n        this.updateOptions()\n        this.forceUpdate()\n    }\n\n    fillColors = () => {\n        Object.entries(this.props.materials[this.props.selectedElaboration]).forEach(([brand,brandColors]) => {\n            brandColors.forEach(colorKey => {\n                const catalogColor = this.props.catalog[colorKey]\n                if (catalogColor) {\n                    this.state.currentColorOptions.push({\n                        label: catalogColor.name + ' (' + brand + ')',\n                        value: colorKey,\n                        thumb: catalogColor.thumb,\n                        brand: brand\n                    })\n                } \n                \n                this.state.currentColorOptions.sort((a, b) => a.label.localeCompare(b.label))\n            })\n        }) \n    }\n\n    setDimensionsFromFormat = (format) => {\n        const s_format = format.split(/[xX]/)\n        this.setState({width: s_format[1], height: s_format[0]})\n    }\n\n    resetProducts = () => {\n        this.setState({\n            selectedBrand: null,\n            selectedColor: null,\n            selectedFormat: null,\n            selectedThickness: null,\n            selectedFinished: null,\n            selectedAddon: null\n        })\n\n        for (let m in this.state.selectedFiles) delete this.state.selectedFiles[m]\n        for (let o in this.state.selectedModelOption) delete this.state.selectedModelOption[o]\n        const fileInputs = window.top.document.querySelectorAll('.attach-file')\n        if (fileInputs) fileInputs.forEach(i => i.value = '')\n        const radio = window.top.document.querySelectorAll('input[type=\"radio\"]')\n        if (radio) radio.forEach(r => r.checked = false)\n        const text = window.top.document.querySelectorAll('input[type=\"text\"]')\n        if (text) text.forEach(r => r.value = null)\n        this.qtyToAdd = 1\n        if (this.widthInput.current) this.widthInput.current.value = null\n        if (this.heightInput.current) this.heightInput.current.value = null\n    }\n\n    updateOptions = () => {\n        if (this.state.currentBrandOptions.length === 1 && this.state.currentBrandOptions[0].value != this.state.selectedBrand) this.handleSelectBrand(this.state.currentBrandOptions[0])\n        if (this.state.currentColorOptions.length === 1 && this.state.currentColorOptions[0].value != this.state.selectedColor) this.handleSelectColor(this.state.currentColorOptions[0])\n    }\n\n    handleSelectBrand = brandOption => {\n        const brand = brandOption ? brandOption.value : null\n        const { materials, catalog, selectedElaboration } = this.props\n        this.resetProducts()\n        this.state.currentColorOptions.length = 0\n\n        if (brand) {\n            const materialColors = materials[selectedElaboration][brand]\n\n            materialColors.forEach(color => {\n                if (catalog[color]) {\n                    this.state.currentColorOptions.push({\n                        label: catalog[color].name,\n                        value: color,\n                        thumb: catalog[color].thumb,\n                        brand: brand\n                    })\n                }\n            })  \n            this.state.currentColorOptions.sort((a, b) => a.label.localeCompare(b.label))          \n        } else this.fillColors()\n\n        this.setState({ selectedBrand: brand }, this.updateOptions)        \n    }\n\n    handleSelectColor = colorOption => {\n        if (colorOption) {\n            if (this.props.secondaryParams) this.props.secondaryParams.length = 0\n            this.props.fetchSecondaryParams(\n                this.props.selectedElaboration,\n                colorOption.brand,\n                colorOption.value,\n                this.props.pricingGroup,\n                this.isSoleria() && colorOption.brand === 'DEKTON' && this.props.soleriaColors.includes(colorOption.value),\n                () => {\n                    this.setState({\n                        selectedFormat: null,\n                        selectedThickness: null,\n                        selectedFinished: null,\n                        selectedAddon: null,\n                        width: null,\n                        height: null,\n                        selectedColor: colorOption && colorOption.value,\n                        selectedBrand: colorOption.brand\n                    })\n                }\n            )\n        } else {\n            this.setState({\n                selectedFormat: null,\n                selectedThickness: null,\n                selectedFinished: null,\n                selectedAddon: null,\n                width: null,\n                height: null,\n                selectedColor: null\n            })\n        }\n    }\n\n    handleSelectFinish = finishOptions => {\n        // console.log('SECOND hANDLE' , finishOptions)\n        const finish = finishOptions && finishOptions.value\n        if (finish === this.state.selectedFinished) return\n        this.setState({ selectedFinished: finish })\n        if (!finish) {\n            this.setState({ selectedThickness: null, selectedAddon: null })\n        }\n    }\n\n    handleSelectThickness = thicknessOption => {\n        const thickness = thicknessOption && thicknessOption.value\n        if (thickness === this.state.selectedThickness) return\n\n        this.setState({ selectedThickness: thickness })\n    }\n\n    handleSelectFormat = formatOption => {\n        const format = formatOption && formatOption.value\n        if (format === this.state.selectedFormat) return\n\n        if (format) {\n            this.setDimensionsFromFormat(format)\n        }\n        this.setState({ selectedFormat: format })\n    }\n\n    handleSelectAddon = addonOption => {\n        const addon = addonOption && addonOption.value\n        if (addon === this.state.selectedAddon) return\n\n        this.setState({ selectedAddon: addon })\n    }\n\n    handleRodapiesWidth = widthOption => {\n        // console.log('SECOND rod' , widthOption)\n        const width = widthOption && widthOption.value\n        if (width === this.state.selectedFormat) return\n        this.setState({ width: width, selectedFormat: width })\n    }\n\n    handleChangeWidth = (value, ext) => {\n        value = Math.max(Math.min(value, this._maxWidth), this._minWidth)\n        this.setState({ width: value })\n        if (this.widthInput.current) this.widthInput.current.value = value\n    }\n\n    handleChangeHeight = (value, ext) => {\n        value = value && Math.max(Math.min(value, this._maxHeight), this._minHeight)\n        this.setState({ height: value })\n        if (this.heightInput.current) this.heightInput.current.value = value\n    }\n\n    disableSendButton = () => {\n        return !this.state.selectedBrand ||\n                !this.state.selectedColor ||\n                !this.state.selectedThickness ||\n                !this.state.selectedFinished ||\n                !this.state.width ||\n                !this.state.height ||\n                !this.state.selectedAddon ||\n                (this.isSoleria() && !this.state.selectedFormat)\n    }\n\n    onFileChange = async (event, type) => {        \n        const file = event.target.files[0];\n        if (file) {\n            const fileSizeInMB = file.size / BYTES_IN_MB\n            if (fileSizeInMB > FILE_LIMIT) {\n                this.setState({showExceedFileSizeAlert: true})\n                event.target.value='';\n            } else {\n                this.state.selectedFiles[type] = file;\n            }            \n        } else {\n            this.state.selectedFiles[type] = null;\n        }  \n    }\n\n    getFormatOptions = () => {\n        let filterOptions\n        if (this.state.selectedColor && this.props.secondaryParams && this.props.secondaryParams.relations\n            && (this.isSoleria() || this.isRodapie())) {\n\n            filterOptions = this.props.secondaryParams.relations.filter((p) => {\n                if (p.format.toUpperCase() === 'N/A') return false\n                let check = true;\n                if (this.state.selectedFinished) check = check && p.finish === this.state.selectedFinished\n                if (this.state.selectedAddon) check = check && p.addon === this.state.selectedAddon\n                if (this.state.selectedThickness) check = check && p.thickness === this.state.selectedThickness\n                return check\n            })\n            filterOptions = [...new Set(filterOptions.map(v => v.format))]\n\n            if (this.isSoleria()) {\n                filterOptions = filterOptions.sort((a, b) => {\n                    const fa = a.split(/[xX]/)\n                    const fb = b.split(/[xX]/)\n                    const firstComp = parseInt(fa[0]) - parseInt(fb[0])\n                    if (firstComp != 0) return firstComp\n                    return parseInt(fa[1]) - parseInt(fb[1])\n                })\n                filterOptions = filterOptions.map(format => {\n                    return {\n                        label: this.props.adaptedFormat(format, {showUnits:true}),\n                        value: format\n                    }\n                })\n                // if (filterOptions.length === 1) this.handleSelectFormat(filterOptions[0])\n            }\n\n            if (this.isRodapie()) {\n                filterOptions = filterOptions.map(height => {\n                    return {\n                        label: `${this.props.measureFromMetric(height, IN_DECIMALS)} ${this.props.units}`,\n                        value: height\n                    }\n                })\n                // if (filterOptions.length === 1) this.handleRodapiesWidth(filterOptions[0])\n            }\n        }\n\n        return filterOptions\n    }\n\n    getSku = () => {\n        if (this.props.selectedElaboration === 'SOLERIA' && this.state.selectedBrand === 'DEKTON') {\n\n            const material = this.props.secondaryParams.relations.find(m =>\n                m.finish === this.state.selectedFinished &&\n                m.thickness === this.state.selectedThickness &&\n                m.format === this.state.selectedFormat  \n            )\n\n            return material ? material.productId : null\n        }\n\n        return null\n    }\n\n    getRawFormat = () => {\n        const relation = this.props.secondaryParams.relations.find(m =>\n            m.finish === this.state.selectedFinished &&\n            m.thickness === this.state.selectedThickness &&\n            m.format === this.state.selectedFormat\n        )\n\n        return relation ? relation.raw_format : null\n    }\n\n    submitCartLine = () => {\n        let width = parseFloat(this.state.width)\n        let height = parseFloat(this.state.height)\n\n        if (this.isJusCut() || this.isRodapie()) {\n            height = this.props.metricMeasureFromInput(height, CM_DECIMALS)\n        }\n        if (this.isJusCut()) {\n            width =this.props.metricMeasureFromInput(width, CM_DECIMALS)\n        }\n\n        this.props.addCartLineCutToSize(\n            this.qtyToAdd, {\n                elaboration: this.props.selectedElaboration,\n                colorId: this.state.selectedColor,\n                finish: this.state.selectedFinished,\n                thickness: this.state.selectedThickness,\n                format: this.getRawFormat(),\n                addon: this.state.selectedAddon,\n                // type: this.state.selectedType,\n                width: Math.round((width + Number.EPSILON) * 100) / 100,\n                height: Math.round((height + Number.EPSILON) * 100) / 100,\n                files: this.state.selectedFiles,\n                sku: this.getSku(),\n                brand: this.state.selectedBrand,\n                colorName: this.props.catalog[this.state.selectedColor].name,\n                thumb: this.props.catalog[this.state.selectedColor].img,\n                units: this.props.units\n        })\n    }\n\n    qtyToAdd = 1;\n\n    render() {\n        console.log('SECOND state' , this.state)\n\n        const { selectedBrand, selectedColor, currentBrandOptions, currentColorOptions } = this.state\n        const { intl, selectedElaboration, secondaryParams, catalog, units} = this.props\n\n        if (!selectedElaboration) return null\n\n        const finishesOptions = getFinishOptions(this.props, this.state)\n        const thicknessOptions = getThicknessOptions(this.props, this.state)\n        const addonsOptions = getAddonOptions(this.props, this.state)\n        const formatsOptions = this.getFormatOptions()\n\n        // console.log('SECOND finishesOptions' , finishesOptions)\n        // console.log('SECOND thicknessOptions' , thicknessOptions)\n        // console.log('SECOND addonsOptions' , addonsOptions)\n\n        if (addonsOptions && addonsOptions.length === 1) this.handleSelectAddon(addonsOptions[0])\n        if (thicknessOptions && thicknessOptions.length === 1) this.handleSelectThickness(thicknessOptions[0])\n        if (thicknessOptions && finishesOptions.length === 1) this.handleSelectFinish(finishesOptions[0])\n\n        // const rodapiesHeightOptions = _currentFormats && this.isRodapie() && _currentFormats.map(format => {\n        //     const height = format.split('x')[0]\n        //     return {\n        //         label: `${this.props.measureFromMetric(height, IN_DECIMALS)} ${units}`,\n        //         value: height\n        //     }\n        // })\n        //\n        // const formatsOptions = this.isSoleria() && selectedColor && _currentFormats && _currentFormats.map(format => {\n        //     return {\n        //         label: this.props.adaptedFormat(format, {showUnits:true}),\n        //         value: format\n        //     }\n        // })\n\n\n        if (catalog && catalog[selectedColor] && /\\d+[xX]\\d+/.exec(catalog[selectedColor].format)) {\n            const maxValues = catalog[selectedColor].format.split(/[xX]/)\n            if (maxValues[0]) maxValues[0] -= this._securityMargin\n            if (maxValues[1]) maxValues[1] -= this._securityMargin\n            this._maxWidth = Math.max(maxValues[0], maxValues[1])\n            this._maxHeight = this.isRodapie() ? this._maxWidth : Math.min(maxValues[0], maxValues[1])\n        } else {\n            this._maxWidth = MAX_WIDTH\n            this._maxHeight = this.isRodapie() ? MAX_WIDTH : MAX_HEIGHT\n        }\n        this._maxWidth = this.props.measureFromMetric(this._maxWidth, IN_DECIMALS)\n        this._maxHeight = this.props.measureFromMetric(this._maxHeight, IN_DECIMALS)\n\n        return (\n            <section className=\"cut_to_size\">\n\n                <div className=\"cut_to_size__go_back mt-4 mb-3\">\n                    <LocalizedLink routeId={'ROUTE_CUT_TO_SIZE'}>\n                        <GoBack\n                            text={intl.formatMessage(Messages.BACK_SELECT_ELABORATED_TYPE)}\n                            dataCY={'product_detail__go_back'}\n                        />\n                    </LocalizedLink>\n                </div>\n\n                <div className=\"container form\">                   \n\n                    <div className=\"row\">\n\n                        <div className=\"col-12 col-md-7\">\n                            <div style={{width:'100%'}}>\n                                <ElaborationDetails id={selectedElaboration}/>\n                            </div>\n                        </div>\n\n                        <div className=\"col-12 col-md-5 cut_to_size__filters\">\n\n                            {/**************** MARCA **********************/}\n                            { selectedElaboration && (\n                                <div className=\"group__input\">\n                                    <label htmlFor=\"brand-select\" className=\"form-label\">\n                                        <Translation id=\"brand\" defaultMessage=\"Brand\" />\n                                    </label>\n                                    <div className=\"contain__select--brand\" data-qas=\"cts_form_default-brand-dropdown\">\n                                        <Select\n                                            id=\"brand-select\"\n                                            placeholder={this.props.intl.formatMessage(Messages.CHOOSE_BRAND)}\n                                            options={currentBrandOptions}\n                                            value={selectedBrand}\n                                            onChange={selectedOption => this.handleSelectBrand(selectedOption)}\n                                            disabled={!currentBrandOptions || currentBrandOptions.length <= 1}\n                                            className={`${!currentBrandOptions || currentBrandOptions.length <=1 ? ' disabled' : ' '}`}\n                                        />\n                                    </div>\n                                </div>\n                            )}\n\n                            {/**************** COLORES **********************/}\n                            <div className=\"group__input\">\n                                <label htmlFor=\"color-select\" className=\"form-label\">\n                                    <Translation id=\"color\" defaultMessage=\"Color\" />\n                                </label>\n                                <div data-qas=\"cts_form_default-color-dropdown\">\n                                    <Select\n                                        id=\"color-select\"\n                                        placeholder={this.props.intl.formatMessage(Messages.CHOOSE_COLOR)}\n                                        options={currentColorOptions}\n                                        value={selectedColor}\n                                        onChange={selectedOption => this.handleSelectColor(selectedOption)}\n                                        optionComponent={colorOption}\n                                        valueComponent={colorValue}\n                                        disabled={!currentColorOptions || currentColorOptions.length <= 1}\n                                        className={`${!currentColorOptions || currentColorOptions.length <=1 ? ' disabled' : ' '}`}\n                                    />\n                                </div>\n                            </div>\n\n                            {/**************** ACABADOS **********************/}\n                            <div className=\"group__input group__input--finish\">\n                                <label htmlFor=\"finish-select\" className=\"form-label\">\n                                    <Translation id=\"finish\" defaultMessage=\"Finish\" />\n                                </label>\n                                <div data-qas=\"cts_form_default-finish-dropdown\">\n                                    <Select\n                                        id=\"finish-select\"\n                                        placeholder={this.props.intl.formatMessage(Messages.CHOOSE_FINISH)}\n                                        options={finishesOptions}\n                                        value={this.state.selectedFinished}\n                                        onChange={selectedOption => this.handleSelectFinish(selectedOption)}\n                                        disabled={!finishesOptions || finishesOptions.length === 0}\n                                        className={`capitalize ${!finishesOptions || finishesOptions.length === 0 ? ' disabled' : ''}`}\n                                        // clearable={finishesOptions && finishesOptions.length > 1}\n                                    />\n                                </div>\n                            </div>\n\n                            {/**************** GROSOR **********************/}\n                            <div className=\"group__input group__input--thickness\">\n                                <label htmlFor=\"thickness-select\" className=\"form-label\">\n                                    <Translation id=\"thickness\" defaultMessage=\"Thickness\" />\n                                </label>\n                                <div data-qas=\"cts_form_default-thickness-input\">\n                                    <Select\n                                        id=\"thickness-select\"\n                                        // clearable={false}\n                                        placeholder={this.props.intl.formatMessage(Messages.CHOOSE_THICKNESS)}\n                                        options={thicknessOptions}\n                                        value={this.state.selectedThickness}\n                                        onChange={selectedOption => this.handleSelectThickness(selectedOption)}\n                                        disabled={!thicknessOptions || thicknessOptions.length <= 1}\n                                        className={`${!thicknessOptions || thicknessOptions.length === 0 ? ' disabled' : ''}`}\n                                        // clearable={thicknessOptions && thicknessOptions.length > 1}\n                                    />\n                                </div>\n                            </div>\n\n\n\n                            {/**************** ADDONS **********************/}\n                            <div className=\"group__input group__input--addon\">\n                                <label htmlFor=\"addon-select\" className=\"form-label\">\n                                    <Translation id=\"MAL\" defaultMessage=\"Meshed\" />\n                                </label>\n                                <div data-qas=\"cts_form_default-addon-dropdown\">\n                                    <Select\n                                        id=\"addon-select\"\n                                        placeholder={this.props.intl.formatMessage(Messages.CHOOSE_OPTION)}\n                                        options={addonsOptions}\n                                        value={this.state.selectedAddon}\n                                        onChange={selectedOption => this.handleSelectAddon(selectedOption)}\n                                        disabled={!addonsOptions || addonsOptions.length <= 1}\n                                        className={`capitalize ${!addonsOptions || addonsOptions.length === 0 ? ' disabled' : ''}`}\n                                        // clearable={addonsOptions && addonsOptions.length > 1}\n                                    />\n                                </div>\n                            </div>\n                            \n\n                            {/**************** FORMATO **********************/}\n                            {\n                                this.isSoleria() && (\n                                    <div className=\"group__input group__input--format\">\n                                        <label htmlFor=\"format-select\" className=\"form-label\">\n                                            <Translation id=\"format\" defaultMessage=\"Format\" />\n                                        </label>\n                                        <div data-qas=\"cts_form_default-soleria-format-dropdown\">\n                                            <Select\n                                                id=\"format-select\"\n                                                placeholder={this.props.intl.formatMessage(Messages.CHOOSE_FORMAT)}\n                                                options={formatsOptions}\n                                                value={this.state.selectedFormat}\n                                                onChange={selectedOption => this.handleSelectFormat(selectedOption)}\n                                                // onChange={selectedOption => this.handleFilterChange(selectedOption, 'selectedThickness')}\n                                                disabled={!formatsOptions || formatsOptions.length === 0}\n                                                className={`${formatsOptions && formatsOptions.length > 0 ? ' ' : ' disabled'}`}\n                                                // clearable={formatsOptions && formatsOptions.length > 1}\n                                            />\n                                        </div>\n                                    </div>\n                                )\n                            }\n\n                            {/************ FORMATO RODAPIES ******************/}\n                            {\n                                this.isRodapie() && (      \n                                    <div className=\"row group__input\">\n                                        <div className=\"col-6 group__input--height\" lang=\"en-US\">\n                                            <label htmlFor=\"length-input\" className=\"form-label\">\n                                                <Translation id=\"length\" defaultMessage=\"Length\" /> ({units})\n                                            </label>\n                                            <input\n                                                type=\"number\"\n                                                id=\"length-input\"\n                                                ref={this.heightInput}\n                                                step={0.1}\n                                                // min={this._minWidth}\n                                                // max={this._maxWidth}\n                                                placeholder={this.props.intl.formatMessage({ id: 'length' })}\n                                                required\n                                                // value={width}\n                                                // onChange={event => this.handleChangeWidth(event.target.value)}\n                                                onBlur={event => this.handleChangeHeight(event.target.value)}\n                                                // onChange={event => this.setState({ width: event.target.value })}\n                                                disabled={!selectedColor}\n                                                className={`form-control ${selectedColor ? ' ' : ' disabled'}`}\n                                                data-qas=\"cts_form_default-rodapie-length-input\"\n                                            />\n                                        </div>\n                                        <div className=\"col-6 group__input--format\">\n                                            <label htmlFor=\"sk-format-select\" className=\"form-label\">\n                                                <Translation id=\"width\" defaultMessage=\"Width\" /> ({units})\n                                            </label>\n                                            <div data-qas=\"cts_form_default-rodapie-width-dropdown\">\n                                                <Select                                            \n                                                    id=\"sk-format-select\"\n                                                    placeholder={this.props.intl.formatMessage(Messages.CHOOSE_WIDTH)}\n                                                    options={formatsOptions}\n                                                    value={this.state.selectedFormat}\n                                                    onChange={selectedOption => this.handleRodapiesWidth(selectedOption)}\n                                                    //onChange={selectedOption => this.handleFilterChange(selectedOption, 'selectedThickness')}\n                                                    disabled={!formatsOptions || formatsOptions.length === 0}\n                                                    className={`${formatsOptions && formatsOptions.length > 0 ? ' ' : ' disabled'}`}\n                                                    // clearable={formatsOptions && formatsOptions.length > 1}\n                                                />\n                                            </div>\n                                        </div> \n                                        <div className=\"col-12\">\n                                            <small>\n                                                { this.props.intl.formatMessage(Messages.MAX_LENGTH)}: {this._maxHeight} {units}\n                                                {/* { this.props.intl.formatMessage(Messages.MAX_LENGTH)}: <CalculateMeasure cm={this._maxWidth} withUnit={true} /> */}\n                                            </small>\n                                        </div>\n                                    </div>\n                                )\n                            }\n                            \n\n                            {/**************** CALIDAD **********************/}\n                            {/* <div className=\"group__input group__input--quality\">\n                            <span>\n                                <Translation id=\"quality\" defaultMessage=\"Quality\" />\n                            </span>\n                            <Select\n                                placeholder=\"Choose Quality\"\n                                options={qualityOptions}\n                                value={this.state.selectedQuality}                                                \n                                onChange={selectedOption => this.setState({selectedQuality : selectedOption && selectedOption.value})}\n                                // onChange={selectedOption => this.handleFilterChange(selectedOption, 'selectedThickness')}\n                                disabled={ !qualityOptions || qualityOptions.length === 0 }\n                                className={`${qualityOptions && qualityOptions.length > 0 ? ' ' : ' disabled'}`}\n                            />\n                        </div> */}\n\n                            {/**************** DIMENSIONES SOLO CORTE **********************/}\n                            {\n                                this.isJusCut() && (\n                                    <div className=\"row group__input\">\n                                        <div className=\"col-6\">\n                                            <label htmlFor=\"width-input\" className=\"form-label\">\n                                                <Translation id=\"length\" defaultMessage=\"Length\" /> ({units})\n                                            </label>\n                                            <input\n                                                type=\"number\"\n                                                id=\"width-input\"\n                                                ref={this.widthInput}\n                                                step={0.1}\n                                                placeholder={this.props.intl.formatMessage({id: 'length'})}\n                                                required\n                                                // value={width}\n                                                // onChange={event => this.handleChangeWidth(event.target.value)}\n                                                onBlur={event => this.handleChangeWidth(event.target.value)}\n                                                // onChange={event => this.setState({ width: event.target.value })}\n                                                disabled={!selectedColor}\n                                                className={`form-control ${selectedColor ? ' ' : ' disabled'}`}\n                                                data-qas=\"cts_form_default-just-cut-length-input\"\n                                            />\n                                        </div>  \n                                        <div className=\"col-6\">\n                                            <label htmlFor=\"height-input\" className=\"form-label\">\n                                                <Translation id=\"width\" defaultMessage=\"Width\" /> ({units})\n                                            </label>\n                                            <input\n                                                type=\"number\"\n                                                id=\"height-input\"\n                                                ref={this.heightInput}\n                                                step={0.1}\n                                                placeholder={this.props.intl.formatMessage({id: 'width'})}\n                                                required\n                                                // value={height}\n                                                onBlur={event => this.handleChangeHeight(event.target.value)}\n                                                // onChange={event => this.setState({ height: event.target.value })}\n                                                disabled={!selectedColor}\n                                                className={`form-control ${selectedColor ? ' ' : ' disabled'}`}\n                                                data-qas=\"cts_form_default-just-cut-width-input\"\n                                            />\n                                        </div>\n                                        <div className=\"col-12\">\n                                            <small>\n                                                { this.props.intl.formatMessage(Messages.MAX_DIMENSIONS)}: {this._maxWidth} x {this._maxHeight} {units}\n                                                {/* { this.props.intl.formatMessage(Messages.MAX_DIMENSIONS)}: <CalculateMeasure cm={this._maxWidth}/> x <CalculateMeasure cm={this._maxHeight}/> <CalculateMeasure/> */}\n                                            </small>\n                                        </div>\n                                    </div>\n                                )\n                            }\n\n\n\n                            {/**************** ADJUNTAR DOCUMENTO **********************/}\n                            <div className=\"colgroup__input\">\n                                <label htmlFor=\"attach_file\" className=\"form-label\">\n                                    <Translation id=\"document\" defaultMessage=\"Document\" />\n                                </label>\n                                <div>\n                                    <input \n                                        id=\"attach_file\"\n                                        className=\"attach-file\"\n                                        type=\"file\" \n                                        onChange={(e) => this.onFileChange(e, DEFAULT_FILE_TYPE)} \n                                        data-qas=\"cts_form_default-attach-file-input\"\n                                        // accept=\"image/jpeg, image/png, application/pdf\"\n                                    />\n                                </div>\n                                <small>\n                                    <Translation id=\"exceed_file_limit\" \n                                            defaultMessage={`The file has a limit of {fileLimit} MB`}\n                                            values={{fileLimit: FILE_LIMIT}}/>\n                                </small>\n                            </div>\n\n                            {/**************** COMENTARIOS **********************/}\n                            {/*{*/}\n                            {/*    this.isBudget() && (*/}\n                            {/*        <div className=\"group__input\">*/}\n                            {/*            <label htmlFor=\"input-comments\" className=\"form-label\">*/}\n                            {/*                <Translation id=\"comment\" defaultMessage=\"Comments\" />*/}\n                            {/*            </label>*/}\n                            {/*            <textarea*/}\n                            {/*                className=\"form-control\"*/}\n                            {/*                id=\"input-comments\"*/}\n                            {/*                rows=\"3\"*/}\n                            {/*                maxLength=\"2499\"*/}\n                            {/*                onChange={e => {*/}\n                            {/*                    e && this.setState({comments:e.target.value})*/}\n                            {/*                }}*/}\n                            {/*            />*/}\n                            {/*        </div> */}\n                            {/*    )*/}\n                            {/*}*/}\n                           \n\n                            <div className=\"row\">\n                                {/**************** CANTIDAD **********************/}\n                                <div className=\"col-6 group__input\">\n                                    <div>\n                                        <label htmlFor=\"quantity-input\" className=\"form-label\">\n                                            <Translation id=\"quantity\" defaultMessage=\"Quantity\" />\n                                        </label>\n                                        <InputNumber\n                                            id=\"quantity-input\"\n                                            className=\"form-control\"\n                                            value={this.qtyToAdd}\n                                            change={qty => {\n                                                this.qtyToAdd = qty\n                                                this.forceUpdate()\n                                            }}\n                                            step={1}\n                                            dataQas=\"cts_form_default-quantity-input\"\n                                            oldStyle={true}\n                                        />\n                                    </div>\n                                </div>\n                                {/**************** PRECIO **********************/}\n                                <div className=\"col-6 group__input\">\n                                    {/*<div>*/}\n                                    {/*    <label htmlFor=\"price-text\" className=\"form-label\" data-qas=\"cts_form_default-price-input\">*/}\n                                    {/*        <Translation id=\"price\" defaultMessage=\"Price\" />*/}\n                                    {/*    </label>*/}\n                                    {/*    <div*/}\n                                    {/*        id=\"price-text\"*/}\n                                    {/*        className=\"form-control text-right\"*/}\n                                    {/*        style={{overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap'}}*/}\n                                    {/*    >*/}\n                                    {/*        {*/}\n                                    {/*            secondaryParams && secondaryParams.unitaryPrice ? (*/}\n                                    {/*                `${secondaryParams.unitaryPrice * this.qtyToAdd}€`*/}\n                                    {/*            ) : (*/}\n                                    {/*                <Translation id=\"price_not_available\" defaultMessage=\"Price not available\" />*/}\n                                    {/*            )*/}\n                                    {/*        }*/}\n                                    {/*    </div>*/}\n                                    {/*</div>*/}\n                                </div>\n                            </div>\n\n\n                            {/**************** AÑADIR AL CARRITO **********************/}\n                            <div className=\"mt-1\">\n                                <Button\n                                    customClass=\"bt-dark gt\"\n                                    icon=\"shopping-cart\"\n                                    dataCY=\"product_detail__add\"\n                                    disabled={this.disableSendButton()}\n                                    onClick={this.submitCartLine}\n                                    dataQas=\"cts_form_default-add-to-cart-button\"\n                                    gtmLabel=\"ec_cam_preorder\"\n                                >\n                                    <Translation id=\"add\" defaultMessage=\"Add\" />\n                                </Button>\n                            </div>\n\n\n\n                        </div> {/*** cut_to_size__filters */}\n\n                        {\n                            this.state.showExceedFileSizeAlert && (\n                            <FloatingAlert\n                                warningMessage={\n                                    <Translation id=\"exceed_file_limit\" \n                                    defaultMessage={`The file has a limit of {fileLimit} MB`}\n                                    values={{fileLimit: FILE_LIMIT}}/>\n                                }\n                                onClose={() => {this.setState({showExceedFileSizeAlert: false})}}\n                            />\n                        )}\n\n                    </div>\n                </div>\n            </section>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(CutToSizeDefault)\n)\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\n\nvar SvgComponent = function SvgComponent(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 18,\n    height: 18,\n    viewBox: \"0 0 18 18\",\n    fill: \"#FFFFFF\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9 18C7.75 18 6.57933 17.7627 5.488 17.288C4.396 16.8127 3.446 16.1707 2.638 15.362C1.82933 14.554 1.18733 13.604 0.712 12.512C0.237333 11.4207 0 10.25 0 9H1C1 11.0833 1.696 12.8833 3.088 14.4C4.47933 15.9167 6.21667 16.775 8.3 16.975L6.725 15.4L7.45 14.7L10.575 17.825C10.3083 17.8917 10.0417 17.9373 9.775 17.962C9.50833 17.9873 9.25 18 9 18ZM9.8 11.7V6.3H12.575C12.8583 6.3 13.096 6.39567 13.288 6.587C13.4793 6.779 13.575 7.01667 13.575 7.3V10.7C13.575 10.9833 13.4793 11.2207 13.288 11.412C13.096 11.604 12.8583 11.7 12.575 11.7H9.8ZM4.425 11.7V10.8H7.3V9.375H5.425V8.625H7.3V7.2H4.425V6.3H7.5C7.7 6.3 7.86667 6.36667 8 6.5C8.13333 6.63333 8.2 6.8 8.2 7V11C8.2 11.2 8.13333 11.3667 8 11.5C7.86667 11.6333 7.7 11.7 7.5 11.7H4.425ZM10.7 10.8H12.45C12.5333 10.8 12.596 10.7833 12.638 10.75C12.6793 10.7167 12.7 10.6583 12.7 10.575V7.425C12.7 7.34167 12.6793 7.28333 12.638 7.25C12.596 7.21667 12.5333 7.2 12.45 7.2H10.7V10.8ZM17 9C17 6.91667 16.3043 5.11667 14.913 3.6C13.521 2.08333 11.7833 1.225 9.7 1.025L11.275 2.6L10.55 3.3L7.425 0.175C7.69167 0.108333 7.95833 0.0623333 8.225 0.0369999C8.49167 0.0123333 8.75 0 9 0C10.25 0 11.421 0.237333 12.513 0.712C13.6043 1.18733 14.5543 1.829 15.363 2.637C16.171 3.44567 16.8127 4.39567 17.288 5.487C17.7627 6.579 18 7.75 18 9H17Z\",\n    fill: \"#FFFFFF\"\n  })));\n};\n\nexport default __webpack_public_path__ + \"static/media/tresd-icon.ef927ee7.svg\";\nexport { SvgComponent as ReactComponent };","import React from \"react\"\nimport { capitalizeFirstLetter } from \"../../../helpers\"\nimport { ReactComponent as TresdIcon } from '../../../assets/img/icons/tresd-icon.svg'\nimport LocalizedLink from \"../../global/LocalizedLink\";\nimport Translation from \"../../global/Translation\";\n\nconst ConfigBathCard = props => {\n    const { data } = props\n\n    const brands = Object.keys(data.fullConfig.brands)\n    \n    return (\n        <div className=\"config__bath__card\">\n            {/* Image */}\n            <div className=\"config__bath__card--img\">\n                <img src={data.defaultImageModelUrl} alt={capitalizeFirstLetter(data.model)} />\n            </div>\n\n            {/* Info */}\n            <div className=\"config__bath__card--info\">\n                <div className=\"brand\">\n                    {brands.sort().map(brand => {\n                        return <span key={brand}>{capitalizeFirstLetter(brand) + ' ® '}</span>\n                    })}\n                </div>\n                <div className=\"name\">\n                    <span>{capitalizeFirstLetter(data.model)}</span>\n                </div>\n            </div>\n\n            <div className=\"x-divider\"></div>\n\n            {/* Price */}\n            <div className=\"config__bath__card--price\">\n                <div>{/* <span>Desde:&nbsp;{data.price}</span> */}</div>\n            </div>\n\n            {/* Config btn */}\n            <div className=\"config__bath__card--btn\">\n                <LocalizedLink routeId=\"ROUTE_CONFIG_CUT_TO_SIZE\" params={{ type: data.type, model: data.model.toLowerCase().replace(' ', '_'), refcode: '', fabricator: props.fabricator }}>\n                    <Translation id=\"custom_configuration\" defaultMessage=\"Custom configuration\" /> <TresdIcon />\n                </LocalizedLink>\n            </div>\n        </div>\n    )\n}\n\nexport default ConfigBathCard","import React from \"react\"\nimport Select from 'react-select'\nimport { injectIntl } from \"react-intl\"\nimport { capitalizeFirstLetter } from \"../../../helpers\"\n\nconst CatalogFilter = props => {\n    const { intl, configurableModels, uniqueColors, uniqueBrands, uniqueTypes } = props\n\n    const typeOptions = Object.keys(uniqueTypes).map(key => {\n        if (key === 'washbasins') return { label: intl.formatMessage({ id: 'subtype_washbasin' }), value: key }\n        else return { label: intl.formatMessage({ id: 'subtype_shower_tray' }), value: key }\n    })\n\n    const modelOptions = configurableModels && configurableModels.map(item => {\n        return { value: item.model, label: capitalizeFirstLetter(item.model) }\n    })\n\n    const brandOptions = Object.entries(uniqueBrands).map(([key, value]) => {\n        return { label: capitalizeFirstLetter(value), value: key }\n    })\n\n    const colorOptions = Object.entries(uniqueColors).map(([key, value]) => {\n        return { value: key, label: capitalizeFirstLetter(value) }\n    }).sort((a, b) => a.label.localeCompare(b.label))\n\n    return (\n        <div className=\"config__bath__filter\">\n            <div className=\"config__bath__filter--select\">\n                <div className=\"flex-block\">\n                    <Select value={props.selectedOptionType}\n                            onChange={props.handleChangeType}\n                            options={typeOptions}\n                            placeholder={intl.formatMessage({ id: 'type' })}\n                            className={'custom__select'}\n                    />\n                    <Select value={props.selectedOptionModel}\n                            onChange={props.handleChangeModel}\n                            options={modelOptions}\n                            placeholder={intl.formatMessage({ id: 'Modelo' })}\n                            className={'custom__select'}\n                    />\n                    <Select value={props.selectedOptionBrand}\n                            onChange={props.handleChangeBrand}\n                            options={brandOptions}\n                            placeholder={intl.formatMessage({ id: 'brand' })}\n                            className={'custom__select'}\n                    />\n                    <Select value={props.selectedOptionColor}\n                            onChange={props.handleChangeColor}\n                            options={colorOptions}\n                            placeholder={intl.formatMessage({ id: 'color' })}\n                            className={'custom__select'}\n                    />\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default injectIntl(CatalogFilter)","import React, {Component} from 'react'\nimport {connect} from \"react-redux\";\nimport LocalizedLink from '../../global/LocalizedLink'\nimport Translation from '../../global/Translation'\nimport ConfigBathCard from './ConfigBathCard'\nimport CatalogFilter from './CatalogFilters'\nimport {canFilterQuickShip, getConfigurableModels} from '../../../store/cut-to-size/reducers'\nimport { ReactComponent as QuickShipIcon } from '../../../assets/img/cut-to-size/quickShipIcon.svg'\nimport {Switch} from \"@progress/kendo-react-inputs/dist/es/switch/Switch\";\nimport {cloneDeep} from \"lodash\";\nimport {FormattedHTMLMessage} from \"react-intl\";\n\n\nclass ConfigurableBathsCatalog extends Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selectedOptionType: null,\n            selectedOptionModel: null,\n            selectedOptionBrand: null,\n            selectedOptionColor: null,\n            showOnlyQuickShip: props.canFilterQuickShip,\n            filteredModels: []\n        }\n    }\n\n    handleChangeType = selectedOption => {\n        this.setState({ selectedOptionType: selectedOption })\n    }\n\n    handleChangeModel = selectedOption => {\n        this.setState({ selectedOptionModel: selectedOption })\n    }\n\n    handleChangeBrand = selectedOption => {\n        this.setState({ selectedOptionBrand: selectedOption })\n    }\n\n    handleChangeColor = selectedOption => {\n        this.setState({ selectedOptionColor: selectedOption })\n    }\n\n    selectQuickShip = isChecked => {\n        this.setState({showOnlyQuickShip: isChecked.value})\n    }\n\n\n    getFilteredModelsAndColors() {\n        const { configurableModels } = this.props\n        let filteredModels = configurableModels && configurableModels.models ? cloneDeep(configurableModels.models) : []\n\n        filteredModels = filteredModels.filter(row => !!row.defaultImageModelUrl)\n\n        if (this.state.showOnlyQuickShip) {\n            filteredModels = filteredModels.filter(row => row.third_party === true)\n            filteredModels.forEach(filteredModel => {\n                Object.entries(filteredModel.fullConfig.brands).forEach(([brand, config]) => {\n                    filteredModel.fullConfig.brands[brand] = config.filter(c => c.thirdParty.length > 0)\n                })\n            })\n        }\n\n\n\n        if (this.state.selectedOptionModel) {\n            filteredModels = filteredModels.filter(row => row.model === this.state.selectedOptionModel.value)\n        }\n        \n        if (this.state.selectedOptionType) {\n            filteredModels = filteredModels.filter(row => row.type === this.state.selectedOptionType.value)\n        }\n\n        if (this.state.selectedOptionBrand) {\n            filteredModels = filteredModels.filter(row => !!row.fullConfig.brands[this.state.selectedOptionBrand.value])\n        }\n\n        if (this.state.selectedOptionColor) {\n                filteredModels = filteredModels.filter(row => {\n                    if (this.state.selectedOptionBrand) {\n                        return row.fullConfig.brands[this.state.selectedOptionBrand.value].filter(c => c.color === this.state.selectedOptionColor.value).length > 0\n                    } else {\n                        let brandConfigs = []\n                        Object.values(row.fullConfig.brands).forEach(c => brandConfigs = brandConfigs.concat(c))\n                        console.log('brandsConf', this.state.selectedOptionColor, brandConfigs)\n                        return brandConfigs.filter(c => c.color === this.state.selectedOptionColor.value).length > 0\n                    }\n                })\n        }\n\n        const availableColors = {}\n        const availableBrands = {}\n        const availableTypes = {}\n\n        filteredModels.forEach(filteredModel => {\n            availableTypes[filteredModel.type] = filteredModel.type\n\n            Object.entries(filteredModel.fullConfig.brands).forEach(([brand, config]) => {\n                if (config.length > 0) {\n                    if (!this.state.selectedOptionColor\n                        || (this.state.selectedOptionColor && config.find(c => c.color === this.state.selectedOptionColor.value))\n                    ) availableBrands[brand] = brand\n                }\n\n                if (!this.state.selectedOptionBrand\n                    || (this.state.selectedOptionBrand && this.state.selectedOptionBrand.value === brand)) {\n                    config.forEach(c => {\n                        if (c.colorName) availableColors[c.color] = c.colorName\n                    })\n                }\n            })\n        })\n\n        return { filteredModels, availableColors, availableBrands, availableTypes }\n    }\n    \n    render() {\n        const { filteredModels, availableColors, availableBrands, availableTypes } = this.getFilteredModelsAndColors()\n\n        return (\n            <div className=\"catalog__configurable__baths\">\n                {/* Go back btn */}\n                <div className=\"catalog__configurable__baths--goback\">\n                    <LocalizedLink routeId={'ROUTE_CUT_TO_SIZE'} queryString={''} params={{ outlet: '' }}>\n                        <i className=\"fas fa-chevron-left\" />\n                        <span>\n                            <Translation id=\"back_select_elaborated_type\" defaultMessage=\"Back to elaborated type selection\" />\n                        </span>\n                    </LocalizedLink>\n                </div>\n\n                {/* Page title */}\n                <div className=\"catalog__configurable__baths--page-title\">\n                    <h1><Translation id=\"washbasing_and_shower_trays\" defaultMessage=\"Washbasins and shower trays\" /></h1>\n                </div>\n\n                {/* Filters */}\n                <div className=\"catalog__configurable__baths--filters\">\n                    {this.props.canFilterQuickShip &&\n                        <div className=\"quick-ship\">\n\n                                <div className=\"first-line\">\n                                    <Switch onChange={this.selectQuickShip}\n                                            checked={this.state.showOnlyQuickShip}\n                                            onLabel={\"\"}\n                                            offLabel={\"\"}\n                                    />\n                                    <QuickShipIcon/>\n                                    {\n                                        this.state.showOnlyQuickShip ?\n                                            <span className=\"first-txt\"><Translation id=\"showing_quickship\" defaultMessage=\"Showing QuickShip products\"/></span>\n                                            :\n                                            <span className=\"first-txt\"><Translation id=\"hiding_quickship\" defaultMessage=\"Hiding QuickShip products\"/></span>\n                                    }\n                                </div>\n\n                            {\n                                this.state.showOnlyQuickShip ?\n                                    <React.Fragment>\n                                        <div className=\"second-txt\"><FormattedHTMLMessage id=\"quick_ship_estimated_time\" defaultMessage=\"Fast delivery: Estimated time to deliver is <b>2-4 weeks</b>\"/></div>\n                                        <div className=\"third-txt\"><Translation id=\"quick_ship_available_colors\" defaultMessage=\"Quickship products available on selected colors catalogue\"/></div>\n                                    </React.Fragment>\n                                    :\n                                    <div className=\"second-txt\"><Translation id=\"no_quick_ship_estimated_time\" defaultMessage=\"Estimated time to deliver is 12 weeks\"/></div>\n                            }\n\n\n                        </div>\n                    }\n                    <div className=\"filter-by\">\n                        <span><Translation id=\"filter_by\" defaultMessage=\"Filter by\" />:</span>\n                    </div>\n                    <div>\n                    <CatalogFilter\n                            configurableModels={filteredModels}\n                            uniqueColors={availableColors}\n                            uniqueBrands={availableBrands}\n                            uniqueTypes={availableTypes}\n                            handleChangeType={this.handleChangeType}\n                            handleChangeModel={this.handleChangeModel}\n                            handleChangeBrand={this.handleChangeBrand}\n                            handleChangeColor={this.handleChangeColor}\n                            selectedOptionType={this.state.selectedOptionType}\n                            selectedOptionModel={this.state.selectedOptionModel}\n                            selectedOptionBrand={this.state.selectedOptionBrand}\n                            selectedOptionColor={this.state.selectedOptionColor}\n                        />\n                    </div>\n                </div>\n\n                {/* Materials */}\n                <div className=\"catalog__configurable__baths--materials\">\n                    {filteredModels &&\n                        filteredModels.map(item => {\n                            return <ConfigBathCard data={item} key={item.model + '_' + item.type} fabricator={this.state.showOnlyQuickShip ? 'local' : 'global'}/>\n                        })}\n                </div>\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        configurableModels: getConfigurableModels(state),\n        canFilterQuickShip: canFilterQuickShip(state)\n    }\n}\n\nexport default connect(\n        mapStateToProps,\n        null\n    )(ConfigurableBathsCatalog)\n","import React, { Component } from 'react'\nimport { injectIntl } from 'react-intl'\nimport { connect } from 'react-redux'\nimport { addHistoryAction } from '../global/history'\nimport { fetchCutToSizeMainParams } from '../../store/cut-to-size/actions'\nimport {getCutToSizeMaterials} from '../../store/cut-to-size/reducers'\nimport ElaborationTypeSelector from './ElaborationTypeSelector'\nimport CutToSizeFormBudget from './CutToSizeFormBudget'\nimport CutToSizeFormFurniture from \"./CutToSizeFormFurniture\";\nimport CutToSizeFormDefault from \"./CutToSizeFormDefault\";\nimport CutToSizeFormPreOrder from \"./CutToSizeFormPreOrder\";\nimport ConfigurableBathsCatalog from './configurable-baths/ConfigurableBathsCatalog'\nimport { dispatchPushURL } from '../../store/ui/actions'\nimport {canViewPreorder} from \"../../store/login/reducers\";\n\nconst mapStateToProps = (state) => {\n    return {\n        materials: getCutToSizeMaterials(state),\n        hasPreOrder: canViewPreorder(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchMainParams: () => {\n            return dispatch(fetchCutToSizeMainParams())\n        },\n        returnURL: (url) => {\n            return dispatch(dispatchPushURL(url, 1))\n        }\n    }\n}\n\nclass CutToSize extends Component {\n    state = {\n        selectedElaboration: null,\n        showForm: false\n    }\n\n    goToSection = () => {\n        if (window.location.search) {\n            const type = this.getElaborationTypeFromUrlParams( window.location.search)\n            if (type) this.handleSelectType(type)\n        }\n    }\n\n    getElaborationTypeFromUrlParams = (params) => {\n        const regex = /[?]type=([^&]*)/\n        const type = regex.exec(params)\n        return type && type[1].toLocaleUpperCase()\n    }\n\n    componentDidMount() {\n        if (!this.props.materials) this.props.fetchMainParams().then(this.goToSection)\n        else this.goToSection()\n\n        const handleNavigation = location => {\n            if (this.props.materials) {\n                const type = this.getElaborationTypeFromUrlParams(location.search)\n                if (type) this.handleSelectType(type)\n                else this.setState({ selectedElaboration: null, showForm: false })\n            }\n        }\n\n        addHistoryAction('CUT_TO_SIZE', handleNavigation)\n    }\n    componentDidUpdate( prevProps, prevState, snapshot ) {       \n        \n        if (this.props.materials) {\n            const type = this.getElaborationTypeFromUrlParams(window.location.search)\n            if (this.state.selectedElaboration !== type) {\n                if (type) this.handleSelectType(type)\n                else this.setState({ selectedElaboration: null, showForm: false })\n            }          \n        }       \n       \n    }\n\n    handleSelectType = elaborationType => {\n        this.setState({ selectedElaboration: elaborationType, showForm: true })\n    }\n\n    render() {\n        const { selectedElaboration, showForm } = this.state\n        const { materials, hasPreOrder } = this.props\n        let component = <ElaborationTypeSelector materials={materials} hasPreOrder={hasPreOrder}/>\n        if (showForm) {\n            if (selectedElaboration === 'BUDGET') {\n                component = <CutToSizeFormBudget selectedElaboration={selectedElaboration}/>\n            } else if (selectedElaboration === 'PREORDER') {\n                component = <CutToSizeFormPreOrder selectedElaboration={selectedElaboration}/>\n            } else if (selectedElaboration === 'MOBILIARIO' || selectedElaboration === 'CUSTOM_MOBILIARIO') {\n                component = <CutToSizeFormFurniture selectedElaboration={selectedElaboration}/>\n            } else if (selectedElaboration === 'CONFIGURABLE_BATH') {\n                component = <ConfigurableBathsCatalog />\n            } else {\n                component = <CutToSizeFormDefault selectedElaboration={selectedElaboration}/>\n            }\n        }\n        return (\n            <section className=\"cut_to_size\">\n                <div className=\"mt-4 container\">{component}</div>\n            </section>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(CutToSize)\n)\n","import React from 'react'\n\nimport CutToSize from '../components/cut-to-size/CutToSize'\nconst CutToSizeScreen = props => <CutToSize {...props} />\n\nexport default CutToSizeScreen\n","import React from 'react'\n\n// import WallSamplesLowes from '../components/catalog-lowes/WallSamplesLowes'\nimport { connect } from 'react-redux'\nimport { getUserType } from '../store/login/reducers'\nimport { injectIntl } from 'react-intl'\nimport { Route, Switch } from 'react-router-dom'\nimport CatalogScreen from './../screens/CatalogScreen'\nimport LowesViewSelector from '../components/catalog-lowes/LowesViewSelector'\nimport { getLocalizedUrl } from '../store/ui/reducers'\n\nconst mapStateToProps = (state, props) => {\n    return {\n        userType: getUserType(state),\n        localizedUrl: (routeId) => getLocalizedUrl(state, props.intl, routeId)\n    }\n}\n\nclass CatalogLowesScreen extends React.Component {\n    render() {\n        return (\n            <Switch>\n                <Route path={this.props.localizedUrl('ROUTE_CATALOG_LOWES').replace(':filter', 'home')} component={LowesViewSelector} />\n                {/* <Route path={this.props.localizedUrl('ROUTE_CATALOG_LOWES').replace(':filter', 'wall-samples')} component={WallSamplesLowes} /> */}\n                <Route path={this.props.localizedUrl('ROUTE_CATALOG_LOWES').replace(':filter', 'customer-samples')} component={CatalogScreen} />\n                <Route path={this.props.localizedUrl('ROUTE_CATALOG_LOWES').replace(':filter', 'brochures')} component={CatalogScreen} />\n            </Switch>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(CatalogLowesScreen)\n)\n","import * as api from '../api'\nimport { getToken } from '../login/reducers'\n\nexport const fetchTemplatesLowes = () => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_TEMPLATES_LOWES_REQUEST'\n    })\n    return api\n        .fetchTemplatesLowes(getToken(getState()))\n\n        .then(\n            response => {\n                dispatch({ type: 'FETCH_TEMPLATES_LOWES_SUCCESS', response: response.data })\n            },\n            error => {\n                dispatch({ type: 'FETCH_TEMPLATES_LOWES_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const sendCheckoutLowes = cart => (dispatch, getState) => {\n    dispatch({ type: 'SEND_CHECKOUT_LOWES_REQUEST' })\n    return api.sendCheckoutLowes(cart).then(\n        response => {\n            dispatch({ type: 'SEND_CHECKOUT_LOWES_SUCCESS', response: response.data })\n        },\n        error => {\n            dispatch({ type: 'SEND_CHECKOUT_LOWES_FAILURE' })\n            api.errorHandler(dispatch, error.response)\n        }\n    )\n}\nexport const fetchUsersShopperLowes = () => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_USERS_SHOPPER_LOWES_REQUEST'\n    })\n    return api\n        .fetchUsersShopperLowes(getToken(getState()))\n\n        .then(\n            response => {\n                dispatch({ type: 'FETCH_USERS_SHOPPER_LOWES_SUCCESS', response: response.data })\n            },\n            error => {\n                dispatch({ type: 'FETCH_USERS_SHOPPER_LOWES_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const updateStoreLowes = (storeId, templates) => (dispatch, getState) => {\n    dispatch({\n        type: 'UPDATE_STORE_LOWES_REQUEST'\n    })\n    return api\n        .updateStore(getToken(getState()), storeId, templates)\n\n        .then(\n            response => {\n                dispatch({ type: 'UPDATE_STORE_LOWES_SUCCESS', response: response.data })\n            },\n            error => {\n                dispatch({ type: 'UPDATE_SOTRE_LOWES_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const fetchProductsLowes = () => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_PRODUCTS_LOWES_REQUEST'\n    })\n    return api\n        .fetchProductsLowes(getToken(getState()))\n\n        .then(\n            response => {\n                dispatch({ type: 'FETCH_PRODUCTS_LOWES_SUCCESS', response: response.data })\n            },\n            error => {\n                dispatch({ type: 'FETCH_PRODUCTS_LOWES_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const fetchBrochuresLowes = () => (dispatch, getState) => {\n    dispatch({\n        type: 'FETCH_BROCHURES_LOWES_REQUEST'\n    })\n    return api\n        .fetchBrochuresLowes()\n\n        .then(\n            response => {\n                dispatch({ type: 'FETCH_BROCHURES_LOWES_SUCCESS', response: response.data })\n            },\n            error => {\n                dispatch({ type: 'FETCH_BROCHURES_LOWES_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const createNewTemplate = template => (dispatch, getState) => {\n    dispatch({ type: 'ADD_NEW_TEMPLATE', response: template })\n    return Promise.resolve()\n}\nexport const saveTemplate = template => (dispatch, getState) => {\n    dispatch({\n        type: 'SAVE_TEMPLATE_REQUEST'\n    })\n    return api\n        .saveTemplateLowes(getToken(getState()), template)\n\n        .then(\n            response => {\n                dispatch({ type: 'SAVE_TEMPLATE_SUCCESS', response: response.data })\n                dispatch(fetchTemplatesLowes())\n            },\n            error => {\n                dispatch({ type: 'SAVE_TEMPLATE_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const updateTemplate = template => (dispatch, getState) => {\n    dispatch({\n        type: 'UPDATE_TEMPLATE_REQUEST'\n    })\n    return api\n        .updateTemplateLowes(getToken(getState()), template)\n\n        .then(\n            response => {\n                dispatch({ type: 'UPDATE_TEMPLATE_SUCCESS', response: response.data })\n                dispatch(fetchTemplatesLowes())\n            },\n            error => {\n                dispatch({ type: 'UPDATE_TEMPLATE_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const enableTemplate = templateId => (dispatch, getState) => {\n    dispatch({\n        type: 'ENABLE_TEMPLATE_REQUEST'\n    })\n    return api\n        .enableTemplateLowes(getToken(getState()), templateId)\n\n        .then(\n            response => {\n                dispatch({ type: 'ENABLE_TEMPLATE_SUCCESS', response: response.data })\n                dispatch(fetchTemplatesLowes())\n            },\n            error => {\n                dispatch({ type: 'ENABLE_TEMPLATE_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const disableTemplate = templateId => (dispatch, getState) => {\n    dispatch({\n        type: 'DISABLE_TEMPLATE_REQUEST'\n    })\n    return api\n        .disableTemplateLowes(getToken(getState()), templateId)\n\n        .then(\n            response => {\n                dispatch({ type: 'DISABLE_TEMPLATE_SUCCESS', response: response.data })\n                dispatch(fetchTemplatesLowes())\n            },\n            error => {\n                dispatch({ type: 'DISABLE_TEMPLATE_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const deleteTemplate = templateId => (dispatch, getState) => {\n    dispatch({\n        type: 'DELETE_TEMPLATE_REQUEST'\n    })\n    return api\n        .deleteTemplateLowes(getToken(getState()), templateId)\n\n        .then(\n            response => {\n                dispatch({ type: 'DELETE_TEMPLATE_SUCCESS', response: response.data })\n                dispatch(fetchTemplatesLowes())\n            },\n            error => {\n                dispatch({ type: 'DELETE_TEMPLATE_FAILURE' })\n                api.errorHandler(dispatch, error.response)\n            }\n        )\n}\nexport const editTemplateName = (templateId, name) => (dispatch, getState) => {\n    dispatch({ type: 'CHANGE_TEMPLATE_NAME_REQUEST' })\n    return api.editTemplateName(getToken(getState()), templateId, name).then(\n        response => {\n            dispatch({ type: 'CHANGE_TEMPLATE_NAME_SUCCESS', response: { id: templateId, name: name } })\n        },\n        error => {\n            dispatch({ type: 'CHANGE_TEMPLATE_NAME_FAILURE' })\n        }\n    )\n}\nexport const sendFormRegister = (email, user, pass) => (dispatch, getState) => {\n    dispatch({ type: 'SEND_FORM_REGISTER_REQUEST', email, user, pass })\n    return api.sendFormRegister(email, user, pass).then(\n        response => {\n            dispatch({ type: 'SEND_FORM_REGISTER_SUCCESS', response })\n        },\n        error => {\n            dispatch({ type: 'SEND_FORM_REGISTER_FAILURE', error })\n        }\n    )\n}\nexport const sendFormNewRegister = (email, name, lastName, storeNumber, pass) => (dispatch, getState) => {\n    dispatch({ type: 'SEND_FORM_REGISTER_REQUEST', email, name, lastName, storeNumber, pass })\n    return api.sendFormNewRegister(email, name, lastName, storeNumber, pass).then(\n        response => {\n            dispatch({ type: 'SEND_FORM_REGISTER_SUCCESS', response })\n        },\n        error => {\n            dispatch({ type: 'SEND_FORM_REGISTER_FAILURE', error })\n        }\n    )\n}\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport ReactTable from 'react-table'\nimport { defineMessages, injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\nimport Modal from '../global/Modal'\nimport { connect } from 'react-redux'\nimport Spinner from '../global/Spinner'\nimport { getUsersShopper, getIsLoading, getTemplates } from '../../store/lowes/reducers'\nimport { fetchUsersShopperLowes, fetchTemplatesLowes, updateStoreLowes } from '../../store/lowes/actions'\n\ndefineMessages({\n    SEARCH_BY_ID_OR_NAME: {\n        id: 'search_by_id_or_name',\n        description: 'search_by_id_or_name',\n        defaultMessage: 'Search by Id or Name'\n    },\n    SEARCH_BY_NAME: {\n        id: 'search_by_name',\n        description: 'search_by_name',\n        defaultMessage: 'Search by Name'\n    }\n})\nconst mapStateToProps = state => {\n    return {\n        usersShopper: getUsersShopper(state),\n        isLoading: getIsLoading(state),\n        templates: getTemplates(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchUsersShopperLowes: () => {\n            dispatch(fetchUsersShopperLowes())\n        },\n        fetchTemplatesLowes: () => {\n            dispatch(fetchTemplatesLowes())\n        },\n        updateStoreLowes: (storeId, templatesId) => {\n            return dispatch(updateStoreLowes(storeId, templatesId))\n        }\n    }\n}\nclass LowesUser extends React.Component {\n    state = {\n        searchUsers: null,\n        searchTemplates: null\n    }\n    componentDidMount() {\n        this.props.fetchUsersShopperLowes()\n        this.props.fetchTemplatesLowes()\n    }\n    searchUsers(value) {\n        this.setState({ searchUsers: value })\n    }\n    searchTemplates(value) {\n        this.setState({ searchTemplates: value })\n    }\n    //poner nombre correcto (cambia el título de los samples sin producto)\n    toggleTemplateStore = templateId => {\n        let found =\n            this.state.templatesId.filter(store => {\n                return store === templateId\n            }).length > 0\n        if (found) {\n            let newstemplatesId = this.state.templatesId.filter(template => {\n                return template !== templateId\n            })\n            this.setState({ templatesId: newstemplatesId })\n        } else {\n            this.setState({ templatesId: this.state.templatesId.concat(templateId) })\n        }\n    }\n    updateStoreLowes = () => {\n        this.props.updateStoreLowes(this.state.storeSelected, this.state.templatesId).then(() => {\n            this.setState({ storeSelected: undefined })\n            this.props.fetchUsersShopperLowes()\n        })\n    }\n    render() {\n        let usersFiltered = null\n        if (this.state.searchUsers) {\n            usersFiltered = this.props.usersShopper\n            usersFiltered = usersFiltered.filter(user => {\n                return (\n                    user.name.toUpperCase().includes(this.state.searchUsers.toUpperCase()) ||\n                    user.address.toUpperCase().includes(this.state.searchUsers.toUpperCase()) ||\n                    user.city.toUpperCase().includes(this.state.searchUsers.toUpperCase()) ||\n                    user.state.toUpperCase().includes(this.state.searchUsers.toUpperCase())\n                )\n            })\n        }\n        let usersShopper = usersFiltered !== null ? usersFiltered : this.props.usersShopper\n\n        let templatesFiltered = null\n        if (this.state.searchTemplates) {\n            templatesFiltered = this.props.templates\n            templatesFiltered = templatesFiltered.filter(template => {\n                return template.name.toUpperCase().includes(this.state.searchTemplates.toUpperCase())\n            })\n        }\n        let templates = templatesFiltered !== null ? templatesFiltered : this.props.templates\n\n        return (\n            <div className=\"container container--lowes\">\n                {this.state.storeSelected && (\n                    <Modal\n                        title={<Translation id=\"plans\" defaultMessage=\"Plans\" />}\n                        onClose={() => this.setState({ storeSelected: undefined })}\n                        size=\"large\"\n                        footer={\n                            <Button onClick={() => this.updateStoreLowes()} inverted size=\"medium\">\n                                <Translation id=\"save\" defaultMessage=\"Save\" />\n                            </Button>\n                        }\n                    >\n                        <div className=\"group_buttons\">\n                            <div className=\"search-bar search-bar--thin\">\n                                <input\n                                    type=\"text\"\n                                    className=\"search-box\"\n                                    placeholder={this.props.intl.formatMessage({ id: 'search_by_name' })}\n                                    value={this.state.searchTemplates}\n                                    onChange={e => {\n                                        this.searchTemplates(e.target.value)\n                                    }}\n                                />\n                            </div>\n                        </div>\n                        <ReactTable\n                            data={templates}\n                            loading={this.props.isLoading}\n                            loadingText={<Spinner isLoading={this.props.isLoading} />}\n                            className=\"-highlight scroll mb-5\"\n                            columns={[\n                                {\n                                    id: 'id',\n                                    Header: <Translation id=\"id\" defaultMessage=\"id\" />,\n                                    accessor: 'id',\n                                    maxWidth: 60\n                                },\n                                {\n                                    id: 'name',\n                                    Header: <Translation id=\"name\" defaultMessage=\"Name\" />,\n                                    accessor: 'name'\n                                },\n                                {\n                                    id: 'checkBox',\n                                    show: this.props.templates !== undefined,\n                                    Cell: ({ original }) => {\n                                        return (\n                                            <input\n                                                type=\"checkbox\"\n                                                onChange={() => {\n                                                    this.toggleTemplateStore(original.id)\n                                                }}\n                                                checked={this.state.templatesId.includes(original.id)}\n                                            />\n                                        )\n                                    },\n                                    maxWidth: 60\n                                }\n                            ]}\n                            defaultPageSize={8}\n                            pageSizeOptions={[8, 16, 32, 64, 128]}\n                            previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                            nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                            noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                            pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                            ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                            getTrProps={(state, rowInfo) => {\n                                let cursor = rowInfo ? 'pointer' : 'default'\n\n                                return {\n                                    onClick: () => {\n                                        this.toggleTemplateStore(rowInfo.original.id)\n                                    },\n                                    style: { cursor: cursor }\n                                }\n                            }}\n                        />\n                    </Modal>\n                )}\n                <div className=\"row\" style={{ marginBottom: '15px' }}>\n                    <div className=\"offset-1 col-10\">\n                        <div className=\"search-bar search-bar--thin\">\n                            <input\n                                type=\"text\"\n                                className=\"search-box\"\n                                placeholder={this.props.intl.formatMessage({ id: 'search_by_id_or_name' })}\n                                value={this.state.searchUsers}\n                                onChange={e => {\n                                    this.searchUsers(e.target.value)\n                                }}\n                            />\n                        </div>\n                        {this.props.stores && (\n                            <div className=\"group_button_select_all\">\n                                <Button onClick={this.props.unselectAllUsersShopper}>Unselect All</Button>\n                                <Button onClick={this.props.selectAllUsersShopper}>Select All</Button>\n                            </div>\n                        )}\n                    </div>\n                </div>\n                <ReactTable\n                    data={usersShopper}\n                    loading={this.props.isLoading}\n                    loadingText={<Spinner isLoading={this.props.isLoading} />}\n                    className=\"-highlight scroll mb-5\"\n                    columns={[\n                        {\n                            id: 'name',\n                            Header: <Translation id=\"store_name\" defaultMessage=\"Store Name\" />,\n                            accessor: 'name'\n                        },\n                        {\n                            id: 'store_hashtag',\n                            Header: <Translation id=\"store_hashtag\" defaultMessage=\"Store #\" />,\n                            accessor: 'store_hashtag'\n                        },\n                        {\n                            id: 'phone',\n                            Header: <Translation id=\"phone\" defaultMessage=\"Phone\" />,\n                            accessor: 'phone',\n                            Cell: ({ original }) => {\n                                if (original.phone === 'SIN_TELEFONO') return <Translation id=\"no_phone\" defaultMessage=\"No phone\" />\n                                else return original.phone\n                            }\n                        },\n                        {\n                            id: 'address',\n                            Header: <Translation id=\"address\" defaultMessage=\"Address\" />,\n                            accessor: 'address'\n                        },\n                        {\n                            id: 'city',\n                            Header: <Translation id=\"city\" defaultMessage=\"City\" />,\n                            accessor: 'city'\n                        },\n                        {\n                            id: 'state',\n                            Header: <Translation id=\"state\" defaultMessage=\"State\" />,\n                            accessor: 'state'\n                        },\n                        {\n                            id: 'zip',\n                            Header: <Translation id=\"zip\" defaultMessage=\"Zip\" />,\n                            accessor: 'zip'\n                        },\n                        {\n                            id: 'pog',\n                            Header: <Translation id=\"pog_type\" defaultMessage=\"Pog Type\" />,\n                            accessor: 'pog'\n                        },\n                        {\n                            id: 'checkBox',\n                            show: this.props.stores !== undefined,\n                            Cell: ({ original }) => {\n                                return (\n                                    <input\n                                        type=\"checkbox\"\n                                        onChange={() => {\n                                            this.props.onToggleUsersTemplate(original.id)\n                                        }}\n                                        checked={this.props.stores.includes(original.id)}\n                                    />\n                                )\n                            },\n                            maxWidth: 60\n                        }\n                    ]}\n                    defaultPageSize={8}\n                    pageSizeOptions={[8, 16, 32, 64, 128]}\n                    previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                    nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                    noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                    pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                    ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                    getTrProps={(state, rowInfo) => {\n                        let cursor = rowInfo ? 'pointer' : 'default'\n\n                        return {\n                            onClick: () => {\n                                this.props.stores !== undefined\n                                    ? this.props.onToggleUsersTemplate(rowInfo.original.id)\n                                    : this.setState({ storeSelected: rowInfo.original.id, templatesId: rowInfo.original.plans })\n                            },\n                            style: { cursor: cursor }\n                        }\n                    }}\n                />\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(LowesUser)\n)\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport createClass from 'create-react-class'\nimport Select from 'react-select'\n\nimport PropTypes from 'prop-types'\n\nconst stringOrNode = PropTypes.oneOfType([PropTypes.string, PropTypes.node])\n\nconst productOption = createClass({\n    propTypes: {\n        children: PropTypes.node,\n        className: PropTypes.string,\n        isDisabled: PropTypes.bool,\n        isFocused: PropTypes.bool,\n        isSelected: PropTypes.bool,\n        onFocus: PropTypes.func,\n        onSelect: PropTypes.func,\n        option: PropTypes.object.isRequired\n    },\n    handleMouseDown(event) {\n        event.preventDefault()\n        event.stopPropagation()\n        this.props.onSelect(this.props.option, event)\n    },\n    handleMouseEnter(event) {\n        this.props.onFocus(this.props.option, event)\n    },\n    handleMouseMove(event) {\n        if (this.props.isFocused) return\n        this.props.onFocus(this.props.option, event)\n    },\n    render() {\n        let imageStyle = {\n            borderRadius: 3,\n            display: 'inline-block',\n            marginRight: 10,\n            position: 'relative',\n            top: -2,\n            verticalAlign: 'middle',\n            height: '20px'\n        }\n        return (\n            <div\n                className={this.props.className}\n                onMouseDown={this.handleMouseDown}\n                onMouseEnter={this.handleMouseEnter}\n                onMouseMove={this.handleMouseMove}\n                title={this.props.option.title}\n            >\n                <img src={this.props.option.img} alt=\"\" style={imageStyle} />\n\n                {this.props.children}\n            </div>\n        )\n    }\n})\nconst productValue = createClass({\n    propTypes: {\n        children: PropTypes.node,\n        placeholder: stringOrNode,\n        value: PropTypes.object\n    },\n    render() {\n        let imageStyle = {\n            borderRadius: 3,\n            display: 'inline-block',\n            marginRight: 10,\n            position: 'relative',\n            top: -2,\n            verticalAlign: 'middle',\n            height: '20px'\n        }\n        return (\n            <div className=\"Select-value\" title={this.props.value.title}>\n                <span className=\"Select-value-label\">\n                    <img src={this.props.value.img} alt=\"\" style={imageStyle} />\n\n                    {this.props.children}\n                </span>\n            </div>\n        )\n    }\n})\nconst mapDispatchToProps = dispatch => {\n    return {}\n}\nconst mapStateToProps = dispatch => {\n    return {}\n}\nconst ColorSelector = ({ products, onChange, value }) => {\n    return (\n        <Select\n            placeholder=\"Choose Product\"\n            options={products.map(product => ({\n                label: product.name,\n                value: product.productId,\n                productId: product.productId,\n                img: product.img,\n                lowesCode: product.lowesCode\n            }))}\n            value={value}\n            onChange={selectedOption => onChange(selectedOption)}\n            optionComponent={productOption}\n            valueComponent={productValue}\n        />\n    )\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ColorSelector)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport 'react-toggle/style.css'\nimport Toggle from 'react-toggle'\nimport Select from 'react-select'\nimport Button from '../global/Button'\nimport Modal from '../global/Modal'\nimport ColorSelector from '../global/ColorSelector'\nimport LowesUsers from './LowesUsers'\nimport confirm from '../global/confirm'\nimport GridLayout from 'react-grid-layout'\nimport Spinner from '../global/Spinner'\nimport domtoimage from 'dom-to-image'\nimport LazyImage from '../global/LazyImage'\nimport GoBack from '../global/GoBack'\nimport InputNumber from '../global/InputNumber'\n\nconst confirmDelete = (templateId, deleteTemplate, intl) => {\n    confirm(intl.formatMessage({ id: 'DELETE_TEMPLATE_LOWES_CONFIRM' }), {intl: intl}).then(\n        confirm => {\n            deleteTemplate(templateId)\n        },\n        cancel => {}\n    )\n}\n\nconst initState = {\n    optionTemplateSelected: null,\n    templateSelected: null,\n    sampleSelected: null,\n    selectedProduct: null,\n    selectedId: null,\n    showModalUsers: false,\n    showModalNewTemplate: false,\n    titleForNewTemplate: null,\n    sampleType: null,\n    editingTitle: false,\n    wantDuplicate: false\n}\nclass CatalogLowesAdmin extends React.Component {\n    state = initState\n    componentDidMount() {\n        this.props.fetchTemplatesLowes()\n        this.props.fetchProductsLowes()\n        this.props.fetchBrochuresLowes()\n        this.props.fetchUsersShopperLowes()\n    }\n    selectProduct = selectedOption => {\n        selectedOption\n            ? this.setState({\n                  optionSelectedProduct: selectedOption,\n                  sampleSelected: {\n                      ...this.state.sampleSelected,\n                      id: selectedOption.value,\n                      productId: selectedOption.productId,\n                      name: selectedOption.label,\n                      img: selectedOption.img,\n                      title: null\n                  }\n              })\n            : this.setState({\n                  optionSelectedProduct: null,\n                  sampleSelected: { ...this.state.sampleSelected, id: null, name: null, img: null }\n              })\n    }\n\n    selectTemplate(option) {\n        option\n            ? this.setState({\n                  optionTemplateSelected: option.value,\n                  templateSelected: { ...this.props.templates.find(template => template.id === option.value) }\n              })\n            : this.setState({ optionTemplateSelected: null, templateSelected: null })\n    }\n\n    changeTitleForSample(value) {\n        this.setState({ sampleSelected: { ...this.state.sampleSelected, id: null, title: value, name: null, img: null } })\n    }\n    changeLowesCodeForSample(value) {\n        this.setState({ sampleSelected: { ...this.state.sampleSelected, lowesCode: value } })\n    }\n\n    configNewSample(sample) {\n        this.setState({\n            optionSelectedProduct: null,\n            templateSelected: {\n                ...this.state.templateSelected,\n                samples: this.state.templateSelected.samples.map(emptySample => {\n                    if (sample.i === emptySample.i) {\n                        return { ...sample, type: this.state.sampleType }\n                        // {\n                        //     ...sample,\n                        //     subtypeName: '¿?',\n                        //     finish: 'Polished',\n                        //     thickness: '2cm'\n                        // }\n                    } else return emptySample\n                })\n            },\n            sampleSelected: null\n        })\n    }\n    changeTitleForNewTemplate(value) {\n        this.setState({ titleForNewTemplate: value })\n    }\n    createNewTemplate() {\n        let template = { ...this.props.templateSelected, name: this.state.titleForNewTemplate }\n        this.props.createNewTemplate(template).then(() => {\n            this.setState({ showModalNewTemplate: false })\n            this.selectTemplate({ value: this.props.templates.length.toString() })\n        })\n    }\n    saveTemplate() {\n        let template\n        this.state.templateSelected\n            ? (template = {\n                  name: this.state.titleForNewTemplate,\n                  samples: this.state.templateSelected.samples,\n                  stores: this.state.templateSelected.stores,\n                  screenshot: this.state.templateSelected.screenshot\n              })\n            : (template = {\n                  name: this.state.titleForNewTemplate,\n                  samples: [],\n                  stores: [],\n                  screenshot: null\n              })\n        this.props.saveTemplate(template).then(() => {\n            this.clearTemplateSelection()\n            this.setState({ showModalNewTemplate: false })\n        })\n    }\n    updateTemplate() {\n        Promise.resolve(this.setState({ saving: true })).then(() => {\n            this.createScreenShot()\n                .then(() => {\n                    this.props.updateTemplate(this.state.templateSelected)\n                })\n                .then(() => {\n                    this.setState({ saving: false })\n                })\n        })\n    }\n    deleteTemplate() {\n        confirmDelete(this.state.templateSelected.id, this.props.deleteTemplate, this.props.intl)\n        this.clearTemplateSelection()\n    }\n    createElementToEdit(item) {\n        return (\n            <div\n                key={item.i}\n                className={`grid_container__item ${item.type === 'BROCHURE' ? 'grid_container__item--brochure flip_container flip_container--hover' : ''} ${\n                    item.type === 'COLOR' ? 'flip_container flip_container--hover' : ''\n                } ${item.type === 'TEXT' ? 'grid_container__item--title' : ''}`}\n            >\n                <div className={`item item--edit ${item.type === 'COLOR' || item.type === 'BROCHURE' ? 'flip' : ''}`}>\n                    {item.img && (\n                        <div className={`item__img ${item.type === 'COLOR' || item.type === 'BROCHURE' ? 'flip__front' : ''}`} style={{ backgroundImage: `url(${item.img})` }} />\n                    )}\n\n                    <div className={`item__info ${item.type === 'COLOR' || item.type === 'BROCHURE' ? 'flip__back' : ''}`}>\n                        <div onClick={() => this.setState({ sampleSelected: item })}>\n                            <span\n                                className=\"remove\"\n                                style={{ position: 'absolute', right: '2px', top: '-2px', cursor: 'pointer' }}\n                                onClick={event => this.onRemoveItem(item.i, event, this.props.intl)}\n                            >\n                                <i className=\"fal fa-times\" />\n                            </span>\n                            <span className=\"edit\" style={{ position: 'absolute', left: '2px', bottom: '2px', cursor: 'pointer' }}>\n                                <i className=\"fal fa-pencil\" />\n                            </span>\n\n                            {item.name && (\n                                <div className=\"item__info__name\">\n                                    <span>{item.name}</span>\n                                </div>\n                            )}\n                            {item.title && (\n                                <div className=\"item__info__title\">\n                                    <span>{item.title}</span>\n                                </div>\n                            )}\n                            {item.lowesCode && (\n                                <div className=\"item__info__title\">\n                                    <span>{item.lowesCode}</span>\n                                </div>\n                            )}\n                            {!item.title && item.img && (\n                                <div className=\"item__info__subtitle\">\n                                    <span>\n                                        {item.h} X {item.w}\n                                    </span>\n                                </div>\n                            )}\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n    onLayoutChange(samples) {\n        let newSamples = samples.map((sample, index) => {\n            if (this.state.templateSelected.samples[index] !== undefined) return { ...this.state.templateSelected.samples[index], ...sample }\n            else return sample\n        })\n        this.setState({ templateSelected: { ...this.state.templateSelected, samples: newSamples } })\n    }\n    getXoflastElement() {\n        if (this.state.templateSelected.samples.length > 0) {\n            return (\n                this.state.templateSelected.samples[this.state.templateSelected.samples.length - 1].x +\n                this.state.templateSelected.samples[this.state.templateSelected.samples.length - 1].w\n            )\n        } else return 0\n    }\n    addNewSample(w, h) {\n        this.setState({\n            templateSelected: {\n                ...this.state.templateSelected,\n                samples: this.state.templateSelected.samples.concat({\n                    i:\n                        this.state.templateSelected.samples !== null && this.state.templateSelected.samples.length > 0\n                            ? (this.state.templateSelected.samples[this.state.templateSelected.samples.length - 1].i + 1).toString()\n                            : '0',\n                    x: 0,\n                    y: Infinity,\n                    w: w,\n                    h: h,\n                    minH: 2,\n                    minW: 2\n                })\n            }\n        })\n    }\n    onRemoveItem(i, e, intl) {\n        e.stopPropagation()\n        confirm(intl.formatMessage({ id: 'DELETE_ITEM_LOWES_CONFIRM' }), {intl: intl}).then(\n            confirm => {\n                let newSamples = this.state.templateSelected.samples.filter(item => {\n                    return item.i !== i\n                })\n                this.setState({ templateSelected: { ...this.state.templateSelected, samples: newSamples } })\n            },\n            cancel => {}\n        )\n    }\n    changeTitleOfTemplateSelected(value) {\n        this.setState({ templateSelected: { ...this.state.templateSelected, name: value } })\n    }\n    toogleAvailableOfTemplateSelected() {\n        this.setState({ templateSelected: { ...this.state.templateSelected, active: !this.state.templateSelected.active } }, () => {\n            if (this.state.templateSelected.active) {\n                this.props.enableTemplate(this.state.templateSelected.id)\n            } else {\n                this.props.disableTemplate(this.state.templateSelected.id)\n            }\n        })\n    }\n    toggleUsersTemplate(storeId) {\n        let found =\n            this.state.templateSelected.stores.filter(store => {\n                return store === storeId\n            }).length > 0\n        if (found) {\n            let newsStores = this.state.templateSelected.stores.filter(user => {\n                return user !== storeId\n            })\n            this.setState({ templateSelected: { ...this.state.templateSelected, stores: newsStores } })\n        } else {\n            this.setState({ templateSelected: { ...this.state.templateSelected, stores: this.state.templateSelected.stores.concat(storeId) } })\n        }\n    }\n    selectAllUsersShopper() {\n        let users = this.props.usersShopper.map(user => user.id)\n        this.setState({ templateSelected: { ...this.state.templateSelected, stores: users } })\n    }\n    unselectAllUsersShopper() {\n        this.setState({ templateSelected: { ...this.state.templateSelected, stores: [] } })\n    }\n    createScreenShot() {\n        return (\n            document.querySelector('.react-grid-layout.grid_container') &&\n            domtoimage.toJpeg(document.querySelector('.react-grid-layout.grid_container'), { quality: 0.8, bgcolor: '#e6e6e6' }).then(dataUrl => {\n                var img = new Image()\n                img.src = dataUrl\n                this.setState({ templateSelected: { ...this.state.templateSelected, screenshot: dataUrl } })\n            })\n        )\n    }\n    clearTemplateSelection() {\n        this.setState({ templateSelected: null, optionTemplateSelected: null })\n    }\n    createElement(item, step) {\n        item = { ...item, step: step }\n        return (\n            <div\n                key={item.i}\n                className={`grid_container__item ${item.type === 'BROCHURE' ? 'grid_container__item--brochure flip_container flip_container--hover' : ''} ${\n                    item.type === 'COLOR' ? 'flip_container flip_container--hover' : ''\n                }${item.type === 'TEXT' ? 'grid_container__item--title' : ''}`}\n                onClick={item.img && (() => this.insertItem(item))}\n            >\n                <div className={`item ${item.type === 'COLOR' || item.type === 'BROCHURE' ? 'flip' : ''}`}>\n                    {item.img && (\n                        <div\n                            className={`item__img ${item.type === 'COLOR' || item.type === 'BROCHURE' ? 'flip__front' : ''}`}\n                            style={{\n                                backgroundImage: `url(${item.img})`\n                            }}\n                        />\n                    )}\n\n                    <div className={`item__info ${item.type === 'COLOR' || item.type === 'BROCHURE' ? 'flip__back' : ''}`}>\n                        <div>\n                            {item.name && (\n                                <div className=\"item__info__name\">\n                                    <span>{item.name}</span>\n                                </div>\n                            )}\n                            {item.title && (\n                                <div className=\"item__info__title\">\n                                    <span>{item.title}</span>\n                                </div>\n                            )}\n                            {item.lowesCode && (\n                                <div className=\"item__info__title\">\n                                    <span>{item.lowesCode}</span>\n                                </div>\n                            )}\n                            {item.img && (\n                                <div className=\"item__info__subtitle\">\n                                    <span>\n                                        {item.h} X {item.w}\n                                    </span>\n                                </div>\n                            )}\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n    getCols(samples) {\n        let maxXaddW = 0\n        samples.forEach(sample => {\n            if (sample.w + sample.x >= maxXaddW) maxXaddW = sample.w + sample.x\n        })\n        return maxXaddW\n    }\n    render() {\n        let { templates } = this.props\n        let { optionTemplateSelected, templateSelected } = this.state\n        let templatesOptions =\n            templates &&\n            templates.map(template => {\n                return { value: template.id, label: template.name }\n            })\n        return (\n            <div>\n                {(this.props.isLoading || this.state.saving) && <Spinner isLoading={this.props.isLoading || this.state.saving} />}\n                <div className=\"catalog_lowes\">\n                    {/* <div className=\"catalog_lowes__sidbar\">\n                        <div className=\"row\">\n                            <div className=\"col-9\">\n                                <Select\n                                    placeholder=\"Select a Template\"\n                                    value={optionTemplateSelected}\n                                    onChange={value => {\n                                        this.selectTemplate(value)\n                                    }}\n                                    options={templatesOptions}\n                                />\n                            </div>\n                            <div className=\"col-3\">\n                                <Button customClass=\"menu__item\" onClick={() => this.setState({ showModalNewTemplate: true })} size=\"medium\">\n                                    <Translation id=\"new\" defaultMessage=\"New\" />\n                                </Button>\n                            </div>\n                        </div>\n                    </div> */}\n                    {!templateSelected && (\n                        <div className=\"catalog_lowes__selection\">\n                            <div style={{ width: '100%' }}>\n                                <h3><Translation id=\"templates_enabled\" defaultMessage=\"Templates enabled\" /></h3>\n                            </div>\n                            {templates &&\n                                templates.map(template => {\n                                    if (template.active)\n                                        return (\n                                            <div\n                                                className=\"catalog_lowes__selection selection__item item\"\n                                                onClick={() => {\n                                                    this.selectTemplate({ value: template.id })\n                                                }}\n                                            >\n                                                <div className=\"item__screenshot\">\n                                                    {/* <div className=\"available\">\n                                                        {template.active ? <i className=\"fas fa-check-circle\" style={{ color: 'green' }} /> : <i className=\"fas fa-times-circle\" />}\n                                                    </div> */}\n                                                    <div className=\"available\">\n                                                        {template.samples.filter(sample => {\n                                                            return !((sample.name !== null && sample.name !== undefined) || (sample.title !== null && sample.title !== undefined))\n                                                        }).length > 0 ? (\n                                                            <i className=\"fas fa-exclamation-triangle\" />\n                                                        ) : (\n                                                            ''\n                                                        )}\n                                                    </div>\n                                                    {template.screenshot && (\n                                                        <LazyImage extraClass=\"screenshot\" preview={template.screenshot} image={template.screenshot} type=\"div\" />\n                                                    )}\n\n                                                    {/* {template.screenshot && <img width=\"250\" height=\"250\" src={template.screenshot} />} */}\n                                                </div>\n                                                <div className=\"item__text\">{template.name}</div>\n                                            </div>\n                                        )\n                                    else return null\n                                })}\n                            {!templateSelected && (\n                                <div\n                                    className=\"catalog_lowes__selection selection__item item\"\n                                    onClick={() => {\n                                        this.setState({ showModalNewTemplate: true })\n                                    }}\n                                >\n                                    <div className=\"item__screenshot\">\n                                        <div className=\"add_new\">\n                                            <i className=\"fas fa-plus-circle\" />\n                                        </div>\n                                    </div>\n                                    <div className=\"item__text\">\n                                        <Translation id=\"new_template\" defaultMessage=\"New template\" />\n                                    </div>\n                                </div>\n                            )}\n                            {templates.find(template => {\n                                return template.active === 0\n                            }) && (\n                                <div style={{ width: '100%' }}>\n                                    <h3><Translation id=\"templates_disabled\" defaultMessage=\"Templates disabled\" /></h3>\n                                </div>\n                            )}\n                            {templates &&\n                                templates.map(template => {\n                                    if (!template.active)\n                                        return (\n                                            <div\n                                                className=\"catalog_lowes__selection selection__item item\"\n                                                onClick={() => {\n                                                    this.selectTemplate({ value: template.id })\n                                                }}\n                                            >\n                                                <div className=\"item__screenshot\">\n                                                    {/* <div className=\"available\">\n                                                        {template.active ? <i className=\"fas fa-check-circle\" style={{ color: 'green' }} /> : <i className=\"fas fa-times-circle\" />}\n                                                    </div> */}\n                                                    {template.screenshot && (\n                                                        <LazyImage extraClass=\"screenshot\" preview={template.screenshot} image={template.screenshot} type=\"div\" />\n                                                    )}\n\n                                                    {/* {template.screenshot && <img width=\"250\" height=\"250\" src={template.screenshot} />} */}\n                                                </div>\n                                                <div className=\"item__text\">{template.name}</div>\n                                            </div>\n                                        )\n                                    else return null\n                                })}\n                        </div>\n                    )}\n                    {templateSelected && (\n                        <div className=\"catalog_lowes__content\">\n                            <div className=\"catalog_lowes__sidbar\" style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', flexWrap: 'wrap' }}>\n                                <div style={{ width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'space-between', margin: '10px' }}>\n                                    <div style={{ width: '100px' }}>\n                                        <GoBack goBack={() => this.clearTemplateSelection()} />\n                                    </div>\n                                    {this.state.editingTitle ? (\n                                        <div className=\"title_template\">\n                                            <input\n                                                type=\"text\"\n                                                placeholder=\"text\"\n                                                value={this.state.templateSelected.name}\n                                                onKeyPress={e => {\n                                                    if (e.key === 'Enter') {\n                                                        this.props.editTemplateName(this.state.templateSelected.id, this.state.templateSelected.name).then(() => {\n                                                            this.setState({ editingTitle: false })\n                                                        })\n                                                    }\n                                                }}\n                                                onChange={input => this.changeTitleOfTemplateSelected(input.target.value)}\n                                                style={{ width: '75%' }}\n                                            />\n                                            <Button\n                                                onClick={() => {\n                                                    this.props.editTemplateName(this.state.templateSelected.id, this.state.templateSelected.name).then(() => {\n                                                        this.setState({ editingTitle: false })\n                                                    })\n                                                }}\n                                            >\n                                                {' '}\n                                                <Translation id=\"save\" defaultMessage=\"Save\" />\n                                            </Button>\n                                        </div>\n                                    ) : (\n                                        <div className=\"title_template\">\n                                            <h2>\n                                                {this.state.templateSelected.name}{' '}\n                                                <sup>\n                                                    <i\n                                                        className=\"fal fa-pencil\"\n                                                        onClick={() => {\n                                                            this.setState({ editingTitle: !this.state.editingTitle })\n                                                        }}\n                                                    />\n                                                </sup>\n                                            </h2>\n                                        </div>\n                                    )}\n\n                                    <div style={{ width: '180px', display: 'flex', alignItems: 'center', justifyContent: 'space-evenly' }}>\n                                        <Toggle defaultChecked={this.state.templateSelected.active} onChange={() => this.toogleAvailableOfTemplateSelected()} />\n                                        {this.state.templateSelected.active ? (\n                                            <Translation id=\"available\" defaultMessage=\"Available\" />\n                                        ) : (\n                                            <Translation id=\"not_available\" defaultMessage=\"Not available\" />\n                                        )}\n                                    </div>\n                                </div>\n                                <div style={{ width: '1400px', display: 'flex', alignItems: 'center', justifyContent: 'space-evenly' }}>\n                                    <div\n                                        style={{\n                                            display: 'flex',\n                                            alignItems: 'center',\n                                            justifyContent: 'space-between',\n                                            width: '50%',\n                                            padding: '10px 20px',\n                                            background: 'cornsilk',\n                                            borderRadius: '5px'\n                                        }}\n                                    >\n                                        <span><Translation id=\"height\" defaultMessage=\"Height\" /></span>\n                                        <InputNumber\n                                            value={this.state.height}\n                                            change={qty => {\n                                                this.setState({ height: parseFloat(qty, 10) })\n                                            }}\n                                            step={1}\n                                        />\n\n                                        <span><Translation id=\"width\" defaultMessage=\"Width\" /></span>\n                                        <InputNumber\n                                            value={this.state.width}\n                                            change={qty => {\n                                                this.setState({ width: parseFloat(qty, 10) })\n                                            }}\n                                            step={1}\n                                        />\n                                        <Button onClick={() => this.addNewSample(this.state.width, this.state.height)} disabled={!(this.state.width && this.state.height)}>\n                                            <Translation id=\"add_custom\" defaultMessage=\"Add custom\" />\n                                        </Button>\n                                    </div>\n                                    <Button onClick={() => this.addNewSample(4, 4)}><Translation id=\"add\" defaultMessage=\"Add\" /> 4 x 4 </Button>\n                                    <Button onClick={() => this.addNewSample(8, 8)}><Translation id=\"add\" defaultMessage=\"Add\" /> 8 x 8</Button>\n                                </div>\n                            </div>\n                            <div />\n                            {!this.state.saving ? (\n                                <GridLayout\n                                    className=\"grid_container grid_container--editing\"\n                                    onLayoutChange={layout => this.onLayoutChange(layout)}\n                                    layout={this.state.templateSelected.samples}\n                                    cols={240}\n                                    rowHeight={10}\n                                    width={5000}\n                                >\n                                    {this.state.templateSelected.samples.map(item => this.createElementToEdit(item))}\n                                </GridLayout>\n                            ) : (\n                                <GridLayout\n                                    className=\"grid_container\"\n                                    useCSSTransforms={true}\n                                    isDraggable={false}\n                                    isResizable={false}\n                                    layout={this.state.templateSelected.samples}\n                                    cols={this.getCols(this.state.templateSelected.samples)}\n                                    rowHeight={10}\n                                    width={this.getCols(this.state.templateSelected.samples) * 20.84}\n                                    style={{ width: `${this.getCols(this.state.templateSelected.samples) * 20.84}px` }}\n                                >\n                                    {this.state.templateSelected.samples.map(item => this.createElement(item, 1))}\n                                </GridLayout>\n                            )}\n                            {templateSelected && (\n                                <div className=\"catalog_lowes__sidbar menu\">\n                                    <Button customClass=\"menu__item\" onClick={() => this.deleteTemplate()} size=\"medium\">\n                                        <Translation id=\"delete\" defaultMessage=\"Delete\" />\n                                    </Button>\n                                    <Button\n                                        customClass=\"menu__item\"\n                                        onClick={() =>\n                                            this.setState({\n                                                showModalUsers: !this.state.showModalUsers\n                                            })\n                                        }\n                                        size=\"medium\"\n                                        disabled={optionTemplateSelected ? false : true}\n                                    >\n                                        <Translation id=\"users\" defaultMessage=\"Users\" />\n                                    </Button>\n                                    <Button customClass=\"menu__item\" inverted onClick={() => this.updateTemplate()} size=\"medium\" disabled={optionTemplateSelected ? false : true}>\n                                        <Translation id=\"save\" defaultMessage=\"Save\" />\n                                    </Button>\n                                </div>\n                            )}\n                        </div>\n                    )}\n                    {this.state.showModalUsers && (\n                        <LowesUsers\n                            stores={this.state.templateSelected.stores}\n                            onClose={() =>\n                                this.setState({\n                                    showModalUsers: false\n                                })\n                            }\n                            onToggleUsersTemplate={storeId => this.toggleUsersTemplate(storeId)}\n                            selectAllUsersShopper={() => this.selectAllUsersShopper()}\n                            unselectAllUsersShopper={() => this.unselectAllUsersShopper()}\n                        />\n                    )}\n                    {this.state.sampleSelected && (\n                        <Modal\n                            title={<Translation id=\"please_choose_option\" defaultMessage=\"Please choose option\" />}\n                            onClose={() => this.setState({ sampleSelected: false })}\n                            size=\"large\"\n                            footer={\n                                <div className=\"modal-footer__buttons\">\n                                    <Button onClick={() => this.configNewSample(this.state.sampleSelected)} inverted size=\"medium\">\n                                        <Translation id=\"ok\" defaultMessage=\"Ok\" />\n                                    </Button>\n                                </div>\n                            }\n                        >\n                            <div className=\"edit_sample\">\n                                <div className=\"edit_sample__type\">\n                                    <Button onClick={() => this.setState({ sampleType: 'COLOR' })} inverted={this.state.sampleType === 'COLOR'} size=\"medium\">\n                                        <Translation id=\"product\" defaultMessage=\"Product\" />\n                                    </Button>\n                                    <Button onClick={() => this.setState({ sampleType: 'TEXT' })} inverted={this.state.sampleType === 'TEXT'} size=\"medium\">\n                                        <Translation id=\"title\" defaultMessage=\"Title\" />\n                                    </Button>\n                                    {/* //REVIEW: Funcionalidad de brochures */}\n                                    {/* <Button onClick={() => this.setState({ sampleType: 'BROCHURE' })} inverted={!this.state.sampleType === 'BROCHURE'} size=\"medium\">\n                                        <Translation id=\"brochures\" defaultMessage=\"Brochures\" />\n                                    </Button> */}\n                                </div>\n\n                                {this.state.sampleType === 'COLOR' && (\n                                    <React.Fragment>\n                                        <ColorSelector\n                                            products={this.props.products}\n                                            value={this.state.sampleSelected ? this.state.sampleSelected.id : this.state.optionSelectedProduct}\n                                            onChange={selectedOption => this.selectProduct(selectedOption)}\n                                        />\n                                        <input\n                                            style={{ marginTop: '10px' }}\n                                            id=\"inputId\"\n                                            placeholder=\"insert re-order number\"\n                                            value={this.state.sampleSelected.lowesCode}\n                                            onKeyPress={e => {\n                                                if (e.key === 'Enter') this.configNewSample(this.state.sampleSelected)\n                                            }}\n                                            onChange={e => {\n                                                this.changeLowesCodeForSample(e.target.value)\n                                            }}\n                                            className=\"form-control\"\n                                        />\n                                    </React.Fragment>\n                                )}\n                                {this.state.sampleType === 'TEXT' && (\n                                    <React.Fragment>\n                                        <input\n                                            id=\"inputId\"\n                                            placeholder=\"Insert Text\"\n                                            value={this.state.sampleSelected.title}\n                                            onKeyPress={e => {\n                                                if (e.key === 'Enter') this.configNewSample(this.state.sampleSelected)\n                                            }}\n                                            onChange={e => {\n                                                this.changeTitleForSample(e.target.value)\n                                            }}\n                                            className=\"form-control\"\n                                        />\n                                    </React.Fragment>\n                                )}\n                                {this.state.sampleType === 'BROCHURE' && (\n                                    <React.Fragment>\n                                        <React.Fragment>\n                                            <ColorSelector\n                                                products={this.props.brochures}\n                                                value={this.state.sampleSelected ? this.state.sampleSelected.id : this.state.optionSelectedProduct}\n                                                onChange={selectedOption => this.selectProduct(selectedOption)}\n                                            />\n                                            <input\n                                                style={{ marginTop: '10px' }}\n                                                id=\"inputId\"\n                                                placeholder=\"Insert Code\"\n                                                value={this.state.sampleSelected.lowesCode}\n                                                onKeyPress={e => {\n                                                    if (e.key === 'Enter') this.configNewSample(this.state.sampleSelected)\n                                                }}\n                                                onChange={e => {\n                                                    this.changeLowesCodeForSample(e.target.value)\n                                                }}\n                                                className=\"form-control\"\n                                            />\n                                        </React.Fragment>\n                                    </React.Fragment>\n                                )}\n                            </div>\n                        </Modal>\n                    )}\n                    {this.state.showModalNewTemplate && (\n                        <Modal\n                            title={<Translation id=\"new_template\" defaultMessage=\"New template\" />}\n                            onClose={() =>\n                                this.setState({\n                                    showModalNewTemplate: false\n                                })\n                            }\n                            size=\"large\"\n                            footer={\n                                <Button onClick={() => this.saveTemplate()} disabled={!this.state.titleForNewTemplate} inverted size=\"medium\">\n                                    <Translation id=\"new\" defaultMessage=\"New\" />\n                                </Button>\n                            }\n                        >\n                            <div className=\"modal_new_template\">\n                                <div className=\"group group__title\">\n                                    <input\n                                        id=\"input_title__new_template\"\n                                        placeholder=\"Insert Title\"\n                                        value={this.state.titleForNewTemplate}\n                                        onChange={e => {\n                                            this.changeTitleForNewTemplate(e.target.value)\n                                        }}\n                                        className=\"form-control\"\n                                    />\n                                    <Button\n                                        onClick={() => {\n                                            if (this.state.wantDuplicate) {\n                                                this.clearTemplateSelection()\n                                            }\n                                            this.setState({ wantDuplicate: !this.state.wantDuplicate })\n                                        }}\n                                        inverted={this.state.wantDuplicate}\n                                        inline\n                                    >\n                                        <Translation id=\"duplicate\" defaultMessage=\"Duplicate\" />\n                                    </Button>\n                                </div>\n                                <div className=\"group group__duplicate\">\n                                    {this.state.wantDuplicate && (\n                                        <Select\n                                            placeholder=\"Select template (for duplicate)\"\n                                            value={optionTemplateSelected}\n                                            onChange={value => {\n                                                this.selectTemplate(value)\n                                            }}\n                                            options={templatesOptions}\n                                            inline\n                                        />\n                                    )}\n                                </div>\n                            </div>\n                        </Modal>\n                    )}\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(CatalogLowesAdmin)\n","import { connect } from 'react-redux'\nimport { getTemplates, getIdConfirmation, getUsersShopper, getProductsLowes } from '../../store/lowes/reducers'\nimport { fetchTemplatesLowes, sendCheckoutLowes, fetchUsersShopperLowes, fetchProductsLowes, createNewTemplate, saveTemplate } from '../../store/lowes/actions'\nimport { getIsLoading, getBrochuresLowes } from '../../store/lowes/reducers'\nimport { deleteTemplate, updateTemplate, enableTemplate, disableTemplate, editTemplateName, fetchBrochuresLowes } from '../../store/lowes/actions'\nimport CatalogLowesAdmin from './CatalogLowesAdmin'\n\nconst mapStateToProps = state => {\n    return {\n        templates: getTemplates(state),\n        idConfirmation: getIdConfirmation(state),\n        products: getProductsLowes(state),\n        brochures: getBrochuresLowes(state),\n        usersShopper: getUsersShopper(state),\n        isLoading: getIsLoading(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchTemplatesLowes: () => {\n            dispatch(fetchTemplatesLowes())\n        },\n        fetchProductsLowes: () => {\n            dispatch(fetchProductsLowes())\n        },\n        fetchBrochuresLowes: () => {\n            dispatch(fetchBrochuresLowes())\n        },\n        fetchUsersShopperLowes: () => {\n            dispatch(fetchUsersShopperLowes())\n        },\n        sendCheckoutLowes: cart => {\n            return dispatch(sendCheckoutLowes(cart))\n        },\n        createNewTemplate: template => {\n            return dispatch(createNewTemplate(template))\n        },\n        saveTemplate: template => {\n            return dispatch(saveTemplate(template))\n        },\n        deleteTemplate: templateId => {\n            dispatch(deleteTemplate(templateId))\n        },\n        updateTemplate: template => {\n            dispatch(updateTemplate(template))\n        },\n        enableTemplate: templateId => {\n            dispatch(enableTemplate(templateId))\n        },\n        disableTemplate: templateId => {\n            dispatch(disableTemplate(templateId))\n        },\n        editTemplateName: (templateId, name) => {\n            return dispatch(editTemplateName(templateId, name))\n        }\n    }\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(CatalogLowesAdmin)\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport LowesAdminViewSelector from '../components/catalog-lowes/LowesAdminViewSelector'\nimport { Route, Switch } from 'react-router-dom'\nimport { injectIntl } from 'react-intl'\nimport LowesUsers from '../components/catalog-lowes/LowesUsers'\nimport LowesReports from '../components/catalog-lowes/LowesReports'\nimport { getUserType } from '../store/login/reducers'\nimport CatalogLowesAdminContainer from '../components/catalog-lowes/CatalogLowesAdminContainer'\nimport { getLocalizedUrl } from '../store/ui/reducers'\nconst mapStateToProps = (state, props) => {\n    return {\n        userType: getUserType(state),\n        localizedUrl: (routeId) => getLocalizedUrl(state, props.intl, routeId)\n    }\n}\nclass CatalogLowesAdminScreen extends React.Component {\n    render() {\n        return (\n            <div>\n                {/* {this.props.history.location.pathname !== '/catalog-lowes-admin/home' && <LowesAdminViewSelector small />} */}\n\n                <Switch>\n                    <Route path={this.props.localizedUrl('ROUTE_CATALOG_LOWES_ADMIN').replace(':filter', 'home')} component={LowesAdminViewSelector} />\n                    <Route path={this.props.localizedUrl('ROUTE_CATALOG_LOWES_ADMIN').replace(':filter', 'pog')} component={CatalogLowesAdminContainer} />\n                    <Route path={this.props.localizedUrl('ROUTE_CATALOG_LOWES_ADMIN').replace(':filter', 'stores')} component={LowesUsers} />\n                    <Route path={this.props.localizedUrl('ROUTE_CATALOG_LOWES_ADMIN').replace(':filter', 'reports')} component={LowesReports} />\n                </Switch>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        null\n    )(CatalogLowesAdminScreen)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport Button from '../global/Button'\nimport { connect } from 'react-redux'\nimport Spinner from '../global/Spinner'\nimport { getIsLoading, getAlertSendForm } from '../../store/lowes/reducers'\nimport { sendFormRegister } from '../../store/lowes/actions'\nimport logo from '../../assets/img/e.cosentino.svg'\nimport Alerts from '../alerts/Alerts'\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        isLoading: getIsLoading(state),\n        emailFromUrl: match.params.email,\n        alertSendForm: getAlertSendForm(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        sendForm: (e, email, username, pass) => {\n            e.preventDefault()\n            dispatch(sendFormRegister(email, username, pass))\n        }\n    }\n}\nlet initState = {\n    canSend: false,\n    alert: {\n        mayus: undefined,\n        contain: undefined,\n        number: undefined,\n        minus: undefined,\n        equal: undefined\n    },\n    listRequirementsVisible: false\n}\nclass LowesRegister extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = initState\n    }\n    componentDidMount() {}\n    decodeEmail(email) {\n        try {\n            return atob(email)\n        } catch (e) {\n            return ''\n        }\n    }\n    checkForm() {\n        let haveMayus = /.*[A-Z]+.*/.test(this.passwordInput.value)\n        let haveMinus = /.*[a-z]+.*/.test(this.passwordInput.value)\n        let haveNumber = /.*[\\d]+.*/.test(this.passwordInput.value)\n        let haveContain = /.{8}/.test(this.passwordInput.value)\n        let isEqual = this.passwordInput.value === this.repeatPasswordInput.value && this.passwordInput.value !== ''\n        let ok = haveMayus && haveMinus && haveNumber && haveContain && isEqual && this.emailInput.value !== '' && this.usernameInput.value !== ''\n        if (haveContain) this.setState({ alert: Object.assign(this.state.alert, { contain: true }) })\n        else if (this.state.alert.contain) this.setState({ alert: Object.assign(this.state.alert, { contain: false }) })\n\n        if (haveNumber) this.setState({ alert: Object.assign(this.state.alert, { number: true }) })\n        else if (this.state.alert.number) this.setState({ alert: Object.assign(this.state.alert, { number: false }) })\n\n        if (haveMinus) this.setState({ alert: Object.assign(this.state.alert, { minus: true }) })\n        else if (this.state.alert.minus) this.setState({ alert: Object.assign(this.state.alert, { minus: false }) })\n\n        if (haveMayus) this.setState({ alert: Object.assign(this.state.alert, { mayus: true }) })\n        else if (this.state.alert.mayus) this.setState({ alert: Object.assign(this.state.alert, { mayus: false }) })\n\n        if (isEqual) this.setState({ alert: Object.assign(this.state.alert, { equal: true }) })\n        else if (this.state.alert.equal) this.setState({ alert: Object.assign(this.state.alert, { equal: false }) })\n\n        this.setState({ canSend: ok })\n    }\n    render() {\n        return (\n            <div className=\"lowes_register\">\n                <Spinner isLoading={this.props.isLoading} />\n                <div className=\"container container-login\">\n                    <div className=\"card card-container\">\n                        <img alt=\"\" src={logo} />\n                        {this.props.alertSendForm && <Alerts alert={this.props.alertSendForm.msg} status={this.props.alertSendForm.status} />}\n                        {this.props.alertSendForm && this.props.alertSendForm.status === 200 ? (\n                            <LocalizedLink routeId=\"ROUTE_HOME\">\n                                <Button>\n                                    <Translation id=\"take_me_home\" defaultMessage=\"Take me home\" />\n                                </Button>\n                            </LocalizedLink>\n                        ) : (\n                            <form className=\"form-signin\" onSubmit={e => this.props.sendForm(e, this.emailInput.value, this.usernameInput.value, this.passwordInput.value)}>\n                                <div className=\"group group_user\">\n                                    <label for=\"email\">\n                                        <Translation id=\"register\" defaultMessage=\"Register\" />\n                                    </label>\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"email\"\n                                        placeholder=\"Email\"\n                                        required\n                                        onChange={() => this.checkForm()}\n                                        readOnly\n                                        ref={node => {\n                                            this.emailInput = node\n                                        }}\n                                        value={this.props.emailFromUrl && this.decodeEmail(this.props.emailFromUrl)}\n                                    />\n                                    <LocalizedLink routeId=\"ROUTE_LOWES_NEW_USER_REGISTER\">\n                                        <Translation id=\"you_don_have_a_salesforce_account\" defaultMessage=\"You dont have a salesforce account?\" />\n                                    </LocalizedLink>\n\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"user\"\n                                        placeholder=\"Username\"\n                                        required\n                                        onChange={() => this.checkForm()}\n                                        ref={node => {\n                                            this.usernameInput = node\n                                        }}\n                                    />\n                                </div>\n                                <div className=\"group group_password\">\n                                    <label for=\"password\">\n                                        <Translation id=\"password\" defaultMessage=\"Password\" />\n                                    </label>\n                                    <ul className={`list_requirements ${this.state.listRequirementsVisible ? '' : 'list_requirements--hidden'}`}>\n                                        <li\n                                            className={`list_requirements__item${this.state.alert.number !== undefined ? (this.state.alert.number ? '-success' : '-failure') : ''}`}\n                                            data-cy=\"change_password__requirements-number\"\n                                        >\n                                            <Translation id=\"password_not_number\" defaultMessage=\"At least one numeral\" />\n                                        </li>\n                                        <li\n                                            className={`list_requirements__item${this.state.alert.minus !== undefined ? (this.state.alert.minus ? '-success' : '-failure') : ''}`}\n                                            data-cy=\"change_password__requirements-low_case\"\n                                        >\n                                            <Translation id=\"password_not_minus\" defaultMessage=\"At least one lower case letter\" />\n                                        </li>\n                                        <li\n                                            className={`list_requirements__item${this.state.alert.mayus !== undefined ? (this.state.alert.mayus ? '-success' : '-failure') : ''}`}\n                                            data-cy=\"change_password__requirements-upper_case\"\n                                        >\n                                            <Translation id=\"password_not_mayus\" defaultMessage=\"At least one upper case letter\" />\n                                        </li>\n                                        <li\n                                            className={`list_requirements__item${\n                                                this.state.alert.contain !== undefined ? (this.state.alert.contain ? '-success' : '-failure') : ''\n                                            }`}\n                                            data-cy=\"change_password__requirements-minimum\"\n                                        >\n                                            <Translation id=\"password_should_contain\" defaultMessage=\"Minimum 8 characters\" />\n                                        </li>\n                                        <li\n                                            className={`list_requirements__item${this.state.alert.equal !== undefined ? (this.state.alert.equal ? '-success' : '-failure') : ''}`}\n                                            data-cy=\"change_password__requirements-match\"\n                                        >\n                                            <Translation id=\"password_not_equal\" defaultMessage=\"Passwords do not match\" />\n                                        </li>\n                                    </ul>\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"password\"\n                                        placeholder=\"Password\"\n                                        onChange={() => this.checkForm()}\n                                        onFocus={() => {\n                                            this.setState({ listRequirementsVisible: true })\n                                        }}\n                                        onBlur={() => {\n                                            this.setState({ listRequirementsVisible: false })\n                                        }}\n                                        ref={node => {\n                                            this.passwordInput = node\n                                        }}\n                                    />\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"password\"\n                                        placeholder=\"Repeat password\"\n                                        onChange={() => this.checkForm()}\n                                        onFocus={() => {\n                                            this.setState({ listRequirementsVisible: true })\n                                        }}\n                                        onBlur={() => {\n                                            this.setState({ listRequirementsVisible: false })\n                                        }}\n                                        ref={node => {\n                                            this.repeatPasswordInput = node\n                                        }}\n                                    />\n                                </div>\n                                <div className=\"group group_button\">\n                                    <button disabled={!this.state.canSend} className=\"btn btn-lg btn-primary btn-block btn-signin\">\n                                        <Translation id=\"create_account\" defaultMessage=\"Create account\" />\n                                    </button>\n                                </div>\n                            </form>\n                        )}\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(LowesRegister)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport LocalizedLink from '../global/LocalizedLink'\nimport Button from '../global/Button'\nimport { connect } from 'react-redux'\nimport Spinner from '../global/Spinner'\nimport { getIsLoading, getAlertSendForm } from '../../store/lowes/reducers'\nimport { sendFormNewRegister } from '../../store/lowes/actions'\nimport logo from '../../assets/img/e.cosentino.svg'\nimport Alerts from '../alerts/Alerts'\n\nconst mapStateToProps = state => {\n    return {\n        isLoading: getIsLoading(state),\n        alertSendForm: getAlertSendForm(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        sendForm: (e, email, name, lastName, numberStore, pass) => {\n            e.preventDefault()\n            dispatch(sendFormNewRegister(email, name, lastName, numberStore, pass))\n        }\n    }\n}\nlet initState = {\n    canSend: false,\n    alert: {\n        mayus: undefined,\n        contain: undefined,\n        number: undefined,\n        minus: undefined,\n        equal: undefined\n    },\n    listRequirementsVisible: false\n}\nclass LowesNewUserRegister extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = initState\n    }\n    componentDidMount() {}\n    decodeEmail(email) {\n        try {\n            return atob(email)\n        } catch (e) {\n            return ''\n        }\n    }\n    checkForm() {\n        let haveMayus = /.*[A-Z]+.*/.test(this.passwordInput.value)\n        let haveMinus = /.*[a-z]+.*/.test(this.passwordInput.value)\n        let haveNumber = /.*[\\d]+.*/.test(this.passwordInput.value)\n        let haveContain = /.{8}/.test(this.passwordInput.value)\n        let isEqual = this.passwordInput.value === this.repeatPasswordInput.value && this.passwordInput.value !== ''\n        let ok =\n            haveMayus &&\n            haveMinus &&\n            haveNumber &&\n            haveContain &&\n            isEqual &&\n            this.emailInput.value !== '' &&\n            this.nameInput.value !== '' &&\n            this.lastNameInput.value !== '' &&\n            this.storeNumberInput.value !== '' &&\n            this.passwordInput.value !== ''\n        if (haveContain) this.setState({ alert: Object.assign(this.state.alert, { contain: true }) })\n        else if (this.state.alert.contain) this.setState({ alert: Object.assign(this.state.alert, { contain: false }) })\n\n        if (haveNumber) this.setState({ alert: Object.assign(this.state.alert, { number: true }) })\n        else if (this.state.alert.number) this.setState({ alert: Object.assign(this.state.alert, { number: false }) })\n\n        if (haveMinus) this.setState({ alert: Object.assign(this.state.alert, { minus: true }) })\n        else if (this.state.alert.minus) this.setState({ alert: Object.assign(this.state.alert, { minus: false }) })\n\n        if (haveMayus) this.setState({ alert: Object.assign(this.state.alert, { mayus: true }) })\n        else if (this.state.alert.mayus) this.setState({ alert: Object.assign(this.state.alert, { mayus: false }) })\n\n        if (isEqual) this.setState({ alert: Object.assign(this.state.alert, { equal: true }) })\n        else if (this.state.alert.equal) this.setState({ alert: Object.assign(this.state.alert, { equal: false }) })\n\n        this.setState({ canSend: ok })\n    }\n    render() {\n        return (\n            <div className=\"lowes_register\">\n                <Spinner isLoading={this.props.isLoading} />\n                <div className=\"container container-login\">\n                    <div className=\"card card-container\">\n                        <img alt=\"\" src={logo} />\n                        {this.props.alertSendForm && <Alerts alert={this.props.alertSendForm.msg} status={this.props.alertSendForm.status} />}\n                        {this.props.alertSendForm && this.props.alertSendForm.status === 200 ? (\n                            <LocalizedLink routeId=\"ROUTE_HOME\">\n                                <Button>\n                                    <Translation id=\"take_me_home\" defaultMessage=\"Take me home\" />\n                                </Button>\n                            </LocalizedLink>\n                        ) : (\n                            <form\n                                className=\"form-signin\"\n                                onSubmit={e =>\n                                    this.props.sendForm(\n                                        e,\n                                        this.emailInput.value,\n                                        this.nameInput.value,\n                                        this.lastNameInput.value,\n                                        this.storeNumberInput.value,\n                                        this.passwordInput.value\n                                    )\n                                }\n                            >\n                                <div className=\"group group_user\">\n                                    <label for=\"email\">\n                                        <Translation id=\"register\" defaultMessage=\"Register\" />\n                                    </label>\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"email\"\n                                        placeholder=\"Email\"\n                                        required\n                                        onChange={() => this.checkForm()}\n                                        ref={node => {\n                                            this.emailInput = node\n                                        }}\n                                    />\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"text\"\n                                        placeholder=\"Name\"\n                                        required\n                                        onChange={() => this.checkForm()}\n                                        ref={node => {\n                                            this.nameInput = node\n                                        }}\n                                    />\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"text\"\n                                        placeholder=\"Last name\"\n                                        required\n                                        onChange={() => this.checkForm()}\n                                        ref={node => {\n                                            this.lastNameInput = node\n                                        }}\n                                    />\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"text\"\n                                        pattern=\"[0-9]*\"\n                                        maxlength=\"4\"\n                                        placeholder=\"Lowe's store number\"\n                                        required\n                                        onChange={() => this.checkForm()}\n                                        ref={node => {\n                                            this.storeNumberInput = node\n                                        }}\n                                    />\n                                </div>\n                                <div className=\"group group_password\">\n                                    <label for=\"password\">\n                                        <Translation id=\"password\" defaultMessage=\"Password\" />\n                                    </label>\n                                    <ul className={`list_requirements ${this.state.listRequirementsVisible ? '' : 'list_requirements--hidden'}`}>\n                                        <li\n                                            className={`list_requirements__item${this.state.alert.number !== undefined ? (this.state.alert.number ? '-success' : '-failure') : ''}`}\n                                            data-cy=\"change_password__requirements-number\"\n                                        >\n                                            <Translation id=\"password_not_number\" defaultMessage=\"At least one numeral\" />\n                                        </li>\n                                        <li\n                                            className={`list_requirements__item${this.state.alert.minus !== undefined ? (this.state.alert.minus ? '-success' : '-failure') : ''}`}\n                                            data-cy=\"change_password__requirements-low_case\"\n                                        >\n                                            <Translation id=\"password_not_minus\" defaultMessage=\"At least one lower case letter\" />\n                                        </li>\n                                        <li\n                                            className={`list_requirements__item${this.state.alert.mayus !== undefined ? (this.state.alert.mayus ? '-success' : '-failure') : ''}`}\n                                            data-cy=\"change_password__requirements-upper_case\"\n                                        >\n                                            <Translation id=\"password_not_mayus\" defaultMessage=\"At least one upper case letter\" />\n                                        </li>\n                                        <li\n                                            className={`list_requirements__item${\n                                                this.state.alert.contain !== undefined ? (this.state.alert.contain ? '-success' : '-failure') : ''\n                                            }`}\n                                            data-cy=\"change_password__requirements-minimum\"\n                                        >\n                                            <Translation id=\"password_should_contain\" defaultMessage=\"Minimum 8 characters\" />\n                                        </li>\n                                        <li\n                                            className={`list_requirements__item${this.state.alert.equal !== undefined ? (this.state.alert.equal ? '-success' : '-failure') : ''}`}\n                                            data-cy=\"change_password__requirements-match\"\n                                        >\n                                            <Translation id=\"password_not_equal\" defaultMessage=\"Passwords do not match\" />\n                                        </li>\n                                    </ul>\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"password\"\n                                        placeholder=\"Password\"\n                                        onChange={() => this.checkForm()}\n                                        onFocus={() => {\n                                            this.setState({ listRequirementsVisible: true })\n                                        }}\n                                        onBlur={() => {\n                                            this.setState({ listRequirementsVisible: false })\n                                        }}\n                                        ref={node => {\n                                            this.passwordInput = node\n                                        }}\n                                    />\n                                    <input\n                                        className=\"form-control\"\n                                        type=\"password\"\n                                        placeholder=\"Repeat password\"\n                                        onChange={() => this.checkForm()}\n                                        onFocus={() => {\n                                            this.setState({ listRequirementsVisible: true })\n                                        }}\n                                        onBlur={() => {\n                                            this.setState({ listRequirementsVisible: false })\n                                        }}\n                                        ref={node => {\n                                            this.repeatPasswordInput = node\n                                        }}\n                                    />\n                                </div>\n                                <div className=\"group group_button\">\n                                    <button disabled={!this.state.canSend} className=\"btn btn-lg btn-primary btn-block btn-signin\">\n                                        <Translation id=\"create_account\" defaultMessage=\"Create account\" />\n                                    </button>\n                                </div>\n                            </form>\n                        )}\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(LowesNewUserRegister)\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport { connect } from 'react-redux'\n\nimport logo from '../../assets/img/e.cosentino.svg'\nimport CosentinoSingleSignOn from './CosentinoSingleSignOn'\nimport { getIsLogging, showRedirectSSOModal, getIsLogged, getSapId } from '../../store/login/reducers'\nimport { login, logout } from '../../store/login/actions'\nimport * as ui from '../../store/ui/actions'\nimport Button from '../global/Button'\nimport Spinner from '../global/Spinner'\nimport { push } from 'react-router-redux'\nimport Alerts from '../alerts/Alerts'\nimport { dispatchPushURL } from '../../store/ui/actions'\n\nconst mapStateToProps = state => {\n    return {\n        show: showRedirectSSOModal(state),\n        isLogging: getIsLogging(state),\n        isLogged: getIsLogged(state),\n        sapId: getSapId(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onLogin: (username, password, callback, callbackCenter, intl, ssoData, callbackSalesOrg) => {\n            dispatch(login(username, password, callback, callbackCenter, intl, ssoData, callbackSalesOrg))\n        },\n        onClose: () => {\n            dispatch(ui.closeLoginModal())\n        },\n        onShowUpRedirect: () => {\n            dispatch(ui.showRedirectSSOModal())\n        },\n        logout: () => {\n            dispatch(logout())\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        }\n    }\n}\nclass RedirectSSO extends React.Component {\n    state = { error: null }\n\n    componentDidMount() {\n        this.props.onShowUpRedirect()\n    }\n    handleSubmitSSO = ssoData => {\n        ssoData.type = 'SSO'\n\n        if (this.props.isLogged && this.props.sapId) this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_HOME' }))\n        else if (this.props.isLogged)\n            this.props.logout().then(() => {\n                this.props.onLogin(ssoData.sapId, null, this.props.callback, this.props.callbackCenter, this.props.intl, ssoData, this.props.callbackSalesOrg)\n            })\n        else this.props.onLogin(ssoData.sapId, null, this.props.callback, this.props.callbackCenter, this.props.intl, ssoData, this.props.callbackSalesOrg)\n    }\n    render() {\n        const { show, onClose, isLogging } = this.props\n        if (this.props.isLogged && this.props.sapId) this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_HOME' }))\n\n        return (\n            <div>\n                <div className=\"full-overlay\" style={{ display: show ? 'block' : 'none' }} onClick={onClose} />\n\n                <div id=\"modal-login-container\" className=\"modal-login sso\" style={{ display: show ? 'block' : 'none' }}>\n                    {isLogging && <Spinner isLoading={isLogging} />}\n                    <div className=\"container-fluid\">\n                        <div className=\"row\">\n                            <div className=\"col-12 logo-container\">\n                                <header className=\"container-fluid\">\n                                    <div className=\"row\">\n                                        <div className=\"col-3 offset-9 my-auto text-right\">\n                                            <div className=\"bt-close\" onClick={onClose}>\n                                                <i className=\"fal fa-times\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div className=\"row \">\n                                        <div className=\"col-12 col-lg-6 offset-lg-3 text-center \">\n                                            <img alt=\"\" className=\"profile-img-card\" src={logo} />\n\n                                            {this.state.error && <Alerts alert={this.state.error} status=\"404\" />}\n\n                                            <CosentinoSingleSignOn\n                                                onSuccess={data => this.handleSubmitSSO(data)}\n                                                onError={data =>\n                                                    this.setState({ error: data.error === 'Insufficient permissions' ? 'INSUFFICIENT_PERMISSIONS' : 'SOMETHING_WENT_WRONG' })\n                                                }\n                                            >\n                                                <Button inverted>\n                                                    <Translation id=\"continue_with_my_salesforce_account\" defaultMessage=\"Continue with my Salesforce account\" />\n                                                </Button>\n                                            </CosentinoSingleSignOn>\n                                        </div>\n                                    </div>\n                                </header>\n                                <footer />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(RedirectSSO)\n)\n","import React from 'react'\n\nimport RedirectSSO from '../components/login-modal/RedirectSSO'\nconst RedirectSSOScreen = props => <RedirectSSO {...props} />\n\nexport default RedirectSSOScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport ReactTable from 'react-table'\nimport Button from '../global/Button'\n\nclass DeviatedAdmin extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            data: [],\n            isLoading: true,\n            search: '',\n            open: []\n        }\n    }\n    componentDidMount() {\n        this.props.fetchProductsDeviatedAdmin().then(() => {\n            this.setState({ data: this.props.products })\n        })\n    }\n    onChangeValue(productId, centerId, input, value, lang = { localecode: 'default' }) {\n        let data = this.state.data.map(item => {\n            if (item.productId === productId && item.centerId === centerId) {\n                switch (input) {\n                    case 'deviatedDescription':\n                        let deviatedDescription = item.deviatedDescription ? item.deviatedDescription : []\n                        deviatedDescription[lang.localecode] = value\n                        return { ...item, deviatedDescription: { ...item.deviatedDescription } }\n                    default:\n                        return item\n                }\n            } else return item\n        })\n        this.setState({ data: data })\n    }\n    getValue(productId, centerId, input, lang = { localecode: 'default' }) {\n        let product = this.state.data.filter(item => item.productId === productId && item.centerId === centerId)[0]\n        switch (input) {\n            case 'deviatedDescription':\n                return product.deviatedDescription ? product.deviatedDescription[lang.localecode] : ''\n            default:\n                return 0\n        }\n    }\n    itemReset(item) {\n        let data = this.state.data.map(stateItem => {\n            if (stateItem.productId === item.productId && stateItem.centerId === item.centerId)\n                return this.props.products.filter(product => product.productId === item.productId && product.centerId === item.centerId)[0]\n            else return stateItem\n        })\n        this.setState({ data: data })\n    }\n    itemChanged(item) {\n        return !this.props.products.find(ele => ele.productId === item.productId && ele.centerId === item.centerId && ele.deviatedDescription === item.deviatedDescription)\n    }\n\n    saveItems(item = null) {\n        if (item !== null) {\n            this.props\n                .saveProductsDeviatedAdmin(this.state.data.filter(stateItem => stateItem.productId === item.productId && stateItem.centerId === item.centerId))\n                .then(() => this.itemReset(item))\n        } else {\n            this.props.saveProductsDeviatedAdmin(this.state.data.filter(stateItem => this.itemChanged(stateItem))).then(() => this.setState({ data: this.props.products }))\n        }\n    }\n    render() {\n        const columns = [\n            {\n                Header: 'Image',\n                accessor: 'image',\n                Cell: ({ original }) => (\n                    <div\n                        key={`img-${original.productId}-${original.centerId}`}\n                        style={{\n                            height: '55px',\n                            width: '80px',\n                            background: `url(${original.img})`\n                        }}\n                    />\n                ),\n                maxWidth: 80,\n                className: 'cell_background-image'\n            },\n            { Header: 'Id', accessor: 'productId', maxWidth: 75 },\n            { Header: 'Product', accessor: 'productName' },\n            {\n                Header: 'Deviated Description',\n                accessor: 'deviatedDescription',\n                Cell: ({ original }) => (\n                    <div>\n                        <div style={{ display: 'flex', flexDirection: 'column' }}>\n                            <div style={{ margin: '5px' }}>\n                                <input\n                                    type=\"text\"\n                                    value={this.getValue(original.productId, original.centerId, 'deviatedDescription')}\n                                    key={original.productId + original.centerId + 'default'}\n                                    maxLength={60}\n                                    onChange={input => this.onChangeValue(original.productId, original.centerId, 'deviatedDescription', input.target.value)}\n                                />\n\n                                <div\n                                    key={original.productId}\n                                    className={this.state.open.includes(original.productId) ? 'rt-expander -open' : 'rt-expander'}\n                                    style={{ width: '20px', cursor: 'pointer' }}\n                                    onClick={() => {\n                                        if (this.state.open.includes(original.productId)) {\n                                            this.setState({ open: this.state.open.filter(product => product !== original.productId) })\n                                        } else {\n                                            this.setState({ open: this.state.open.concat(original.productId) })\n                                        }\n                                    }}\n                                />\n                            </div>\n\n                            {this.state.open.includes(original.productId) &&\n                                this.props.locales.map(lang => {\n                                    return (\n                                        <div style={{ margin: '5px' }}>\n                                            <input\n                                                type=\"text\"\n                                                value={this.getValue(original.productId, original.centerId, 'deviatedDescription', lang)}\n                                                key={original.productId + original.centerId + lang.localecode}\n                                                maxLength={60}\n                                                onChange={input => this.onChangeValue(original.productId, original.centerId, 'deviatedDescription', input.target.value, lang)}\n                                            />\n                                            <span className={`flag-icon flag-icon-${lang.code}`} style={{ borderRadius: '0', margin: '5px', height: '27px' }} />\n                                            <span> {lang.name} </span>\n                                        </div>\n                                    )\n                                })}\n                        </div>\n                    </div>\n                ),\n                maxWidth: 350\n            },\n\n            {\n                Header: 'Actions',\n                Cell: ({ original }) => (\n                    <div className=\"group_buttons_row_table\">\n                        <Button size={'small'} disabled={!this.itemChanged(original)} onClick={() => this.itemReset(original)}>\n                            <i className=\"fa fa-undo\" />\n                        </Button>\n                        <Button size={'small'} disabled={!this.itemChanged(original)} onClick={() => this.saveItems(original)}>\n                            <i className=\"fa fa-save\" />\n                        </Button>\n                    </div>\n                ),\n                maxWidth: 100,\n                sortable: false\n            }\n        ]\n        let dataFiltered = this.state.data\n        if (this.state.search) {\n            dataFiltered = this.state.data.filter(\n                item =>\n                    item.productId.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    item.productName.toLowerCase().includes(this.state.search.toLowerCase()) ||\n                    item.centerId.toLowerCase().includes(this.state.search.toLowerCase())\n            )\n        }\n        return (\n            <div className=\"mkt_products_admin\">\n                <div className=\"container mkt_products_admin__container\">\n                    <div className=\"toolbar\">\n                        <div className=\"toolbar__search search\">\n                            <div className=\"search-bar\">\n                                <input\n                                    type=\"text\"\n                                    data-qa=\"query\"\n                                    className=\"search-box form-control\"\n                                    placeholder=\"Search\"\n                                    value={this.state.search}\n                                    onChange={e =>\n                                        this.setState({\n                                            search: e.target.value\n                                        })\n                                    }\n                                />\n                            </div>\n                        </div>\n                        <div className=\"toolbar__filters filters\">\n                            <div>\n                                <Button onClick={() => this.setState({ data: this.props.products })}>\n                                    <i className=\"fa fa-undo\" /> Cancel\n                                </Button>\n                            </div>\n                            <div>\n                                <Button inverted onClick={() => this.saveItems()}>\n                                    <i className=\"fa fa-save\" /> Save all\n                                </Button>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"container\">\n                        <ReactTable\n                            data={dataFiltered}\n                            columns={columns}\n                            defaultPageSize={50}\n                            pageSizeOptions={[50, 100, 200]}\n                            previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                            nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                            noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                            pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                            ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                        />\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(DeviatedAdmin)\n","import { connect } from 'react-redux'\nimport DeviatedAdmin from './DeviatedAdmin'\nimport { injectIntl } from 'react-intl'\nimport { fetchProductsDeviatedAdmin, getImageBackground, saveProductsDeviatedAdmin } from '../../store/products/actions'\nimport { getProductsDeviatedAdmin } from '../../store/products/reducers'\nimport { getAvailableLands } from '../../store/ui/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        products: getProductsDeviatedAdmin(state),\n        locales: getAvailableLands(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchProductsDeviatedAdmin: () => dispatch(fetchProductsDeviatedAdmin()),\n        getImageBackground: product => dispatch(getImageBackground(product)),\n        saveProductsDeviatedAdmin: product => dispatch(saveProductsDeviatedAdmin(product))\n    }\n}\n\nconst DeviatedAdminContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(DeviatedAdmin)\n\nexport default injectIntl(DeviatedAdminContainer)\n","import React from 'react'\n\nimport DeviatedAdminContainer from '../components/deviated-admin/DeviatedAdminContainer'\nimport ErrorContainer from '../components/alerts/ErrorContainer'\n\nconst mapStateToProps = state => {\n    return {\n        isAdminDeviated: true\n    }\n}\n\nconst DeviatedAdminScreen = mapStateToProps().isAdminDeviated ? () => <DeviatedAdminContainer /> : () => <ErrorContainer />\n\nexport default DeviatedAdminScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport { connect } from 'react-redux'\n\nimport logo from '../../assets/img/e.cosentino.svg'\nimport { getIsLogging, showRedirectJTModal, getIsLogged, getSapId } from '../../store/login/reducers'\nimport { login, logout } from '../../store/login/actions'\nimport * as ui from '../../store/ui/actions'\nimport Button from '../global/Button'\nimport Spinner from '../global/Spinner'\nimport { push } from 'react-router-redux'\nimport Alerts from '../alerts/Alerts'\nimport withRouter from 'react-router-dom/withRouter'\nimport axios from 'axios'\nimport 'url-search-params-polyfill'\nimport { dispatchPushURL } from '../../store/ui/actions'\n\nconst mapStateToProps = state => {\n    return {\n        show: showRedirectJTModal(state),\n        isLogging: getIsLogging(state),\n        isLogged: getIsLogged(state),\n        sapId: getSapId(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onLogin: (username, password, callback, callbackCenter, intl, JTData, callbackSalesOrg) => {\n            dispatch(login(username, password, callback, callbackCenter, intl, JTData, callbackSalesOrg))\n        },\n        onClose: () => {\n            dispatch(ui.closeLoginModal())\n        },\n        onShowUpRedirect: () => {\n            dispatch(ui.showRedirectJTModal())\n        },\n        logout: () => {\n            return dispatch(logout())\n        },\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        }\n    }\n}\nclass RedirectJT extends React.Component {\n    state = { error: null }\n\n    componentDidMount() {\n        this.props.onShowUpRedirect()\n        let params = new URLSearchParams(this.props.location.search)\n        this.checkJobTracker(params.get('SessionToken'))\n    }\n    handleSubmitJT = JTData => {\n        let JTDataJSON = {\n            sapId: JTData.location.SapID,\n            email: 'ecommerce@cosentino.com',\n            type: 'JT'\n        }\n        if (this.props.isLogged)\n            this.props.logout().then(() => {\n                this.props.onLogin(JTData.location.SapID, null, this.props.callback, this.props.callbackCenter, this.props.intl, JTDataJSON, this.props.callbackSalesOrg)\n            })\n        else this.props.onLogin(JTData.location.SapID, null, this.props.callback, this.props.callbackCenter, this.props.intl, JTDataJSON, this.props.callbackSalesOrg)\n    }\n    // trickJt = () => {\n    //     let fakeSapId = '705176'\n    //     let JTDataJSON = {\n    //         sapId: fakeSapId,\n    //         email: 'ecommerce@cosentino.com',\n    //         type: 'JT'\n    //     }\n    //     if (this.props.isLogged)\n    //         this.props.logout().then(() => {\n    //             this.props.onLogin(fakeSapId, null, this.props.callback, this.props.callbackCenter, this.props.intl, JTDataJSON)\n    //         })\n    //     else this.props.onLogin(fakeSapId, null, this.props.callback, this.props.callbackCenter, this.props.intl, JTDataJSON)\n    // }\n    checkJobTracker = sessionToken => {\n        let data = { SessionToken: sessionToken }\n        // axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*'\n        axios.defaults.headers.common['Content-Type'] = 'application/json'\n\n        axios\n            .post(process.env.REACT_APP_JOBTRACKER_API + '/v1/validatesession/?appid=' + process.env.REACT_APP_JOBTRACKER_APIKEY, data, {\n                auth: {\n                    username: 'eCosentinoAPI',\n                    password: process.env.REACT_APP_JOBTRACKER_PASSWORD\n                }\n            })\n            .then(\n                response => {\n                    if (response.data.error) {\n                        this.setState({ error: response.data.error.code })\n                    } else {\n                        if (response.data.location.SapID !== this.props.sapId) {\n                            this.handleSubmitJT(response.data)\n                        } else this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_HOME' }))\n                    }\n                },\n                error => {\n                    // this.setState({ error: error.error.code })\n                }\n            )\n    }\n    render() {\n        const { show, isLogging } = this.props\n        if (this.props.isLogged && this.props.sapId) this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_HOME' }))\n        let params = new URLSearchParams(this.props.location.search)\n        return (\n            <div>\n                <div\n                    className=\"full-overlay\"\n                    style={{ display: show ? 'block' : 'none' }}\n                    onClick={() => this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_HOME' }))}\n                />\n\n                <div id=\"modal-login-container\" className=\"modal-login JT\" style={{ display: show ? 'block' : 'none' }}>\n                    {isLogging && <Spinner isLoading={isLogging} />}\n                    <div className=\"container-fluid\">\n                        <div className=\"row\">\n                            <div className=\"col-12 logo-container\">\n                                <header className=\"container-fluid\">\n                                    <div className=\"row\">\n                                        <div className=\"col-3 offset-9 my-auto text-right\">\n                                            <div className=\"bt-close\" onClick={() => this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_HOME' }))}>\n                                                <i className=\"fal fa-times\" />\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div className=\"row \">\n                                        <div className=\"col-12 col-lg-6 offset-lg-3 text-center \">\n                                            <img alt=\"\" className=\"profile-img-card\" src={logo} />\n\n                                            {this.state.error && <Alerts alert={this.state.error} status=\"404\" />}\n                                            <Button inverted onClick={() => this.checkJobTracker(params.get('SessionToken'))}>\n                                                <Translation id=\"continue_with_my_jobtracker_account\" defaultMessage=\"Continue with my JobTracker account\" />\n                                            </Button>\n                                            {/* <Button inverted onClick={() => this.trickJt()}>\n                                                trick jt\n                                            </Button> */}\n                                            \n                                        </div>\n                                    </div>\n                                </header>\n                                <footer />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(RedirectJT)\n    )\n)\n","import React from 'react'\n\nimport RedirectJT from '../components/login-modal/RedirectJT'\nconst RedirectJTScreen = props => <RedirectJT {...props} />\n\nexport default RedirectJTScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport logo from '../../assets/img/e.cosentino.svg'\n// import logo from '../../assets/img/DKTN.svg'\n\nimport AlertsContainer from '../alerts/AlertsContainer'\nimport Spinner from '../global/Spinner'\nimport Modal from '../global/Modal'\nimport CosentinoSingleSignOn from './CosentinoSingleSignOn'\nimport Alerts from '../alerts/Alerts'\nimport { MsalContext } from '@azure/msal-react'\nimport { withMsal } from '@azure/msal-react'\nimport { PublicClientApplication, EventType, InteractionRequiredAuthError,BrowserAuthError } from '@azure/msal-browser'\nimport axios from 'axios'\nimport InfoBox from \"../global/InfoBox\";\n\nclass OldLogin extends React.Component {\n    static contextType = MsalContext\n\n    state = { error: null, showOldLogin:false, isInfoHidden: false }\n    handleSubmit = e => {\n        e.preventDefault()\n        if (this.usernameInput.value.includes('@'))\n{            this.props.onLogin(\n                this.usernameInput.value,\n                this.passwordInput.value,\n                this.props.callback,\n                this.props.callbackCenter,\n                this.props.intl,\n                'SHOP',\n                this.props.callbackSalesOrg,\n                true\n            )}\n            else{\n                this.setState({error:'You can only login with an email'})\n            }\n    }\n    render() {\n        const { isLogging } = this.props\n        const spinner = isLogging || this.context.inProgress !== 'none' ? <Spinner isLoading={isLogging} /> : null\n        // console.log('context')\n        // console.log(this.props.msalContext)\n        if(this.props.isLogged){\n            return<div className=\"container\">\n             <h4><Translation id=\"already_login\" defaultMessage=\"You are already logged in\" /></h4>\n            </div>\n        }\n        return (\n            <div className=\"container\">\n                <div id=\"\" className=\"\">\n                    <div className=\"form-signin mt-5\" style={{ display: 'flex', justifyContent: 'center', flexDirection: 'column', alignItems: 'center' }}>\n                        <div style={{maxWidth:'480px',width:'100%'}}>\n                            <form onSubmit={this.handleSubmit}>\n                                <AlertsContainer values={{ lastLoginAccount: this.state.lastLoginAccount }} />\n                                {this.state.error && <Alerts alert={this.state.error} status=\"404\" />}\n                                {spinner}\n                                <div className=\"d-block d-lg-none\">\n                                    <img alt=\"\" id=\"profile-img\" className=\"profile-img-card\" src={logo} style={{ marginBottom: '30px' }} />\n                                </div>\n                                <div className=\"azure-login\">\n                                    {/* <div className=\"text-center\">\n                            <Translation id=\"dont_have_a_registered_email_yet\" defaultMessage=\"Dont have a registered email yet?\" />\n                            &nbsp;\n                            <a href=\"https://we.cosentino.com/s/register?language=en_GB\" target=\"_blank\" style={{ color: '#007bff', textDecoration: 'underline !important' }}>\n                                <Translation id=\"update_your_account_now\" defaultMessage=\"Update your account now!\" />\n                            </a>\n                        </div> */}\n                                </div>\n\n                                <div className={`identifier-login `}>\n                                    <label htmlFor=\"email\">\n                                        <Translation id=\"identifier\" defaultMessage=\"Identifier\" />\n                                    </label>\n                                    <input\n                                        type=\"text\"\n                                        id=\"inputEmail\"\n                                        className=\"form-control\"\n                                        placeholder={this.props.intl.formatMessage({ id: 'identifier' })}\n                                        autoFocus\n                                        ref={node => {\n                                            this.usernameInput = node\n                                        }}\n                                    />\n                                    <label htmlFor=\"email\">\n                                        <Translation id=\"password\" defaultMessage=\"Password\" />\n                                    </label>\n                                    <input\n                                        type=\"password\"\n                                        id=\"inputPassword\"\n                                        className=\"form-control mb-3\"\n                                        placeholder={this.props.intl.formatMessage({ id: 'password' })}\n                                        ref={node => {\n                                            this.passwordInput = node\n                                        }}\n                                        onKeyPress={e => {\n                                            if (e.key === 'Enter') {\n                                                this.handleSubmit(e)\n                                            }\n                                        }}\n                                    />\n                                </div>\n                                <input type=\"submit\" className=\"bt bt-inverted mb-0\" value={this.props.intl.formatMessage({ id: 'login_with_your_id' })} />\n                            </form>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default withMsal(injectIntl(OldLogin))\n","import { connect } from 'react-redux'\nimport OldLogin from './OldLogin'\nimport {\n    getCallbackCenter,\n    getIsLogging,\n    getLoginCallback,\n    mandatoryChangePassword,\n    showModalSelector,\n    getIsLogged,\n    getAlert,\n    getCallbackSalesOrg\n} from '../../store/login/reducers'\nimport { createAccount, login, mandatoryChangePasswordRequest, recoverPassword } from '../../store/login/actions'\nimport * as ui from '../../store/ui/actions'\nimport { getEmployeeId } from '../../store/big-account/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        alert: getAlert(state),\n        callback: getLoginCallback(state),\n        callbackCenter: getCallbackCenter(state),\n        callbackSalesOrg: getCallbackSalesOrg(state),\n        isLogging: getIsLogging(state),\n        isLogged: getIsLogged(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        onLogin: (username, password, callback, callbackCenter, intl, ssoData, callbackSalesOrg) => {\n            dispatch(login(username, password, callback, callbackCenter, intl, ssoData, callbackSalesOrg))\n        },\n    }\n}\n\nconst OldLoginContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(OldLogin)\n\nexport default OldLoginContainer\n","import React from 'react'\n\nimport OldLoginContainer from '../components/login-modal/OldLoginContainer'\nconst OldLoginScreen = props => <OldLoginContainer {...props} />\n\nexport default OldLoginScreen\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport { injectIntl } from 'react-intl'\n\nimport Button from '../global/Button'\n\nclass MktAdminColors extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {selectedBrand: null}\n        this.inputs = []\n        this.listGroupColors = []\n    }\n\n    componentDidMount() {\n        this.props.fetchColorsMktoolsAttr()\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (this.state.selectedBrand === null && this.props.brands && this.props.brands.length > 0) {\n            this.setState({selectedBrand: this.props.brands[0]})\n        }\n    }\n\n    navMenuColors() {\n        return (\n            <nav>\n                <div class=\"nav nav-tabs\" id=\"nav-tab\" role=\"tablist\">\n                    {this.props.brands.map((brand, i) => {\n                        return (\n                            <a\n                                // class={`nav-item nav-link ${i === 0 ? 'active' : ''}`}\n                                class={`nav-item nav-link ${this.state.selectedBrand === brand ? 'active' : ''}`}\n                                id={`nav-${brand.replace(' ', '-')}-tab`}\n                                data-toggle=\"tab\"\n                                // href={`#nav-${brand.replace(' ', '-')}`}\n                                role=\"tab\"\n                                aria-controls={`nav-${brand.replace(' ', '-')}`}\n                                onClick={() => this.setState({selectedBrand: brand})}\n                                // aria-selected={i === 0 ? 'true' : 'false'}\n                                aria-selected={this.state.selectedBrand === brand ? 'true' : 'false'}\n                                style={{cursor: \"pointer\"}}\n                            >\n                                {brand}\n                            </a>\n                        )\n                    })}\n                </div>\n            </nav>\n        )\n    }\n    contentColors() {\n        return (\n            <div class=\"tab-content\" id=\"nav-tabContent\">\n                {this.props.brands.map((brand, i) => {\n                    return (\n                        <div\n                            class={`tab-pane fade ${this.state.selectedBrand === brand ? 'show active' : ''}`}\n                            id={`nav-${brand.replace(' ', '-')}`}\n                            role=\"tabpanel\"\n                            aria-labelledby={`nav-${brand.replace(' ', '-')}-tab`}\n                        >\n                            <div className=\"row\">\n                                <div className=\"col-12 col-md-8\" style={{ display: 'flex', flexDirection: 'column' }}>\n                                    <div className=\"row align-items-end\">\n                                        <div className=\"col-10\">\n                                            <div className=\"form-group\">\n                                                <label htmlFor=\"input-new-color\">\n                                                    <Translation id=\"add_new_color\" defaultMessage=\"Add new color\" />\n                                                </label>\n                                                <input ref={node => (this.inputs[brand] = node)} type=\"text\" className=\"form-control\" id=\"input-new-color\" />\n                                            </div>\n                                        </div>\n                                        <div className=\"col-2\">\n                                            <div className=\"form-group\">\n                                                <Button onClick={() => this.addNewColorMktoolsAttr(this.inputs[brand], brand)}>>></Button>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div className=\"row\" style={{ flexGrow: 1 }}>\n                                        <div className=\"col-12 col-md-6\">\n                                            {this.props.colorsToAdd[brand] && !!this.props.colorsToAdd[brand].length && (\n                                                <div className=\"card h-100\">\n                                                    <div className=\"card-body\">\n                                                        <h5 style={{ borderBottom: '1px solid #ddd' }}>\n                                                            <Translation id=\"colors_will_be_added\" defaultMessage=\"Colors will be added\" />\n                                                        </h5>\n                                                        {this.props.colorsToAdd[brand].map(color => {\n                                                            return (\n                                                                <span\n                                                                    class=\"badge badge-pill badge-light\"\n                                                                    style={{ cursor: 'pointer' }}\n                                                                    onClick={() => this.scrollListGroupColors(this.props.getIndexOfColorsMktoolsAtter(color, brand), brand)}\n                                                                >\n                                                                    {color}{' '}\n                                                                </span>\n                                                            )\n                                                        })}\n                                                    </div>\n                                                </div>\n                                            )}\n                                        </div>\n                                        <div className=\"col-12 col-md-6\">\n                                            {this.props.colorsToDel[brand] && !!this.props.colorsToDel[brand].length && (\n                                                <div className=\"card h-100\">\n                                                    <div className=\"card-body\">\n                                                        <h5 style={{ borderBottom: '1px solid #ddd' }}>\n                                                            <Translation id=\"colors_will_be_removed\" defaultMessage=\"Colors will be removed\" />\n                                                        </h5>\n                                                        {this.props.colorsToDel[brand].map(color => {\n                                                            return (\n                                                                <span\n                                                                    class=\"badge badge-pill badge-light\"\n                                                                    style={{ cursor: 'poineter' }}\n                                                                    onClick={() => (this.inputs[brand].value = color)}\n                                                                >\n                                                                    {color}{' '}\n                                                                </span>\n                                                            )\n                                                        })}\n                                                    </div>\n                                                </div>\n                                            )}\n                                        </div>\n                                    </div>\n                                </div>\n                                <div className=\"col-12 col-md-4\">\n                                    <ul ref={node => (this.listGroupColors[brand] = node)} class=\"list-group\" style={{ overflowY: 'scroll', maxHeight: '18.45em' }}>\n                                        {this.props.colors[brand] &&\n                                            this.props.colors[brand].map((color, i) => (\n                                                <li class=\"list-group-item d-flex justify-content-between align-items-center\">\n                                                    {color}\n                                                    <button type=\"button\" class=\"close\" aria-label=\"Del\" onClick={() => this.props.removeColorMktoolsAttr(i, brand)}>\n                                                        <span aria-hidden=\"true\">&times;</span>\n                                                    </button>\n                                                </li>\n                                            ))}\n                                    </ul>\n                                </div>\n                            </div>\n                        </div>\n                    )\n                })}\n            </div>\n        )\n    }\n\n    addNewColorMktoolsAttr(input, brand) {\n        let value = input.value\n        input.value = ''\n        this.scrollListGroupColors(this.props.addNewColorMktoolsAttr(value, brand), brand)\n    }\n    scrollListGroupColors(position, brand) {\n        this.listGroupColors[brand].scrollTo({\n            top: position * 49,\n            behavior: 'smooth'\n        })\n    }\n\n    render() {\n        return (\n            <div className=\"container\">\n                <div className=\"wrapper_admin_colors my-4\">\n                    <div className=\"row\">\n                        <div className=\"col-12\" style={{ display: 'flex', justifyContent: 'space-between' }}>\n                            <h2>\n                                <Translation id=\"admin_colors\" defaultMessage=\"Admin colors\" />\n                            </h2>\n                            <div>\n                                <div style={{ display: 'flex' }}>\n                                    <Button customClass=\"mr-2\" onClick={() => this.props.fetchColorsMktoolsAttr()}>\n                                        <Translation id=\"cancel\" defaultMessage=\"Cancel\" />\n                                    </Button>\n                                    <Button onClick={() => this.props.saveColorsMktoolsAttr()}>\n                                        <Translation id=\"save\" defaultMessage=\"Save\" />\n                                    </Button>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div className=\"row\">\n                        <div className=\"col-12\">\n                            {this.navMenuColors()}\n                            <div className=\"border border-top-0 rounded-bottom p-4\">{this.contentColors()}</div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(MktAdminColors)\n","import { connect } from 'react-redux'\nimport MktAdminColors from './MktAdminColors'\nimport { injectIntl } from 'react-intl'\nimport { fetchColorsMktoolsAttr, addNewColorMktoolsAttr, removeColorMktoolsAttr, saveColorsMktoolsAttr, getIndexOfColorsMktoolsAtter } from '../../store/products/actions'\nimport { getBrandsMktoolsAttrWithXeron, getColorsMktoolsAttr, getColorsMktoolsAttrToDel, getColorsMktoolsAttrToAdd } from '../../store/products/reducers'\n\nconst mapStateToProps = state => {\n    return {\n        brands: getBrandsMktoolsAttrWithXeron(state),\n        colors: getColorsMktoolsAttr(state),\n        colorsToDel: getColorsMktoolsAttrToDel(state),\n        colorsToAdd: getColorsMktoolsAttrToAdd(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchColorsMktoolsAttr: () => dispatch(fetchColorsMktoolsAttr()),\n        addNewColorMktoolsAttr: (nameColor, brand) => dispatch(addNewColorMktoolsAttr(nameColor, brand)),\n        getIndexOfColorsMktoolsAtter: (name, brand) => dispatch(getIndexOfColorsMktoolsAtter(name, brand)),\n        removeColorMktoolsAttr: (i, brand) => dispatch(removeColorMktoolsAttr(i, brand)),\n        saveColorsMktoolsAttr: () => dispatch(saveColorsMktoolsAttr())\n    }\n}\n\nconst MktAdminColorsContainer = connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(MktAdminColors)\n\nexport default injectIntl(MktAdminColorsContainer)\n","import React from 'react'\n\nimport ErrorContainer from '../components/alerts/ErrorContainer'\nimport MktAdminColorsContainer from '../components/mkt-admin/MktAdminColorsContainer'\n\nconst mapStateToProps = state => {\n    return {\n        isAdminMkt: true\n    }\n}\n\nconst MktAdminColorsScreen = mapStateToProps().isAdminMkt ? () => <MktAdminColorsContainer /> : () => <ErrorContainer />\n\nexport default MktAdminColorsScreen\n","import React from 'react'\nimport { injectIntl, FormattedMessage } from 'react-intl'\n\nimport { connect } from 'react-redux'\n\nclass CookiePolicy extends React.Component {\n    componentDidMount() {\n        // const script = document.createElement('script')\n        // script.src = 'https://consent.cookiebot.com/f7a14091-0ea6-4e3b-bb15-248d40629e42/cd.js'\n        // script.setAttribute('data-culture', this.props.intl.locale === 'es' ? 'ES' : 'EN')\n        // script.async = true\n        // document.getElementById('CookieDeclarationTable').appendChild(script)\n    }\n    render() {\n        const englishContent = (\n            <div class=\"entry-content\">\n                <h2>\n                    <FormattedMessage id=\"cookies_policy\" defaultMessage=\"Cookies policy\" />\n                </h2>\n                <p>\n                    This website uses its own cookies and third-party cookies to measure and analyse our users’ web browsing. Cookies are files that install into the system that is\n                    accessing our site and serve the purposes outlined on this page. In addition to the cookies strictly required for web browsing, such as session cookies, this\n                    website uses the following cookies and tracking files:\n                </p>\n                <ul>\n                    <li>\n                        Google Analytics provided by Google, Inc., with head office in 1600 Amphitheatre Parkway, Mountain View (California), CA 94043, USA. Google stores cookies\n                        to create statistics on the website’s visits traffic and volume in order to improve visits and the website’s positioning. The data obtained will be handled\n                        by Google in conformity with the Privacy Policy available at https://www.google.es. By using this website you agree to have your personal data processed by\n                        Google.\n                    </li>\n                    <li>\n                        Social media https://www.facebook.com/, https://twitter.com, http://www.youtube.com/, http://www.pinterest.com or http://www.linkedin.com : Each one of\n                        these websites uses its own cookies to allow you to use buttons such as Like and Share.\n                    </li>\n                    <li>\n                        Pardot sets exclusive cookies for tracking purposes and sets third-party cookies for redundancy. The use of exclusive cookies and Third parties is a norm in\n                        the marketing automation sector. Pardot cookies do not store personally identifiable information, only one Unique identifier. Pardot sets exclusive cookies\n                        on its tracking domains and Pardot domains. Pardot uses third-party cookies on pages https and when your account does not have a tracking subdomain\n                        configuration.\n                    </li>\n                    <li>Logrocket cookies are used to collect statistics on the use of the Platform and identify users and their requests.</li>\n                </ul>\n                <p>\n                    Data obtained will be processed by Google and other indicated entities in conformity with their respective Privacy Policy found at the above-mentioned links.\n                    Therefore, the exercise of any corresponding right must be communicated directly to the heads of each respective website.\n                </p>\n                <p>\n                    Cookies will not be installed into your computer until you accept their use in the Pop Up tab which will appear upon your first visit to the Website or after 30\n                    seconds. By accepting, the USER agrees to the use of cookies and tracking files with IP addresses that allow our company to gather statistical data concerning:\n                    the number of pages visited; language; social media platform where our content is shared; the city and region from which the IP is accessing our site; the\n                    number of new users; frequency and recurrence of visits; the session time; and lastly, the browser and system terminal where our website is accessed from.{' '}\n                </p>\n                <p>\n                    The USER can stop cookies from installing onto their system or erase installed cookies via their browser settings and through the use of specific applications.\n                    However, THE COMPANY is not held responsible if stopping such cookies inhibits the proper functioning of the website. The data obtained is completely anonymous\n                    and under no circumstance can it be linked back or identified to a specific user.\n                </p>\n                <p>\n                    In the event that the USER wishes to delete cookies after they have been stored in his or her computer, requiring their consent, they can do so via their\n                    browser tools available for this purpose. You can access additional information on this matter by using the following links:\n                </p>\n                <p>\n                    Firefox: <a href=\"https://support.mozilla.org/en-US/\">https://support.mozilla.org/en-US/</a>\n                    <br />\n                    Internet Explorer: <a href=\"https://support.microsoft.com/en-gb\">https://support.microsoft.com/en-gb</a>\n                    <br />\n                    Safari: <a href=\"https://support.apple.com/en-gb/HT201265\">https://support.apple.com/en-gb/HT201265</a>\n                    <br />\n                    Opera:{' '}\n                    <a href=\"https://help.opera.com/en/latest/security-and-privacy/#clearBrowsingData\">https://help.opera.com/en/latest/security-and-privacy/#clearBrowsingData</a>\n                </p>\n                <p>Please note that some elements of this website could cease to work properly if the USER does not accept cookies or later disagrees to their use.</p>\n            </div>\n        )\n\n        const spanishContent = (\n            <div class=\"entry-content\">\n                <h2>\n                    <FormattedMessage id=\"cookies_policy\" defaultMessage=\"Cookies policy\" />\n                </h2>\n                <p>\n                    Esta página web utiliza cookies propias y de terceros para medir y analizar la navegación de nuestros Usuarios. Las cookies son unos archivos que se instalan en\n                    el equipo desde el que accede a nuestra web con las finalidades que se describen en esta página. Además de aquellas cookies estrictamente necesarias para la\n                    navegación web, como por ejemplo cookies de sesión, este sitio web utiliza las siguientes cookies y archivos de seguimiento.\n                </p>\n\n                <ul>\n                    <li>\n                        Google Analytics servicio prestado por Google, Inc., cuya oficina principal está en 1600 Amphitheatre Parkway, Mountain View (California), CA 94043, Estados\n                        Unidos. Google almacena cookies para poder elaborar estadísticas sobre el tráfico y volumen de visitas de esta web con el fin de mejorar las visitas y el\n                        posicionamiento de la web. Los datos obtenidos serán tratados por Google conforme la Política de privacidad accesible en https://www.google.es. Por lo que\n                        al utilizar este sitio web está consintiendo el tratamiento de información acerca de usted por Google.\n                    </li>\n                    <li>\n                        Redes sociales https://www.facebook.com/, https://twitter.com, http://www.youtube.com/, http://www.pinterest.com o http: //www.linkedin. com: cada uno de\n                        estos sitios web usan sus propias cookies para permitirle usar botones como Me gusta y Compartir.\n                    </li>\n                    <li>\n                        Pardot establece cookies exclusivas para fines de seguimiento y configura cookies de terceros para la redundancia. El uso de cookies exclusivas y de\n                        terceros es una norma en el sector de la automatización de marketing. Las cookies de Pardot no almacenan información personal de identificación, solo un\n                        identificador único. Pardot establece cookies exclusivas en sus dominios rastreadores y dominios de Pardot. Pardot utiliza cookies de terceros en páginas\n                        https y cuando su cuenta no dispone de una configuración de subdominio rastreador.\n                    </li>\n                    <li>Las cookies de Logrocket se utilizan para recopilar estadísticas sobre el uso de la Plataforma e identificar a los usuarios y sus solicitudes.</li>\n                </ul>\n                <p>\n                    Los datos obtenidos serán tratados por Google y otras entidades indicadas conforme se indica en sus respectivas Políticas de Privacidad que se pueden conocer\n                    desde los enlaces indicados. Por tanto, el ejercicio de cualquier derecho en este sentido deberá hacerlo comunicando directamente a los responsables de estos\n                    sitios web.\n                </p>\n                <p>\n                    Las cookies no serán instaladas en su ordenador hasta que acepte su uso en el Aviso (Pop Up) que se mostrará en el primer acceso del USUARIO a la Web o pasados\n                    30 segundos. Al aceptar, el USUARIO consiente el uso de cookies y archivos de seguimiento de direcciones IP cuyo uso permite a nuestra empresa a recoger datos a\n                    efectos estadísticos como: el número de páginas visitadas, el idioma, red social en la que se publican nuestras noticias, la ciudad o región a la que está\n                    asignada la dirección IP desde la que accedes, el número de nuevos Usuarios, la frecuencia y reincidencia de las visitas, el tiempo de visita, el navegador o\n                    terminal desde el que se realiza la visita.{' '}\n                </p>\n                <p>\n                    En todo caso, el USUARIO podrá impedir la instalación de cookies o borrar las que ya se hubiesen instalado, a través de la configuración de su navegador, así\n                    como a través del uso de aplicaciones específicas. Sin embargo, COSENTINO no se responsabiliza de que la desactivación de los mismos impida el buen\n                    funcionamiento de la página. La información obtenida es totalmente anónima, y en ningún caso puede ser asociada a un Usuario concreto e identificado.{' '}\n                </p>\n                <p>\n                    En caso de que el USUARIO desee con posterioridad eliminar las cookies que se hayan almacenado en su ordenador y que necesariamente precisen de su\n                    consentimiento, podrá hacerlo usando las herramientas que le proporcione su navegador a dichos efectos. En éste sentido, podrá encontrar información adicional a\n                    través de los siguientes enlaces:{' '}\n                </p>\n                <ul className=\"p-0\" style={{ listStyle: 'none' }}>\n                    <li>\n                        Firefox:{' '}\n                        <a href=\"http://support.mozilla.org/es/home\" target=\"_blanc\">\n                            http://support.mozilla.org/es/home\n                        </a>\n                    </li>\n                    <li>\n                        Internet Explorer:{' '}\n                        <a href=\"http://support.microsoft.com/ph/807/es-es\" target=\"_blanc\">\n                            http://support.microsoft.com/ph/807/es-es\n                        </a>\n                    </li>\n                    <li>\n                        Safari:{' '}\n                        <a href=\"http://support.apple.com/kb/HT1677?viewlocale=es_ES\" target=\"_blanc\">\n                            http://support.apple.com/kb/HT1677?viewlocale=es_ES\n                        </a>\n                    </li>\n                    <li>\n                        Opera:{' '}\n                        <a href=\"http://help.opera.com/Windows/8.54/es-ES/index.html\" target=\"_blanc\">\n                            http://help.opera.com/Windows/8.54/es-ES/index.html\n                        </a>\n                    </li>\n                </ul>\n                <p>Se recuerda que, si el USUARIO no acepta las cookies o las rechaza posteriormente, las funcionalidades del sitio web podrán verse mermadas. </p>\n            </div>\n        )\n\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-md-10 offset-md-1 my-4\">\n                        <div id=\"CookieDeclarationWrapper\">{this.props.intl.locale === 'es' ? spanishContent : englishContent}</div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(\n    connect(\n        null,\n        null\n    )(CookiePolicy)\n)\n","import React from 'react'\nimport { injectIntl, FormattedMessage } from 'react-intl'\n\nclass PrivacyPolicy extends React.Component {\n    // componentDidMount() {\n    //     const script = document.createElement('script')\n    //     script.src = 'https://consent.cookiebot.com/f7a14091-0ea6-4e3b-bb15-248d40629e42/cd.js'\n    //     script.async = true\n    //     document.body.appendChild(script)\n    // }\n    render() {\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-md-10 offset-md-1 my-4\">\n                        <h2>\n                            <FormattedMessage id=\"privacy_policy\" defaultMessage=\"Privacy policy\" />\n                        </h2>\n                        <div id=\"CookieDeclaration\">\n                            <div class=\"entry-content\">\n                                <p>\n                                    COSENTINO is aware that you would like to know how your personal information is used and distributed. We take the management of confidential\n                                    information seriously. You can find more information on our Privacy Policy below.\n                                </p>\n                                <ol>\n                                    <li>\n                                        <strong>Identity of Person/Company Responsible for the File</strong>\n                                    </li>\n                                </ol>\n                                <p>\n                                    Information provided by the USER will be processed by &nbsp;COSENTINO GLOBAL, S.L.U. (hereinafter, COSENTINO), with Company Tax Code A04117297\n                                    with registered address at Ctra. Baza a Hu&eacute;rcal &ndash; Overa, Km. 59 &ndash; 04860 Cantoria (Almer&iacute;a) as data controller.\n                                </p>\n                                <ol start=\"2\">\n                                    <li>\n                                        <strong>Purpose of the Processing and legal basis</strong>\n                                    </li>\n                                </ol>\n                                <p>COSENTINO will process information provided by the USER for different purposes:</p>\n                                <ul>\n                                    <li>To process and manage the registration of the USER.</li>\n                                    <li>To provide the services requested by the USER.</li>\n                                    <li>To be informed about benefits, promotions, events and other COSENTINO products via Whatsapp.</li>\n                                </ul>\n                                <p>\n                                    The USER consents to the processing of their data as per the outlined purposes, without prejudice to their right to confirm or revoke such\n                                    consent by checking the corresponding box for this purpose or by following the procedure for the Exercise of Rights indicated in this Policy.\n                                </p>\n                                <p>COSENTINO will process the USER's data for the execution of the contract that binds it with the USER for:</p>\n                                <ul>\n                                    <li>To manage the contractual and business relationship between COSENTINO and USER as required.</li>\n                                    <li>To process, manage, provide, expand, and improve the services the USER has decided to subscribe to or register for.</li>\n                                    <li>To send information regarding changes in our products or services.</li>\n                                </ul>\n                                <p>\n                                    In addition to the above purposes, COSENTINO will process the data based on our legitimate interest, to which the USER may object by following\n                                    the procedure for the Exercise of Rights indicated in this Policy. These purposes will include the following:\n                                </p>\n                                <ul>\n                                    <li>To adapt services to improve their quality for the USER.</li>\n                                    <li>To design new services related to previous ones.</li>\n                                    <li>To perform statistical studies that allow for design improvements in provided services.</li>\n                                    <li>To send information regarding new or similar services to those originally purchased.</li>\n                                </ul>\n                                <p>&nbsp;</p>\n                                <p>\n                                    As per the above-mentioned purposes, your data will be processed with the legal basis indicated, as long as the USER&rsquo;s registration\n                                    remains active or until you state your desire to revoke such consent or refuse the data processing. In the cases where a business relationship\n                                    exists between COSENTINO and the USER, your data will be saved during the duration of the business relationship and as required afterwards to\n                                    fulfil legal responsibilities.\n                                </p>\n                                <p>\n                                    Regarding commercial or informative communications, the user is informed that their personal data being processed by COSENTINO via online tools\n                                    for sending electronic notifications provided by companies such as SalesForce, located in the United States of America and adhering to the\n                                    <a href=\"dataprivacyframework.gov\" target=\"_blank\">\n                                        EU-USA Data Privacy Framework\n                                    </a>\n                                    , providing adequate guarantees for the processing of your personal data. These tools gather information through pixels (tiny transparent\n                                    electronic images linked to your address), that allows us to know who is accessing our campaign and at what time. The USER can stop this use in\n                                    their email management system settings in order to stop the automatic download of images.\n                                </p>\n                                <p>\n                                    Also, in the event that the user expressly consents to the sending of commercial or informative communications through WhatsApp, you are\n                                    informed that your personal data will be subject to international transfer, since the Meta servers are located in the United States, a country\n                                    whose legislation does not offer a level of data protection equivalent to the European; however, we inform you that this entity offers adequate\n                                    data protection guarantees through its compliance with the <u>EU-USA Data Privacy Framework</u>\n                                    <u>&nbsp;</u>, that declares an adequate level of protection by the European Commission.\n                                </p>\n                                <ol start=\"3\">\n                                    <li>\n                                        <strong>Recipients of Information</strong>\n                                    </li>\n                                </ol>\n                                <p>We inform that your information will not be sent to third-parties, except when:</p>\n                                <ul>\n                                    <li>\n                                        The transfer is authorized or required by law or by an authority, competent public administration or judges/courts in the exercise of their\n                                        respective functions.\n                                    </li>\n                                    <li>\n                                        Disclosure is made to a COSENTINO GROUP company and is necessary to develop our business relationship with you or because you have requested\n                                        a particular product or service, in response to a legitimate interest, or for corporate purposes. Click on the following link to view the\n                                        list of{' '}\n                                        <a href=\"https://forms.cosentino.com/cosentino-group-subsidiaries/\" target=\"_blank\">\n                                            companies\n                                        </a>{' '}\n                                        Some companies from the COSENTINO GROUP may be located in third-party countries, including countries that, in the opinion of the European\n                                        authorities, do not provide an adequate level of data protection. However, COSENTINO adopts the necessary guarantees for the protection of\n                                        your data, such as the Standard Contractual Clauses approved by the European Commission.\n                                    </li>\n                                    <li>\n                                        The data processing is in response to the free and legitimate acceptance of a legal relationship whose development, fulfilment, and control\n                                        thus imply a connection between said data processing and third-party files, such as: stores where you are to pick-up samples or where\n                                        you&rsquo;ve requested an appointment; banks, for the billing of purchased products and services; or delivery companies for sending\n                                        purchased products.\n                                    </li>\n                                </ul>\n                                <p>&nbsp;</p>\n                                <p>Data can also be sent to suppliers that provide some type of service to COSENTINO and which required access to your personal information.</p>\n                                <ol start=\"4\">\n                                    <li>\n                                        <strong> Mandatory or Optional Nature of Requested Information</strong>\n                                    </li>\n                                </ol>\n                                <p>\n                                    Mandatory information in each form will be indicated as such with an asterisk. Not providing this information will not allow the service\n                                    requested by the USER to be provided.\n                                </p>\n                                <ol start=\"5\">\n                                    <li>\n                                        <strong> Exercising Rights</strong>\n                                    </li>\n                                </ol>\n                                <p>\n                                    The USER can revoke their consent and exercise their rights to access, correction, cancellation, opposition, limitation, and portability by\n                                    emailing our Data Protection Officer at gdpr@cosentino.com , or by post at the address indicated above, identifying themselves as USER of the\n                                    WEBSITE, by proving your identity, and specifying their request.\n                                </p>\n                                <p>\n                                    Also, in the event that you feel your personal data rights have been violated, you can submit a claim to the Data Protection Agency of Spain\n                                    (www.aepd.es).\n                                </p>\n                                <ol start=\"6\">\n                                    <li>\n                                        <strong> USER Commitments</strong>\n                                    </li>\n                                </ol>\n                                <p>THE USER assures they are of legal age and that any information provided is accurate and truthful.</p>\n                                <p>\n                                    THE USER undertakes to inform COSENTINO of any changes to the information provided by emailing our Data Protection Officer at gdpr@cosentino.com\n                                    , identifying themselves as USER of the WEBSITE and indicating the information to be modified.\n                                </p>\n                                <ol start=\"7\">\n                                    <li>\n                                        <strong>Third-Party Data Provided by USER</strong>\n                                    </li>\n                                </ol>\n                                <p>\n                                    If the USER provides personal data of third-parties for any type of purpose, they guarantee that they informed the concerned parties in advance\n                                    and obtained their consent to their data being communicated to COSENTINO.\n                                </p>\n                                <p>THE USER guarantees that concerned parties are of legal age and that the information provided is accurate and truthful.</p>\n                                <p>\n                                    In the event of any liability arising from a breach of these conditions by the USER, the same must answer for the consequences of such breach.\n                                </p>\n                                <ol start=\"8\">\n                                    <li>\n                                        <strong> Cookies and Tracking Files</strong>\n                                    </li>\n                                </ol>\n                                <p>\n                                    THE USER can configure their consent to the use of cookies and tracking files through the cookie banner, which allows COSENTINO to collect\n                                    statistical data concerning: date of the first visit; the number of sessions; last date of visit; URL of origin; browser used; and screen\n                                    resolution.\n                                </p>\n                                <p>You can access more information about COOKIES in our <a href=\"http://forms.cosentino.com/cookie-policy/\">cookies policy</a></p>\n                                <ol start=\"9\">\n                                    <li>\n                                        <strong> Security Measures</strong>\n                                    </li>\n                                </ol>\n                                <p>\n                                    COSENTINO has implemented the necessary technical and organisational measures to ensure the safety of personal data and to prevent alteration,\n                                    loss, non-authorized access or processing of said data, taking into account the technology used, the nature of the stored data and potential\n                                    human, natural, or physical risks they are exposed to.\n                                </p>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nexport default injectIntl(PrivacyPolicy)\n","import React from \"react\";\nimport Translation from \"../../global/Translation\";\nimport ReactTooltip from \"react-tooltip\";\nimport {injectIntl} from \"react-intl\";\n\nclass DiscountStateLabel extends React.Component {\n\n\n    render() {\n\n        const {discount_request_status, discount_comments, id} = this.props.campaign\n\n        let status = 'PROMO_DISCOUNT_' + discount_request_status\n        let statusMsg\n        let iconClass\n        const style = {padding: '4px 6px', borderRadius: '2px', fontSize: '12px', fontWeight: 500, lineHeight: '14px'}\n        const textStyle ={flexGrow:1}\n        const iconStyle = {flexGrow:1}\n\n        switch (discount_request_status) {\n            case 'REQUESTED':\n                statusMsg = 'DISCOUNT_REQUESTED'\n                iconClass = \"far fa-history\"\n                style.backgroundColor = 'yellow'\n                style.color = 'black'\n                break\n            case 'APPROVED':\n                statusMsg = 'APPROVED'\n                iconClass = \"far fa-check-circle\"\n                style.backgroundColor = 'green'\n                style.color = 'black'\n                break\n            case 'DENIED':\n                statusMsg = 'DENIED'\n                iconClass = \"fas fa-times\"\n                style.backgroundColor = 'red'\n                style.color = 'white'\n                break\n            case 'PART_APRVED':\n                statusMsg = 'PART_APRVED'\n                iconClass = \"fas fa-times\"\n                style.backgroundColor = 'green'\n                style.color = 'black'\n                break\n            case 'NONE':\n            default:\n                statusMsg = 'NONE'\n                style.backgroundColor = 'grey'\n                style.color = 'white'\n                break\n        }\n\n        return (\n            <div className=\"d-flex justify-content-between align-items-center\" style={style}>\n                <div>\n                    {\n                        this.props.intl.formatMessage({id:statusMsg})\n                    }\n                    &nbsp;\n                    {iconClass && (<i className={iconClass} style={iconStyle}/>)}\n                </div>\n                {\n                    discount_comments && (\n                        <span data-tip data-for={'discount_comments_' + id}>\n                            <i\n                                className=\"fas fa-info-circle \" data-toggle=\"tooltip\" data-placement=\"top\"\n                                style={{color:'blue', textShadow: '1px 1px white', fontSize:'14px', marginTop:'2px'}}\n                            />\n\n                            <ReactTooltip id={'discount_comments_' + id} bg-coloreffect=\"solid\" place=\"bottom\">\n                                {discount_comments}\n                            </ReactTooltip>\n                        </span>\n                    )\n                }\n            </div>\n        )\n\n    }\n\n}\n\nexport default injectIntl(DiscountStateLabel)","import React from \"react\";\nimport ReactTable from \"react-table\";\nimport Translation from \"../../global/Translation\";\nimport {injectIntl} from \"react-intl\";\nimport ReactTablePaginationCount from './ReactTablePaginationCount';\nimport Button from \"../../global/Button\";\nimport { fetchDiscountCustomersData } from \"../../../store/promotions/actions\";\nimport { getToken } from \"../../../store/login/reducers\";\nimport axios from \"axios\";\nimport FormatCSVModal from \"../../global/FormatCSVModal\";\nimport {connect} from \"react-redux\";\n\nclass CustomersTable extends React.Component {\n\n    state = { showCSVFormat: false }\n\n    componentDidMount() {\n        this.props.fetchDiscountCustomersData(this.props.campaign.id)\n    }\n\n    closeFormatCSVModal(format) {\n        this.setState({ showCSVFormat: false })\n\n        const FileDownload = require('js-file-download');\n        axios.get(process.env.REACT_APP_API_HOST + `/promotions/get-discount-customers-data/${this.props.campaign.id}/csv?format=${format}`,\n            {headers: \n                {Authorization: `Bearer ${this.props.token}`},\n                'Content-Type': 'text/plain',\n                responseType: 'blob'\n            })\n        .then((response) => {\n            FileDownload(response.data, `customers_discount.${format}`);\n        });\n    }\n\n    render() {\n        return (\n            <React.Fragment>\n                <div className=\"d-flex align-items-center justify-content-end\">\n                    <Button inline size=\"small\" icon=\"download\" onClick={() => this.setState({ showCSVFormat: true })}>\n                        <Translation id=\"download_excel\" defaultMessage=\"Download Excel\" />\n                    </Button>\n                </div>\n                {this.state.showCSVFormat && (<FormatCSVModal onClose={(format) => this.closeFormatCSVModal(format)} token={() => this.props.token} />)}\n                <ReactTable\n                    className={'light'}\n                    data={this.props.customers}\n                    columns={[\n                        {\n                            id: 'id',\n                            Header: <Translation id=\"id\" defaultMessage=\"ID\" />,\n                            Cell: ({original}) => {return original.login}\n                        },\n                        {\n                            id: 'name',\n                            Header: <Translation id=\"name\" defaultMessage=\"Name\" />,\n                            Cell: ({original}) => {return original.name}\n                        },\n                        {\n                            id: 'market',\n                            Header: <Translation id=\"market\" defaultMessage=\"Market\" />,\n                            Cell: () => {return this.props.campaign.market}\n                        },\n                        {\n                            id: 'country',\n                            Header: <Translation id=\"country\" defaultMessage=\"Country\" />,\n                            Cell: ({original}) => {\n                                const country_id = 'country_' + original.country\n                                return (this.props.intl.formatMessage({id:country_id}))\n                            }\n                        },\n                        {\n                            id: 'center',\n                            Header: <Translation id=\"center\" defaultMessage=\"Center\" />,\n                            Cell: ({original}) => {return original.center.id + ' - ' + original.center.name}\n                        },\n                    ]}\n                    defaultPageSize={4}\n                    pageSizeOptions={[4, 8, 10, 25, 50, 100]}\n                    previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                    nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                    noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                    pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                    ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                    PaginationComponent={ReactTablePaginationCount}\n                />\n            </React.Fragment>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        token: getToken(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchDiscountCustomersData: (promotionId) => dispatch(fetchDiscountCustomersData(promotionId))\n    }\n}\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(CustomersTable)\n)\n","import React from \"react\";\nimport ReactTable from \"react-table\";\nimport Translation from \"../../global/Translation\";\nimport DisplayOutletIndicator from \"../../catalog/rectangleResult/displays/DisplayOutletIndicator\";\nimport ProductDisplayName from \"../../global/ProductDisplayName\";\nimport DisplayBrand from \"../../catalog/rectangleResult/displays/DisplayBrand\";\nimport DisplayThickness from \"../../catalog/rectangleResult/displays/DisplayThickness\";\nimport DisplayDetail from \"../../catalog/rectangleResult/displays/DisplayDetail\";\nimport {typeMap} from \"../../global/TypeMaps\";\nimport {getLanguage} from \"../../../store/ui/reducers\";\nimport {connect} from \"react-redux\";\nimport Button from \"../../global/Button\";\nimport ReactTablePaginationCount from './ReactTablePaginationCount';\nimport { fetchDiscountMaterialsData } from \"../../../store/promotions/actions\";\nimport { getToken } from \"../../../store/login/reducers\";\nimport axios from \"axios\";\nimport FormatCSVModal from \"../../global/FormatCSVModal\";\n\nclass MaterialsTable extends React.Component {\n\n    state = { showCSVFormat: false }\n\n    componentDidMount() {\n        this.props.fetchDiscountMaterialsData(this.props.campaign.id)\n    }\n\n    closeFormatCSVModal(format) {\n        this.setState({ showCSVFormat: false })\n\n        const FileDownload = require('js-file-download');\n        axios.get(process.env.REACT_APP_API_HOST + `/promotions/get-discount-materials-data/${this.props.campaign.id}/csv?format=${format}`,\n            {headers: \n                {Authorization: `Bearer ${this.props.token}`},\n                'Content-Type': 'text/plain',\n                responseType: 'blob'\n            })\n        .then((response) => {\n            FileDownload(response.data, `materials_discount.${format}`);\n        });\n    } \n\n    render() {\n        return (\n            <React.Fragment>\n                <div className=\"d-flex align-items-center justify-content-end\">\n                    <Button inline size=\"small\" icon=\"download\" onClick={() => this.setState({ showCSVFormat: true })}>\n                        <Translation id=\"download_excel\" defaultMessage=\"Download Excel\" />\n                    </Button>\n                </div>\n                {this.state.showCSVFormat && (<FormatCSVModal onClose={(format) => this.closeFormatCSVModal(format)} token={() => this.props.token} />)}\n                <ReactTable\n                    className={'light list-result discount-materials'}\n                    data={this.props.products}\n                    columns={[\n                        {\n                            id: 'image',\n                            Header: <Translation id=\"image\" defaultMessage=\"Image\" />,\n                            Cell: ({ original }) => {\n                                const image = original.thumb\n                                return (\n                                    <div>\n                                        <DisplayOutletIndicator outletQuality={original.isSellingOutlet && original.outletQuality} style={{ top: 'initial' }} />\n                                        <div className=\"product-image-container\" style={{width:'64px', margin:'auto'}}>\n                                            {\n                                                image ?\n                                                    (<img style={{ maxWidth: '100%'}} src={image}/>)\n                                                    :\n                                                    (<img style={{ maxWidth: '100%', height: '64px'}}/>)\n                                            }\n                                        </div>\n                                    </div>\n                                )\n                            },\n                            filterable: false\n                        },\n                        {\n                            id: 'name',\n                            Header: <Translation id=\"name\" defaultMessage=\"Name\" />,\n                            Cell: ({ original }) => {\n                                return (\n                                    <div>\n                                        <ProductDisplayName product={original} />\n                                        <DisplayBrand brand={original.brand} />\n                                        <span style={{ fontSize: '0.8em' }}># {original.productId}</span>\n                                    </div>\n                                )\n                            }\n                        },\n                        {\n                            id: 'features',\n                            Header: <Translation id=\"features\" defaultMessage=\"Features\" />,\n                            Cell: ({ original }) => {\n                                return (\n                                    <div style={{fontSize: '12px'}}>\n                                        <DisplayThickness thickness={original.thickness} />\n                                        <DisplayDetail class=\"finish\" value={original.finish} />\n                                        {typeMap[original.type] ? typeMap[original.type] : <DisplayDetail class=\"finish\" value={original.type} />}\n                                        <DisplayDetail class=\"finish\" value={original.subtypeName} />\n                                    </div>\n                                )\n                            }\n                        },\n                        {\n                            id: 'rotation',\n                            Header: <Translation id=\"rotation\" defaultMessage=\"Rotation\" />,\n                            Cell: ({ original }) => {\n                                let label = ''\n\n                                if (original.indRotation) {\n                                    let lang = this.props.language.toUpperCase()\n                                    if (!(lang in original.translations)) lang = 'Z2'\n                                    if (lang in original.translations && original.translations[lang].indRotation) {\n                                        label = `(${original.indRotation}) ${original.translations[lang].indRotation}`\n                                    }\n                                }\n\n                                return (<DisplayDetail class=\"finish\" value={label} />)\n                            }\n                        },\n                        // {\n                        //     id: 'promotion_id',\n                        //     Header: <Translation id=\"promotion_id\" defaultMessage=\"Promotion ID\" />,\n                        //     Cell: ({ index }) => {\n                        //         return this.getPromotionIdInput(index)\n                        //         // return  this.state.promotionIds[index] ? <input type=\"text\"\n                        //         //              ref={this.state.promotionIds[index].input}\n                        //         //              // value={this.state.promotionIds[index].promotionId}\n                        //         //              onChange={e => this.setPromotionId(index, e.target.value)}\n                        //         //              maxLength=\"12\"\n                        //         //              style={{textAlign:\"end\", fontSize:\"1.2em\", width: \"9em\", padding:\"2px 6px 1px\"}}\n                        //         //              id={`input_${++this.counter}`}\n                        //         // /> : null\n                        //     }\n                        // },\n                        // {\n                        //     id: 'auth_promotion',\n                        //     Header: <Translation id=\"auth_promotion\" defaultMessage=\"Auth promotion\" />,\n                        //     Cell: ({ original }) => {\n                        //         return original.hasPromotionDiscount ? (\n                        //                 <i className=\"fas fa-check fa-2x\" style={{color:'green'}}/>\n                        //             ) : (\n                        //                 <i className=\"fas fa-times fa-2x\" style={{color:'red'}}/>\n                        //             )\n                        //     }\n                        // }\n                    ]}\n                    defaultPageSize={4}\n                    pageSizeOptions={[4, 8, 10, 25, 50, 100]}\n                    previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                    nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                    noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                    pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                    ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                    PaginationComponent={ReactTablePaginationCount}\n                />\n            </React.Fragment>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        language: getLanguage(state),\n        token: getToken(state),\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchDiscountMaterialsData: (promotionId) => dispatch(fetchDiscountMaterialsData(promotionId)),\n    }\n}\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(MaterialsTable)\n","import React from \"react\";\nimport Button from \"../../global/Button\";\nimport Translation from \"../../global/Translation\";\nimport {injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport {\n    applyCampaignDiscount,\n    checkPromotionId, fetchPromotionsList\n} from \"../../../store/promotions/actions\";\n\n\nclass ApproveDiscount extends React.Component {\n\n    lastInputId=0;\n\n    state = {\n        promotionIds: [],\n        comments: ''\n    }\n\n    componentDidMount() {\n        this.addPromotionId()\n    }\n\n    checkPromotionId = (checkData) => {\n        const formatedValue = checkData.promotionId.padStart(10,'0');\n        checkData.promotionId = formatedValue\n        checkData.inputRef.current.value = formatedValue\n\n        this.props.checkPromotionId(this.props.campaign.id, formatedValue).then(p => {\n            if ('isValid' in p) {\n                checkData.checkStatus = !!p.isValid\n                this.forceUpdate()\n            } else {\n                this.props.showAlert()\n            }\n        })\n    }\n\n    addPromotionId = () => {\n        this.state.promotionIds.push({id:this.lastInputId++, promotionId:null, checkStatus:null, deleted:false, inputRef:React.createRef()})\n        this.forceUpdate()\n    }\n\n    sendApproveDiscounts = (filteredPrommotionIds) => {\n        this.props.applyCampaignDiscount(this.props.campaign.id, filteredPrommotionIds.map(p => p.promotionId), this.state.comments)\n            .then(r => r ? this.props.showResponseModal() : this.props.showAlert())\n    }\n\n\n    isDisableSendButton = (undeletedPids) => {\n        return undeletedPids.find(p => !!p.checkStatus === false)\n    }\n\n    fixValues = (undeletedPids) => {\n        undeletedPids.forEach(p => {\n            if (p.inputRef) {\n                console.log('INPUT', p.inputRef.current.value)\n                p.inputRef.current.value=p.promotionId\n                console.log('INPUT2', p.inputRef.current.value)\n            }\n        })\n    }\n\n    render() {\n        const undeletedPids = this.state.promotionIds.filter(p => !p.deleted)\n        console.log('UNDELETEDS', undeletedPids)\n\n        return (\n            <div className=\"row px-4 pb-2 h-100\">\n                {/*<h5><Translation id=\"check_promotion_ids\" defaultMessage=\"Check promotion IDs\"/></h5>*/}\n                <div className=\"col-12 col-lg-4 h-lg-100 mb-4\">\n                    <p>Introduce tantos ids (KNUMA_AG) como promociones <i>vistex</i> hayas creado para cumplir los requisitos de esta campaña.</p>\n                    <b>Todos deberán validarse correctamente para que puedas aprobar el descuento.</b>\n                </div>\n                <div className=\"displayNone d-md-inline col-lg-1 h-lg-100\"/>\n                <div className=\"col-12 col-lg-7 d-flex flex-column justify-content-between h-lg-100  mh-100\">\n                    <div className=\"flex-grow-1 pr-3 mb-3 overflow-auto\">\n                    {\n                        undeletedPids.map((pId, index) => {\n                            const idsCount = undeletedPids.length\n                            return (\n                                <div className=\"discount-input-row\" key={`discount-checkInput-${pId.id}`}>\n                                    <div className=\"d-flex flex-column\">\n                                        <label htmlFor={`discount-checkInput-${index}`} className=\"m-0\">\n                                            <small><Translation id=\"promotion_vistex_id\" defaultMessage=\"Promotion Vistex ID\"/></small>\n                                        </label>\n                                        <input\n                                            ref={pId.inputRef}\n                                            id={`discount-checkInput-${pId.id}`}\n                                            type=\"text\"\n                                            // value={pId.promotionId}\n                                            maxLength=\"10\"\n                                            style={{\n                                                textAlign:\"end\",\n                                                fontSize:\"1.2em\",\n                                                width: \"9em\",\n                                                padding:\"2px 6px 1px\",\n                                                borderRadius:\"6px\",\n                                                border:\"3px solid #d8d8d8\"\n                                            }}\n                                            onChange={e => {\n                                                pId.promotionId = e.target.value\n                                                pId.inputRef.current.value = pId.promotionId\n                                                this.forceUpdate()\n                                            }}\n                                            disabled={pId.checkStatus === true}\n                                        />\n                                    </div>\n\n                                    <div style={{display:'flex', columnGap: '24px', alignItems: 'center', width: '100%'}}>\n                                        <Button inline\n                                                size=\"large\"\n                                                onClick={() => this.checkPromotionId(pId)}\n                                                disabled={!pId.promotionId || pId.checkStatus === true}\n                                        >\n                                            <Translation id=\"check\" defaultMessage=\"Check\"/>\n                                        </Button>\n                                        {\n                                            pId.checkStatus === null && <i className=\"far fa-question-circle fa-2x\" style={{color:'blue'}}/>\n                                        }\n                                        {\n                                            pId.checkStatus === true && <i className=\"fas fa-check-circle fa-2x\" style={{color:'green'}}/>\n                                        }\n                                        {\n                                            pId.checkStatus === false && <i className=\"fas fa-times-circle fa-2x\" style={{color:'red'}}/>\n                                        }\n                                        <div className=\"k-flex-grow\"/>\n                                        {\n                                            idsCount > 1 && <i className=\"pointer far fa-minus fa-2x\" onClick={() => {\n                                                pId.deleted = true\n                                                pId.inputRef = null\n                                                // this.forceUpdate()\n                                                this.fixValues(undeletedPids)\n                                                this.setState({promotionIds: undeletedPids})\n                                                console.log('DELETED: ', pId)\n                                            }}/>\n                                        }\n                                        {\n                                            index === (idsCount - 1) && <i\n                                                className=\"pointer far fa-plus fa-2x\"\n                                                onClick={this.addPromotionId}\n                                            />\n                                        }\n                                    </div>\n\n                                </div>\n                            )\n                        })\n                    }\n                    </div>\n                    <div className=\"d-flex flex-column align-items-end\">\n\n                        <div className=\"w-100 my-3\">\n                            <Translation id=\"comments\" defaultMessage=\"Comments\"/>\n                            <textarea\n                                value={this.state.comments}\n                                rows=\"4\"\n                                maxLength=\"512\"\n                                style={{width:'100%', border:'3px solid grey'}}\n                                onChange={e => this.setState({comments: e.target.value})}\n                            />\n                        </div>\n\n\n                        <Button className=\"approve_deny_button\"\n                                onClick={() => this.sendApproveDiscounts(undeletedPids)}\n                                disabled={this.isDisableSendButton(undeletedPids)}\n                        >\n                            <Translation id=\"approve_discounts\" defaultMessage=\"Approve discounts\"/>\n                        </Button>\n                    </div>\n                </div>\n\n            </div>\n        )\n    }\n}\n\n// {\n//     id: 'promotion_id',\n//     Header: <Translation id=\"promotion_id\" defaultMessage=\"Promotion ID\" />,\n//     Cell: ({ index }) => {\n//         return this.getPromotionIdInput(index)\n//         // return  this.state.promotionIds[index] ? <input type=\"text\"\n//         //              ref={this.state.promotionIds[index].input}\n//         //              // value={this.state.promotionIds[index].promotionId}\n//         //              onChange={e => this.setPromotionId(index, e.target.value)}\n//         //              maxLength=\"12\"\n//         //              style={{textAlign:\"end\", fontSize:\"1.2em\", width: \"9em\", padding:\"2px 6px 1px\"}}\n//         //              id={`input_${++this.counter}`}\n//         // /> : null\n//     }\n// },\n// {\n//     id: 'auth_promotion',\n//     Header: <Translation id=\"auth_promotion\" defaultMessage=\"Auth promotion\" />,\n//     Cell: ({ original }) => {\n//         return original.hasPromotionDiscount ? (\n//                 <i className=\"fas fa-check fa-2x\" style={{color:'green'}}/>\n//             ) : (\n//                 <i className=\"fas fa-times fa-2x\" style={{color:'red'}}/>\n//             )\n//     }\n// }\n\nconst mapStateToProps = state => {\n    return {\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        checkPromotionId: (promotionId, vistexId) => dispatch(checkPromotionId(promotionId, vistexId)),\n        applyCampaignDiscount: (promotionId, vistexIds, comments) => dispatch(applyCampaignDiscount(promotionId, vistexIds, comments))\n    }\n}\n\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(ApproveDiscount)\n)","import React from \"react\";\nimport Button from \"../../global/Button\";\nimport Translation from \"../../global/Translation\";\nimport {denyCampaignDiscountStatus} from \"../../../store/promotions/actions\";\nimport {injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\n\nconst MIN_CHAR_ALLOWED = 10;\nclass DenyDiscount extends React.Component {\n\n    state={rejectReason:''}\n\n    sendDenyDiscounts = () => {\n        this.props.denyCampaignDiscountStatus(this.props.campaign.id, this.state.rejectReason)\n            .then(r => r ? this.props.showResponseModal() : this.props.showAlert())\n    }\n\n    render() {\n        return (\n            <div className=\"row px-4 pb-2 h-100\">\n                <div className=\"col-12 h-100 d-flex flex-column justify-content-between\" style={{}}>\n                    <div className=\"mt-4 p-4 h-100\" style={{fontSize:'14px'}}>\n                        <Translation id=\"rejection_reason\" defaultMessage=\"Enter the rejection reason for discounts for this promotion.\"/>\n                        <textarea\n                            value={this.state.rejectReason}\n                            rows=\"4\"\n                            maxLength=\"512\"\n                            style={{marginTop:'8px', width:'100%', border:'3px solid grey'}}\n                            onChange={e => this.setState({rejectReason: e.target.value})}\n                        />\n                    </div>\n                    <div className=\"d-flex justify-content-end\">\n                        <Button className=\"approve_deny_button\"\n                                onClick={this.sendDenyDiscounts}\n                                disabled={this.state.rejectReason.length < MIN_CHAR_ALLOWED}\n                        >\n                            <Translation id=\"deny_discounts\" defaultMessage=\"Deny discounts\"/>\n                        </Button>\n                    </div>\n\n                </div>\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        denyCampaignDiscountStatus: (promotionId, rejectReason) => dispatch(denyCampaignDiscountStatus(promotionId, rejectReason))\n    }\n}\n\n\nexport default injectIntl(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(DenyDiscount)\n)\n","import React from \"react\";\nimport Translation from \"../../global/Translation\";\nimport {defineMessages, injectIntl} from \"react-intl\";\n\n\ndefineMessages(({\n    DISCOUNT_REQUESTED: {\n        id: 'DISCOUNT_REQUESTED',\n        description: 'DISCOUNT_REQUESTED',\n        defaultMessage: 'Requested'\n    },\n    APPROVED: {\n        id: 'APPROVED',\n        description: 'APPROVED',\n        defaultMessage: 'Approved'\n    },\n    DENIED: {\n        id: 'DENIED',\n        description: 'DENIED',\n        defaultMessage: 'Denied'\n    },\n    NONE: {\n        id: 'NONE',\n        description: 'NONE',\n        defaultMessage: 'Not needed'\n    },\n}))\n\nclass CampaignInfo extends React.Component {\n\n\n    getCountries = () => {\n        const countries = this.props.campaign.countries.split(',')\n        let countriesString = ''\n        countries.forEach((countyCode, i) => {\n            countriesString += this.props.intl.formatMessage({ id: 'country_' + countyCode, defaultMessage: countyCode })\n            if (countries.length - 1 < i) countriesString += ', '\n        })\n        return countriesString\n    }\n\n\n    render() {\n        const {campaign} = this.props\n        // const statusId = campaign.status.toLowerCase()\n        // const statusMsg = statusId.replace(/^\\w/, (c) => c.toUpperCase());\n\n        return (\n            <div style={{\n                padding:'16px 64px',\n                fontSize: '18px',\n                lineHeight: '32px',\n                color: 'black'\n            }}>\n                <div>\n                    <b>\n                        <Translation id=\"name\" defaultMessage=\"Name\"/>:&nbsp;\n                    </b>\n                    <span>{campaign.name}</span>\n                </div>\n                <div>\n                    <b>\n                        <Translation id=\"created_by\" defaultMessage=\"Created by\"/>:&nbsp;\n                    </b>\n                    <span>{campaign.created_by}</span>\n                </div>\n                <div>\n                    <b>\n                        <Translation id=\"market\" defaultMessage=\"Market\"/>:&nbsp;\n                    </b>\n                    <span>{campaign.market}</span>\n                </div>\n                <div>\n                    <b>\n                        <Translation id=\"countries\" defaultMessage=\"Countries\"/>:&nbsp;\n                    </b>\n                    <span>{this.getCountries()}</span>\n                </div>\n                <div className=\"d-flex\">\n                    <b>\n                        <Translation id=\"centers\" defaultMessage=\"Centers\"/>:\n                    </b>\n                    <ul>\n                    {\n                        campaign.centersData.map(c => `(${c.id}) - ${c.name}`)\n                    }\n                    </ul>\n\n                </div>\n                <div>\n                    <b>\n                        <Translation id=\"start_date\" defaultMessage=\"Start date\"/>:&nbsp;\n                    </b>\n                    <span>{campaign.start_date}</span>\n                </div>\n                <div>\n                    <b>\n                        <Translation id=\"end_date\" defaultMessage=\"End date\"/>:&nbsp;\n                    </b>\n                    <span>{campaign.end_date}</span>\n                </div>\n                <div>\n                    <b>\n                        <Translation id=\"status\" defaultMessage=\"Status\"/>:&nbsp;\n                    </b>\n                    <span>\n                        {\n                            this.props.intl.formatMessage({id:campaign.status})\n                        }\n                        {/*<Translation id={statusId} defaultMessage={statusMsg}/>*/}\n                    </span>\n                </div>\n            </div>\n        )\n    }\n\n\n}\n\nexport default injectIntl(CampaignInfo)\n","import React from \"react\";\nimport Translation from \"../../global/Translation\";\nimport Modal from \"../../global/Modal\";\nimport {\n    getAcceptedDiscounts,\n    getDataToResolveDiscounts,\n    getIsLoading\n} from \"../../../store/promotions/reducers\";\nimport {fetchPromotionsList, getDataToResolveDiscount} from \"../../../store/promotions/actions\";\nimport {withRouter} from \"react-router-dom\";\nimport {injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport Spinner from \"../../global/Spinner\";\nimport CustomersTable from \"./CustomersTable\";\nimport MaterialsTable from \"./MaterialsTable\";\nimport ApproveDiscount from \"./ApproveDiscount\";\nimport DenyDiscount from \"./DenyDiscount\";\nimport Button from \"../../global/Button\";\nimport FloatingAlert from \"../../alerts/FloatingAlert\";\nimport CampaignInfo from \"./CampaignInfo\";\n\nclass ApplyDiscountsModal extends React.Component {\n\n    state = {\n        showApprove: true,\n        showDeny: false,\n        showCustomers: false,\n        showMaterials: false,\n        showResponse: false,\n        showAlert: false,\n        showCampaignInfo: false\n    }\n\n    componentDidMount() {\n        const centers = this.props.campaign.centersData.map(c => {return {\n            id: c.id, name: c.name, salesOrg: c.salesOrg\n        }})\n\n        this.props.getDataToResolveDiscount(this.props.campaign.id, centers)\n    }\n\n    showResponseDeniedModal = () => {\n        this.setState({showResponse: 'denied'})\n        this.props.fetchPromotionsList()\n    }\n\n    showResponseApprovedModal = () => {\n        this.setState({showResponse: 'approved'})\n        this.props.fetchPromotionsList()\n    }\n\n    showAlert = () => {\n        this.setState({showAlert: true})\n    }\n\n    render() {\n        const {campaign, onClose, dataToResolveDiscount, isLoading, intl} = this.props\n        const {showMaterials, showCustomers, showApprove, showDeny, showResponse, showCampaignInfo} = this.state\n\n        return (\n            <Modal title={<React.Fragment><Translation id=\"campaign\" defaultMessage=\"Campaign\"/><span>{`: ${campaign.name}`}</span></React.Fragment>}\n                   showFooter={false}\n                   onClose={onClose}\n                   size=\"xl\"\n            >\n                <Spinner isLoading={isLoading} />\n                \n                <section className=\"resolve-discount p-0\">\n                {\n                    !showResponse && (\n                        <React.Fragment>\n                            <div className=\"d-flex mb-3\" style={{columnGap: '16px'}}>\n                                <div className={`p-0 selector ${showApprove ? 'selected' : 'not-selected'}`}\n                                     onClick={() => this.setState({showMaterials:false, showCustomers:false, showApprove: true, showDeny: false, showCampaignInfo: false})}\n                                >\n                                    <Translation id=\"approve\" defaultMessage=\"Approve\" />\n                                </div>\n                                <div className={`p-0 selector ${showDeny ? 'selected' : 'not-selected'}`}\n                                     onClick={() => this.setState({showMaterials:false, showCustomers:false, showApprove: false, showDeny: true, showCampaignInfo: false})}\n                                >\n                                    <Translation id=\"deny\" defaultMessage=\"Deny\" />\n                                </div>\n                                <div className={`p-0 selector ${showMaterials ? 'selected' : 'not-selected'}`}\n                                     onClick={() => this.setState({showMaterials:true, showCustomers:false, showApprove: false, showDeny: false, showCampaignInfo: false})}\n                                >\n                                    <Translation id=\"materials\" defaultMessage=\"Materials\"/>\n                                </div>\n                                <div className={`p-0 selector ${showCustomers ? 'selected' : 'not-selected'}`}\n                                     onClick={() => this.setState({showMaterials:false, showCustomers:true, showApprove: false, showDeny: false, showCampaignInfo: false})}\n                                >\n                                    <Translation id=\"customers\" defaultMessage=\"Customers\" />\n                                </div>\n                                <div className={`p-0 selector ${showCampaignInfo ? 'selected' : 'not-selected'}`}\n                                     onClick={() => this.setState({showMaterials:false, showCustomers:false, showApprove: false, showDeny: false, showCampaignInfo: true})}\n                                >\n                                    <Translation id=\"campaign_info\" defaultMessage=\"Campaign info\" />\n                                </div>\n                            </div>\n\n                            <div className=\"row\" style={{height:'60vh'}}>\n                                <div className=\"col-12 h-100\">\n                                {/********* TABLA MATERIALES **********/}\n                                {\n                                    showMaterials && <MaterialsTable products={dataToResolveDiscount.products} campaign={campaign}/>\n                                }\n                                {/********* TABLA CLIENTES **********/}\n                                {\n                                    showCustomers && <CustomersTable customers={dataToResolveDiscount.customers} campaign={campaign}/>\n                                }\n                                {/********* APROBAR DESCUENTOS **********/}\n                                {\n                                    showApprove && <ApproveDiscount campaign={campaign}\n                                                                    showResponseModal={this.showResponseApprovedModal}\n                                                                    showAlert={this.showAlert}\n                                    />\n                                }\n                                {/********* DENEGAR DESCUENTOS **********/}\n                                {\n                                    showDeny && <DenyDiscount campaign={campaign}\n                                                              showResponseModal={this.showResponseDeniedModal}\n                                                              showAlert={this.showAlert}\n                                    />\n                                }\n                                {/********* INFO DE CAMPAÑA **********/}\n                                {\n                                    showCampaignInfo && <CampaignInfo campaign={campaign} intl={intl}/>\n                                }\n                                </div>\n                            </div>\n                        </React.Fragment>\n                    )\n                }\n                {/********* MENSAJE RESPUESTA **********/}\n                {\n                    showResponse && (\n                        <div style={{height:'60vh', display:'flex', flexFlow:'column', alignItems:'center', justifyContent:'space-around'}}>\n                            <div style={{textAlign:'center'}}>\n                                <h3>El descuento solicitado para esta campaña ha sido {showResponse === 'approved' ? 'APROBADO' : 'DENEGADO'}</h3>\n                                <h5 style={{marginTop:'16px'}}>Se ha enviado un correo a los administradores de los centros</h5>\n                            </div>\n\n                            <Button onClick={onClose}>Ir al listado de campañas</Button>\n                        </div>\n                    )\n                }\n                {/********* ALERTA FALLO PETICIÓN **********/}\n                {\n                    this.state.showAlert && (\n                        <FloatingAlert\n                            warningMessage={\n                                <Translation id=\"fail\" defaultMessage=\"Fail\"/>\n                            }\n                            onClose={() => {this.setState({showAlert: false})}}\n                        />\n                    )\n                }\n\n\n                </section>\n            </Modal>\n        )\n    }\n}\n\nconst mapStateToProps = state => {\n    return {\n        isLoading: getIsLoading(state),\n        dataToResolveDiscount: getDataToResolveDiscounts(state),\n        acceptedDiscounts: getAcceptedDiscounts(state),\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        getDataToResolveDiscount: (promotionId, centers) => dispatch(getDataToResolveDiscount(promotionId, centers)),\n        fetchPromotionsList: (page = 1, itemsPerPage = 8) => dispatch(fetchPromotionsList(page, itemsPerPage))\n    }\n}\nexport default ApplyDiscountsModal = withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(ApplyDiscountsModal)\n    )\n)\n\n","import { canViewDiscountStep } from './../../store/promotions/reducers';\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport Spinner from '../global/Spinner'\nimport Translation from '../global/Translation'\nimport ReactTable from 'react-table'\nimport { getIsLoading, getPromotions } from '../../store/promotions/reducers'\nimport {\n    clonePromotion,\n    disablePromotion,\n    enablePromotion,\n    fetchPromotionsList,\n    fetchPromotionToEdit,\n    sendPreviewPromotionEmail\n} from '../../store/promotions/actions'\nimport moment from 'moment'\nimport { getLanguage } from '../../store/ui/reducers'\nimport { defineMessages, injectIntl } from 'react-intl'\nimport confirm from '../global/confirm'\nimport Toggle from 'react-toggle'\nimport ReactTooltip from 'react-tooltip'\nimport Modal from '../global/Modal'\nimport Select from 'react-select'\nimport { usersSelector } from '../../store/impersonate/reducers'\nimport { fetchUserPriceListByUser } from '../../store/products/actions'\nimport { gerPriceListByUserId } from '../../store/login/actions'\nimport { dispatchPushURL } from '../../store/ui/actions'\nimport {getIsCampaignsPricingUser} from \"../../store/login/reducers\"\nimport DiscountStateLabel from \"./discounts/DiscountStateLabel\"\nimport ApplyDiscountsModal from \"./discounts/ApplyDiscountsModal\"\n\ndefineMessages({\n    the_campaign_is_incomplete: {\n        id: 'the_campaign_is_incomplete',\n        description: 'The campaign is incomplete',\n        defaultMessage: 'The campaign is incomplete'\n    },\n    enter_the_email_to_send_the_preview: {\n        id: 'enter_the_email_to_send_the_preview',\n        description: 'enter_the_email_to_send_the_preview',\n        defaultMessage: 'Enter the email to send the preview'\n    }\n})\nconst confirmEnablePromotion = (center, onChangeShippingCenter, intl) => {\n    return confirm(intl.formatMessage({ id: 'ACTIVATE_PROMOTION_MAILING_CONFIRM' })).then(\n        () => {\n            return onChangeShippingCenter(center)\n        },\n        () => {\n            return Promise.reject()\n        }\n    )\n}\nconst mapStateToProps = state => {\n    return {\n        data: getPromotions(state),\n        locale: getLanguage(state),\n        isLoading: getIsLoading(state),\n        users: usersSelector(state),\n        isPricing: getIsCampaignsPricingUser(state),\n        canViewDiscountStep:canViewDiscountStep(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchPromotionsList: (page = 1, itemsPerPage = 8, filters = null) => dispatch(fetchPromotionsList(page, itemsPerPage, filters)),\n        fetchPromotion: (promotionId, intl) => dispatch(fetchPromotionToEdit(promotionId, intl)),\n        redirect: url => {\n            dispatch(dispatchPushURL(url))\n        },\n        initCreateNewPromotion: () => Promise.resolve(dispatch({ type: 'INIT_CREATE_NEW_PROMOTION' })),\n        sendPreviewPromotionEmail: (promotionId, email, userSelected) => {\n            dispatch(sendPreviewPromotionEmail(promotionId, email, userSelected))\n        },\n        enablePromotion: promotionId => dispatch(enablePromotion(promotionId)),\n        disablePromotion: promotionId => dispatch(disablePromotion(promotionId)),\n        fetchUserPriceListByUser: userId => {\n            dispatch(fetchUserPriceListByUser(userId))\n        },\n        gerPriceListByUserId: userId => {\n            dispatch(gerPriceListByUserId(userId))\n        },\n        sendClonePromotion: (promotionId) => dispatch(clonePromotion(promotionId)),\n        showAlertFailure: () => dispatch({ type: 'FLOATING_ALERTS_ADD_FAILURE_MESSAGE'})\n        // updateCampaignDiscountStatus: (campaignId, status) => dispatch(sendCampaignDiscountStatus(campaignId, status))\n    }\n}\n\nclass PromotionsList extends React.Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            selected: null,\n            inputEmailValue: null,\n            showModalPreview: false,\n            showApplyDiscountsModal: false,\n            selectedCampaign: null,\n            selectedRow: null\n        }\n    }\n\n    sendPreviewPromotionEmail() {\n        this.props.sendPreviewPromotionEmail(this.state.selected, this.state.inputEmailValue, this.state.userSelected)\n        this.setState({ showModalPreview: false })\n    }\n\n\n    getActionCell = original => {\n        if (!this.props.isPricing) {\n            return (\n                <div className=\"d-flex justify-content-center\">\n                    {/* {original.isReady ? 'is ready': 'no esta ready'} */}\n                    {original.isReady ? (\n                        <Toggle\n                            className=\"react-toggle-small\"\n                            checked={original.status === 'ACTIVE'}\n                            disabled={!original.isReady || original.created_by === 'AUTOMATIC'}\n                            onChange={() => {\n                                if (original.status === 'INACTIVE' || original.status === 'DRAFT')\n                                    confirmEnablePromotion(original.id, this.props.enablePromotion, this.props.intl).then(() => this.props.fetchPromotionsList())\n                                else if (original.status === 'ACTIVE') this.props.disablePromotion(original.id).then(() => this.props.fetchPromotionsList())\n                            }}\n                        />\n                    ) : (\n                        <span>\n                        <Translation id=\"draft\" defaultMessage=\"Draft\" />{' '}\n                            <i\n                                className=\"fal fa-info-circle\"\n                                style={{ margin: '5px', flex: '0 0 auto' }}\n                                data-tip={this.props.intl.formatMessage({\n                                    id: 'the_campaign_is_incomplete',\n                                    defaultMessage: 'The campaign is incomplete'\n                                })}\n                            />\n                        <ReactTooltip effect=\"solid\" place=\"top\" />\n                    </span>\n                    )}\n                </div>\n            )\n        } else {\n            if (original.discount_request_status === 'REQUESTED') {\n                return (\n                    <div style={{color:\"#007bff\", textDecoration:\"underline\", cursor:\"pointer\", paddingInlineStart:\"4px\"}}\n                         onClick={() => this.setState({ showApplyDiscountsModal: true, selectedCampaign: original })}\n                    >\n                        <Translation id=\"pending_approval\" defaultMessage=\"Pending approval\"/>\n                    </div>\n                )\n            } else {\n                let messageId\n                let message\n\n                if (original.isReady) {\n                    if (original.status === 'ACTIVE') {\n                        messageId = 'active'\n                        message = 'Active'\n                    } else {\n                        messageId = 'inactive'\n                        message = 'Inactive'\n                    }\n                } else {\n                    messageId = 'draft'\n                    message = 'Draft'\n                }\n\n                return (\n                    <div style={{paddingInlineStart:\"4px\"}}>\n                        {\n                            this.props.intl.formatMessage({id:messageId})\n                        }\n                        {/*<Translation id={messageId} defaultMessage={message}/>*/}\n                    </div>\n                )\n            }\n        }\n    }\n\n    render() {\n        const filterable = false\n\n        const trProps = (state, rowInfo) => {\n            // if (this.props.isPricing) return {}\n\n            let cursor = rowInfo ? 'pointer' : 'default'\n\n            return {\n                onClick: () => {\n                    if (this.state.selected === rowInfo.original.id) {\n                        this.setState({ selected: null, selectedRow: null })\n                    } else {\n                        this.setState({ selected: rowInfo.original.id, selectedRow: rowInfo })\n                    }\n                },\n                style: {\n                    cursor: cursor,\n                    backgroundColor: rowInfo && rowInfo.original.id === this.state.selected ? 'rgba(100, 100, 100, 0.1)' : 'transparent'\n                }\n            }\n        }\n\n        const columns = [\n            {\n                id: 'name',\n                Header: <Translation id=\"name\" defaultMessage=\"Name\" />,\n                filterMethod: (filter, row) => {\n                    return row._original.name.toLowerCase().includes(filter.value.toLowerCase())\n                },\n                accessor: 'name'\n            },\n            {\n                id: 'commercial_name_data',\n                Header: <Translation id=\"commercial_name\" defaultMessage=\"Commercial name\" />,\n                Cell: ({ original }) => {\n                    return (\n                        <div>\n                            {JSON.parse(original.commercial_name_data.text) &&\n                            JSON.parse(original.commercial_name_data.text).default_text &&\n                            JSON.parse(original.commercial_name_data.text).default_text.replace(/(<([^>]+)>)/gi, '')}\n                        </div>\n                    )\n                },\n                filterMethod: (filter, row) => {\n                    return (\n                        JSON.parse(row._original.commercial_name_data.text) &&\n                        JSON.parse(row._original.commercial_name_data.text)\n                            .default_text.toLowerCase()\n                            .includes(filter.value.toLowerCase())\n                    )\n                }\n            },\n            {\n                id: 'start_date',\n                Header: <Translation id=\"start_date\" defaultMessage=\"Start Date\" />,\n                Cell: ({ original }) => {\n                    return (\n                        <div style={{ textAlign: 'center' }}>\n                            {moment(original.start_date)\n                                .locale(this.props.locale)\n                                .format('L')}\n                        </div>\n                    )\n                },\n                filterMethod: (filter, row) => {\n                    return moment(row._original.start_date)\n                        .locale(this.props.locale)\n                        .format('L')\n                        .toLowerCase()\n                        .includes(filter.value.toLowerCase())\n                },\n                width: 120\n            },\n            {\n                id: 'end_date',\n                Header: <Translation id=\"end_date\" defaultMessage=\"End Date\" />,\n                Cell: ({ original }) => {\n                    return (\n                        <div style={{ textAlign: 'center' }}>\n                            {moment(original.end_date)\n                                .locale(this.props.locale)\n                                .format('L')}\n                        </div>\n                    )\n                },\n                filterMethod: (filter, row) => {\n                    return moment(row._original.start_date)\n                        .locale(this.props.locale)\n                        .format('L')\n                        .toLowerCase()\n                        .includes(filter.value.toLowerCase())\n                },\n                width: 120\n            },\n            {\n                id: 'market',\n                Header: <Translation id=\"market\" defaultMessage=\"Market\" />,\n                filterMethod: (filter, row) => {\n                    return row._original.market.toLowerCase().includes(filter.value.toLowerCase())\n                },\n                accessor: 'market'\n            },\n            {\n                id: 'countries',\n                Header: <Translation id=\"countries\" defaultMessage=\"Countries\" />,\n                filterMethod: (filter, row) => {\n                    return row._original.countries.toLowerCase().includes(filter.value.toLowerCase())\n                },\n                Cell: ({ original }) => {\n                    const countries = original.countries.split(',')\n                    return countries.map((countyCode, i) => {\n                        if (!countyCode) return null\n                        else\n                            return (\n                                <span>\n                                    {this.props.intl.formatMessage({ id: 'country_' + countyCode, defaultMessage: countyCode })}\n                                    {countries.length - 1 > i && ', '}\n                                </span>\n                            )\n                    })\n                }\n            },\n            {\n                id: 'centers',\n                Header: <Translation id=\"centers\" defaultMessage=\"Centers\" />,\n                filterMethod: (filter, row) => {\n                    return row._original.centers.toLowerCase().includes(filter.value.toLowerCase())\n                },\n                Cell: ({ original }) => {\n                    return (\n                        <span data-tip data-for={'promotion' + original.id}>\n                            {original.centersData.map(center => {\n                                if (center) {\n                                    return center.id + ' ' + center.name + ', '\n                                }\n                                return null\n                            })}\n                            <ReactTooltip id={'promotion' + original.id} bg-coloreffect=\"solid\" place=\"bottom\">\n                                <div>\n                                    {original.centersData.map(center => {\n                                        if (center) {\n                                            return <div>{center.id + ' ' + center.name}</div>\n                                        }\n                                        return null\n                                    })}\n                                </div>\n                            </ReactTooltip>\n                        </span>\n                    )\n                }\n            },\n            {\n                id: 'created_by',\n                Header: <Translation id=\"created_by\" defaultMessage=\"Created by\" />,\n                filterMethod: (filter, row) => {\n                    return row._original.created_by.toLowerCase().includes(filter.value.toLowerCase())\n                },\n                accessor: 'created_by'\n            },\n            {\n                id: 'discount_request_state',\n                Header: <Translation id=\"discount_request_state\" defaultMessage=\"Discount request state\" />,\n                filterMethod: (filter, row) => {\n                    return row._original.discount_request_status.toLowerCase().includes(filter.value.toLowerCase())\n                },\n                accessor: 'discount_request_status',\n                Cell: ({ original }) => {\n                    return (\n                        <DiscountStateLabel campaign={original}/>\n                    )\n                },\n                show: this.props.canViewDiscountStep\n            },\n            {\n                id: 'status',\n                Header: <Translation id=\"status\" defaultMessage=\"Status\" />,\n                Cell: ({ original }) => {return this.getActionCell(original)}\n            }\n        ]\n\n        // const selectedRow = this.state.selectedRow && this.state.selectedRow.original\n        // const disablePricingButton = !selectedRow || selectedRow.discount_request_status === 'NONE'\n        // const disableApproved = !selectedRow || selectedRow.discount_request_status === 'APPROVED'\n        // const disableDenied = !selectedRow || selectedRow.discount_request_status === 'DENIED'\n\n        const automaticUser = this.state.selectedRow && this.state.selectedRow.original.created_by === 'AUTOMATIC'\n\n        return (\n            <div className=\"container\">\n                <section className=\"promotions-list\">\n                    <h2 className=\"my-4\">\n                        <Translation id=\"campaign_list\" defaultMessage=\"Campaign List\" />\n                    </h2>\n\n                        <div className=\"container-group-promo-btns\">\n                            { !this.props.isPricing && (\n                                <React.Fragment>\n                                    <div\n                                        className=\"btn btn-outline-secondary\"\n                                        onClick={() => {\n                                            this.props.initCreateNewPromotion().then(() => this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_ADMIN_PROMOTIONS' })))\n                                        }}\n                                    >\n                                        <Translation id=\"create\" defaultMessage=\"Create\" />\n                                    </div>\n                                    <div\n                                        className={`btn btn-outline-secondary ${(!this.state.selected || automaticUser) ? 'disabled' : ''}`}\n                                        onClick={() => {\n                                            if (this.state.selected && !automaticUser) {\n                                                this.props\n                                                    .fetchPromotion(this.state.selected, this.props.intl)\n                                                    .then(() => this.props.redirect(this.props.intl.formatMessage({ id: 'ROUTE_ADMIN_PROMOTIONS' })))\n                                            }\n                                        }}\n                                    >\n                                        <Translation id=\"view_edit\" defaultMessage=\"View/Edit\" />\n                                    </div>\n                                </React.Fragment>\n                            )}\n                            <div\n                                className={`btn btn-outline-secondary ${!this.state.selected ? 'disabled' : ''} ${this.state.showModalPreview ? 'active' : ''}`}\n                                onClick={() => this.state.selected && this.setState({ showModalPreview: true })}\n                            >\n                                <span>\n                                    <Translation id=\"preview\" defaultMessage=\"Preview\" />\n                                </span>\n                            </div>\n                            {!this.props.isPricing && (\n                                <div className={`btn btn-outline-secondary ${(!this.state.selected || automaticUser) ? 'disabled' : ''}`} onClick={() => {\n                                        if (this.state.selected && !automaticUser) {\n                                            this.props.sendClonePromotion(this.state.selected).then(() => this.props.fetchPromotionsList())\n                                        } else {\n                                            this.props.showAlertFailure()\n                                        }\n                                    }}\n                                >\n                                    <Translation id=\"clone\" defaultMessage=\"Clone\" />\n                                </div>\n                            )}\n                        </div>\n\n                    {/*{ this.props.isPricing && (*/}\n                    {/*    <div className=\"d-flex justify-content-start\">*/}\n                    {/*        <div*/}\n                    {/*            className={`btn btn-outline-secondary mr-2 ${disablePricingButton || disableApproved ? 'disabled' : ''}`}*/}\n                    {/*            onClick={() => {*/}\n                    {/*                this.props.updateCampaignDiscountStatus(this.state.selected, 'APPROVED')*/}\n                    {/*            }}*/}\n                    {/*        >*/}\n                    {/*            <Translation id=\"approve\" defaultMessage=\"Approve\" />*/}\n                    {/*        </div>*/}\n                    {/*        <div*/}\n                    {/*            className={`btn btn-outline-secondary mr-2 ${disablePricingButton || disableDenied ? 'disabled' : ''}`}*/}\n                    {/*            onClick={() => {*/}\n                    {/*                this.props.updateCampaignDiscountStatus(this.state.selected, 'DENIED')*/}\n                    {/*            }}*/}\n                    {/*        >*/}\n                    {/*            <Translation id=\"deny\" defaultMessage=\"Deny\" />*/}\n                    {/*        </div>*/}\n                    {/*        <div*/}\n                    {/*            className={`btn btn-outline-secondary mr-2 ${disablePricingButton ? 'disabled' : ''}`}*/}\n                    {/*            onClick={() => this.setState({ showApplyDiscountsModal: true, selectedCampaign: this.state.selectedRow.original })}*/}\n                    {/*        >*/}\n                    {/*            <Translation id=\"check_discounts\" defaultMessage=\"Check discounts\" />*/}\n                    {/*        </div>*/}\n                    {/*        <div*/}\n                    {/*            className={`btn btn-outline-secondary mr-2 ${!this.state.selected ? 'disabled' : ''} ${this.state.showModalPreview ? 'active' : ''}`}*/}\n                    {/*            onClick={() => this.state.selected && this.setState({ showModalPreview: true })}*/}\n                    {/*        >*/}\n                    {/*            <span>*/}\n                    {/*                <Translation id=\"preview\" defaultMessage=\"Preview\" />*/}\n                    {/*            </span>*/}\n                    {/*        </div>*/}\n                    {/*    </div>*/}\n                    {/*)}*/}\n\n                    <div className=\"row my-5\">\n                        {filterable && (\n                            <div className=\"col-12\">\n                                <h5>\n                                    <Translation id=\"filter_your_campaigns_using_the_following_fields\" defaultMessage=\"Filter your campaigns using the following fields\" />\n                                </h5>\n                            </div>\n                        )}\n                        <div className=\"col-12\">\n                            <ReactTable\n                                filterable={filterable}\n                                manual\n                                data={this.props.data.data}\n                                pages={this.props.data.last_page}\n                                loading={this.props.isLoading}\n                                loadingText={<Spinner isLoading={this.props.isLoading} />}\n                                columns={columns}\n                                getTrProps={trProps}\n                                subRowsKey=\"lots\"\n                                defaultPageSize={8}\n                                pageSizeOptions={[8, 16, 32, 64, 128]}\n                                previousText={<Translation id=\"previous\" defaultMessage=\"Previous\" />}\n                                nextText={<Translation id=\"next\" defaultMessage=\"Next\" />}\n                                noDataText={<Translation id=\"no_data\" defaultMessage=\"No data available\" />}\n                                pageText={<Translation id=\"page\" defaultMessage=\"Page\" />}\n                                ofText={<Translation id=\"of\" defaultMessage=\"Of\" />}\n                                className=\"light promotions-list\"\n                                onFetchData={state => {\n                                    this.props.fetchPromotionsList(state.page + 1, state.pageSize, state.filtered)\n                                }}\n                            />\n                        </div>\n                    </div>\n\n                </section>\n\n                {this.state.showModalPreview && (\n                    <Modal title={<Translation id=\"preview\" defaultMessage=\"Preview\" />} onClose={() => this.setState({ showModalPreview: false })} size=\"large\">\n                        <div className=\"container\">\n                            <div className=\"row\">\n                                <div className=\"col-12\">\n                                    <label>{this.props.intl.formatMessage({ id: 'promotion_select_user' })}</label>\n                                    <Select\n                                        placeholder={this.props.intl.formatMessage({ id: 'promotion_select_user' })}\n                                        options={\n                                            this.props.users &&\n                                            this.props.users.map(item => {\n                                                return { label: item.name, value: item.login }\n                                            })\n                                        }\n                                        value={this.state.userSelected}\n                                        onChange={e => {\n                                            this.setState({ userSelected: e && e.value })\n                                        }}\n                                    />\n                                </div>\n                            </div>\n                            <div className=\"row\">\n                                <div className=\"col-6\">\n                                    <label>\n                                        <Translation id=\"send_email_preview\" defaultMessage=\"Preview newsletter:\" />\n                                    </label>\n                                    <input\n                                        type=\"text\"\n                                        className=\"form-control\"\n                                        placeholder={this.props.intl.formatMessage({\n                                            id: 'enter_the_email_to_send_the_preview',\n                                            defaultMessage: 'Enter the email to send the preview'\n                                        })}\n                                        value={this.state.inputEmailValue}\n                                        onChange={e => this.setState({ inputEmailValue: e.target.value })}\n                                        aria-label=\"Recipient's username\"\n                                        aria-describedby=\"basic-addon2\"\n                                    />\n                                    <br />\n\n                                    <br />\n                                    <div className=\"input-group-append\">\n                                        <button className=\"btn btn-outline-secondary\" type=\"button\" onClick={() => this.sendPreviewPromotionEmail()}>\n                                            <Translation id=\"send_email\" defaultMessage=\"Send email\" />\n                                        </button>\n                                    </div>\n                                </div>\n                                <div className=\"col-6\">\n                                    <label>\n                                        <Translation id=\"preview_landing\" defaultMessage=\"Preview landing:\" />\n                                    </label>\n                                    <br />\n                                    <div\n                                        style={{ height: '38px' }}\n                                        className={`btn btn-outline-secondary mr-2 ${!this.state.selected ? 'disabled' : ''}`}\n                                        onClick={() => {\n                                            if (this.state.selected) {\n                                                this.props\n                                                    .fetchPromotion(this.state.selected, this.props.intl)\n                                                    .then(() =>\n                                                        this.props.redirect(\n                                                            this.props.intl.formatMessage({ id: 'ROUTE_PROMOTION_LANDING' }).replace(':promotionId?', this.state.selected)\n                                                        )\n                                                    )\n                                            }\n                                        }}\n                                    >\n                                        <Translation id=\"landing\" defaultMessage=\"Landing\" />\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </Modal>\n                )}\n\n                {this.state.showApplyDiscountsModal && (\n                    <ApplyDiscountsModal campaign={this.state.selectedCampaign}\n                                         onClose={() => this.setState({ showApplyDiscountsModal: false, selectedCampaign: null })}\n                    />\n                )}\n            </div>\n        )\n    }\n}\n\nconst PromotionsListContainer = withRouter(\n    connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(injectIntl(PromotionsList))\n)\nexport default PromotionsListContainer\n","import React from 'react'\nimport PromotionsListContainer from '../components/promotions/PromotionsListContainer'\n\nconst PromotionsListScreen = props => <PromotionsListContainer {...props} />\n\nexport default PromotionsListScreen\n","import { connect } from 'react-redux'\nimport withRouter from 'react-router-dom/withRouter'\n\nimport React from 'react'\nimport { injectIntl } from 'react-intl'\nimport Translation from './Translation'\nimport Button from './Button'\nimport { resubscribeNewsletter, unsubscribeNewsletter } from '../../store/profile-configuration/actions'\nimport { getIsLoading, getIsSubscribed } from '../../store/profile-configuration/reducers'\nimport Spinner from './Spinner'\n\nclass Unsubscribe extends React.Component {\n    constructor(props) {\n        super(props)\n        props.unsubscribe(props.tokenOnlyLogin)\n    }\n    render() {\n        return (\n            <div className=\"container\">\n                <div className=\"row\">\n                    <div className=\"col-12 offset-md-3 col-md-6\">\n                        <div className=\"fill-height-template\">\n                            <div style={{ minHeight: '200px' }} className=\"text-center my-4\">\n                                <h2>\n                                    <Translation id=\"newsletter\" defaultMessage=\"Newsletter\" />\n                                </h2>\n                                {this.props.isLoading ? (\n                                    <div className=\"my-4\">\n                                        <Spinner isLoading={this.props.isLoading} relative />\n                                    </div>\n                                ) : this.props.isSubscribe ? (\n                                    <div>\n                                        <Translation\n                                            id=\"you_have_been_successfully_subscribed_from_email_communications\"\n                                            defaultMessage=\"You have been successfully subscribed from email communications.\"\n                                        />\n                                        <Translation\n                                            id=\"if_you_did_this_in_error_you_may_unsubscribe_by_clicking_the_button_below\"\n                                            defaultMessage=\"If you did this in error, you may unsubscribe by clicking the button below.\"\n                                        />\n                                        <div>\n                                            <Button\n                                                className=\"mt-4 d-inline-block px-5\"\n                                                onClick={() => this.props.unsubscribe(this.props.tokenOnlyLogin)}\n                                                disabled={this.props.isLoading}\n                                            >\n                                                <Translation id=\"unsubscribe\" defaultMessage=\"unsubscribe\" />\n                                            </Button>\n                                        </div>\n                                    </div>\n                                ) : (\n                                    <div>\n                                        <Translation\n                                            id=\"you_have_been_successfully_unsubscribed_from_email_communications\"\n                                            defaultMessage=\"You have been successfully unsubscribed from email communications.\"\n                                        />\n                                        <Translation\n                                            id=\"if_you_did_this_in_error_you_may_re_subscribe_by_clicking_the_button_below\"\n                                            defaultMessage=\"If you did this in error, you may re-subscribe by clicking the button below.\"\n                                        />\n                                        <div>\n                                            <Button\n                                                className=\"mt-4 d-inline-block px-5\"\n                                                onClick={() => this.props.resubscribe(this.props.tokenOnlyLogin)}\n                                                disabled={this.props.isLoading}\n                                            >\n                                                <Translation id=\"re_subscribe\" defaultMessage=\"re-subscribe\" />\n                                            </Button>\n                                        </div>\n                                    </div>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\n\nconst mapStateToProps = (state, { match }) => {\n    return {\n        tokenOnlyLogin: match.params.tokenOnlyLogin,\n        isSubscribe: getIsSubscribed(state),\n        isLoading: getIsLoading(state)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        unsubscribe: tokenOnlyLogin => dispatch(unsubscribeNewsletter(tokenOnlyLogin)),\n        resubscribe: tokenOnlyLogin => dispatch(resubscribeNewsletter(tokenOnlyLogin))\n    }\n}\n\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(Unsubscribe)\n    )\n)\n","import React from 'react'\n\nimport UnsubscribeContainer from '../components/global/UnsubscribeContainer'\n\nexport default props => <UnsubscribeContainer />\n","import React, {useEffect, useState} from \"react\";\nimport {injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport {Route, withRouter} from \"react-router-dom\";\nimport {getLocalizedUrl} from \"./store/ui/reducers\";\nimport Error404Screen from \"./screens/Error404Screen\";\nimport {getLastSelectedProduct} from \"./store/selected-objects/reducers\";\nimport {getIsIkeaCenter, getIsMkToolsCenter} from \"./store/centers/reducers\";\nimport {getCommonParams} from \"./store/login/reducers\";\nimport {byProductId} from \"./store/products/reducers\";\n\n\n\nconst PageViewRoute = (props) => {\n\n    const [pageType, setPageType] = useState('')\n    const [pageSection, setPageSection] = useState('')\n    const [pageSubsection, setPageSubsection] = useState('')\n\n    const getUrlType = () => {\n        const regex = /[?]type\\[0]=([^&]*)/\n        const type = regex.exec(props.location.search)\n        return type && type[1].toLowerCase()\n    }\n\n    const getCtsUrlType = () => {\n        const regex = /[?]type=([^&]*)/\n        const type = regex.exec(props.location.search)\n        return type && type[1].toLowerCase()\n    }\n\n    const getUrlBrand = () => {\n        const regex = /[&|?]brand\\[0]=([^&]*)/\n        const type = regex.exec(props.location.search)\n        return type && type[1].toLowerCase()\n    }\n\n    const getUrlSubtype = () => {\n        const regex = /&subtype\\[0]=([^&]*)/\n        const type = regex.exec(props.location.search)\n        return type && type[1].toLowerCase()\n    }\n\n    const getUrlSection = () => {\n        const regex = /\\/([a-z0-9_-]*[\\/]?)$/g\n        const type = regex.exec(props.location.pathname)\n        return type && type[1].toLowerCase()\n    }\n    const getUrlAreaPersonalSection = () => {\n        if (props.location.pathname.includes('view-order')) return 'view-order'\n        if (props.location.pathname.includes('view-shipping')) return 'view-shipping'\n        if (props.location.pathname.includes('view-order')) return 'view-order'\n\n        return getUrlSection()\n    }\n\n    const getWebHeading = () => {\n        const regex = /webHeading\\[0]=([^&]*)/\n        const type = regex.exec(props.location.search)\n        return type && type[1].toLowerCase()\n    }\n\n    const urlHasMoreThanOneType = (times=2) => {\n        const regex = RegExp(`([?&]type\\\\[[0-9]].*){${times},}`)\n        return regex.test(props.location.search)\n    }\n\n\n\n    const setPageViewEvent = () => {\n        const {localizedUrl, path, location, selectedMaterial, commonParams, isLogged} = props\n\n        if (isLogged && !commonParams.userId) return\n\n        switch (path) {\n            case localizedUrl('ROUTE_HOME'):\n                setPageType('home')\n                setPageSection('home')\n                setPageSubsection('home')\n                break\n\n            case localizedUrl('ROUTE_CATALOG'):\n                setPageType('listado_de_producto')\n                setPageSections('listado_de_producto')\n                break\n\n            case localizedUrl('ROUTE_CUT_TO_SIZE'):\n                if (location.search) {\n                    setPageType('detalle_de_producto')\n                    let ctsSection = getCtsUrlType()\n                    if (ctsSection === 'preorder') ctsSection = 'pre_order'\n                    if (ctsSection === 'budget') ctsSection = 'presupuesto`'\n                    setPageSubsection(ctsSection)\n                }\n                else {\n                    setPageType('listado_de_producto')\n                    setPageSubsection('productos_a_medida')\n                }\n                setPageSection('productos_a_medida')\n                break\n\n            case localizedUrl('ROUTE_LOTS'):\n                setPageType('listado_de_producto')\n                setPageSection('lotes')\n                setPageSubsection('lotes')\n                break\n\n            case localizedUrl('ROUTE_LOT_IMAGE_VIEWER'):\n                setPageType('detalle_de_producto')\n                setPageSection('lotes')\n                setPageSubsection('lotes')\n                break\n\n            case localizedUrl('ROUTE_PRODUCT_DETAIL'):\n                if (selectedMaterial) {\n                    if (selectedMaterial.fromMall) {\n                        setPageType('detalle_de_producto')\n                        setPageSection('landing')\n                        setPageSubsection('mall_days')\n                    } else {\n                        setPageSections('detalle_de_producto')\n                    }\n                }\n                break\n\n            case localizedUrl('ROUTE_PROFILE'):\n                setPageType('area_personal')\n                setPageSection('area_personal')\n                setPageSections('area_personal')\n                break\n\n            case localizedUrl('ROUTE_COOKIES'):\n                setPageType('informativa')\n                setPageSection('politica_cookies')\n                setPageSubsection('politica_cookies')\n                break\n\n            case localizedUrl('ROUTE_PRIVACY'):\n                setPageType('informativa')\n                setPageSection('politica_privacidad')\n                setPageSubsection('politica_privacidad')\n                break\n\n            case localizedUrl('ROUTE_LANDING_TEMPLATE'):\n                setPageType('listado_de_producto')\n                setPageSection('landing')\n                setPageSubsection('mall_days')\n                break\n\n            case localizedUrl('ROUTE_PROMOTION_LANDING'):\n                setPageType('listado_de_producto')\n                setPageSection('landing')\n                setPageSubsection('campañas_locales')\n                break\n\n            case localizedUrl('ROUTE_CHECKOUT'):\n                setPageType('proceso_de_compra')\n                setPageSection('proceso_de_compra')\n                setPageSections('carrito')\n                break\n\n\n\n            default:\n                // setPageType('S/E')\n        }\n    }\n\n    const setPageSections = (pageType) => {\n        switch (pageType) {\n            case  'home':\n                break\n\n            case 'listado_de_producto': {\n                let section = getUrlSection()\n                let type = getUrlType()\n                let brand = getUrlBrand()\n                let subtype = getUrlSubtype()\n\n                if (props.isMktools) {\n                    setPageSection('mk_tools')\n                    const subSect = getWebHeading() === 'sh' ? 'showroom' : 'mk_tools'\n                    setPageSubsection(subSect)\n                } else if (props.isIkea) {\n                    setPageSection('ikea')\n                    setPageSubsection('ikea')\n                } else if (section === 'outlet') {\n                    if (!brand) brand = 'outlet'\n                    setPageSection('outlet')\n                    setPageSubsection(brand)\n                } else if (type === 'ppcc') {\n                    if (!subtype) subtype = 'ppcc'\n                    setPageSection('ppcc')\n                    setPageSubsection(subtype)\n                } else {\n                    const hasMoreThanOneType = urlHasMoreThanOneType()\n                    if (type === 'fregadero' || type === 'baños' || type === 'ba%c3%91os' || hasMoreThanOneType) {\n                        setPageSection('productos_estandar')\n                        if (urlHasMoreThanOneType(3)) setPageSubsection('productos_estandar')\n                        else if (type === 'fregadero') setPageSubsection('fregadero')\n                        else if (subtype === 'soleria') setPageSubsection('soleria_aplacado')\n                        else if (subtype === 'shower%20tray') setPageSubsection('platos_ducha')\n                        else if (subtype === 'washbasin') setPageSubsection('lavabos')\n                        else setPageSubsection('productos_estandar')\n                    } else {\n                        if (!brand) brand = type\n                        setPageSection(type)\n                        setPageSubsection(brand)\n                    }\n                }\n                break\n            }\n\n            case 'detalle_de_producto': {\n                let section = ''\n                let subsection = ''\n\n                if (props.selectedMaterial.type === 'PPCC') {\n                    section = 'ppcc'\n                    switch (props.selectedMaterial.subtypeId) {\n                        case 'COLORSIL':\n                        case 'SOLUMASTIK':\n                        case 'COLORDEK':\n                        case 'MASTIDEK':\n                            subsection = props.selectedMaterial.subtypeId\n                            break\n                        case 'ABRASIVO':\n                            subsection = 'abrasive'\n                            break\n                        default:\n                            subsection = 'others_ppcc'\n                    }\n                } else if (props.selectedMaterial.subtypeId === 'SOLERIA' || props.selectedMaterial.subtypeId === 'OPTIMMA') {\n                    section = 'productos_estandar'\n                    subsection = 'soleria_aplacado'\n                } else if (props.selectedMaterial.type === 'FREGADERO') {\n                    section = 'productos_estandar'\n                    subsection = 'fregadero'\n                } else if (props.selectedMaterial.subtypeId === 'LAVABO') {\n                    section = 'productos_estandar'\n                    subsection = 'lavabos'\n                } else if (props.selectedMaterial.subtypeId === 'PLATO DUCHA') {\n                    section = 'productos_estandar'\n                    subsection = 'platos_ducha'\n                } else  if (getUrlSection() === 'outlet') {\n                    section = 'outlet'\n                    subsection = props.selectedMaterial.brand\n                } else if (props.selectedMaterial.type === 'TABLA') {\n                    section = 'tablas'\n                    subsection = props.selectedMaterial.brand\n                }\n\n                setPageType('detalle_de_producto')\n                setPageSection(section.toLowerCase())\n                setPageSubsection(subsection.toLowerCase())\n                break\n            }\n\n            case 'area_personal': {\n                let section = getUrlAreaPersonalSection()\n\n                switch (section) {\n                    case 'configuration':\n                        setPageSubsection('configuracion')\n                        break\n                    /* case 'orders':\n                        setPageType('listado_de_pedido_v1')\n                        setPageSection('area_personal_v1')\n                        setPageSubsection('historial_pedidos_v1')\n                        break */\n                    /* case 'view-order':\n                        setPageType('detalle_de_pedido_v1')\n                        setPageSection('area_personal_v1')\n                        setPageSubsection('historial_pedidos_v1')\n                        break */\n                    case 'orders':\n                        setPageType('listado_de_pedido')\n                        setPageSubsection('historial_pedidos')\n                        break\n                    case 'view-order':\n                        setPageType('detalle_de_pedido')\n                        setPageSubsection('historial_pedidos')\n                        break\n                    case 'shipping-history':\n                        setPageType('listado_de_envios')\n                        setPageSubsection('historial_envios')\n                        break\n                    case 'view-shipping':\n                        setPageType('detalle_de_envios')\n                        setPageSubsection('historial_envios')\n                        break\n                    case 'pre-orders-cts':\n                        setPageSubsection('pre_order_cts')\n                        break\n                    case 'recurring-orders':\n                        setPageSubsection('volver_a_comprar')\n                        break\n                    case 'segmentation':\n                        setPageSubsection('segmentacion')\n                        break\n                    case 'products-favourite':\n                        setPageSubsection('productos_favoritos')\n                        break\n                    default:\n                        setPageType(null)\n                        setPageSection(null)\n                        setPageSubsection(null)\n                }\n                break\n            }\n\n            case 'carrito':\n                let section = getUrlSection()\n                switch (section) {\n                    case 'address':\n                        setPageSubsection('direccion_envio')\n                        break\n                    case 'thankyou':\n                        setPageSubsection('confirmacion_compra')\n                        break\n                    default:\n                        setPageSubsection('carrito')\n                }\n\n            default:\n                pageType = 'S/E'\n        }\n    }\n\n    useEffect(() => {\n        if (props.localizedUrl('ROUTE_PRODUCT_DETAIL') && !pageSection && !pageSubsection && props.selectedMaterial) {\n            setPageSections('detalle_de_producto')\n        }\n    }, [props.selectedMaterial && props.selectedMaterial.productId])\n\n    useEffect(() => {\n\n        if (pageType && pageSection && pageSubsection) {\n            // console.log('PAEGE VIEW pageType >', pageType)\n            // console.log('PAEGE VIEW pageSection >', pageSection)\n            // console.log('PAEGE VIEW pageSubsection >', pageSubsection)\n            // console.log('PAEGE VIEW ****************************************')\n\n            props.sendAnalytics(pageType, pageSection, pageSubsection)\n        }\n    }, [\n        pageType,\n        pageSection,\n        pageSubsection,\n        props.commonParams.userId,\n        props.commonParams.idCenter,\n        props.commonParams.idioma\n    ])\n\n    useEffect(() => {\n        if (props.registerAnalytics) {\n            setPageViewEvent()\n        }\n    }, [])\n\n    useEffect(() => {\n        if (props.registerAnalytics) {\n            setPageViewEvent()\n        }\n    }, [\n        props.location.pathname,\n        props.location.search,\n        props.commonParams.userId,\n        props.commonParams.idCenter,\n        props.commonParams.idioma,\n        props.isLogged\n    ])\n\n    return props.showErrorScreen ?\n        <Error404Screen />\n        :\n        <Route {...props} render={_props => <props.component {..._props} /> } />\n\n    return <Error404Screen />\n}\n\nconst getSku = (pathname) => {\n    const regex = /\\/([0-9]*)(\\/?|(\\/.*))?$/g\n    const type = regex.exec(pathname)\n    return type && type[1].toLowerCase()\n}\n\nconst mapStateToProps = (state, props) => {\n    const lastSelectedMaterial = getLastSelectedProduct(state)\n\n    return {\n        localizedUrl: (routeId) => getLocalizedUrl(state, props.intl, routeId),\n        selectedMaterial: lastSelectedMaterial ? lastSelectedMaterial : byProductId(state, getSku(props.location.pathname)),\n        isMktools: getIsMkToolsCenter(state),\n        isIkea: getIsIkeaCenter(state),\n        commonParams: getCommonParams(state),\n        isLogged: state.login.isLogged\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        sendAnalytics: (pageType, section, subsection) => dispatch({type: 'CHANGE_ANALYTICS_URL', pageType, section, subsection})\n    }\n}\n\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(PageViewRoute)\n    )\n)","import React, {Component} from \"react\";\nimport {langFromLocale} from \"../../../helpers\";\nimport { withRouter } from \"react-router-dom\";\nimport { cloneDeep } from \"lodash\";\nimport { getFormatConfigData, getCheckoutLineId, getConfigurablePlanPdfUrl } from '../utils'\n\nclass ConfigurableCutToSize extends Component {\n\n    constructor(props, context) {\n        super(props, context);\n\n        const lang = langFromLocale[this.props.intl.locale]\n        this.state = {\n            language: lang\n        }\n    }\n\n    componentDidMount() {\n        const cosConfigurable = document.querySelector('cos-configurable')\n        if (cosConfigurable) {\n            cosConfigurable.addEventListener('salida', (config) => {\n                this.handleSalidaEvent(config)\n            })\n        }\n        \n        this.props.setIsConfigurableBathEditScreen(true)\n    }\n    \n    componentWillUnmount() {\n        this.props.setIsConfigurableBathEditScreen(false)\n    }\n\n    handleSalidaEvent = (config) => {\n        const { refcode, configurablePlanAcceptanceList } = this.props\n\n        // Determine if the plan has been accepted\n        const isPlanAccepted = configurablePlanAcceptanceList\n                                && configurablePlanAcceptanceList[refcode]\n                                && configurablePlanAcceptanceList[refcode].isPlanAcceptanceChecked\n\n        // Check if the configuration has been modified\n        const isModified = this.isConfigModified(config)\n\n        if (isPlanAccepted && !isModified) {\n            // If the plan is accepted and not modified\n            if (refcode) {\n                // Editing: Use changeCartLineCutToSize when refcode is present (editing)\n                this.changeCartLineCutToSize(config)\n            } else {\n                // Creating: Use addToCart when refcode is null (creating)\n                this.addToCart(config.detail.quantity, config)\n            }\n        } else {\n            // If the conditions are not met, handle plan acceptance\n            this.handlePlanAcceptance(config)\n        }\n    }\n\n    isConfigModified = (config) => {\n        const { configurableInProgress, refcode, addConfigurablePlanAcceptanceChecked, addConfigurableModifiedList } = this.props\n\n        // Ensure that configurableInProgress and config.detail exist\n        const storeConfig = refcode && configurableInProgress[refcode] ? cloneDeep(configurableInProgress[refcode]) : null\n        const currentConfig = config && config.detail ? cloneDeep(config.detail) : null\n\n        // Exclude quantity and price from the comparison if the fields exist\n        if (storeConfig) {\n            if (storeConfig.price) delete storeConfig.price\n            if (storeConfig.quantity) delete storeConfig.quantity\n            if (storeConfig.configuration.quantity) delete storeConfig.configuration.quantity\n        }\n\n        if (currentConfig) {\n            if (currentConfig.price) delete currentConfig.price\n            if (currentConfig.quantity) delete currentConfig.quantity\n            if (currentConfig.configuration.quantity) delete currentConfig.configuration.quantity\n        }\n\n        const isModified = JSON.stringify(storeConfig) !== JSON.stringify(currentConfig)\n\n        // Update global state\n        if (refcode) {\n            addConfigurableModifiedList(refcode, isModified)\n            addConfigurablePlanAcceptanceChecked(refcode, !isModified)\n        }\n        \n        return isModified\n    }\n\n    changeCartLineCutToSize = (config) => {\n        this.props.changeCartLineCutToSize(this.getCheckoutLineIdForCurrentConfig(), this.getFormattedData(config))\n    }\n\n    getCheckoutLineIdForCurrentConfig = () => {\n        const { checkoutLines, refcode } = this.props\n\n        return getCheckoutLineId(checkoutLines, refcode)\n    }\n    \n    addToCart = (qty, ctsData) => {\n        this.props.addCartLine(qty, this.getFormattedData(ctsData))\n    }\n\n    handlePlanAcceptance = (config) => {\n        const { history, localizedUrl, model, type, fabricator } = this.props\n\n        this.props.addConfigurableInProgress(config.detail).then(() => {\n            const refcode = config.detail.reference\n\n            const routePath = localizedUrl('ROUTE_CONFIG_CUT_TO_SIZE_PLAN_ACCEPTANCE')\n                                .replace(':type', type)\n                                .replace(':model', model)\n                                .replace(':fabricator', fabricator)\n                                .replace(':refcode', refcode)\n\n            history.push(routePath)\n        })\n    }\n\n    getFormattedData = (config) => {\n        const { refcode, configurablePlanAcceptanceList, intl, units, configurableDrawingList } = this.props\n\n        const isPlanAccepted = configurablePlanAcceptanceList &&\n        configurablePlanAcceptanceList[refcode] &&\n        configurablePlanAcceptanceList[refcode].isPlanAcceptanceChecked\n\n        return getFormatConfigData(config.detail, isPlanAccepted, intl.locale, units, getConfigurablePlanPdfUrl(configurableDrawingList, refcode), refcode)\n    }\n\n    getCurrentConfigQuantity = () => {\n        const { refcode, configurableInProgress } = this.props\n        const currentConfig = refcode && configurableInProgress[refcode]\n\n        return currentConfig && parseInt(currentConfig.quantity)\n    }\n\n    getUserCurrency = () => {\n        const { priceListAtSelectedCenter } = this.props\n        const currency = priceListAtSelectedCenter && priceListAtSelectedCenter.length > 0 ? priceListAtSelectedCenter[0].currency : null\n\n        return currency\n    }\n\n    render() {\n        const { model, refcode, username, salesOrg, selectedCenter, type, intl } = this.props\n        const isQuickShip = this.props.fabricator === 'local'\n        const market = this.props.isUsaOrCanada ? 'USA' : 'HQ'\n\n        return (\n            <div>\n                <cos-configurable product={type}\n                                  model={model.toUpperCase()}\n                                  market={market}\n                                  apikey={process.env.REACT_APP_CONFIGURABLES_APIKEY}\n                                  callback=\"callback\"\n                                  reference={refcode}\n                                  lang={this.state.language}\n                                  //locale={this.props.locale}\n                                  locale={this.state.language}\n                                  currency={this.getUserCurrency()}\n                                  kunnr={username}\n                                  salesOrg={salesOrg}\n                                  werks={selectedCenter}\n                                  quantity={this.getCurrentConfigQuantity()}\n                                  quickship={isQuickShip}\n                >\n                </cos-configurable>\n            </div>\n        )\n    }\n}\n\nexport default withRouter(ConfigurableCutToSize)","import React from 'react'\nimport ConfigurableCutToSize from \"../components/cut-to-size/configurable-baths/ConfigurableCutToSize\";\nimport {injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport {addCartLineCutToSize, changeCartLineCutToSize} from \"../store/cart/actions\";\nimport { setIsConfigurableBathEditScreen } from '../store/ui/actions';\nimport {getCmOrInches, hasImperialUnits} from \"../helpers\";\nimport { getLocalizedUrl } from '../store/ui/reducers';\nimport { addConfigurableInProgress, addConfigurablePlanAcceptanceChecked, addConfigurableModifiedList } from '../store/cut-to-size/actions';\nimport { getConfigurableInProgress, getConfigurablePlanAcceptanceList, getConfigurableDrawingList } from '../store/cut-to-size/reducers'\nimport { getLines } from '../store/cart/reducers'\nimport { getUserName, getPriceListAtSelectedCenter } from '../store/login/reducers';\nimport {getSelectedCenter, getSalesOrg, isUsaOrCanada} from '../store/centers/reducers';\n\nconst ConfigCutToSizeScreen = props => <ConfigurableCutToSize {...props} />\n\nconst mapDispatchToProps = (dispatch, ownprops) => {\n    return {\n        addCartLine: (qty, cts) => dispatch(addCartLineCutToSize(qty, cts)),\n        setIsConfigurableBathEditScreen: isOrderHistoryScreen => {\n            dispatch(setIsConfigurableBathEditScreen(isOrderHistoryScreen))\n        },\n        addConfigurableInProgress: (config) => dispatch(addConfigurableInProgress(config)),\n        addConfigurablePlanAcceptanceChecked: (refcode, checked) => dispatch(addConfigurablePlanAcceptanceChecked(refcode, checked)),\n        changeCartLineCutToSize: (lineId, cutToSize) => dispatch(changeCartLineCutToSize(lineId, cutToSize)),\n        addConfigurableModifiedList: (refcode, isModified) => dispatch(addConfigurableModifiedList(refcode, isModified))\n    }\n}\n\nconst mapStateToProps = (state, ownprops) => {\n    return {\n        locale: hasImperialUnits(state) ? 'en-US' : 'es-ES',\n        model: ownprops.match.params.model,\n        refcode: ownprops.match.params.refcode,\n        type: ownprops.match.params.type,\n        fabricator: ownprops.match.params.fabricator,\n        units: getCmOrInches(state),\n        localizedUrl: routeId => getLocalizedUrl(state, ownprops.intl, routeId),\n        configurableInProgress: getConfigurableInProgress(state),\n        configurablePlanAcceptanceList: getConfigurablePlanAcceptanceList(state),\n        checkoutLines: getLines(state),\n        configurableDrawingList: getConfigurableDrawingList(state),\n        username: getUserName(state),\n        salesOrg: getSalesOrg(state),\n        selectedCenter: getSelectedCenter(state),\n        priceListAtSelectedCenter: getPriceListAtSelectedCenter(state),\n        isUsaOrCanada: isUsaOrCanada(state)\n    }\n}\n\nexport default injectIntl(\n    connect(mapStateToProps, mapDispatchToProps)(ConfigCutToSizeScreen)\n)\n","import React, { Component } from 'react'\nimport { withRouter } from 'react-router-dom'\nimport LocalizedLink from '../../global/LocalizedLink'\nimport { Document, Page, pdfjs } from 'react-pdf'\nimport confirm from '../../global/extendedConfirm'\nimport Translation from '../../global/Translation'\nimport { handlePlanPdfDownload, getFormatConfigData, getCheckoutLineId, getConfigurablePlanPdfUrl } from '../utils'\nimport Spinner from '../../global/Spinner'\n\nclass ConfigCutToSizePlanAcceptance extends Component {\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            numPages: null,\n            isPlanAcceptanceChecked: false,\n            isLeavingIntentionally: false,\n            configurableDrawingIsLoading: true\n        }\n\n        // Store intervalId to clear it later\n        this.intervalId = null\n    }\n\n    componentDidMount() {\n        this.props.setIsConfigurablePlanAcceptanceScreen(true)\n\n        // Set the worker from CDN. DO NOT DELETE THIS. Is required for react-pdf\n        //pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`\n\n        // Use the worker from own source files. The file is place in public folder\n        //pdfjs.GlobalWorkerOptions.workerSrc = '/pdf.worker.min.js'\n        pdfjs.GlobalWorkerOptions.workerSrc = `${process.env.PUBLIC_URL}/pdf.worker.min.js`\n\n        window.addEventListener('beforeunload', this.handleBeforeUnload)\n        this.unblock = this.props.history.block((location, action) => {\n            if (!this.state.isLeavingIntentionally && !this.state.isPlanAcceptanceChecked) {\n                this.handleNavigationAttempt(() => {\n                    this.setState({ isLeavingIntentionally: true }, () => {\n                        this.unblock() // Allow the navigation after confirmation\n                        this.props.history.push(location.pathname) // Proceed to the intended location\n                    })\n                })\n                return false // Prevent navigation until confirmed\n            }\n            return true // Allow navigation if already leaving intentionally or plan is checked\n        })\n\n        if (this.props.refcode) {\n            this.pollForDrawing(this.props.refcode)\n        }\n    }\n\n    pollForDrawing(refcode) {\n        this.setState({ configurableDrawingIsLoading: true })\n        \n        const maxAttempts = 5\n        let attemptCount = 0\n    \n        const intervalId = setInterval(() => {\n            attemptCount++\n    \n            this.props.fetchConfigurableDrawing(refcode)\n                .then((response) => {\n                    if (response.status === 200) {\n                        const { exists, documentUrl } = response.data\n    \n                        if (exists && documentUrl) {\n                            this.setState({ configurableDrawingIsLoading: false })\n                            clearInterval(intervalId)\n                        } else if (attemptCount >= maxAttempts) {\n                            // Stop polling after maxAttempts if no documentUrl is generated\n                            console.error('pollForDrawing -> Failed to generate URL after maximum attempts.')\n                            this.setState({ configurableDrawingIsLoading: false })\n                            clearInterval(intervalId)\n                        }\n                    } else {\n                        // If the response status is not 200, stop polling\n                        console.error('pollForDrawing -> Backend service is not available, stopping polling.');\n                        this.setState({ configurableDrawingIsLoading: false })\n                        clearInterval(intervalId)\n                    }\n                })\n                .catch((error) => {\n                    console.error('pollForDrawing -> Error fetching drawing:', error)\n                    this.setState({ configurableDrawingIsLoading: false })\n                    clearInterval(intervalId)\n                })\n    \n        }, 4000) // Poll every 4 seconds\n    }\n    \n    componentWillUnmount() {\n        this.props.setIsConfigurablePlanAcceptanceScreen(false)\n        \n        window.removeEventListener('beforeunload', this.handleBeforeUnload)\n\n        if (this.unblock) this.unblock()\n\n        // Clear the interval if it's still running\n        if (this.intervalId) {\n            clearInterval(this.intervalId)\n        }\n    }\n\n    changeCartLineCutToSize = (config) => {\n        this.props.changeCartLineCutToSize(this.getCheckoutLineIdForCurrentConfig(), this.getFormattedData(config))\n    }\n\n    getCheckoutLineIdForCurrentConfig = () => {\n        const { checkoutLines, refcode } = this.props\n\n        return getCheckoutLineId(checkoutLines, refcode)\n    }\n\n    handleBeforeUnload = (event) => {\n        const { isPlanAcceptanceChecked, isLeavingIntentionally } = this.state\n        \n        // If the user is not intentionally leaving and the plan is not accepted, show confirmation\n        if (!isLeavingIntentionally && !isPlanAcceptanceChecked) {\n            event.preventDefault()\n            event.returnValue = ''\n        }\n    }\n\n    handleNavigationAttempt = (onConfirm) => {\n        confirm(this.props.intl.formatMessage({ id: 'leave_page_plan_acceptance_confirmation_message' }), {\n            isV2: true,\n            advise: this.props.intl.formatMessage({ id: 'leave_page_plan_acceptance_advise_message' }),\n            textCancel: this.props.intl.formatMessage({ id: 'cancel' }),\n            textOk: this.props.intl.formatMessage({ id: 'leave_page_plan_acceptance_textok_message' })\n        }).then(\n            () => {\n                onConfirm()\n            },\n            () => {\n                return Promise.reject()\n            }\n        )\n    }\n\n    handleBackToEditClick = (event) => {\n        event.preventDefault()\n        const { location } = this.props\n\n        // Extract the parts of the current location's pathname\n        const currentPath = location.pathname\n        const updatedPath = currentPath.replace(\"/configurable-plan-acceptance\", \"/configurables\")\n\n        this.setState({ isLeavingIntentionally: true }, () => {\n            this.props.history.push(updatedPath)\n        })\n    }\n\n    onDocumentLoadSuccess = ({ numPages }) => {\n        this.setState({ numPages })\n    }\n\n    handlePlanAcceptanceCheckboxChange = () => {\n        this.setState(prevState => ({ isPlanAcceptanceChecked: !prevState.isPlanAcceptanceChecked }))\n    }\n\n    getFormattedData = config => {\n        const { isPlanAcceptanceChecked } = this.state\n        const { intl, units, refcode } = this.props\n\n        return getFormatConfigData(config, isPlanAcceptanceChecked, intl.locale, units, this.getPlanPdfUrl(), refcode)\n    }\n\n    handlePlanAcceptance = () => {\n        const { history, configurableInProgress, refcode, addCartLine, changeCartLineCutToSize, addConfigurablePlanAcceptanceChecked, localizedUrl, configurableModifiedList } = this.props\n        const { isPlanAcceptanceChecked } = this.state\n    \n        if (isPlanAcceptanceChecked) {\n            const currentConfig = configurableInProgress[refcode]\n            const isModified = configurableModifiedList[refcode] ? configurableModifiedList[refcode].isConfigurableModified : null\n\n            if (currentConfig) {\n                addConfigurablePlanAcceptanceChecked(refcode, true).then(() => {\n                    if (isModified === true) {\n                        // Update the existing cart line\n                        changeCartLineCutToSize(this.getCheckoutLineIdForCurrentConfig(), this.getFormattedData(currentConfig))\n                    } else {\n                        // Add new item to the cart\n                        addCartLine(currentConfig.quantity, this.getFormattedData(currentConfig))\n                    }\n\n                    const routePath = localizedUrl('ROUTE_CHECKOUT')\n                    history.push(routePath)\n\n                }).catch(error => {\n                    console.error('handlePlanAcceptance -> Failed to update the state', error)\n                })\n            }\n        }\n    }\n\n    getPlanPdfUrl = () => {\n        const { configurableDrawingList, refcode } = this.props\n        return getConfigurablePlanPdfUrl(configurableDrawingList, refcode)\n    }\n\n    onDownloadClick = () => {\n        const { model, refcode } = this.props\n        const url = this.getPreparedUrlForDownload()\n\n        handlePlanPdfDownload(url, model, refcode)\n    }\n\n    getPreparedUrlForDownload = () => {\n        if (this.getPlanPdfUrl()) {\n            return process.env.REACT_APP_API_HOST + '/helper/view-pdf-url/?url=' + encodeURIComponent(this.getPlanPdfUrl())\n        }\n\n        return null\n    }\n\n    render() {\n        const { model, refcode, fabricator, configurableDrawingList} = this.props\n        const { isPlanAcceptanceChecked, numPages, configurableDrawingIsLoading } = this.state\n\n        const checkbokAndButtonBlock = (\n            <div className=\"accept-plan-checkbox\">\n                <div className=\"checkbox-block\">\n                    <div>\n                        <input type=\"checkbox\" id=\"accept-checkbox\" checked={isPlanAcceptanceChecked} onChange={this.handlePlanAcceptanceCheckboxChange} />\n                    </div>\n                    <div>\n                        <label htmlFor=\"accept-checkbox\">\n                            <Translation id=\"config_plan_acceptance_agreement_with_drawing\" defaultMessage=\"I agree with the drawing and the information included in it for ordering the product.\" />\n                        </label>\n                    </div>\n                </div>\n                <div className=\"button-block\">\n                    <button onClick={this.handlePlanAcceptance} disabled={!isPlanAcceptanceChecked} className=\"accept-plan-button\">\n                        <Translation id=\"continue\" defaultMessage=\"Continue\" />\n                    </button>\n                </div>\n            </div>\n        )\n\n        return (\n            <div className=\"container config__plan__acceptance\">\n                <div className=\"config__plan__acceptance--back-btn\">\n                    <LocalizedLink\n                        routeId=\"ROUTE_CONFIG_CUT_TO_SIZE\" \n                        params={{ model: model, refcode: refcode, fabricator: fabricator }}\n                        onClick={(event) => this.handleBackToEditClick(event)}\n                    >\n                        <button>\n                            <i className=\"fas fa-chevron-left\"></i>\n                            <Translation id=\"back_to_edit\" defaultMessage=\"Back to edit\" />\n                        </button>\n                    </LocalizedLink>\n                </div>\n                <section className=\"config__plan__acceptance--content-container\">\n                    <div className=\"main-heading\">\n                        <h1><Translation id=\"config_plan_acceptance_review_and_accept_the_plan\" defaultMessage=\"Review and accept the plan\" /></h1>\n                    </div>\n                    <div className=\"pdf-text-content\">\n                        <div className=\"pdf-viewer\">\n                            {configurableDrawingIsLoading ? (\n                                <Spinner isLoading={true} innerCenter />\n                            ) : (\n                                <Document \n                                    file={this.getPreparedUrlForDownload()}\n                                    onLoadSuccess={this.onDocumentLoadSuccess}\n                                    className=\"config-plan-acceptance-document\"\n                                    loading={<Translation id=\"config_plan_acceptance_plan_display_is_being_generated\" defaultMessage=\"The plan display is being generated, this may take a few seconds.\" />}\n                                >\n                                    {Array.from(new Array(numPages), (el, index) => (\n                                        <Page key={`page_${index + 1}`} pageNumber={index + 1} />\n                                    ))}\n                                </Document>\n                            )}\n                        </div>\n                        <div className=\"text-checkbox\">\n                            <div>\n                                <p className=\"main-paragraph\">\n                                    <Translation id=\"config_plan_acceptance_review_the_document_containing_the_drawing\" defaultMessage=\"Please review the document containing the drawing and all the technical information of the product you are going to buy.\" />\n                                </p>\n\n                                <p className=\"second-paragraph\">\n                                    <Translation id=\"config_plan_acceptance_remember_the_acceptance_will_be_used_for_order\" defaultMessage=\"Remember that the acceptance of this plan implies the acceptance of the document and all the information contained in it and that it will be used for the realization of the order of the requested product.\" />\n                                </p>\n\n                                <p className=\"normal-paragraph\">\n                                    <Translation id=\"config_plan_acceptance_review_the_document_prior\" defaultMessage=\"It is important that you review the document prior to acceptance.\" />\n                                </p>\n                                {getConfigurablePlanPdfUrl(configurableDrawingList, refcode) && (\n                                    <React.Fragment>\n                                        <div className=\"downlow-plan-acceptance\">\n                                            <button onClick={this.onDownloadClick}>\n                                                <i className=\"fas fa-download\" />\n                                                <Translation id=\"download_map\" defaultMessage=\"Download map\" />\n                                            </button>\n                                        </div>\n                                        {checkbokAndButtonBlock}\n                                    </React.Fragment>\n                                )}\n                            </div>\n                        </div>\n                    </div>\n                </section>\n            </div>\n        )\n    }\n}\n\nexport default withRouter(ConfigCutToSizePlanAcceptance)\n","import React from 'react'\nimport {injectIntl, defineMessages} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport ConfigCutToSizePlanAcceptance from \"../components/cut-to-size/configurable-baths/ConfigCutToSizePlanAcceptance\";\nimport {addCartLineCutToSize, changeCartLineCutToSize} from \"../store/cart/actions\";\nimport { getConfigurableInProgress, getConfigurableModifiedList, getConfigurableDrawingList } from '../store/cut-to-size/reducers'\nimport { setIsConfigurablePlanAcceptanceScreen } from '../store/ui/actions';\nimport { addConfigurablePlanAcceptanceChecked, fetchConfigurableDrawing } from '../store/cut-to-size/actions';\nimport { getLocalizedUrl } from '../store/ui/reducers';\nimport {getCmOrInches} from \"../helpers\";\nimport { getLines } from '../store/cart/reducers'\n\nconst ConfigCutToSizePlanAcceptanceScreen = props => <ConfigCutToSizePlanAcceptance {...props} />\n\nconst mapDispatchToProps = (dispatch, ownprops) => {\n    return {\n        addCartLine: (qty, cts) => dispatch(addCartLineCutToSize(qty, cts)),\n        setIsConfigurablePlanAcceptanceScreen: isConfigurablePlanAcceptanceScreen => {\n            dispatch(setIsConfigurablePlanAcceptanceScreen(isConfigurablePlanAcceptanceScreen))\n        },\n        addConfigurablePlanAcceptanceChecked: (refcode, checked) => dispatch(addConfigurablePlanAcceptanceChecked(refcode, checked)),\n        changeCartLineCutToSize: (lineId, cutToSize) => dispatch(changeCartLineCutToSize(lineId, cutToSize)),\n        fetchConfigurableDrawing: (referenceCode) => dispatch(fetchConfigurableDrawing(referenceCode))\n    }\n}\nconst mapStateToProps = (state, ownprops) => {\n    return {\n        configurableInProgress: getConfigurableInProgress(state),\n        model: ownprops.match.params.model,\n        refcode: ownprops.match.params.refcode,\n        type: ownprops.match.params.type,\n        fabricator: ownprops.match.params.fabricator,\n        localizedUrl: (routeId) => getLocalizedUrl(state, ownprops.intl, routeId),\n        units: getCmOrInches(state),\n        checkoutLines: getLines(state),\n        configurableModifiedList: getConfigurableModifiedList(state),\n        configurableDrawingList: getConfigurableDrawingList(state)\n    }\n}\n\ndefineMessages({\n    leave_page_plan_acceptance_confirmation_message: {\n        id: 'leave_page_plan_acceptance_confirmation_message',\n        description: 'leave_page_plan_acceptance_confirmation_message',\n        defaultMessage: 'Are you sure you want to leave without accepting the plan?'\n    },\n    leave_page_plan_acceptance_advise_message: {\n        id: 'leave_page_plan_acceptance_advise_message',\n        description: 'leave_page_plan_acceptance_advise_message',\n        defaultMessage: 'By clicking on “Exit without accepting plan” you will lose the product configuration and will have to make a new configuration.'\n    },\n    leave_page_plan_acceptance_textok_message: {\n        id: 'leave_page_plan_acceptance_textok_message',\n        description: 'leave_page_plan_acceptance_textok_message',\n        defaultMessage: 'Exit without accepting plan'\n    }\n})\n\nexport default injectIntl(\n    connect(mapStateToProps, mapDispatchToProps)(ConfigCutToSizePlanAcceptanceScreen)\n)","import React, {useEffect} from 'react'\n\nimport { Route, Switch } from 'react-router-dom'\nimport { injectIntl, defineMessages } from 'react-intl'\nimport { withRouter } from 'react-router'\n\nimport CatalogScreen from './screens/CatalogScreen'\nimport CheckoutScreen from './screens/CheckoutScreen'\nimport CartSummaryScreen from './screens/CartSummaryScreen'\nimport ProductDetailScreen from './screens/ProductDetailScreen'\nimport ReservationsScreen from './screens/ReservationsScreen'\nimport KpisScreen from './screens/KpisScreen'\nimport KpiDetailScreen from './screens/KpiDetailScreen'\nimport HomeScreen from './screens/HomeScreen'\nimport LotsScreen from './screens/LotsScreen'\nimport ProfileScreen from './screens/ProfileScreen'\nimport LotImageViewerScreen from './screens/LotImageViewerScreen'\nimport PromotionsScreen from './screens/PromotionsScreen'\nimport LandingManagerScreen from './screens/LandingManagerScreen'\nimport LandingCreationScreen from './screens/LandingCreationScreen'\nimport LandingTemplatesScreen from './screens/LandingTemplatesScreen'\nimport PromotionAdminScreen from './screens/PromotionAdminScreen'\nimport LandingPromotionsScreen from './screens/LandingPromotionsScreen'\nimport SuggestionScreen from './screens/SuggestionScreen'\nimport ChangeLogScreen from './screens/ChangeLogScreen'\nimport MktAdminProductsScreen from './screens/MktAdminProductsScreen'\n\nimport Error404Screen from './screens/Error404Screen'\nimport MaintenanceScreen from './screens/MaintenanceScreen'\nimport { getIsLogged, getUserType, getIsMktoolsAdmin, getUserAuthorization, getIsMallAdmin, getIsMallPilotUser, getIsCampaignsPilotUser } from './store/login/reducers'\nimport { fetchCart } from './store/cart/actions'\nimport { getSelectedCenter } from './store/centers/reducers'\nimport { connect } from 'react-redux'\n\nimport Layout from './components/layout/Layout'\nimport CutToSizeScreen from './screens/CutToSizeScreen'\nimport CatalogLowesScreen from './screens/CatalogLowesScreen'\nimport CatalogLowesAdminScreen from './screens/CatalogLowesAdminScreen'\nimport LowesRegister from './components/catalog-lowes/LowesRegister'\nimport LowesNewUserRegister from './components/catalog-lowes/LowesNewUserRegister'\nimport RedirectSSOScreen from './screens/RedirectSSOScreen'\nimport { getMaintenanceMode } from './store/maintenance-mode/reducers'\nimport DeviatedAdminScreen from './screens/DeviatedAdminScreen'\nimport RedirectJTScreen from './screens/RedirectJTScreen'\nimport OldLoginScreen from './screens/OldLoginScreen'\nimport MktAdminColorsScreen from './screens/MktAdminColorsScreen'\nimport CookiePolicy from './components/global/CookiePolicy'\nimport PrivacyPolicy from './components/global/PrivacyPolicy'\nimport { loginRequired } from './store/login/actions'\nimport PromotionsListScreen from './screens/PromotionsListScreen'\nimport UnsubscribeScreen from './screens/UnsubscribeScreen'\nimport { getLanguage, getLocalizedUrl } from './store/ui/reducers'\nimport PageViewRouteComponent from \"./PageViewRouteComponent\";\nimport ConfigCutToSizeScreen from \"./screens/ConfigCutToSizeScreen\";\nimport ConfigCutToSizePlanAcceptanceScreen from \"./screens/ConfigCutToSizePlanAcceptanceScreen\";\n\n\ndefineMessages({\n    ROUTE_HOME: {\n        id: 'ROUTE_HOME',\n        description: 'ROUTE_HOME',\n        defaultMessage: 'ROUTE_HOME'\n    },\n    ROUTE_CATALOG: {\n        id: 'ROUTE_CATALOG',\n        description: 'ROUTE_HOME',\n        defaultMessage: 'ROUTE_HOME'\n    },\n    ROUTE_PRODUCT_DETAIL: {\n        id: 'ROUTE_PRODUCT_DETAIL',\n        description: 'ROUTE_PRODUCT_DETAIL',\n        defaultMessage: 'ROUTE_PRODUCT_DETAIL'\n    },\n    ROUTE_FLASH_PROMOTIONS: {\n        id: 'ROUTE_FLASH_PROMOTIONS',\n        description: 'ROUTE_FLASH_PROMOTIONS',\n        defaultMessage: 'ROUTE_FLASH_PROMOTIONS'\n    },\n    ROUTE_ADMIN_PROMOTIONS: {\n        id: 'ROUTE_ADMIN_PROMOTIONS',\n        description: 'ROUTE_ADMIN_PROMOTIONS',\n        defaultMessage: '/admin-promotions'\n    },\n    //TODO uncomment when landing set\n    // ROUTE_PROMOTIONS: {\n    //     id: 'ROUTE_LANDING_PROMOTIONS',\n    //     description: 'ROUTE_LANDING_PROMOTIONS',\n    //     defaultMessage: 'ROUTE_LANDING_PROMOTIONS'\n    // },\n    ROUTE_PROMOTIONS_LIST: {\n        id: 'ROUTE_PROMOTIONS_LIST',\n        description: 'ROUTE_PROMOTIONS_LIST',\n        defaultMessage: '/promotions-list'\n    },\n    ROUTE_CART_SUMMARY: {\n        id: 'ROUTE_CART_SUMMARY',\n        description: 'ROUTE_CART_SUMMARY',\n        defaultMessage: 'ROUTE_CART_SUMMARY'\n    },\n    ROUTE_CHECKOUT: {\n        id: 'ROUTE_CHECKOUT',\n        description: 'ROUTE_CHECKOUT',\n        defaultMessage: 'ROUTE_CHECKOUT'\n    },\n    ROUTE_CHANGELOG: {\n        id: 'ROUTE_CHANGELOG',\n        description: 'ROUTE_CHANGELOG',\n        defaultMessage: 'ROUTE_CHANGELOG'\n    },\n    ROUTE_RESERVATIONS: {\n        id: 'ROUTE_RESERVATIONS',\n        description: 'ROUTE_RESERVATIONS',\n        defaultMessage: 'ROUTE_RESERVATIONS'\n    },\n    ROUTE_KPI_DETAIL: {\n        id: 'ROUTE_KPI_DETAIL',\n        description: 'ROUTE_KPI_DETAIL',\n        defaultMessage: 'ROUTE_KPI_DETAIL'\n    },\n    ROUTE_KPIS: {\n        id: 'ROUTE_KPIS',\n        description: 'ROUTE_KPIS',\n        defaultMessage: 'ROUTE_KPIS'\n    },\n    ROUTE_LOT_IMAGE_VIEWER: {\n        id: 'ROUTE_LOT_IMAGE_VIEWER',\n        description: 'ROUTE_LOT_IMAGE_VIEWER',\n        defaultMessage: 'ROUTE_LOT_IMAGE_VIEWER'\n    },\n    ROUTE_LOTS: {\n        id: 'ROUTE_LOTS',\n        description: 'ROUTE_LOTS',\n        defaultMessage: 'ROUTE_LOTS'\n    },\n    ROUTE_PROFILE: {\n        id: 'ROUTE_PROFILE',\n        description: 'ROUTE_PROFILE',\n        defaultMessage: 'ROUTE_PROFILE'\n    },\n    ROUTE_CUT_TO_SIZE: {\n        id: 'ROUTE_CUT_TO_SIZE',\n        description: 'ROUTE_CUT_TO_SIZE',\n        defaultMessage: 'ROUTE_CUT_TO_SIZE'\n    },\n    ROUTE_CONFIG_CUT_TO_SIZE: {\n        id: 'ROUTE_CONFIG_CUT_TO_SIZE',\n        description: 'ROUTE_CONFIG_CUT_TO_SIZE',\n        defaultMessage: '/configurables/:type/:model/:fabricator/:refcode?'\n    },\n    ROUTE_CONFIG_CUT_TO_SIZE_PLAN_ACCEPTANCE: {\n        id: 'ROUTE_CONFIG_CUT_TO_SIZE_PLAN_ACCEPTANCE',\n        description: 'ROUTE_CONFIG_CUT_TO_SIZE_PLAN_ACCEPTANCE',\n        defaultMessage: '/configurable-plan-acceptance/:type/:model/:fabricator/:refcode'\n    },\n    ROUTE_SUGGESTIONS: {\n        id: 'ROUTE_SUGGESTIONS',\n        description: 'ROUTE_SUGGESTIONS',\n        defaultMessage: 'ROUTE_SUGGESTIONS'\n    },\n    ROUTE_CATALOG_LOWES: {\n        id: 'ROUTE_CATALOG_LOWES',\n        description: 'ROUTE_CATALOG_LOWES',\n        defaultMessage: 'ROUTE_CATALOG_LOWES'\n    },\n    ROUTE_CATALOG_LOWES_SHOP: {\n        id: 'ROUTE_CATALOG_LOWES_SHOP',\n        description: 'ROUTE_CATALOG_LOWES_SHOP',\n        defaultMessage: 'ROUTE_CATALOG_LOWES_SHOP'\n    },\n    ROUTE_CATALOG_LOWES_ADMIN: {\n        id: 'ROUTE_CATALOG_LOWES_ADMIN',\n        description: 'ROUTE_CATALOG_LOWES_ADMIN',\n        defaultMessage: 'ROUTE_CATALOG_LOWES_ADMIN'\n    },\n    ROUTE_LOWES_REGISTER: {\n        id: 'ROUTE_LOWES_REGISTER',\n        description: 'ROUTE_LOWES_REGISTER',\n        defaultMessage: 'ROUTE_LOWES_REGISTER'\n    },\n    ROUTE_LOWES_NEW_USER_REGISTER: {\n        id: 'ROUTE_LOWES_NEW_USER_REGISTER',\n        description: 'ROUTE_LOWES_NEW_USER_REGISTER',\n        defaultMessage: '/lowes-new-user'\n    },\n    ROUTE_MKT_ADMIN_PRODUCTS: {\n        id: 'ROUTE_MKT_ADMIN_PRODUCTS',\n        description: 'ROUTE_MKT_ADMIN_PRODUCTS',\n        defaultMessage: '/mkt-admin-products'\n    },\n    ROUTE_MKT_ADMIN_COLORS: {\n        id: 'ROUTE_MKT_ADMIN_COLORS',\n        description: 'ROUTE_MKT_ADMIN_COLORS',\n        defaultMessage: '/mkt-admin-colors'\n    },\n    ROUTE_DEVIATED_ADMIN_PRODUCTS: {\n        id: 'ROUTE_DEVIATED_ADMIN',\n        description: 'ROUTE_DEVIATED_ADMIN',\n        defaultMessage: '/deviated-admin'\n    },\n    ROUTE_COOKIES: {\n        id: 'ROUTE_COOKIES',\n        description: 'ROUTE_COOKIES',\n        defaultMessage: '/cookies-policy'\n    },\n    ROUTE_PRIVACY: {\n        id: 'ROUTE_PRIVACY',\n        description: 'ROUTE_PRIVACY',\n        defaultMessage: '/privacy-policy'\n    },\n    ROUTE_LANDING_MNGR: {\n        id: 'ROUTE_LANDING_MNGR',\n        description: 'ROUTE_PRIVACY',\n        defaultMessage: '/privacy-policy'\n    },\n    ROUTE_LANDING_CREATION: {\n        id: 'ROUTE_LANDING_CREATION',\n        description: 'ROUTE_PRIVACY',\n        defaultMessage: '/privacy-policy'\n    },\n    ROUTE_LANDING_MANAGER: {\n        id: 'ROUTE_LANDING_MANAGER',\n        description: 'ROUTE_PRIVACY',\n        defaultMessage: '/privacy-policy'\n    },\n    ROUTE_LANDING_MANAGER_DETAIL: {\n        id: 'ROUTE_LANDING_MANAGER_DETAIL',\n        description: 'ROUTE_PRIVACY',\n        defaultMessage: '/privacy-policy'\n    },\n    ROUTE_PROMOTION_LANDING: {\n        id: 'ROUTE_PROMOTION_LANDING',\n        description: 'ROUTE_PROMOTION_LANDING',\n        defaultMessage: '/landing/:promotionId?'\n    },\n    ROUTE_UNSUBSCRIBE: {\n        id: 'ROUTE_UNSUBSCRIBE',\n        description: 'ROUTE_UNSUBSCRIBE',\n        defaultMessage: '/unsubscribe/:tokenOnlyLogin'\n    },\n    ROUTE_OLD_LOGIN: {\n        id: 'ROUTE_OLD_LOGIN',\n        description: 'ROUTE_OLD_LOGIN',\n        defaultMessage: '/shops-login'\n    },\n    ROUTE_REDIRECT_JT: {\n        id: 'ROUTE_REDIRECT_JT',\n        description: 'ROUTE_REDIRECT_JT',\n        defaultMessage: '/redirect-jt'\n    },\n    ROUTE_SHIPPING_DETAILS: {\n        id: 'ROUTE_SHIPPING_DETAILS',\n        description: 'ROUTE_SHIPPING_DETAILS',\n        defaultMessage: 'ROUTE_SHIPPING_DETAILS'\n    },\n    ROUTE_ORDER_DETAILS: {\n        id: 'ROUTE_ORDER_DETAILS',\n        description: 'ROUTE_ORDER_DETAILS',\n        defaultMessage: 'ROUTE_ORDER_DETAILS'\n    }\n})\n\n// class PrivateRoute extends React.Component {\n//     componentDidMount() {\n//         if (!this.props.isLogged) {\n//             this.props.loginRequired()\n//         }\n//     }\n//     render() {\n//         let { component: Component, ...rest } = this.props\n//         return <PageViewRouteComponent {...rest} render={props => (rest.isLogged ? <Component {...props} /> : <Error404Screen />)}></PageViewRouteComponent>\n//     }\n// }\n\n\nconst PrivateRoute = (props) => {\n    useEffect(() => {\n        if (!props.isLogged) {\n            props.loginRequired()\n        }\n    }, [])\n    return <PageViewRouteComponent {...props} showErrorScreen={!props.isLogged} />\n}\n\nconst AdminRoute = ({ component: Component, ...rest }) => (\n    <Route {...rest} render={props => (rest.isLogged && rest.userType === 'ADMIN' ? <Component {...props} /> : <Error404Screen />)} />\n)\nconst MktoolsAdminRoute = ({ component: Component, ...rest }) => (\n    <Route {...rest} render={props => (rest.isLogged && rest.userType === 'ADMIN' && rest.isMktoolsAdmin ? <Component {...props} /> : <Error404Screen />)} />\n)\nconst DeviatedAdminRoute = ({ component: Component, ...rest }) => (\n    <Route {...rest} render={props => (rest.isLogged && rest.userType === 'ADMIN' ? <Component {...props} /> : <Error404Screen />)} />\n)\n\n// const MallRoute = ({ component: Component, ...rest }) => (\n//     <Route {...rest} render={props => (rest.isMallPilotUser || rest.isMallAdmin ? <Component {...props} /> : <Error404Screen />)} />\n// )\nconst MallRoute = (props) => (\n    <PageViewRouteComponent {...props} showErrorScreen={!props.isMallPilotUser && !props.isMallAdmin} />\n)\n\nconst MallAdminRoute = ({ component: Component, ...rest }) => (\n    <Route {...rest} render={props => (rest.isLogged && rest.isUserMallAuthorized && rest.isMallAdmin ? <Component {...props} /> : <Error404Screen />)} />\n)\nconst CampaignAdminRoute = ({ component: Component, ...rest }) => (\n    <Route {...rest} render={props => (rest.isLogged && rest.isCampaignAdmin ? <Component {...props} /> : <Error404Screen />)} />\n)\n\nconst mapStateToProps = (state, props) => {\n    return {\n        isLogged: getIsLogged(state),\n        isUserMallAuthorized: getUserAuthorization(state),\n        isMallAdmin: getIsMallAdmin(state),\n        userType: getUserType(state),\n        centerId: getSelectedCenter(state),\n        isMktoolsAdmin: getIsMktoolsAdmin(state),\n        isMallPilotUser: getIsMallPilotUser(state),\n        maintenanceMode: getMaintenanceMode(state),\n        isCampaignAdmin: getIsCampaignsPilotUser(state),\n        locale: getLanguage(state),\n        localizedUrl: (routeId) => getLocalizedUrl(state, props.intl, routeId)\n    }\n}\n\nconst mapDispatchToProps = dispatch => {\n    return {\n        fetchCart: centerId => {\n            dispatch(fetchCart(centerId))\n        },\n        loginRequired: () => {\n            dispatch(loginRequired())\n        }\n    }\n}\n\nclass Routes extends React.Component {\n    constructor(props) {\n        super(props)\n\n        document.addEventListener('visibilitychange', event => {\n            if (document.visibilityState == 'visible') {\n                props.fetchCart(this.props.centerId)\n            } else {\n            }\n        })\n    }\n\n    componentDidUpdate(prevProps) {\n        const regex = /(\\/v2\\/)|(\\/v2$)/\n        if (this.props.location && this.props.location.pathname && this.props.location.pathname.match(regex)) {\n            const oldPathname = this.props.location.pathname\n            this.props.location.pathname = this.props.location.pathname.replace(regex, '/')\n            if (oldPathname !== this.props.location.pathname) this.props.history.push(this.props.location)\n        }\n        if (this.props.location !== prevProps.location) {\n\n            window.scrollTo(0, 0)\n        }\n    }\n\n    getRoute(routeId) {\n        return this.props.localizedUrl(routeId)\n    }\n\n    render() {\n        const { intl, maintenanceMode } = this.props\n        //During v1+v2 you need to use getRoute or the route will not work on both versions\n        return (\n            <Layout>\n                <Switch>\n                    {maintenanceMode ? <Route component={MaintenanceScreen} /> : null}\n                    <PageViewRouteComponent exact path={this.getRoute('ROUTE_HOME')} component={HomeScreen} registerAnalytics={true}/>\n                    <Route path={'/redirect-sso'} component={RedirectSSOScreen} />\n                    <Route path={this.getRoute('ROUTE_REDIRECT_JT')} component={RedirectJTScreen} />\n                    <Route path={this.getRoute('ROUTE_OLD_LOGIN')} component={OldLoginScreen} />\n\n                    <PageViewRouteComponent path={this.getRoute('ROUTE_COOKIES')} component={CookiePolicy} registerAnalytics={true}/>\n                    <PageViewRouteComponent path={this.getRoute('ROUTE_PRIVACY')} component={PrivacyPolicy} registerAnalytics={true}/>\n\n                    <PageViewRouteComponent path={this.getRoute('ROUTE_CATALOG')} component={CatalogScreen} registerAnalytics={true}/>\n                    {/* <Route path={this.getRoute('ROUTE_PROMOTIONS')} component={PromotionsScreen} /> */}\n                    <MallAdminRoute {...this.props} path={this.getRoute('ROUTE_LANDING_MANAGER')} component={LandingManagerScreen} />\n                    <MallAdminRoute {...this.props} path={this.getRoute('ROUTE_LANDING_MANAGER_DETAIL')} component={LandingCreationScreen} />\n                    <MallRoute {...this.props} path={this.getRoute('ROUTE_LANDING_TEMPLATE')} component={LandingTemplatesScreen} registerAnalytics={true}/>\n                    <Route path={this.getRoute('ROUTE_FLASH_PROMOTIONS')} component={PromotionsScreen} />\n                    {/*TODO: intl to landing*/}\n                    <PageViewRouteComponent path={this.getRoute('ROUTE_PROMOTION_LANDING')} component={LandingPromotionsScreen} registerAnalytics={true}/>\n                    <CampaignAdminRoute {...this.props} path={this.getRoute('ROUTE_PROMOTIONS_LIST')} component={PromotionsListScreen} />\n                    <CampaignAdminRoute {...this.props} path={this.getRoute('ROUTE_ADMIN_PROMOTIONS')} component={PromotionAdminScreen} />\n                    <AdminRoute {...this.props} path={this.getRoute('ROUTE_CHANGELOG')} component={ChangeLogScreen} />\n                    <PrivateRoute {...this.props} path={this.getRoute('ROUTE_SUGGESTIONS')} component={SuggestionScreen} />\n                    <PrivateRoute {...this.props} path={this.getRoute('ROUTE_CART_SUMMARY')} component={CartSummaryScreen} />\n                    <PrivateRoute {...this.props} path={this.getRoute('ROUTE_CHECKOUT')} component={CheckoutScreen} registerAnalytics={true}/>\n                    <PrivateRoute {...this.props} exact path={this.getRoute('ROUTE_RESERVATIONS')} component={ReservationsScreen} />\n                    <PrivateRoute {...this.props} exact path={this.getRoute('ROUTE_KPI_DETAIL')} component={KpiDetailScreen} intl={intl} />\n                    <AdminRoute {...this.props} path={this.getRoute('ROUTE_KPIS')} component={KpisScreen} />\n                    <PageViewRouteComponent {...this.props} exact path={this.getRoute('ROUTE_LOT_IMAGE_VIEWER')} component={LotImageViewerScreen} registerAnalytics={true}/>\n                    <PrivateRoute {...this.props} path={this.getRoute('ROUTE_LOTS')} component={LotsScreen} registerAnalytics={true}/>\n                    <PrivateRoute {...this.props} path={this.getRoute('ROUTE_PROFILE')} component={ProfileScreen} registerAnalytics={true}/>\n\n                    <PrivateRoute {...this.props} path={this.getRoute('ROUTE_CUT_TO_SIZE')} component={CutToSizeScreen} registerAnalytics={true}/>\n                    <PrivateRoute {...this.props} path={this.getRoute('ROUTE_CONFIG_CUT_TO_SIZE')} component={ConfigCutToSizeScreen}/>\n                    <PrivateRoute {...this.props} path={this.getRoute('ROUTE_CONFIG_CUT_TO_SIZE_PLAN_ACCEPTANCE')} component={ConfigCutToSizePlanAcceptanceScreen}/>\n\n                    <PrivateRoute {...this.props} path={this.getRoute('ROUTE_CATALOG_LOWES')} component={CatalogLowesScreen} />\n                    <AdminRoute {...this.props} path={this.getRoute('ROUTE_CATALOG_LOWES_ADMIN')} component={CatalogLowesAdminScreen} />\n                    {/* <Route exact path={intl.formatMessage({ id: 'ROUTE_PRODUCT_DETAIL' })} component={ProductDetailScreen} /> */}\n                    <PageViewRouteComponent exact path={this.getRoute('ROUTE_PRODUCT_DETAIL')} component={ProductDetailScreen} registerAnalytics={true}/>\n                    <Route {...this.props} path={this.getRoute('ROUTE_LOWES_REGISTER')} component={LowesRegister} />\n                    <Route {...this.props} path={this.getRoute('ROUTE_LOWES_NEW_USER_REGISTER')} component={LowesNewUserRegister} />\n                    <MktoolsAdminRoute {...this.props} path={this.getRoute('ROUTE_MKT_ADMIN_PRODUCTS')} component={MktAdminProductsScreen} />\n                    <MktoolsAdminRoute {...this.props} path={this.getRoute('ROUTE_MKT_ADMIN_COLORS')} component={MktAdminColorsScreen} />\n                    <DeviatedAdminRoute {...this.props} path={this.getRoute('ROUTE_DEVIATED_ADMIN')} component={DeviatedAdminScreen} />\n                    <Route {...this.props} path={this.getRoute('ROUTE_UNSUBSCRIBE')} component={UnsubscribeScreen} />\n                    <Route component={Error404Screen} />\n                </Switch>\n            </Layout>\n        )\n    }\n}\n\nexport default withRouter(\n    injectIntl(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(Routes)\n    )\n)\n","import React from 'react'\n\nimport { connect } from 'react-redux'\nimport { withMsal } from '@azure/msal-react'\n\nimport { addLocaleData } from 'react-intl'\nimport { IntlProvider } from 'react-intl'\nimport { Route, Switch } from 'react-router-dom'\nimport enMessages from './locales/enMessages.json'\nimport enLocale from 'react-intl/locale-data/en'\nimport esMessages from './locales/esMessages.json'\nimport esLocale from 'react-intl/locale-data/es'\nimport deMessages from './locales/deMessages.json'\nimport deLocale from 'react-intl/locale-data/de'\nimport daMessages from './locales/daMessages.json'\nimport daLocale from 'react-intl/locale-data/da'\nimport enUsMessages from './locales/en-usMessages.json'\nimport enUsLocale from 'react-intl/locale-data/en'\nimport fiMessages from './locales/fiMessages.json'\nimport fiLocale from 'react-intl/locale-data/fi'\nimport enCaMessages from './locales/en-caMessages.json'\nimport frCaMessages from './locales/fr-caMessages.json'\nimport frMessages from './locales/frMessages.json'\nimport frLocale from 'react-intl/locale-data/fr'\nimport itMessages from './locales/itMessages.json'\nimport itLocale from 'react-intl/locale-data/it'\nimport jaMessages from './locales/jaMessages.json'\nimport jaLocale from 'react-intl/locale-data/ja'\nimport nlMessages from './locales/nlMessages.json'\nimport nlLocale from 'react-intl/locale-data/nl'\nimport noMessages from './locales/noMessages.json'\nimport noLocale from 'react-intl/locale-data/no'\nimport plMessages from './locales/plMessages.json'\nimport plLocale from 'react-intl/locale-data/pl'\nimport ptMessages from './locales/ptMessages.json'\nimport ptLocale from 'react-intl/locale-data/pt'\nimport svMessages from './locales/svMessages.json'\nimport svLocale from 'react-intl/locale-data/sv'\nimport trMessages from './locales/trMessages.json'\nimport trLocale from 'react-intl/locale-data/tr'\nimport heMessages from './locales/heMessages.json'\nimport heLocale from 'react-intl/locale-data/he'\n\nimport moment from 'moment'\nimport Routes from '../routes'\nimport { askLocation } from '../store/ui/actions'\nimport { withRouter } from 'react-router-dom'\nimport { getLanguage, getLanguageDir } from '../store/ui/reducers.js'\nimport Spinner from '../components/global/Spinner.js'\nimport { getIsLogged } from '../store/login/reducers.js'\nimport { fetchProfileConfiguration, fetchPromotionConfiguration } from '../store/profile-configuration/actions.js'\nimport { hotjar } from 'react-hotjar'\nimport { getCallbackCenter, getLoginCallback } from '../store/login/reducers'\nimport { messages } from './messages'\n\n// Kendo internationalization\nimport { IntlProvider as KendoIntlProvider, load, loadMessages, LocalizationProvider } from '@progress/kendo-react-intl'\nimport likelySubtags from 'cldr-core/supplemental/likelySubtags.json'\nimport currencyData from 'cldr-core/supplemental/currencyData.json'\nimport weekData from 'cldr-core/supplemental/weekData.json'\nimport enCaGregorian from 'cldr-dates-full/main/en/ca-gregorian.json'\nimport enDateFields from 'cldr-dates-full/main/en/dateFields.json'\nimport deCaGregorian from 'cldr-dates-full/main/de/ca-gregorian.json'\nimport deDateFields from 'cldr-dates-full/main/de/dateFields.json'\nimport esCaGregorian from 'cldr-dates-full/main/es/ca-gregorian.json'\nimport esDateFields from 'cldr-dates-full/main/es/dateFields.json'\nimport enCACaGregorian from 'cldr-dates-full/main/en-CA/ca-gregorian.json'\nimport enCADateFields from 'cldr-dates-full/main/en-CA/dateFields.json'\nimport enUSCaGregorian from 'cldr-dates-full/main/en-US-POSIX/ca-gregorian.json'\nimport enUSDateFields from 'cldr-dates-full/main/en-US-POSIX/dateFields.json'\nimport daCaGregorian from 'cldr-dates-full/main/da/ca-gregorian.json'\nimport daDateFields from 'cldr-dates-full/main/da/dateFields.json'\nimport fiCaGregorian from 'cldr-dates-full/main/fi/ca-gregorian.json'\nimport fiDateFields from 'cldr-dates-full/main/fi/dateFields.json'\nimport frCaGregorian from 'cldr-dates-full/main/fr/ca-gregorian.json'\nimport frDateFields from 'cldr-dates-full/main/fr/dateFields.json'\nimport frCACaGregorian from 'cldr-dates-full/main/fr-CA/ca-gregorian.json'\nimport frCADateFields from 'cldr-dates-full/main/fr-CA/dateFields.json'\nimport heCaGregorian from 'cldr-dates-full/main/he/ca-gregorian.json'\nimport heDateFields from 'cldr-dates-full/main/he/dateFields.json'\nimport itCaGregorian from 'cldr-dates-full/main/it/ca-gregorian.json'\nimport itDateFields from 'cldr-dates-full/main/it/dateFields.json'\nimport jaCaGregorian from 'cldr-dates-full/main/ja/ca-gregorian.json'\nimport jaDateFields from 'cldr-dates-full/main/ja/dateFields.json'\nimport nlCaGregorian from 'cldr-dates-full/main/nl/ca-gregorian.json'\nimport nlDateFields from 'cldr-dates-full/main/nl/dateFields.json'\nimport noCaGregorian from 'cldr-dates-full/main/nn/ca-gregorian.json'\nimport noDateFields from 'cldr-dates-full/main/nn/dateFields.json'\nimport plCaGregorian from 'cldr-dates-full/main/pl/ca-gregorian.json'\nimport plDateFields from 'cldr-dates-full/main/pl/dateFields.json'\nimport ptCaGregorian from 'cldr-dates-full/main/pt/ca-gregorian.json'\nimport ptDateFields from 'cldr-dates-full/main/pt/dateFields.json'\nimport svCaGregorian from 'cldr-dates-full/main/sv/ca-gregorian.json'\nimport svDateFields from 'cldr-dates-full/main/sv/dateFields.json'\nimport trCaGregorian from 'cldr-dates-full/main/tr/ca-gregorian.json'\nimport trDateFields from 'cldr-dates-full/main/tr/dateFields.json'\n\n//Moment js locale\nimport 'moment/locale/es'\nimport 'moment/locale/it'\nimport 'moment/locale/he'\nimport 'moment/locale/tr'\nimport 'moment/locale/fi'\nimport 'moment/locale/fr-ca'\nimport 'moment/locale/ja'\nimport 'moment/locale/nb'\nimport 'moment/locale/pl'\nimport 'moment/locale/en-ca'\nimport 'moment/locale/de'\nimport 'moment/locale/fr'\nimport 'moment/locale/da'\nimport 'moment/locale/pt'\nimport 'moment/locale/es'\nimport 'moment/locale/sv'\nimport 'moment/locale/nl'\n\naddLocaleData([\n    ...enLocale,\n    ...esLocale,\n    ...deLocale,\n    ...fiLocale,\n    ...frLocale,\n    ...heLocale,\n    ...itLocale,\n    ...jaLocale,\n    ...nlLocale,\n    ...noLocale,\n    ...plLocale,\n    ...ptLocale,\n    ...svLocale,\n    ...trLocale,\n    ...enUsLocale,\n    ...daLocale\n])\n\nconst Error404 = () => <h1>404</h1>\nconst mapStateToProps = (state,{match}) => {\n    return {\n        locale: getLanguage(state),\n        dir: getLanguageDir(state),\n        isLogged: getIsLogged(state),\n        callback: getLoginCallback(state),\n        callbackCenter: getCallbackCenter(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        askLocation: (locale, route) => {\n            return dispatch(askLocation(locale, route))\n        },\n        fetchProfileConfiguration: () => {\n            return dispatch(fetchProfileConfiguration())\n        },\n        fetchPromotionConfiguration: () => {\n            return dispatch(fetchPromotionConfiguration())\n        },\n        callMountApp: () => dispatch({type:'MOUNT_APP'})\n    }\n}\n\nconst parseLangToCldr = lang => {\n    if (lang === 'no') {\n        return 'nn'\n    } else if (lang === 'en-ca') {\n        return 'en-CA'\n    } else if (lang === 'fr-ca') {\n        return 'fr-CA'\n    }\n\n    return lang\n}\n\nloadMessages(daMessages, 'da')\nloadMessages(deMessages, 'de')\nloadMessages(enCaMessages, 'en-CA')\nloadMessages(enUsMessages, 'en-us')\nloadMessages(enMessages, 'en')\nloadMessages(esMessages, 'es')\nloadMessages(fiMessages, 'fi')\nloadMessages(frCaMessages, 'fr-CA')\nloadMessages(frMessages, 'fr')\nloadMessages(heMessages, 'he')\nloadMessages(itMessages, 'it')\nloadMessages(jaMessages, 'ja')\nloadMessages(nlMessages, 'nl')\nloadMessages(noMessages, 'nn')\nloadMessages(plMessages, 'pl')\nloadMessages(ptMessages, 'pt')\nloadMessages(svMessages, 'sv')\nloadMessages(trMessages, 'tr')\n\nclass MyIntlProvider extends React.Component {\n\n    constructor(props) {\n        super(props)\n\n        this.state = {\n            messagesLoaded: false\n        }\n\n        this.props.callMountApp();\n\n\n\n\n        this.html = window.document.documentElement\n\n        if (this.props.isLogged) {\n            //TODO: i hate this fucking line\n            // this.props.fetchProfileConfiguration().then(() => {\n                this.props.askLocation(this.props.match.params.lang, this.props.location.pathname)\n            // })\n            this.props.fetchPromotionConfiguration()\n        } else {\n            this.props.askLocation(this.props.match.params.lang, this.props.location.pathname)\n        }\n        //1329517\n        hotjar.initialize(1069993, 6)\n\n        load(\n            likelySubtags,\n            currencyData,\n            weekData,\n            enCaGregorian,\n            enDateFields,\n            deCaGregorian,\n            deDateFields,\n            esCaGregorian,\n            esDateFields,\n            enCACaGregorian,\n            enCADateFields,\n            enUSCaGregorian,\n            enUSDateFields,\n            daCaGregorian,\n            daDateFields,\n            fiCaGregorian,\n            fiDateFields,\n            frCaGregorian,\n            frDateFields,\n            frCACaGregorian,\n            frCADateFields,\n            heCaGregorian,\n            heDateFields,\n            itCaGregorian,\n            itDateFields,\n            jaCaGregorian,\n            jaDateFields,\n            nlCaGregorian,\n            nlDateFields,\n            noCaGregorian,\n            noDateFields,\n            plCaGregorian,\n            plDateFields,\n            ptCaGregorian,\n            ptDateFields,\n            svCaGregorian,\n            svDateFields,\n            trCaGregorian,\n            trDateFields\n        )\n    }\n\n\n\n    render() {\n        if (this.props.locale === null) return <Spinner isLoading={true} />\n        if (this.props.locale === 'no') moment.locale('nb')\n        else moment.locale(this.props.locale)\n        //set language at html tag\n        this.html.lang = this.props.locale\n        this.html.dir = this.props.dir ? this.props.dir : 'ltr'\n        return (\n            <div>\n                <LocalizationProvider language={parseLangToCldr(this.props.locale)}>\n                    <KendoIntlProvider locale={parseLangToCldr(this.props.locale)}>\n                        <IntlProvider locale={this.props.locale} messages={messages[this.props.locale]} key={this.props.locale}>\n                            <Switch>\n                                <Route path={'/'} component={Routes} />\n                            </Switch>\n                        </IntlProvider>\n                    </KendoIntlProvider>\n                </LocalizationProvider>\n            </div>\n        )\n    }\n}\n\nMyIntlProvider = withMsal(\n    withRouter(\n        connect(\n            mapStateToProps,\n            mapDispatchToProps\n        )(MyIntlProvider)\n    )\n)\n\nconst IntlRoute = () => {\n    return (\n        <div>\n            <Switch>\n                <Route path=\"/:lang(es|en|de|da|fi|he|en-CA|fr-CA|fr|it|ja|nl|no|pt|pl|sv|tr)?\" component={MyIntlProvider} />\n                <Route component={Error404} />\n            </Switch>\n        </div>\n    )\n}\n\nexport default IntlRoute\n","import 'babel-polyfill'\nimport React from 'react'\n\nimport ReactDOM from 'react-dom'\nimport { Provider } from 'react-redux'\nimport 'bootstrap-v4-rtl/dist/css/bootstrap.min.css'\nimport 'bootstrap-v4-rtl/dist/css/bootstrap-rtl.min.css'\nimport 'react-table/react-table.css'\nimport './assets/local-flag-icon-css/css/flag-icon.css'\nimport 'slick-carousel/slick/slick.css'\nimport 'slick-carousel/slick/slick-theme.css'\nimport './assets/scss/app.scss'\nimport 'react-resizable/css/styles.css'\nimport 'react-grid-layout/css/styles.css'\nimport { ConnectedRouter, connectRouter } from 'connected-react-router'\nimport { LOCATION_CHANGE, routerMiddleware } from 'react-router-redux'\nimport { applyMiddleware, combineReducers, createStore } from 'redux'\nimport { createLogger } from 'redux-logger'\nimport thunk from 'redux-thunk'\nimport advertisements from './store/advertisement/reducers'\nimport cart from './store/cart/reducers'\nimport infoEnv from './store/infoEnv/reducers'\nimport products from './store/products/reducers'\nimport profileConfiguration from './store/profile-configuration/reducers'\nimport crossSelling from './store/crossSelling/reducers'\nimport error from './store/error/reducers'\nimport lots from './store/lots/reducers'\nimport login from './store/login/reducers'\nimport shippingAddresses from './store/shipping-addresses/reducers'\nimport lowes from './store/lowes/reducers'\nimport ui from './store/ui/reducers'\nimport floatingAlerts from './store/floating-alerts/reducers'\nimport bigAccount from './store/big-account/reducers'\nimport checkout from './store/checkout/reducers'\nimport centers from './store/centers/reducers'\nimport kpis from './store/kpis/reducers'\nimport impersonate from './store/impersonate/reducers'\nimport reservations from './store/reservations/reducers'\nimport orders from './store/orders/reducers'\nimport deliveries from './store/deliveries/reducers'\nimport delivery from './store/delivery/reducers'\nimport directSlabAccess from './store/direct-slab-access/reducers'\nimport { createBrowserHistory }  from \"history\";\nimport segmentation from './store/segmentation/reducers'\nimport suggestion from './store/suggestion/reducers'\nimport maintenanceMode from './store/maintenance-mode/reducers'\nimport changelog from './store/changelog/reducers'\nimport landing from './store/landing/reducers'\nimport toastNotifications from './store/toast-notifications/reducers'\nimport loader from './store/loader/reducers'\nimport promotions from './store/promotions/reducers'\nimport cutToSize from './store/cut-to-size/reducers'\nimport selectedObjects from './store/selected-objects/reducers'\n\nimport { persistReducer, persistStore } from 'redux-persist'\nimport storage from 'redux-persist/lib/storage'\nimport autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2'\nimport { PersistGate } from 'redux-persist/integration/react'\n\nimport { loadingBarMiddleware, loadingBarReducer } from 'react-redux-loading-bar'\nimport promiseMiddleware from 'redux-promise-middleware'\nimport ConnectedIntlProvider from './i18n'\nimport analyticsEventsMiddleware from './analyticsEvents'\nimport Raven from 'raven-js'\nimport LogRocket from 'logrocket'\nimport { composeWithDevTools } from 'redux-devtools-extension'\nimport '@progress/kendo-theme-default/dist/all.css'\nimport { MsalProvider } from '@azure/msal-react'\nimport { Configuration, PublicClientApplication } from '@azure/msal-browser'\n\nif (process.env.REACT_APP_LOGROCKET_ACTIVE === 'true') {\n    LogRocket.init(process.env.REACT_APP_LOGROCKET_KEY)\n}\n\nRaven.config(process.env.REACT_APP_SENTRY_URL).install()\n// MSAL configuration\nconst configuration: Configuration = {\n    auth: {\n        clientId: process.env.REACT_APP_APP_ID,\n        authority: process.env.REACT_APP_INSTANCE + process.env.REACT_APP_TENANT_NAME + '/' + process.env.REACT_APP_SIGN_IN_POLICY,\n        knownAuthorities: [process.env.REACT_APP_INSTANCE],\n        // instance: 'https://cosentinogroupb2cpre.b2clogin.com/', not working with msal-react\n        // signInPolicy: process.env.REACT_APP_SIGN_IN_POLICY, not working with msal-react\n        redirectUri: process.env.REACT_APP_REDIRECT_URI,\n        postLogoutRedirectUri: process.env.REACT_APP_REDIRECT_URI\n        // scopes: [process.env.REACT_APP_SCOPES], not working with msal-react\n        // tenant: process.env.REACT_APP_TENANT_NAME not working with msal-react\n    }\n}\n\nconst pca = new PublicClientApplication(configuration)\n\nlet historyProps = {}\nif (process.env.PUBLIC_URL) {\n    historyProps = { ...historyProps, basename: process.env.PUBLIC_URL }\n}\n// need to test this on production\nconst history = createBrowserHistory(historyProps)\n\nconst middlewares = [\n    thunk,\n    analyticsEventsMiddleware,\n    promiseMiddleware(),\n    routerMiddleware(history),\n    loadingBarMiddleware({\n        promiseTypeSuffixes: ['REQUEST', 'SUCCESS', 'FAILURE', LOCATION_CHANGE]\n    })\n]\nif (process.env.NODE_ENV !== 'production') {\n    middlewares.push(createLogger({ collapsed: true, predicate: (getState, action) => !action.type.includes('loading-bar') }))\n}\nif (process.env.REACT_APP_LOGROCKET_ACTIVE === 'true') {\n    middlewares.push(LogRocket.reduxMiddleware())\n}\n\nconst migration = (state, currentVersion) => {\n    if (state && state._persist.version < currentVersion) return Promise.resolve()\n    else return Promise.resolve(state)\n}\n\nconst loginConfig = {\n    key: 'login',\n    storage,\n    stateReconciler: autoMergeLevel2,\n    version: 0.01,\n    migrate: migration\n}\nconst centersConfig = {\n    key: 'centers',\n    storage,\n    stateReconciler: autoMergeLevel2,\n    version: 0.01,\n    migrate: migration\n}\nconst shippingAddressesConfig = {\n    key: 'shippingAddresses',\n    storage,\n    stateReconciler: autoMergeLevel2,\n    version: 0.01,\n    migrate: migration\n}\nconst bigAccountConfig = {\n    key: 'bigAccount',\n    storage,\n    stateReconciler: autoMergeLevel2,\n    version: 0.01,\n    migrate: migration\n}\nconst lotsConfig = {\n    key: 'lots',\n    storage,\n    stateReconciler: autoMergeLevel2,\n    version: 0.01,\n    migrate: migration\n}\n\nconst promotionsConfig = {\n    key: 'promotions',\n    storage,\n    stateReconciler: autoMergeLevel2,\n    version: 0.01,\n    migrate: migration\n}\n\nconst selectedObjectsConfig = {\n    key: 'selectedObjects',\n    storage,\n    stateReconciler: autoMergeLevel2,\n    version: 0.01,\n    migrate: migration\n}\n\n\nlet reducer = combineReducers({\n    error,\n    advertisements,\n    cart,\n    checkout,\n    // products: persistReducer(productsConfig,products),\n    products,\n    profileConfiguration,\n    crossSelling,\n    // lots,\n    lots: persistReducer(lotsConfig, lots),\n    login: persistReducer(loginConfig, login),\n    lowes,\n    centers: persistReducer(centersConfig, centers),\n    kpis,\n    // ui: persistReducer(uiConfig, ui), //TODO:: REMOVE THIS ON PRODUCTION\n    ui,\n    floatingAlerts,\n    bigAccount: persistReducer(bigAccountConfig, bigAccount),\n    impersonate,\n    infoEnv,\n    segmentation,\n    suggestion,\n    reservations,\n    changelog,\n    shippingAddresses: persistReducer(shippingAddressesConfig, shippingAddresses),\n    orders,\n    directSlabAccess,\n    router: connectRouter(history),\n    loadingBar: loadingBarReducer,\n    maintenanceMode,\n    landing,\n    toastNotifications,\n    loader,\n    promotions: persistReducer(promotionsConfig, promotions),\n    cutToSize,\n    selectedObjects: persistReducer(selectedObjectsConfig, selectedObjects),\n    deliveries,\n    delivery\n})\n\nconst composeEnhancers = composeWithDevTools({\n    // Specify name here, actionsBlacklist, actionsCreators and other options if needed\n    predicate: (getState, action) => !action.type.includes('loading-bar')\n})\n\nconst store = createStore(reducer, composeEnhancers(applyMiddleware(...middlewares)))\nconst persistor = persistStore(store)\n\nexport default store\nReactDOM.render(\n    <Provider store={store}>\n        <MsalProvider instance={pca}>\n            <PersistGate persistor={persistor}>\n                <ConnectedRouter history={history}>\n                    <ConnectedIntlProvider />\n                </ConnectedRouter>\n            </PersistGate>\n        </MsalProvider>\n    </Provider>,\n    document.getElementById('root')\n)\n","import React from 'react'\nimport Translation from '../global/Translation'\n\nimport Button from '../global/Button'\nimport logo from '../../assets/img/e.cosentino.svg'\nimport LocalizedLink from '../global/LocalizedLink'\n\nclass Add2CartSuccess extends React.Component {\n    render() {\n        const { visible, productId, close } = this.props\n\n        return (\n            <div>\n                <div className=\"full-overlay\" style={{ display: visible ? 'block' : 'none' }} />\n                <div id=\"order-finished-container\" className=\"order-finished\" style={{ display: visible ? 'block' : 'none' }}>\n                    <div className=\"container-fluid\">\n                        <div className=\"row\">\n                            <div className=\"col-12 col-lg-5 logo-container d-none d-lg-block\">\n                                <img alt=\"\" id=\"logo-img\" className=\"profile-img-card\" src={logo} />\n                            </div>\n                            <div className=\"col-12 col-lg-7 container\">\n                                <header className=\"container-fluid\" />\n                                <div className=\"row\">\n                                    <div className=\"col-12\">\n                                        <h2>\n                                            <i className=\"fal fa-check-circle check-icon\" />\n                                            <Translation id=\"add2cart_success_header\" defaultMessage=\"Product added to the cart successfully\" />\n                                        </h2>\n                                    </div>\n                                </div>\n                                <footer>\n                                    <div className=\"col-12 col-md-6 offset-md-6\">\n                                        <Button inverted onClick={close}>\n                                            <Translation id=\"keep_buying\" defaultMessage=\"Keep Buying\" />\n                                        </Button>\n                                    </div>\n                                </footer>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        )\n    }\n}\nexport default Add2CartSuccess\n","import { connect } from 'react-redux'\nimport * as ui from '../../store/ui/actions'\nimport { showingAdd2CartSuccessModal } from '../../store/ui/reducers'\nimport Add2CartSuccess from './Add2CartSuccess'\n\nconst mapStateToProps = state => {\n    return {\n        visible: showingAdd2CartSuccessModal(state)\n    }\n}\nconst mapDispatchToProps = dispatch => {\n    return {\n        close: () => {\n            dispatch(ui.closeAdd2CartSuccessModal())\n        }\n    }\n}\n\nconst Add2CartSuccessContainer = connect(mapStateToProps, mapDispatchToProps)(Add2CartSuccess)\n\nexport default Add2CartSuccessContainer\n"],"sourceRoot":""}