{"version":3,"file":"dist/build-client/static/js/Shared-Favorites-FavoritesModal.ee3921ac.chunk.js","mappings":"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","sources":["Atoms/Buttons/FavoriteButton.tsx","Atoms/Error/Error.tsx","Atoms/Price/Price.tsx","Molecules/AddCartError/AddCartError.tsx","Shared/Common/VariationHelpers.ts","Organisms/FavoriteItem/FavoriteItem.tsx","Shared/Favorites/FavoritesModal.tsx","Shared/Hooks/useProductImage.ts","Shared/MotorcycleConfiguratorCart/MotorcycleConfiguratorCart.ts"],"sourcesContent":["import { HeartIcon } from 'Atoms/Icons';\r\nimport { styled } from 'stitches.config';\r\nimport { CSS } from '@stitches/react';\r\n\r\ntype FavoriteButtonBaseType = {\r\n onClick?: () => void;\r\n css?: CSS;\r\n size: 's' | 'm'; // 32px, 48px\r\n color?: 'primary' | 'secondary';\r\n isActive?: boolean;\r\n disabled?: boolean;\r\n};\r\n\r\nfunction FavoriteButton({\r\n onClick = () => {},\r\n css,\r\n size,\r\n isActive = false,\r\n color = 'primary',\r\n disabled = false,\r\n}: FavoriteButtonBaseType) {\r\n return (\r\n {\r\n onClick();\r\n }}\r\n size={size}\r\n disabled={disabled}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n}\r\nexport default FavoriteButton;\r\n\r\nconst FavoriteBtn = styled('button', {\r\n variants: {\r\n size: {\r\n s: {\r\n h: 8,\r\n },\r\n m: {\r\n h: 12,\r\n },\r\n },\r\n disabled: {\r\n true: { opacity: 0.6 },\r\n },\r\n },\r\n});\r\n\r\nconst CircleBackground = styled('span', {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n position: 'relative',\r\n borderRadius: '50%',\r\n variants: {\r\n bgColor: {\r\n primary: {\r\n backgroundColor: '$primary2',\r\n '&:hover': {\r\n backgroundColor: '$primary2',\r\n },\r\n },\r\n secondary: {\r\n backgroundColor: '$pureWhite',\r\n '&:hover': {\r\n backgroundColor: '$secondary2',\r\n },\r\n },\r\n },\r\n size: {\r\n s: {\r\n h: 8,\r\n w: 8,\r\n },\r\n m: {\r\n h: 12,\r\n w: 12,\r\n },\r\n },\r\n },\r\n});\r\n","import { forwardRef } from 'react';\r\nimport { styled } from 'stitches.config';\r\nimport { InfoIcon } from '../../Atoms/Icons';\r\n\r\ntype PropTypes = {\r\n errorLabel: string;\r\n};\r\n\r\nconst Error = forwardRef(({ errorLabel }, ref) => {\r\n return (\r\n \r\n \r\n {errorLabel}\r\n \r\n );\r\n});\r\n\r\nconst ErrorContainer = styled('span', {\r\n color: '$textSecondary',\r\n backgroundColor: '$secondary4',\r\n fs: 6,\r\n fontFamily: '$fontSecondary500',\r\n lineHeight: '$lh133',\r\n py: 2,\r\n px: 4,\r\n mb: 2,\r\n display: 'inline-flex',\r\n width: '100%',\r\n});\r\n\r\nexport default Error;\r\n","import { styled } from 'stitches.config';\r\nimport { CSS } from '@stitches/react';\r\n\r\ntype PropType = {\r\n nowPrice: number | undefined;\r\n wasPrice: number | undefined;\r\n friendlyNowPrice: string | undefined;\r\n friendlyWasPrice: string | undefined;\r\n size?: 'xs' | 'sm' | 'lg';\r\n direction?: 'row' | 'columnReverse';\r\n nowPriceSize?: CSS;\r\n wasPriceSize?: CSS;\r\n};\r\n\r\nfunction Price({\r\n nowPrice,\r\n wasPrice,\r\n friendlyNowPrice,\r\n friendlyWasPrice,\r\n size = 'sm',\r\n direction = 'row',\r\n nowPriceSize,\r\n wasPriceSize,\r\n}: PropType) {\r\n let hasLoweredPrice = false;\r\n if (nowPrice && wasPrice) {\r\n hasLoweredPrice = nowPrice < wasPrice;\r\n }\r\n\r\n return (\r\n \r\n \r\n {friendlyNowPrice}\r\n \r\n {hasLoweredPrice && (\r\n \r\n {friendlyWasPrice}\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default Price;\r\n\r\nconst PriceContainer = styled('div', {\r\n display: 'flex',\r\n variants: {\r\n direction: {\r\n columnReverse: {\r\n flexDirection: 'column-reverse',\r\n rowGap: 4,\r\n },\r\n row: {\r\n flexDirection: 'row',\r\n },\r\n },\r\n size: {\r\n xs: {\r\n fs: 6,\r\n lineHeight: '$lh133',\r\n columnGap: 26,\r\n },\r\n sm: {\r\n fs: 8,\r\n lineHeight: '$lh15',\r\n columnGap: 32,\r\n },\r\n lg: {\r\n columnGap: 40,\r\n fs: 12,\r\n lineHeight: '$lh116',\r\n fontFamily: '$fontPrimary400',\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n ls: '$ls1',\r\n flexDirection: 'column',\r\n '@mediaMinLarge': {\r\n flexDirection: 'row',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst NowPriceText = styled('span', {\r\n variants: {\r\n hasLoweredPrice: {\r\n true: {\r\n color: '$JE68GreenPrimary',\r\n },\r\n false: {\r\n color: '$secondary2',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst WasPriceText = styled('span', {\r\n textDecoration: 'line-through',\r\n color: '$secondary2',\r\n variants: {\r\n size: {\r\n lg: {\r\n // Reason why font size is specified here again is because we have special case where size 'lg' and in MOBILE should show different font size.\r\n fs: 9,\r\n lineHeight: '$lh133',\r\n '@mediaMinLarge': {\r\n fontSize: 'inherit',\r\n lineHeight: 'inherit',\r\n },\r\n },\r\n sm: {},\r\n xs: {},\r\n },\r\n },\r\n});\r\n","import { styled } from 'stitches.config';\r\nimport useOutsideClick from 'Shared/Hooks/useOutsideClick';\r\nimport Error from 'Atoms/Error/Error';\r\nimport { CartError } from 'Organisms/FavoriteItem/FavoriteItem';\r\nimport { useRef } from 'react';\r\n\r\ntype Offset = {\r\n top?: number;\r\n left?: number;\r\n right?: number;\r\n bottom?: number;\r\n};\r\n\r\ntype PropTypes = {\r\n setAddToCartError: (arg: CartError) => void;\r\n offset?: Offset;\r\n message: string;\r\n};\r\n\r\nconst AddToCartError = ({\r\n setAddToCartError,\r\n offset = {},\r\n message = '',\r\n}: PropTypes) => {\r\n const errorRef = useRef(null);\r\n\r\n useOutsideClick(errorRef, () => setAddToCartError({ message: '' }));\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst AddToCartErrorContainer = styled('div', {\r\n position: 'absolute',\r\n});\r\n\r\nexport default AddToCartError;\r\n","import VariationModel from 'Models/KexVariation/VariationModel.interface';\r\n\r\nexport const GetVariantDescriptions = (variation: VariationModel) => {\r\n const descriptions = [];\r\n\r\n if (!variation) return;\r\n\r\n if (variation.color && variation.color.name) {\r\n descriptions.push(variation.color.name);\r\n }\r\n\r\n if (variation.size && variation.size.name) {\r\n descriptions.push(variation.size.name);\r\n }\r\n return descriptions.join(', ');\r\n};\r\n","import KexLink from 'Kex/KexLink';\r\nimport VariationModel from 'Models/KexVariation/VariationModel.interface';\r\nimport Price from 'Atoms/Price/Price';\r\nimport { GetCart, SetQuantity } from 'Shared/Cart/Cart';\r\nimport ProductImage from 'Atoms/Image/ProductImage';\r\nimport { styled } from 'stitches.config';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { useState } from 'react';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport ProductCardTitle from 'Atoms/ProductCardTitle/ProductCardTitle';\r\nimport FavoriteButton from 'Atoms/Buttons/FavoriteButton';\r\nimport {\r\n RemoveFavorite,\r\n RemoveFavoriteConfigurator,\r\n} from 'Shared/Favorites/Favorites';\r\nimport KexCartModel from 'Models/Cart/KexCartModel.interface';\r\nimport { useKexNavigate } from 'Kex/KexRouter/KexRouter';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport { ProductType } from 'Enums/ProductType.enum';\r\nimport AddToCartError from 'Molecules/AddCartError/AddCartError';\r\nimport useProductImage from 'Shared/Hooks/useProductImage';\r\nimport { MergeMotorcycleConfiguratorCartIntoDefaultCart } from 'Shared/MotorcycleConfiguratorCart/MotorcycleConfiguratorCart';\r\nimport { GetVariantDescriptions } from 'Shared/Common/VariationHelpers';\r\nimport { useUserStateData } from 'Shared/Providers/UserContextProvider';\r\n\r\ntype PropTypes = {\r\n product: VariationModel;\r\n allowEdit: boolean;\r\n isMiniCart: boolean;\r\n needConfirmDelete?: boolean;\r\n configCart?: KexCartModel;\r\n closeFavorites: () => void;\r\n};\r\n\r\nexport type CartError = {\r\n message: string;\r\n};\r\n\r\nfunction FavoriteItem({\r\n product,\r\n isMiniCart,\r\n configCart,\r\n closeFavorites,\r\n}: PropTypes) {\r\n const [cartError, setAddToCartError] = useState({ message: '' });\r\n const isMobile = useMedia(mediaQueryTypes.mediaMaxMedium);\r\n const {\r\n languageRoute,\r\n staticPages: { motorcycleConfiguratorPage, checkoutPage },\r\n } = useAppSettingsData();\r\n const { miniCartDispatch, miniCartIsOpen } = useUserStateData();\r\n const {\r\n favoritesLabels: { options, configure, addToCart, errorOutOfStock },\r\n productLabels: { motorcycleAlreadyInCartError },\r\n } = useTranslationData();\r\n useState(false);\r\n const kexNavigate = useKexNavigate();\r\n\r\n const { cart } = GetCart(languageRoute);\r\n\r\n const {\r\n to,\r\n image,\r\n name,\r\n code,\r\n totalWasPrice,\r\n wasPrice,\r\n nowPrice,\r\n productType,\r\n isBuyable,\r\n variationImages,\r\n } = product;\r\n\r\n const { itemImage } = useProductImage(image, variationImages);\r\n\r\n if (!cart) {\r\n return <>;\r\n }\r\n\r\n const onFavoriteClick = () => {\r\n configCart\r\n ? RemoveFavoriteConfigurator(configCart.name, languageRoute)\r\n : RemoveFavorite(code, languageRoute);\r\n };\r\n\r\n const handleConfigurationClick = () => {\r\n //Redirect user to motorcycle configurator page\r\n kexNavigate(\r\n `${motorcycleConfiguratorPage}?productcode=${product.productCode}&variantcode=${code}`\r\n );\r\n };\r\n\r\n const variantDescriptions = GetVariantDescriptions(product);\r\n\r\n const handleAddToCart = async (cart: KexCartModel) => {\r\n if (!isBuyable) {\r\n setAddToCartError({ message: errorOutOfStock });\r\n\r\n return;\r\n }\r\n\r\n // allow max 1 motorcycle in cart\r\n if (productType === ProductType.MOTORCYCLES) {\r\n const alreadyExists = cart.lineItems.some((cartItem) => {\r\n return cartItem.productType === ProductType.MOTORCYCLES;\r\n });\r\n\r\n if (alreadyExists) {\r\n setAddToCartError({ message: motorcycleAlreadyInCartError });\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (configCart) {\r\n await MergeMotorcycleConfiguratorCartIntoDefaultCart(\r\n configCart.name,\r\n languageRoute,\r\n cart.name\r\n );\r\n\r\n kexNavigate(checkoutPage);\r\n } else {\r\n SetQuantity(code, 1, languageRoute);\r\n miniCartDispatch(miniCartIsOpen ? 'closeMiniCart' : 'mountAndOpen');\r\n closeFavorites();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {configCart && configCart.lineItems.length !== 1 && (\r\n
{`${configCart.lineItems.length - 1} ${options} `}
\r\n )}\r\n \r\n
\r\n {variantDescriptions && (\r\n \r\n {variantDescriptions}\r\n \r\n )}\r\n \r\n
\r\n \r\n {product.isMotorcycle && !product.isUsed && !configCart ? (\r\n \r\n {configure}\r\n \r\n ) : (\r\n <>\r\n {cartError.message !== '' && (\r\n \r\n )}\r\n\r\n handleAddToCart(cart)}>\r\n {addToCart}\r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst StyledKexLink = styled(KexLink, {\r\n maxW: '80%',\r\n fontFamily: '$fontSecondary600',\r\n wordSpacing: 'unset',\r\n});\r\n\r\nconst AddToCart = styled('div', {\r\n fs: 6,\r\n color: '$primaryText',\r\n cursor: 'pointer',\r\n textDecoration: 'underline',\r\n});\r\n\r\nconst ButtonWrapper = styled('div', {\r\n fs: 6,\r\n display: 'flex',\r\n color: '$textPrimary',\r\n marginTop: '16px',\r\n gap: '16px',\r\n});\r\n\r\nconst CartItemContainer = styled('div', {\r\n display: 'flex',\r\n position: 'relative',\r\n\r\n '&:not(:last-child)': {\r\n py: 5,\r\n borderBottomWidth: '1px',\r\n borderBottomColor: '$checkoutPageBackgroundPrimary',\r\n },\r\n '&:last-child': {\r\n pt: 5,\r\n mb: 6,\r\n },\r\n variants: {\r\n isMiniCart: {\r\n true: {\r\n '&:not(:last-child)': {\r\n py: 5,\r\n borderBottomWidth: '1px',\r\n borderBottomColor: '$primary2',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst ImageContainer = styled('div', {\r\n width: 104,\r\n height: 80,\r\n mr: 4,\r\n});\r\n\r\nconst TopWrapper = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n});\r\n\r\nconst BottomWrapper = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'flex-end',\r\n});\r\n\r\nconst Details = styled('div', {\r\n flexGrow: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n});\r\n\r\nconst ProductVariantDescription = styled('span', {\r\n fs: 6,\r\n display: 'block',\r\n mb: 2,\r\n color: '$cartItemText',\r\n});\r\n\r\nexport default FavoriteItem;\r\n","import { useEffect, useState } from 'react';\r\nimport { useAppSettingsData } from '../Providers/AppSettingsProvider';\r\nimport { useTranslationData } from '../Providers/TranslationProvider';\r\nimport { styled } from '../../stitches.config';\r\nimport Modal from '../../Organisms/Modal/Modal';\r\nimport { H2, H3 } from '../../Atoms/Typography/Headings/Heading';\r\nimport Paragraph from '../../Atoms/Typography/Paragraph/Paragraph';\r\nimport { GetFavorites } from './Favorites';\r\nimport FavoriteItem from 'Organisms/FavoriteItem/FavoriteItem';\r\n\r\nexport type PropType = {\r\n isOpen: boolean;\r\n closeFavorites: () => void;\r\n};\r\n\r\nfunction FavoritesModal({ isOpen, closeFavorites }: PropType) {\r\n const [renderCart, setRenderCart] = useState(false);\r\n const { languageRoute } = useAppSettingsData();\r\n\r\n const {\r\n commonLabels: { loading },\r\n favoritesLabels: { emptyBody, emptyHeader, header },\r\n } = useTranslationData();\r\n const { favoriteList, hasFavorites, isLoading } = GetFavorites(languageRoute);\r\n\r\n const windowUrlChanged =\r\n typeof window !== 'undefined' && window.location.href;\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n setRenderCart(true);\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n closeFavorites();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [windowUrlChanged]);\r\n\r\n return (\r\n \r\n \r\n {renderCart && (\r\n <>\r\n {isLoading && <>{loading}}\r\n\r\n \r\n

\r\n {header}\r\n

\r\n {!hasFavorites && (\r\n \r\n

{emptyHeader}

\r\n {emptyBody}\r\n
\r\n )}\r\n\r\n {favoriteList.favoriteProducts.map((item) => (\r\n \r\n \r\n \r\n ))}\r\n\r\n {favoriteList.favoriteMotorcycleConfigurations.map((item) => (\r\n \r\n \r\n \r\n ))}\r\n
\r\n \r\n )}\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst StyledCartHeader = {\r\n mt: 4,\r\n mb: 3,\r\n px: 4,\r\n '@mediaMinLarge': {\r\n mt: 10,\r\n mb: 11,\r\n px: 6,\r\n },\r\n};\r\n\r\nconst ItemWrapper = styled('div', {\r\n px: 4,\r\n '@mediaMinLarge': {\r\n px: 8,\r\n },\r\n\r\n borderBottomWidth: '1px',\r\n borderBottomColor: '$primary2',\r\n});\r\n\r\nconst StyledEmptyCartTitle = {\r\n mt: 0,\r\n mb: 4,\r\n fs: 8,\r\n lineHeight: '$lh125',\r\n};\r\n\r\nconst ProductListWrapper = styled('div', {\r\n pt: 4,\r\n '@mediaMinLarge': {\r\n pt: 6,\r\n },\r\n});\r\n\r\nconst EmptyCartWrapper = styled('div', {\r\n px: 4,\r\n '@mediaMinLarge': {\r\n px: 6,\r\n },\r\n});\r\n\r\nconst MiniCartContainer = styled('div', {\r\n height: '100%',\r\n overflowY: 'auto',\r\n scrollbarWidth: 'none',\r\n '&::-webkit-scrollbar': {\r\n WebkitAppearance: 'none',\r\n display: 'none',\r\n },\r\n '&::scrollbar': {\r\n display: 'none',\r\n },\r\n});\r\n\r\nexport default FavoritesModal;\r\n","import { isEmpty } from 'Shared/Common/Helpers';\r\nimport ImageModel from 'Models/Assets/ImageModel.interface';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\n\r\nconst useProductImage = (image: ImageModel, variationImages: ImageModel[]) => {\r\n const { missingImage } = useAppSettingsData();\r\n\r\n let itemImage = image;\r\n if (isEmpty(image) && !isEmpty(variationImages)) {\r\n itemImage = variationImages[0];\r\n }\r\n\r\n if (isEmpty(itemImage)) {\r\n itemImage = missingImage;\r\n }\r\n\r\n return { itemImage };\r\n};\r\n\r\nexport default useProductImage;\r\n","import KexCartModel from 'Models/Cart/KexCartModel.interface';\r\nimport { useEffect, useState } from 'react';\r\nimport Fetcher from 'Shared/Common/Fetcher';\r\nimport { IS_PRODUCTION_ENV } from 'Shared/Configs/EnvConfig';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport useSWR, { mutate } from 'swr';\r\n\r\nlet abortController: AbortController = new AbortController();\r\nlet hasMounted = false;\r\nlet cartUrl = '/api/cart/';\r\n\r\ntype CartReturnType = {\r\n cart: KexCartModel;\r\n isLoading: boolean;\r\n};\r\n\r\nexport function GetMotorcycleConfiguratorCart(\r\n languageRoute: string,\r\n cartName: string\r\n): CartReturnType {\r\n const tempCartObject: KexCartModel = {} as KexCartModel;\r\n const [cart, setCart] = useState(tempCartObject);\r\n const { pageCacheTime } = useAppSettingsData();\r\n const [isLoading, setIsLoading] = useState(true);\r\n const { data: fetchedCart } = useSWR(\r\n `${cartUrl}GetCart?language=${languageRoute}&cartName=${cartName}`,\r\n FetchMotorcycleConfiguratorCart,\r\n {\r\n fallbackData: undefined,\r\n revalidateOnFocus: IS_PRODUCTION_ENV,\r\n dedupingInterval: pageCacheTime,\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n if (!hasMounted) {\r\n hasMounted = true;\r\n } else {\r\n if (fetchedCart) {\r\n setCart(fetchedCart);\r\n setIsLoading(false);\r\n }\r\n }\r\n }, [fetchedCart]);\r\n\r\n return { cart, isLoading };\r\n}\r\n\r\nexport async function RemoveFromMotorcycleConfiguratorCart(\r\n productCode: string,\r\n languageRoute: string,\r\n cartName: string\r\n) {\r\n const queryParams = {\r\n language: languageRoute,\r\n code: productCode,\r\n cartName: cartName,\r\n };\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}RemoveItem?${queryString}`, {\r\n method: 'DELETE',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n\r\n mutate(\r\n `${cartUrl}GetCart?language=${languageRoute}&cartName=${cartName}`,\r\n cart,\r\n false\r\n );\r\n }\r\n}\r\n\r\nexport async function UpdateMotorcycleConfiguratorCart(\r\n productCode: string,\r\n quantity: number,\r\n languageRoute: string,\r\n cartName: string\r\n) {\r\n const queryParams = {\r\n language: languageRoute,\r\n code: productCode,\r\n quantity: quantity.toString(),\r\n cartName: cartName,\r\n };\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}Update?${queryString}`, {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n mutate(\r\n `${cartUrl}GetCart?language=${languageRoute}&cartName=${cartName}`,\r\n cart,\r\n false\r\n );\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport async function SetQuantityInMotorcycleConfiguratorCart(\r\n productCode: string,\r\n quantity: number,\r\n languageRoute: string,\r\n cartName: string\r\n) {\r\n const queryParams = {\r\n language: languageRoute,\r\n code: productCode,\r\n quantity: quantity.toString(),\r\n cartName: cartName,\r\n };\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}SetQuantity?${queryString}`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n\r\n mutate(\r\n `${cartUrl}GetCart?language=${languageRoute}&cartName=${cartName}`,\r\n cart,\r\n false\r\n );\r\n }\r\n}\r\n\r\nexport async function EmptyMotorcycleConfiguratorCart(\r\n languageRoute: string,\r\n cartName: string\r\n) {\r\n mutate(\r\n `${cartUrl}GetCart?language=${languageRoute}&cartName=${cartName}`,\r\n { numberOfItems: 0 } as KexCartModel,\r\n false\r\n );\r\n\r\n const res = await fetch(\r\n `${cartUrl}RemoveAllItems?languageRoute=${languageRoute}&cartName=${cartName}`,\r\n {\r\n method: 'DELETE',\r\n }\r\n );\r\n\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n\r\n mutate(\r\n `${cartUrl}GetCart?language=${languageRoute}&cartName=${cartName}`,\r\n cart,\r\n false\r\n );\r\n }\r\n}\r\n\r\nexport async function MergeMotorcycleConfiguratorCartIntoDefaultCart(\r\n sourceCartName: string,\r\n languageRoute: string,\r\n targetCartName = 'Default'\r\n) {\r\n const res = await fetch(\r\n `${cartUrl}MergeCarts?sourceCartName=${sourceCartName}&targetCartName=${targetCartName}&language=${languageRoute}`,\r\n {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n }\r\n );\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n\r\n //Mutate motorcycle cart\r\n mutate(\r\n `${cartUrl}GetCart?language=${languageRoute}&cartName=${sourceCartName}`,\r\n cart,\r\n false\r\n );\r\n\r\n //mutate default cart\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, false);\r\n }\r\n}\r\n\r\nexport async function SetMotorcycleInMotorcycleConfigurator(\r\n productCode: string,\r\n languageRoute: string,\r\n cartName: string\r\n) {\r\n const queryParams = {\r\n cartName: cartName,\r\n code: productCode,\r\n language: languageRoute,\r\n };\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n const res = await fetch(\r\n `${cartUrl}SetMotorcycleInMotorcycleConfigurator?${queryString}`,\r\n {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json' },\r\n }\r\n );\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n\r\n mutate(\r\n `${cartUrl}GetCart?language=${languageRoute}&cartName=${cartName}`,\r\n cart,\r\n false\r\n );\r\n }\r\n}\r\n\r\nfunction FetchMotorcycleConfiguratorCart(url: string) {\r\n abortController.abort();\r\n abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n return Fetcher(url, signal, (data, resolve) => {\r\n resolve(data.cart);\r\n });\r\n}\r\n"],"names":["onClick","css","size","isActive","color","disabled","FavoriteBtn","CircleBackground","bgColor","fillColor","styled","variants","s","h","m","true","opacity","display","alignItems","justifyContent","position","borderRadius","primary","backgroundColor","secondary","w","Error","forwardRef","ref","errorLabel","ErrorContainer","space","fs","fontFamily","lineHeight","py","px","mb","width","nowPrice","wasPrice","friendlyNowPrice","friendlyWasPrice","direction","nowPriceSize","wasPriceSize","hasLoweredPrice","PriceContainer","NowPriceText","WasPriceText","columnReverse","flexDirection","rowGap","row","xs","columnGap","sm","lg","wordSpacing","ls","false","textDecoration","fontSize","AddToCartErrorContainer","setAddToCartError","offset","message","errorRef","useRef","useOutsideClick","top","left","right","bottom","GetVariantDescriptions","variation","descriptions","name","push","join","StyledKexLink","KexLink","maxW","AddToCart","cursor","ButtonWrapper","marginTop","gap","CartItemContainer","borderBottomWidth","borderBottomColor","pt","isMiniCart","ImageContainer","height","mr","TopWrapper","BottomWrapper","Details","flexGrow","ProductVariantDescription","product","configCart","closeFavorites","useState","cartError","isMobile","useMedia","mediaQueryTypes","useAppSettingsData","languageRoute","staticPages","motorcycleConfiguratorPage","checkoutPage","useUserStateData","miniCartDispatch","miniCartIsOpen","useTranslationData","favoritesLabels","options","configure","addToCart","errorOutOfStock","motorcycleAlreadyInCartError","productLabels","kexNavigate","useKexNavigate","cart","GetCart","to","image","code","totalWasPrice","productType","isBuyable","variationImages","itemImage","useProductImage","handleConfigurationClick","productCode","variantDescriptions","handleAddToCart","ProductType","lineItems","some","cartItem","MergeMotorcycleConfiguratorCartIntoDefaultCart","SetQuantity","href","underlined","ProductImage","src","alt","ProductCardTitle","title","FavoriteButton","RemoveFavoriteConfigurator","RemoveFavorite","length","Price","priceRoundedAsString","price","isMotorcycle","isUsed","StyledCartHeader","mt","ItemWrapper","StyledEmptyCartTitle","ProductListWrapper","EmptyCartWrapper","MiniCartContainer","overflowY","scrollbarWidth","WebkitAppearance","isOpen","renderCart","setRenderCart","loading","commonLabels","emptyBody","emptyHeader","header","GetFavorites","favoriteList","hasFavorites","isLoading","windowUrlChanged","window","location","useEffect","Modal","showModal","toggle","noPadding","H2","noMargin","H3","Paragraph","favoriteProducts","map","item","allowEdit","needConfirmDelete","favoriteMotorcycleConfigurations","motorcycle","motorcycleConfigurationCart","missingImage","isEmpty","abortController","AbortController","hasMounted","cartUrl","GetMotorcycleConfiguratorCart","cartName","setCart","pageCacheTime","setIsLoading","fetchedCart","useSWR","FetchMotorcycleConfiguratorCart","fallbackData","undefined","revalidateOnFocus","IS_PRODUCTION_ENV","dedupingInterval","data","RemoveFromMotorcycleConfiguratorCart","queryString","URLSearchParams","language","toString","fetch","method","headers","res","ok","json","mutate","UpdateMotorcycleConfiguratorCart","quantity","queryParams","SetQuantityInMotorcycleConfiguratorCart","sourceCartName","targetCartName","url","abort","signal","Fetcher","resolve"],"sourceRoot":""}