{"version":3,"sources":["webpack:///./Avensia.Common/Features/Product/ProductDetails/UspBullets.tsx","webpack:///./Avensia.Common/Features/Shared/Icon/RemovePlain.tsx","webpack:///./Avensia.Common/Features/Shared/variation-helper.ts","webpack:///./Avensia.Common/Features/Shared/Icon/Check-Thin.tsx","webpack:///./Avensia.Common/Features/Product/ProductCard/ProductCard.tsx","webpack:///./Avensia.Common/Features/Product/ProductDetails/AverageRatingBlack.tsx","webpack:///./Avensia.Common/Features/Shared/Icon/Star-Black.tsx","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/star-black.svg","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/star-outline-black.svg","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/star-half-black.svg","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/md-checkmark.svg","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/remove-plain.svg","webpack:///./Avensia.Common/Features/Shared/Icon/Info.tsx","webpack:///./Avensia.Common/Features/Shared/Icon/glyphs/information-icon.svg","webpack:///./Avensia.Common/Features/Product/ProductCard/List.tsx","webpack:///./Avensia.Common/Features/Product/ProductCard/ProductCardMobile.tsx","webpack:///./Avensia.Common/Features/Shared/Blocks/Products/ProductsBlock.tsx"],"names":["ListStyleType","div","display","width","height","backgroundColor","Theme","bulletpoints","borderRadius","marginRight","verticalAlign","ListStyleMobileType","Li","li","overflow","textOverflow","whiteSpace","Value","span","textAlign","UspBullets","props","Sliced","bulletPoints","bulletLimit","slice","UlComponent","isCompact","MobileUl","DesktopUl","hasValue","css","compose","map","bulletPoint","index","title","key","listItemCss","isMobile","listStyleType","ul","minWidth","maxWidth","fontSize","margin","y","x","prepareVariationName","name","replace","m","String","fromCharCode","CheckIcon","Check","state","bulletPointsVisible","toggleBulletPointsTrue","event","setState","stopPropagation","preventDefault","toggleBulletPointsFalse","render","averageRating","brand","imageUrls","price","hasMultipleVariants","hasDiscount","hasPromotion","isNew","displayName","url","inStock","ticket","displayTagDesigner","displayHighlightImage","whiteHighlightText","highlightImageUrl","hideProductInfo","promotions","images","productImage","length","productBrand","trim","productName","current","original","currency","discountPercentage","isPriceDiscounted","currentPrice","originalPrice","currentTheme","this","theme","imageWithPaddingStyle","paddingTop","actionButtonText","DoggieDefault","PromotionNode","Div","position","right","zIndex","PromotionTitle","promotion","i","PromotionLink","to","promotionUrl","PromotionItemTitle","promotionName","Base","ExtensionWrapper","onMouseEnter","onMouseLeave","Body","productUrl","linkIdentifier","productTicket","HighlightImage","style","objectFit","src","Wrapper","visibility","color","startsWith","isProductNew","ImageStyled","alt","itemProp","preset","includes","undefined","Tiny","ratio","OneToOne","imageStyle","lazy","RatingsPlaceholder","productRatings","Ratings","average","spacing","Normal","size","RatingsNone","BrandPlaceholder","Brand","NameWrapper","Name","UspBulletsStyled","bulletListItemStyle","LowerWrapper","Prices","CurrentPrice","priceType","New","Regular","OldPrice","Old","StockPlaceholder","StockStatus","CrossIcon","ActionStyled","hasVariants","isInStock","addCart","addToCart","CartIcon","Component","ProductCard","Action","ViewProduct","variant","Small","appearance","Primary","Full","children","AddCart","disabled","boxShadow","shadowColor","cardBackgroundColor","flexDirection","marginBottom","transform","willChange","property","duration","timingFunction","buyButtonProductcardDesktop","padding","letterSpacing","lineHeight","buttonTextColor","textColor","cursor","alignItems","justifyContent","flex","basis","shrink","marginTop","opacity","paddingLeft","flexBasis","textTransform","fontWeight","flexShrink","WebkitLineClamp","WebkitBoxOrient","marginLeft","top","bottom","xy","actionStyle","mixBlendMode","campaignBackgroundColor","left","campaignTextProductcard","Spacing","Size","StarBlack","StarOutlineBlack","HalfStarBlack","floatPart","Number","Math","trunc","toFixed","parsedFloat","parseFloat","starStyles","Micro","Large","Huge","Medium","Wide","getStyles","rating","ceil","React","createElement","defaultProps","module","exports","default","StarHalfBlack","MdCheckmark","RemovePlain","InformationIcon","Layout","hasBulletpoints","IsVxnSite","ActionButtonIcon","InfoIconStyled","ShoppingBagIcon","CrossNoStock","HighlightImageWrapper","RatingsContainer","MobileBulletWrap","ButtonContainer","ButtonLeftContainer","Price","mobileActionButtonStyle","connect","buyButtonProductcardMobile","minHeight","img","Link","AverageRating","alignSelf","Info","Button","flexFlow","pageStyled","blockStyled","flexGrow","baseStyled","BaseCard","BaseCardMobile","PageCard","PageCardMobile","BlockCard","BlockCardMobile","BasePlaceholder","PagePlaceholder","BlockPlaceholder","code","isCheckoutPage","addCartItem","Promise","reject","currentBreakpoint","layout","Block","ProductCardMobile","Placeholder","ieBlockCardStyle","desktopCardStyle","mobileCardStyle","products","product","variation","Fragment","noPlaceholders","Array","fill","elem","PureComponent","currentPage","dispatch","quantity","Header","LinkStyled","borderBottom","Title","restProps","HeaderTitle","HeaderTitleWrapper","LinkWrapper","paddingRight","ProductsBlock","headerUrl","block","linkUrl","horizontalScrollMobile","scrollStyle","flexWrap","className","component","for","innerProps","linkText"],"mappings":"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","file":"assets/23.chunk.c5c6a568e5e265c30f46.js","sourcesContent":["import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { theta, medium, large, micro, pixelsToUnit } from 'Shared/Style';\r\nimport { ValuePropType, ViewportPropType } from './shared';\r\nimport { StyleOrStyleArray } from '@glitz/type';\r\n\r\ntype PropType = {\r\n bulletPoints: string[];\r\n bulletLimit?: boolean;\r\n isMobile?: boolean;\r\n listItemCss?: StyleOrStyleArray;\r\n} & ViewportPropType &\r\n ValuePropType;\r\n\r\nconst ListStyleType = styled.div({\r\n display: 'inline-block',\r\n width: pixelsToUnit(8),\r\n height: pixelsToUnit(8),\r\n backgroundColor: (Theme) => Theme.bulletpoints,\r\n borderRadius: '50%',\r\n marginRight: medium,\r\n verticalAlign: 'middle',\r\n});\r\n\r\nconst ListStyleMobileType = styled(ListStyleType, {\r\n marginRight: micro,\r\n width: pixelsToUnit(6),\r\n height: pixelsToUnit(6),\r\n});\r\n\r\nconst Li = styled.li({\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n});\r\n\r\nconst Value = styled.span({\r\n textAlign: 'left',\r\n verticalAlign: 'middle',\r\n});\r\n\r\nconst UspBullets = styled(\r\n (props: PropType & StyledProps) => {\r\n let Sliced: string[] = props.bulletPoints;\r\n if (props.bulletLimit) {\r\n Sliced = props.bulletPoints.slice(0, 4);\r\n }\r\n const UlComponent = props.isCompact ? MobileUl : DesktopUl;\r\n return props.hasValue ? (\r\n \r\n {Sliced.map((bulletPoint, index) => (\r\n \r\n {props.isMobile ? : }\r\n {bulletPoint}\r\n \r\n ))}\r\n \r\n ) : null;\r\n },\r\n {\r\n listStyleType: 'none',\r\n textAlign: 'left',\r\n },\r\n);\r\n\r\nexport default UspBullets;\r\n\r\nconst MobileUl = styled.ul({\r\n minWidth: '138px',\r\n maxWidth: '308px',\r\n});\r\n\r\nconst DesktopUl = styled.ul({\r\n fontSize: theta,\r\n margin: {\r\n y: large,\r\n x: 0,\r\n },\r\n minWidth: 'initial',\r\n maxWidth: 'initial',\r\n});\r\n","import factory from './icon';\r\nimport Svg from './glyphs/remove-plain.svg';\r\n\r\nexport default factory(Svg);\r\n","import { epiPropertyValue } from '@avensia/scope-episerver';\r\n\r\n// This function processes a variation name so it'll display nicer.\r\nexport function prepareVariationName(name: Scope.Property | string): string {\r\n if (typeof name !== 'string') {\r\n name = epiPropertyValue(name) || '';\r\n }\r\n\r\n // don't linebreak between an amount and a single-word (presumed) unit\r\n name = name.replace(/\\d \\w*$/, m => m.replace(' ', String.fromCharCode(160))); // replacing with a non-breaking space\r\n\r\n return name;\r\n}\r\n","import { styled } from '@glitz/react';\r\nimport factory from './icon';\r\nimport Svg from './glyphs/md-checkmark.svg';\r\n\r\nexport const CheckIcon = factory(Svg);\r\n\r\nexport const Check = styled(CheckIcon, {\r\n verticalAlign: 'text-bottom',\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { StyleOrStyleArray, Style } from '@glitz/type';\r\nimport Link from 'Shared/Link';\r\nimport { translate } from '@avensia/scope';\r\nimport { epiPropertyValue } from '@avensia/scope-episerver';\r\nimport EsalesProductForListType from '../../../Esales/Models/EsalesProductForList.type';\r\nimport Image, { Ratio as ImageRatio, Preset as ImagePreset } from 'Shared/Image/Ratio';\r\nimport UspBullets from './../ProductDetails/UspBullets';\r\nimport {\r\n gamma,\r\n theta,\r\n transition,\r\n pixelsToUnit,\r\n truncate,\r\n small,\r\n minMediumMediaQuery,\r\n zeta,\r\n sigma,\r\n} from 'Shared/Style';\r\nimport connect from 'Shared/connect';\r\nimport Button, { Appearance as ButtonAppearance, Variant as ButtonVariant } from 'Shared/Button';\r\nimport Icon from 'Shared/Icon/Cart';\r\nimport { formatTitleCase } from 'Shared/string-format';\r\nimport AddToCart from 'Product/ProductAddToCart';\r\nimport AverageRatings, { Spacing, Size } from 'Product/ProductDetails/AverageRating';\r\nimport AverageRatingsBlack from 'Product/ProductDetails/AverageRatingBlack';\r\nimport Price, { Type as PriceType } from 'Pricing/Price';\r\nimport { NewBadge, DiscountBadge, DiscountTriBadge } from './Badge';\r\nimport { prepareVariationName } from 'Shared/variation-helper';\r\nimport { Check } from 'Shared/Icon/Check-Thin';\r\nimport Cross from 'Shared/Icon/RemovePlain';\r\nimport { Theme } from 'Shared/Theming';\r\n\r\ntype RequiredPropType = {\r\n product: EsalesProductForListType;\r\n addToCart: () => Promise;\r\n};\r\n\r\ntype StateType = {\r\n bulletPointsVisible: boolean;\r\n};\r\n\r\ntype ConnectStateType = {\r\n theme: string;\r\n};\r\n\r\ntype PropType = RequiredPropType & StyledProps & ConnectStateType;\r\n\r\nclass ProductCard extends React.Component {\r\n state: StateType = {\r\n bulletPointsVisible: false,\r\n };\r\n\r\n toggleBulletPointsTrue = (event: React.MouseEvent) => {\r\n this.setState({ bulletPointsVisible: true });\r\n event.stopPropagation();\r\n event.preventDefault();\r\n };\r\n\r\n toggleBulletPointsFalse = (event: React.MouseEvent) => {\r\n this.setState({ bulletPointsVisible: false });\r\n event.stopPropagation();\r\n event.preventDefault();\r\n };\r\n\r\n render() {\r\n const {\r\n averageRating: productRatings = 0,\r\n brand = '',\r\n imageUrls,\r\n price,\r\n hasMultipleVariants = false,\r\n hasDiscount = false,\r\n hasPromotion = false,\r\n isNew: isProductNew = false,\r\n variation: { displayName },\r\n url: productUrl = '',\r\n inStock,\r\n ticket: productTicket,\r\n displayTagDesigner,\r\n displayHighlightImage,\r\n whiteHighlightText,\r\n highlightImageUrl,\r\n hideProductInfo,\r\n bulletPoints = [],\r\n promotions,\r\n } = this.props.product;\r\n\r\n const { bulletPointsVisible } = this.state;\r\n\r\n const images = imageUrls || [];\r\n const productImage = images.length > 0 ? images[0] : '';\r\n const productBrand = brand ? formatTitleCase(brand.trim()) : '';\r\n const productName = formatTitleCase(prepareVariationName(epiPropertyValue(displayName)).trim());\r\n const { current: currentPrice, original: originalPrice, currency, discountPercentage } = price;\r\n const isPriceDiscounted = currentPrice < originalPrice;\r\n const currentTheme = this.props.theme;\r\n const imageHoverStyle: Style = {\r\n height: '110px',\r\n };\r\n\r\n const imageNoHoverStyle: Style = {\r\n height: '200px',\r\n };\r\n\r\n const imageWithPaddingStyle: Style = {\r\n paddingTop: pixelsToUnit(10),\r\n };\r\n\r\n const actionButtonText =\r\n hasMultipleVariants || displayTagDesigner\r\n ? translate('/ProductListing/ViewProduct')\r\n : inStock\r\n ? this.props.theme === Theme.DoggieDefault\r\n ? translate('/Cart/BuyDoggie')\r\n : translate('/Cart/BuyDesktop')\r\n : translate('/Cart/OutOfStock');\r\n\r\n const PromotionNode = (\r\n \r\n {translate('/Product/Badge/Campaign')}\r\n {promotions.map((promotion, i) => {\r\n if (i < 4) {\r\n return (\r\n \r\n {promotion.promotionName}\r\n \r\n );\r\n }\r\n })}\r\n \r\n );\r\n\r\n return (\r\n \r\n {hasPromotion && PromotionNode}\r\n \r\n \r\n {displayHighlightImage && (\r\n \r\n
\r\n \r\n )}\r\n \r\n {hasDiscount ? (\r\n !currentTheme.startsWith('dog') &&\r\n !currentTheme.startsWith('cli') &&\r\n !currentTheme.startsWith('lac') ? (\r\n {`-${discountPercentage}%`}\r\n ) : (\r\n {`-${discountPercentage}%`}\r\n )\r\n ) : (\r\n isProductNew && {`${translate('/Product/Badge/New')}!`}\r\n )}\r\n {!displayHighlightImage ? (\r\n 0 ? imageHoverStyle : imageNoHoverStyle}\r\n imageStyle={imageWithPaddingStyle}\r\n lazy\r\n />\r\n ) : (\r\n \r\n )}\r\n\r\n \r\n {!!productRatings ? (\r\n !currentTheme.startsWith('dog') &&\r\n !currentTheme.startsWith('cli') &&\r\n !currentTheme.startsWith('lac') ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n \r\n {productBrand && {productBrand}}\r\n \r\n {productName}\r\n \r\n {!displayHighlightImage && bulletPointsVisible && (\r\n 0}\r\n bulletPoints={bulletPoints}\r\n listItemCss={bulletListItemStyle}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {isPriceDiscounted && }\r\n \r\n \r\n {inStock ? (\r\n \r\n \r\n {translate('/Product/InStock')}\r\n \r\n ) : (\r\n \r\n {translate('/Product/OutOfStock')}\r\n \r\n \r\n )}\r\n \r\n \r\n {inStock && }\r\n {actionButtonText}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default styled(\r\n connect(\r\n (state): ConnectStateType => ({\r\n theme: state.currentTheme,\r\n }),\r\n )(ProductCard),\r\n);\r\n\r\ntype ActionPropType = {\r\n hasVariants: boolean;\r\n productUrl: string;\r\n isInStock: boolean;\r\n children: React.ReactNode;\r\n addCart: () => Promise;\r\n displayTagDesigner: boolean;\r\n};\r\n\r\nconst Action = styled((props: ActionPropType & StyledProps) => {\r\n return props.hasVariants || props.displayTagDesigner ? (\r\n \r\n {props.children}\r\n \r\n ) : (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n\r\nconst Base = styled.div({\r\n height: '400px',\r\n boxShadow: (theme) => `0 0.2rem 1rem 0 rgba(${theme.shadowColor}, 0.2)`,\r\n display: 'flex',\r\n backgroundColor: (theme) => theme.cardBackgroundColor,\r\n flexDirection: 'column',\r\n position: 'relative',\r\n textAlign: 'left',\r\n marginBottom: '2rem',\r\n});\r\n\r\nconst Wrapper = styled.div({\r\n position: 'relative',\r\n});\r\n\r\nconst ExtensionWrapper = styled.div({\r\n position: 'relative',\r\n height: '400px',\r\n overflow: 'hidden',\r\n backgroundColor: (theme) => theme.cardBackgroundColor,\r\n borderRadius: '0.15rem',\r\n width: '100%',\r\n zIndex: 2,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n boxShadow: (theme) => `0 0 0.5rem rgba(${theme.shadowColor}, 0)`,\r\n transform: 'translateZ(0)',\r\n willChange: 'transform',\r\n ...transition({\r\n property: ['color', 'background', 'opacity', 'box-shadow', 'transform'],\r\n duration: '0.2s',\r\n timingFunction: 'ease-out',\r\n }),\r\n ':hover': {\r\n backgroundColor: '#fff',\r\n boxShadow: (theme) => `0 0.3rem 1rem 0 rgba(${theme.shadowColor}, 0.3)`,\r\n transform: 'translateZ(0) scale(1.02)',\r\n zIndex: 3,\r\n },\r\n});\r\n\r\nconst ActionStyled = styled(Action, {\r\n backgroundColor: (theme) => theme.buyButtonProductcardDesktop,\r\n});\r\n\r\nconst StockPlaceholder = styled.div({\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst StockStatus = styled.span({\r\n fontSize: pixelsToUnit(11),\r\n letterSpacing: pixelsToUnit(0.3),\r\n lineHeight: pixelsToUnit(10),\r\n});\r\n\r\nconst CheckIcon = styled(Check, {\r\n marginRight: pixelsToUnit(5),\r\n height: '1rem',\r\n color: (theme) => theme.buttonTextColor,\r\n});\r\n\r\nconst Body = styled(Link, {\r\n color: (theme) => theme.textColor,\r\n marginBottom: pixelsToUnit(10),\r\n});\r\n\r\nconst Brand = styled.div({\r\n fontSize: sigma,\r\n marginBottom: small,\r\n ...truncate(),\r\n});\r\n\r\nconst PromotionLink = styled(Link, {\r\n marginBottom: pixelsToUnit(10),\r\n cursor: 'pointer',\r\n});\r\n\r\nconst BrandPlaceholder = styled.div({\r\n height: small,\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n flex: {\r\n basis: pixelsToUnit(18),\r\n shrink: 0,\r\n },\r\n lineHeight: 'normal',\r\n marginTop: pixelsToUnit(10),\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst Ratings = styled(AverageRatings, {\r\n lineHeight: pixelsToUnit(18),\r\n});\r\n\r\nconst RatingsNone = styled(Ratings, {\r\n opacity: 0.3,\r\n});\r\n\r\nconst RatingsPlaceholder = styled.div({\r\n paddingLeft: pixelsToUnit(5),\r\n marginTop: pixelsToUnit(10),\r\n marginBottom: pixelsToUnit(8),\r\n});\r\n\r\nconst NameWrapper = styled.div({\r\n height: '2.4rem',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst Name = styled.div({\r\n position: 'relative',\r\n flexBasis: pixelsToUnit(34),\r\n textTransform: 'uppercase',\r\n fontWeight: 'bold',\r\n flexShrink: 0,\r\n fontSize: zeta,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 2,\r\n WebkitBoxOrient: 'vertical',\r\n letterSpacing: pixelsToUnit(0.2),\r\n lineHeight: 'normal',\r\n marginTop: pixelsToUnit(3),\r\n [minMediumMediaQuery]: {\r\n flexBasis: pixelsToUnit(46),\r\n fontSize: sigma,\r\n marginTop: pixelsToUnit(3),\r\n },\r\n});\r\n\r\nconst bulletListItemStyle: StyleOrStyleArray = {\r\n fontSize: '0.7rem',\r\n marginBottom: 0,\r\n marginLeft: '0.2rem',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n [minMediumMediaQuery]: {\r\n fontSize: '0.8rem',\r\n },\r\n};\r\n\r\nconst Prices = styled.div({\r\n display: 'flex',\r\n flexBasis: pixelsToUnit(20),\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n flexShrink: 0,\r\n justifyContent: 'flex-start',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n margin: {\r\n top: pixelsToUnit(8),\r\n bottom: pixelsToUnit(8),\r\n },\r\n});\r\n\r\nconst CurrentPrice = styled(Price, {\r\n lineHeight: '1rem',\r\n fontSize: gamma,\r\n color: (theme) => theme.textColor,\r\n marginRight: small,\r\n});\r\n\r\nconst OldPrice = styled(Price, {\r\n paddingTop: '0.15rem',\r\n fontSize: theta,\r\n lineHeight: '0.8rem',\r\n});\r\n\r\nconst UspBulletsStyled = styled(UspBullets, {\r\n ...transition({ property: 'all', duration: 150 }),\r\n padding: {\r\n x: pixelsToUnit(5),\r\n bottom: pixelsToUnit(5),\r\n },\r\n margin: {\r\n xy: 0,\r\n },\r\n});\r\n\r\nconst CartIcon = styled(Icon, {\r\n width: pixelsToUnit(19.3),\r\n height: pixelsToUnit(18),\r\n [minMediumMediaQuery]: {\r\n marginRight: pixelsToUnit(10),\r\n },\r\n});\r\n\r\nconst CrossIcon = styled(Cross, {\r\n marginLeft: pixelsToUnit(5),\r\n height: '1rem',\r\n color: 'red',\r\n});\r\n\r\nconst actionStyle = styled({\r\n fontSize: theta,\r\n borderRadius: 0,\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n ...transition({ property: ['opacity', 'background'], duration: '1s' }),\r\n});\r\n\r\nconst ViewProduct = actionStyle(Button);\r\nconst AddCart = actionStyle(AddToCart);\r\n\r\nconst ImageStyled = styled(Image, {\r\n mixBlendMode: 'multiply',\r\n ...transition({ property: 'all', duration: 200 }),\r\n});\r\n\r\nconst HighlightImage = styled.div({\r\n color: (theme) => theme.campaignBackgroundColor,\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n zIndex: 3,\r\n height: '100%',\r\n width: '100%',\r\n});\r\n\r\nconst LowerWrapper = styled.div({\r\n backgroundColor: (theme) => theme.cardBackgroundColor,\r\n position: 'absolute',\r\n bottom: 0,\r\n width: '100%',\r\n height: '95px',\r\n});\r\n\r\nexport const PromotionItemTitle = styled.div({\r\n color: 'white',\r\n backgroundColor: (theme) => theme.campaignTextProductcard,\r\n maxWidth: pixelsToUnit(90),\r\n minWidth: pixelsToUnit(60),\r\n width: '100%',\r\n fontSize: pixelsToUnit(8),\r\n marginBottom: pixelsToUnit(1),\r\n textTransform: 'uppercase',\r\n padding: { xy: pixelsToUnit(2) },\r\n textAlign: 'center',\r\n});\r\nexport const PromotionTitle = styled(PromotionItemTitle, {\r\n cursor: 'default',\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { pixelsToUnit } from 'Shared/Style';\r\nimport { StarBlack, StarOutlineBlack, HalfStarBlack } from 'Shared/Icon/Star-Black';\r\n\r\nexport enum Spacing {\r\n Normal,\r\n Medium,\r\n Wide,\r\n}\r\n\r\nexport enum Size {\r\n Micro,\r\n Tiny,\r\n Normal,\r\n Large,\r\n Huge,\r\n}\r\n\r\ntype PropType = {\r\n average: number;\r\n spacing: Spacing;\r\n size: Size;\r\n} & StyledProps;\r\n\r\nfunction getStyles(size: Size, spacing: Spacing) {\r\n let height;\r\n let width;\r\n let marginLeft;\r\n switch (size) {\r\n case Size.Micro:\r\n height = pixelsToUnit(10);\r\n width = pixelsToUnit(10);\r\n break;\r\n case Size.Tiny:\r\n height = pixelsToUnit(12.8);\r\n width = pixelsToUnit(13.8);\r\n break;\r\n case Size.Normal:\r\n height = pixelsToUnit(15);\r\n width = pixelsToUnit(15);\r\n break;\r\n case Size.Large:\r\n height = pixelsToUnit(20);\r\n width = pixelsToUnit(20);\r\n break;\r\n case Size.Huge:\r\n height = pixelsToUnit(24);\r\n width = pixelsToUnit(24);\r\n break;\r\n default:\r\n break;\r\n }\r\n switch (spacing) {\r\n case Spacing.Normal:\r\n marginLeft = pixelsToUnit(5);\r\n break;\r\n case Spacing.Medium:\r\n marginLeft = pixelsToUnit(10);\r\n break;\r\n case Spacing.Wide:\r\n marginLeft = pixelsToUnit(15);\r\n break;\r\n default:\r\n break;\r\n }\r\n return {\r\n height,\r\n width,\r\n ':not(:first-child)': {\r\n marginLeft,\r\n },\r\n };\r\n}\r\n\r\nexport default styled((props: PropType) => {\r\n const RATINGS = [1, 2, 3, 4, 5];\r\n const floatPart = Number(props.average - Math.trunc(props.average)).toFixed(1);\r\n const parsedFloat = parseFloat(floatPart);\r\n const starStyles = getStyles(props.size, props.spacing);\r\n return (\r\n \r\n {RATINGS.map((rating) => {\r\n if (rating <= props.average) {\r\n return ;\r\n } else if (rating <= Math.ceil(props.average)) {\r\n if (parsedFloat < 0.4) {\r\n return ;\r\n } else if (parsedFloat < 0.8) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n } else {\r\n return ;\r\n }\r\n })}\r\n \r\n );\r\n});\r\n\r\nconst Base = styled.div({\r\n whiteSpace: 'nowrap',\r\n});\r\n","import factory from './icon';\r\nimport StarSvg from './glyphs/star-black.svg';\r\nimport StarOutlineSvg from './glyphs/star-outline-black.svg';\r\nimport StarHalfSvg from './glyphs/star-half-black.svg';\r\n\r\nexport const StarBlack = factory(StarSvg);\r\nexport const StarOutlineBlack = factory(StarOutlineSvg);\r\nexport const HalfStarBlack = factory(StarHalfSvg);\r\n","var React = require('react');\n\nfunction StarBlack (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop-PDP-Copy\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\",\"transform\":\"translate(-774 -425)\"},React.createElement(\"g\",{\"id\":\"Product-Info\",\"transform\":\"translate(744 208)\",\"fill\":\"#000\"},React.createElement(\"g\",{\"id\":\"Recensioner\",\"transform\":\"translate(30 217)\"},React.createElement(\"g\",{\"id\":\"star60\"},React.createElement(\"path\",{\"d\":\"M19.968 7.374c0-.293-.223-.476-.67-.547l-6.015-.87L10.587.54C10.436.214 10.24.05 10 .05s-.435.163-.587.489L6.717 5.958l-6.014.869c-.448.071-.671.254-.671.547 0 .167.1.358.3.572l4.36 4.215-1.03 5.954c-.016.111-.024.19-.024.238a.7.7 0 00.126.423c.084.115.21.173.377.173.144 0 .304-.048.48-.143L10 15.996l5.38 2.81a.974.974 0 00.479.143c.16 0 .282-.058.366-.173a.7.7 0 00.125-.423 1.79 1.79 0 00-.012-.238l-1.03-5.954 4.349-4.215c.208-.206.311-.397.311-.572z\",\"id\":\"Shape\",\"fill\":\"#000\"}))))));\n}\n\nStarBlack.defaultProps = {\"width\":\"20\",\"height\":\"19\",\"viewBox\":\"0 0 20 19\"};\n\nmodule.exports = StarBlack;\n\nStarBlack.default = StarBlack;\n","var React = require('react');\n\nfunction StarOutlineBlack (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Desktop-PDP-Copy\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"currentColor\",\"fillRule\":\"currentColor\",\"transform\":\"translate(-774 -425)\",\"opacity\":\".446\"},React.createElement(\"g\",{\"id\":\"Product-Info\",\"transform\":\"translate(744 208)\",\"fill\":\"#000\"},React.createElement(\"g\",{\"id\":\"Recensioner\",\"transform\":\"translate(30 217)\"},React.createElement(\"g\",{\"id\":\"star61\"},React.createElement(\"path\",{\"d\":\"M19.968 7.374c0-.293-.223-.476-.67-.547l-6.015-.87L10.587.54C10.436.214 10.24.05 10 .05s-.435.163-.587.489L6.717 5.958l-6.014.869c-.448.071-.671.254-.671.547 0 .167.1.358.3.572l4.36 4.215-1.03 5.954c-.016.111-.024.19-.024.238a.7.7 0 00.126.423c.084.115.21.173.377.173.144 0 .304-.048.48-.143L10 15.996l5.38 2.81a.974.974 0 00.479.143c.328 0 .491-.198.491-.595 0-.104-.004-.183-.012-.239l-1.03-5.953 4.35-4.216c.207-.206.31-.397.31-.572zm-6.314 4.252l.863 5.013L10 14.269l-4.529 2.37.875-5.013-3.667-3.537 5.057-.738L10 2.8l2.264 4.55 5.057.738-3.667 3.537z\",\"id\":\"Shape\"}))))));\n}\n\nStarOutlineBlack.defaultProps = {\"width\":\"20\",\"height\":\"19\",\"viewBox\":\"0 0 20 19\"};\n\nmodule.exports = StarOutlineBlack;\n\nStarOutlineBlack.default = StarOutlineBlack;\n","var React = require('react');\n\nfunction StarHalfBlack (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"fillRule\":\"evenodd\"},[React.createElement(\"path\",{\"d\":\"M19.968 7.319c0-.292-.223-.473-.67-.544l-6.015-.862L10.587.536C10.436.213 10.24.05 10 .05s-.435.162-.587.485L6.717 5.913l-6.014.862c-.448.071-.671.252-.671.544 0 .166.1.355.3.567l4.36 4.184-1.03 5.909c-.016.11-.024.19-.024.236a.69.69 0 00.126.42c.084.114.21.171.377.171.144 0 .304-.047.48-.141L10 15.875l5.38 2.79a.98.98 0 00.479.141c.328 0 .491-.196.491-.59a1.75 1.75 0 00-.012-.237l-1.03-5.909 4.35-4.183c.207-.205.31-.395.31-.568zm-6.314 4.22l.863 4.975L10 14.162l-4.529 2.352.875-4.976-3.667-3.51 5.057-.733L10 2.781l2.264 4.514 5.057.733-3.667 3.51z\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M10 .051c-.24 0-.435.163-.587.489L6.717 5.958l-6.014.869c-.448.071-.671.254-.671.547 0 .167.1.358.3.572l4.36 4.215-1.03 5.954c-.016.111-.024.19-.024.238a.7.7 0 00.126.423c.084.115.21.173.377.173.144 0 .304-.048.48-.143L10 15.87S10.24.051 10 .051z\",\"key\":1})]));\n}\n\nStarHalfBlack.defaultProps = {\"width\":\"20\",\"height\":\"19\",\"viewBox\":\"0 0 20 19\"};\n\nmodule.exports = StarHalfBlack;\n\nStarHalfBlack.default = StarHalfBlack;\n","var React = require('react');\n\nfunction MdCheckmark (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"M186.301 339.893L96 249.461l-32 30.507L186.301 402 448 140.506 416 110z\",\"fill\":\"#13a970\"}));\n}\n\nMdCheckmark.defaultProps = {\"viewBox\":\"0 0 512 512\"};\n\nmodule.exports = MdCheckmark;\n\nMdCheckmark.default = MdCheckmark;\n","var React = require('react');\n\nfunction RemovePlain (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"id\":\"Page-1\",\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\",\"strokeLinecap\":\"square\"},React.createElement(\"g\",{\"id\":\"Group\",\"transform\":\"translate(2 2)\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\"},[React.createElement(\"path\",{\"d\":\"M10.607 0L0 10.607\",\"id\":\"Line\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M10.607 10.607L0 0\",\"id\":\"Line-Copy\",\"key\":1})])));\n}\n\nRemovePlain.defaultProps = {\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\"};\n\nmodule.exports = RemovePlain;\n\nRemovePlain.default = RemovePlain;\n","import factory from './icon';\r\nimport Svg from './glyphs/information-icon.svg';\r\n\r\nexport default factory(Svg);\r\n","var React = require('react');\n\nfunction InformationIcon (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"style\":{\"textIndent\":\"0\",\"textAlign\":\"start\",\"lineHeight\":\"normal\",\"textTransform\":\"none\",\"blockProgression\":\"tb\",\"-inkscapeFontSpecification\":\"Bitstream Vera Sans\"},\"d\":\"M16 4c-2.197 0-4 1.803-4 4s1.803 4 4 4 4-1.803 4-4-1.803-4-4-4zm0 2c1.116 0 2 .884 2 2s-.884 2-2 2-2-.884-2-2 .884-2 2-2zm-5 7v5h2v5h-2v5h10v-5h-2V13h-8zm2 2h4v10h2v1h-6v-1h2v-9h-2v-1z\",\"overflow\":\"visible\",\"fontFamily\":\"Bitstream Vera Sans\"}));\n}\n\nInformationIcon.defaultProps = {\"viewBox\":\"0 0 32 32\"};\n\nmodule.exports = InformationIcon;\n\nInformationIcon.default = InformationIcon;\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { isIE, Breakpoint } from '@avensia/scope';\r\nimport { epiPropertyValue } from '@avensia/scope-episerver';\r\nimport connect from 'Shared/connect';\r\nimport Card from './ProductCard';\r\nimport CardMobile from './ProductCardMobile';\r\nimport { addToCart } from 'Cart/action-creators';\r\nimport ProductCardType from '../../../Esales/Models/EsalesProductForList.type';\r\nimport {\r\n large,\r\n minMediumMediaQuery,\r\n minHugeMediaQuery,\r\n pixelsToUnit,\r\n minLargeMediaQuery,\r\n minTinyMediaQuery,\r\n minSmallMediaQuery,\r\n minMicroMediaQuery,\r\n} from 'Shared/Style';\r\nimport CurerntPageIsCheckout from 'Checkout/Pages/Checkout/current-page-is-checkout';\r\nimport { addCartItem } from 'Checkout//action-creators';\r\n\r\nexport enum Layout {\r\n Page,\r\n Block,\r\n}\r\n\r\ntype RequiredPropType = {\r\n products: ProductCardType[];\r\n layout?: Layout;\r\n margin?: boolean;\r\n noPlaceholders?: boolean;\r\n};\r\n\r\ntype ConnectStateType = {\r\n isCheckoutPage: boolean;\r\n currentBreakpoint: number;\r\n};\r\n\r\ntype ConnectActionType = {\r\n addToCart: (code: string, quantity: number, ticket: string) => Promise;\r\n addCartItem: (code: string, quantity: number, ticket: string) => any;\r\n};\r\n\r\ntype PropType = RequiredPropType & ConnectStateType & ConnectActionType;\r\n\r\nconst MOBILE_CARD_WIDTH = 145;\r\nconst Base = styled.div({\r\n display: 'flex',\r\n flexFlow: 'row wrap',\r\n justifyContent: 'space-around',\r\n [minTinyMediaQuery]: {\r\n justifyContent: 'space-between',\r\n },\r\n});\r\n\r\nconst PAGE_MICRO_CARDS_PER_ROW = 2;\r\nconst PAGE_TINY_CARDS_PER_ROW = 3;\r\nconst PAGE_SMALL_CARDS_PER_ROW = 4;\r\nconst PAGE_MEDIUM_CARDS_PER_ROW = 5;\r\nconst PAGE_LARGE_CARDS_PER_ROW = 6;\r\nconst PAGE_TINY_GUTTER = 4;\r\nconst PAGE_SMALL_GUTTER = 6;\r\nconst PAGE_MEDIUM_GUTTER = 20;\r\nconst PAGE_LARGE_GUTTER = 12;\r\nconst pageStyled = styled({\r\n marginRight: 0,\r\n marginBottom: large,\r\n flexBasis: '100%',\r\n [minMicroMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_MICRO_CARDS_PER_ROW} - ${PAGE_SMALL_GUTTER}px)`,\r\n },\r\n [minTinyMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_TINY_CARDS_PER_ROW} - ${PAGE_TINY_GUTTER}px)`,\r\n },\r\n [minSmallMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_SMALL_CARDS_PER_ROW} - ${PAGE_SMALL_GUTTER}px)`,\r\n },\r\n [minMediumMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_MEDIUM_CARDS_PER_ROW} - ${PAGE_MEDIUM_GUTTER}px)`,\r\n },\r\n [minLargeMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_LARGE_CARDS_PER_ROW} - ${PAGE_LARGE_GUTTER}px)`,\r\n },\r\n [minHugeMediaQuery]: {\r\n flexBasis: `calc(100% / ${PAGE_LARGE_CARDS_PER_ROW} - ${PAGE_LARGE_GUTTER}px)`,\r\n },\r\n});\r\n\r\nconst BLOCK_MICRO_CARDS_PER_ROW = 2;\r\nconst BLOCK_TINY_CARDS_PER_ROW = 3;\r\nconst BLOCK_SMALL_CARDS_PER_ROW = 4;\r\nconst BLOCK_MEDIUM_CARDS_PER_ROW = 5;\r\nconst BLOCK_LARGE_CARDS_PER_ROW = 6;\r\nconst BLOCK_TINY_GUTTER = 3;\r\nconst BLOCK_SMALL_GUTTER = 6;\r\nconst BLOCK_MEDIUM_GUTTER = 15;\r\nconst BLOCK_LARGE_GUTTER = 20;\r\n\r\nconst blockStyled = styled({\r\n marginRight: 0,\r\n flexBasis: '100%',\r\n [minMicroMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_MICRO_CARDS_PER_ROW} - ${BLOCK_SMALL_GUTTER}px)`,\r\n },\r\n [minTinyMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_TINY_CARDS_PER_ROW} - ${BLOCK_TINY_GUTTER}px)`,\r\n },\r\n [minSmallMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_SMALL_CARDS_PER_ROW} - ${BLOCK_SMALL_GUTTER}px)`,\r\n },\r\n [minMediumMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_MEDIUM_CARDS_PER_ROW} - ${BLOCK_MEDIUM_GUTTER}px)`,\r\n flexGrow: 1,\r\n margin: {\r\n right: pixelsToUnit(BLOCK_MEDIUM_GUTTER),\r\n },\r\n },\r\n [minLargeMediaQuery]: {\r\n flexBasis: `calc(100% / ${BLOCK_LARGE_CARDS_PER_ROW} - ${BLOCK_LARGE_GUTTER}px)`,\r\n marginRight: pixelsToUnit(5),\r\n marginLeft: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst baseStyled = styled({\r\n flexBasis: pixelsToUnit(MOBILE_CARD_WIDTH),\r\n flexGrow: 0,\r\n flexShrink: 0,\r\n minWidth: 0,\r\n});\r\n\r\nconst BaseCard = baseStyled(Card);\r\nconst BaseCardMobile = baseStyled(CardMobile);\r\nconst PageCard = pageStyled(BaseCard);\r\nconst PageCardMobile = pageStyled(BaseCardMobile);\r\nconst BlockCard = blockStyled(BaseCard);\r\nconst BlockCardMobile = blockStyled(BaseCardMobile);\r\n\r\nconst BasePlaceholder = baseStyled(styled.Div, {\r\n margin: {\r\n xy: 0,\r\n },\r\n padding: {\r\n xy: 0,\r\n },\r\n});\r\nconst PagePlaceholder = pageStyled(BasePlaceholder);\r\nconst BlockPlaceholder = blockStyled(BasePlaceholder);\r\n\r\nclass List extends React.PureComponent {\r\n addToCart = async (code: string, ticket: string) => {\r\n try {\r\n const result = this.props.isCheckoutPage\r\n ? this.props.addCartItem(code, 1, ticket)\r\n : await this.props.addToCart(code, 1, ticket);\r\n return result;\r\n } catch (e) {\r\n console.error('Add item to cart error', e);\r\n return Promise.reject(null);\r\n }\r\n };\r\n\r\n render() {\r\n const isMobile = this.props.currentBreakpoint < Breakpoint.Medium;\r\n const ProductCard = this.props.layout === Layout.Block ? BlockCard : PageCard;\r\n const ProductCardMobile = this.props.layout === Layout.Block ? BlockCardMobile : PageCardMobile;\r\n const Placeholder = this.props.layout === Layout.Block ? BlockPlaceholder : PagePlaceholder;\r\n const ieBlockCardStyle = {\r\n [minMediumMediaQuery]: {\r\n flexBasis: 'auto',\r\n width: `calc(100% / ${BLOCK_LARGE_CARDS_PER_ROW})`,\r\n },\r\n };\r\n const desktopCardStyle = {\r\n marginBottom: pixelsToUnit(30),\r\n marginRight: this.props.margin ? 5 : 0,\r\n };\r\n\r\n const mobileCardStyle = {\r\n margin: { x: 0, y: pixelsToUnit(5), right: this.props.margin ? 5 : 0 },\r\n };\r\n\r\n return (\r\n \r\n {this.props.products.map((product, i) => {\r\n const code = epiPropertyValue(product.variation.code);\r\n return (\r\n \r\n {isMobile ? (\r\n this.addToCart(code, product.ticket)}\r\n product={product}\r\n />\r\n ) : (\r\n this.addToCart(code, product.ticket)}\r\n product={product}\r\n />\r\n )}\r\n \r\n );\r\n })}\r\n {!this.props.noPlaceholders &&\r\n new Array(5)\r\n .fill(0)\r\n .map((elem, index) => (\r\n \r\n ))}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default styled(\r\n connect(\r\n (state): ConnectStateType => ({\r\n isCheckoutPage: CurerntPageIsCheckout(state.currentPage),\r\n currentBreakpoint: state.currentBreakpoint,\r\n }),\r\n (dispatch): ConnectActionType => ({\r\n addToCart(code: string, quantity: number, ticket: string) {\r\n return dispatch(addToCart(code, quantity, ticket, 'Produktlista'));\r\n },\r\n addCartItem(code: string, quantity: number, ticket: string) {\r\n return dispatch(addCartItem(code, quantity, ticket, 'Kassakampanjer'));\r\n },\r\n }),\r\n )(List),\r\n);\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { StyleOrStyleArray, Style } from '@glitz/type';\r\nimport Link from 'Shared/Link';\r\nimport connect from 'Shared/connect';\r\nimport { translate } from '@avensia/scope';\r\nimport { epiPropertyValue } from '@avensia/scope-episerver';\r\nimport Image, { Ratio as ImageRatio, Preset as ImagePreset } from 'Shared/Image/Ratio';\r\nimport UspBullets from './../ProductDetails/UspBullets';\r\nimport { theta, epsilon, pixelsToUnit, zeta, milli, white } from 'Shared/Style';\r\nimport Button, { Appearance as ButtonAppearance, Variant as ButtonVariant } from 'Shared/Button';\r\nimport Icon from 'Shared/Icon/Cart';\r\nimport IconShoppingBag from 'Shared/Icon/ShoppingBag';\r\nimport InfoIcon from 'Shared/Icon/Info';\r\nimport { formatTitleCase } from 'Shared/string-format';\r\nimport AddToCart from 'Product/ProductAddToCart';\r\nimport AverageRatings, { Spacing, Size } from 'Product/ProductDetails/AverageRating';\r\nimport Price, { Type as PriceType } from 'Pricing/Price';\r\nimport { NewBadge, DiscountBadge, DiscountTriBadge } from './Badge';\r\nimport { prepareVariationName } from 'Shared/variation-helper';\r\nimport { Check } from 'Shared/Icon/Check-Thin';\r\nimport Cross from 'Shared/Icon/RemovePlain';\r\nimport EsalesProductForListType from '../../../Esales/Models/EsalesProductForList.type';\r\nimport AverageRatingsBlack from 'Product/ProductDetails/AverageRatingBlack';\r\nimport { PromotionTitle, PromotionItemTitle } from 'Product/ProductCard/ProductCard';\r\n\r\ntype ConnectStateType = {\r\n theme: string;\r\n};\r\n\r\ntype RequiredPropType = {\r\n product: EsalesProductForListType;\r\n addToCart: () => Promise;\r\n};\r\n\r\ntype PropType = StyledProps & RequiredPropType & ConnectStateType;\r\n\r\nclass ProductCardMobile extends React.Component {\r\n render() {\r\n const {\r\n averageRating: productRatings = 0,\r\n imageUrls,\r\n price,\r\n hasMultipleVariants = false,\r\n hasPromotion = false,\r\n hasDiscount = false,\r\n isNew: isProductNew = false,\r\n variation: { displayName },\r\n url: productUrl = '',\r\n bulletPoints = [],\r\n inStock,\r\n displayTagDesigner,\r\n ticket: productTicket,\r\n displayHighlightImage,\r\n highlightImageUrl,\r\n whiteHighlightText,\r\n hideProductInfo,\r\n promotions,\r\n } = this.props.product;\r\n const images = imageUrls || [];\r\n const productImage = images.length > 0 ? images[0] : '';\r\n const productName = formatTitleCase(prepareVariationName(epiPropertyValue(displayName)).trim());\r\n const { current: currentPrice, original: originalPrice, currency, discountPercentage } = price;\r\n const isPriceDiscounted = currentPrice < originalPrice;\r\n const currentTheme = this.props.theme;\r\n const hasBulletpoints = bulletPoints && bulletPoints.length > 0;\r\n const IsVxnSite =\r\n !currentTheme.startsWith('dog') &&\r\n !currentTheme.startsWith('cli') &&\r\n !currentTheme.startsWith('lac') &&\r\n !currentTheme.startsWith('party');\r\n const ActionButtonIcon =\r\n hasMultipleVariants || displayTagDesigner ? (\r\n \r\n ) : inStock ? (\r\n IsVxnSite ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n );\r\n\r\n const imageWithPaddingStyle: Style = {\r\n paddingTop: pixelsToUnit(10),\r\n };\r\n\r\n const PromotionNode = (\r\n \r\n {translate('/Product/Badge/Campaign')}\r\n {promotions.map((promotion, i) => {\r\n if (i < 4) {\r\n return (\r\n \r\n {promotion.promotionName}\r\n \r\n );\r\n }\r\n })}\r\n \r\n );\r\n\r\n return (\r\n \r\n {hasPromotion && PromotionNode}\r\n {displayHighlightImage && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {hasDiscount ? (\r\n IsVxnSite ? (\r\n {`-${discountPercentage}%`}\r\n ) : (\r\n {`-${discountPercentage}%`}\r\n )\r\n ) : (\r\n isProductNew && {`${translate('/Product/Badge/New')}!`}\r\n )}\r\n \r\n \r\n {!!productRatings ? (\r\n !currentTheme.startsWith('dog') &&\r\n !currentTheme.startsWith('cli') &&\r\n !currentTheme.startsWith('lac') ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n \r\n\r\n \r\n {productName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isPriceDiscounted && (\r\n \r\n )}\r\n \r\n \r\n {inStock ? (\r\n \r\n {translate('/Product/InStock')}\r\n \r\n \r\n ) : (\r\n \r\n {translate('/Product/OutOfStock')}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {ActionButtonIcon}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\nexport default styled(\r\n connect(\r\n (state): ConnectStateType => ({\r\n theme: state.currentTheme,\r\n }),\r\n )(ProductCardMobile),\r\n);\r\n\r\nconst mobileActionButtonStyle: StyleOrStyleArray = {\r\n backgroundColor: (theme) => theme.buyButtonProductcardMobile,\r\n width: '2.5rem',\r\n height: '2.5rem',\r\n minWidth: '2.5rem',\r\n minHeight: '2.5rem',\r\n borderRadius: '100%',\r\n marginRight: '0.2rem',\r\n marginBottom: '0.2rem',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n zIndex: 3,\r\n lineHeight: '2.1rem',\r\n};\r\n\r\nconst Base = styled.div({\r\n boxShadow: (theme) => `0 0.2rem 1rem 0 rgba(${theme.shadowColor}, 0.2)`,\r\n display: 'flex',\r\n backgroundColor: (theme) => theme.cardBackgroundColor,\r\n flexDirection: 'column',\r\n position: 'relative',\r\n textAlign: 'center',\r\n});\r\n\r\nconst HighlightImageWrapper = styled.div({\r\n color: (theme) => theme.campaignBackgroundColor,\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n zIndex: 3,\r\n height: '100%',\r\n width: '100%',\r\n});\r\n\r\nconst HighlightImage = styled.img({\r\n height: '100%',\r\n width: 'auto',\r\n objectFit: 'cover',\r\n});\r\n\r\nconst Body = styled(Link, {\r\n color: (theme) => theme.textColor,\r\n});\r\n\r\nconst Wrapper = styled.div({\r\n position: 'relative',\r\n});\r\n\r\nconst ImageStyled = styled(Image, {\r\n mixBlendMode: 'multiply',\r\n});\r\n\r\nconst RatingsContainer = styled.div({\r\n marginTop: pixelsToUnit(5),\r\n});\r\n\r\nconst Ratings = styled(AverageRatings, {});\r\n\r\nconst RatingsNone = styled(Ratings, {\r\n opacity: 0.3,\r\n});\r\n\r\nconst NameWrapper = styled.div({\r\n height: '2.4rem',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst MobileBulletWrap = styled.div({\r\n height: '5rem',\r\n});\r\n\r\nconst Name = styled.div({\r\n position: 'relative',\r\n textTransform: 'uppercase',\r\n fontWeight: 'bold',\r\n fontSize: zeta,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n WebkitLineClamp: 2,\r\n marginTop: pixelsToUnit(3),\r\n display: '-webkit-box',\r\n WebkitBoxOrient: 'vertical',\r\n});\r\n\r\nconst ButtonContainer = styled.div({\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n paddingLeft: pixelsToUnit(5),\r\n});\r\n\r\nconst ButtonLeftContainer = styled.div({\r\n maxWidth: '70%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n height: '2.2rem',\r\n alignSelf: 'center',\r\n});\r\n\r\nconst Prices = styled.div({\r\n display: 'flex',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n justifyContent: 'flex-start',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst CurrentPrice = styled(Price, {\r\n lineHeight: '1rem',\r\n fontSize: epsilon,\r\n color: (theme) => theme.textColor,\r\n marginRight: pixelsToUnit(3),\r\n});\r\n\r\nconst OldPrice = styled(Price, {\r\n fontSize: milli,\r\n paddingTop: '0.15rem',\r\n});\r\n\r\nconst StockPlaceholder = styled.div({\r\n lineHeight: '0.9rem',\r\n height: pixelsToUnit(10),\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst StockStatus = styled.span({\r\n fontSize: pixelsToUnit(11),\r\n letterSpacing: pixelsToUnit(0.3),\r\n lineHeight: pixelsToUnit(10),\r\n});\r\n\r\nconst CheckIcon = styled(Check, {\r\n marginRight: pixelsToUnit(5),\r\n height: '1rem',\r\n color: (theme) => theme.buttonTextColor,\r\n});\r\n\r\nconst InfoIconStyled = styled(InfoIcon, {\r\n fontSize: '2rem',\r\n height: 'unset',\r\n color: (theme) => theme.buttonTextColor,\r\n});\r\n\r\nconst CartIcon = styled(Icon, {\r\n width: pixelsToUnit(19.3),\r\n height: pixelsToUnit(18),\r\n});\r\n\r\nconst ShoppingBagIcon = styled(IconShoppingBag, {});\r\n\r\nconst CrossNoStock = styled(Cross, {\r\n marginLeft: pixelsToUnit(5),\r\n marginTop: pixelsToUnit(3),\r\n fontSize: '2rem',\r\n color: (theme) => theme.buttonTextColor,\r\n});\r\n\r\nconst CrossIcon = styled(Cross, {\r\n marginLeft: pixelsToUnit(5),\r\n height: '1.3rem',\r\n color: 'red',\r\n});\r\n\r\nconst bulletListItemStyle: StyleOrStyleArray = {\r\n fontSize: '0.7rem',\r\n marginLeft: '0.2rem',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n};\r\n\r\nconst UspBulletsStyled = styled(UspBullets, {\r\n padding: {\r\n x: pixelsToUnit(5),\r\n bottom: pixelsToUnit(5),\r\n },\r\n margin: {\r\n xy: 0,\r\n },\r\n});\r\n\r\nconst PromotionLink = styled(Link, {\r\n color: white,\r\n marginBottom: pixelsToUnit(10),\r\n});\r\n\r\nconst actionStyle = styled({\r\n fontSize: theta,\r\n borderRadius: '0.15rem',\r\n padding: {\r\n x: pixelsToUnit(5),\r\n },\r\n});\r\n\r\nconst ViewProduct = actionStyle(Button);\r\nconst AddCart = actionStyle(AddToCart);\r\n\r\ntype ActionPropType = {\r\n hasVariants: boolean;\r\n productUrl: string;\r\n isInStock: boolean;\r\n children: React.ReactNode;\r\n addCart: () => Promise;\r\n displayTagDesigner: boolean;\r\n};\r\n\r\nconst Action = styled((props: ActionPropType & StyledProps) => {\r\n return props.hasVariants || props.displayTagDesigner ? (\r\n \r\n {props.children}\r\n \r\n ) : (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n","/**\r\n * @ComponentFor ProductListBlockViewModel\r\n */\r\nimport React from 'react';\r\nimport { styled, StyledProps, applyClassName } from '@glitz/react';\r\nimport { EpiProperty, epiPropertyValue } from '@avensia/scope-episerver';\r\nimport Products, { Layout } from 'Product/ProductCard/List';\r\nimport padStyled from 'Shared/Blocks/PaddedBlock';\r\nimport { delta, minMediumMediaQuery, pixelsToUnit, beta, large, thin, truncate, kappa } from 'Shared/Style';\r\nimport ProductListBlockViewModelType from './ProductListBlockViewModel.type';\r\nimport Link from 'Shared/Link';\r\nimport { BOX_ITEM_CLASSNAME } from 'Shared/BoxLayout';\r\nimport { Style } from '@glitz/type';\r\n\r\ntype PropType = ProductListBlockViewModelType & StyledProps;\r\n\r\nconst Header = styled.div({\r\n marginBottom: large,\r\n position: 'relative',\r\n textAlign: 'center',\r\n [minMediumMediaQuery]: {\r\n marginBottom: pixelsToUnit(10),\r\n display: 'flex',\r\n },\r\n});\r\n\r\nconst LinkStyled = styled(Link, {\r\n color: (theme) => theme.textColor,\r\n display: 'inline-block',\r\n letterSpacing: pixelsToUnit(0.5),\r\n maxWidth: '100%',\r\n textTransform: 'uppercase',\r\n position: 'static',\r\n [minMediumMediaQuery]: {\r\n maxWidth: '25%',\r\n fontSize: kappa,\r\n },\r\n ':hover': {\r\n borderBottom: {\r\n width: thin,\r\n color: (theme) => theme.textColor,\r\n style: 'solid',\r\n },\r\n },\r\n ...truncate(),\r\n});\r\n\r\nconst Title = styled(\r\n applyClassName(({ compose, ...restProps }: React.HTMLProps & StyledProps) => (\r\n \r\n )),\r\n {\r\n fontSize: delta,\r\n fontWeight: 'bold',\r\n letterSpacing: pixelsToUnit(1.9),\r\n lineHeight: 'normal',\r\n marginBottom: pixelsToUnit(25),\r\n textAlign: 'center',\r\n textTransform: 'uppercase',\r\n [minMediumMediaQuery]: {\r\n fontSize: beta,\r\n fontWeight: 'normal',\r\n letterSpacing: pixelsToUnit(3),\r\n marginBottom: pixelsToUnit(51),\r\n },\r\n },\r\n);\r\n\r\nconst HeaderTitle = styled(Title, {\r\n marginBottom: 0,\r\n [minMediumMediaQuery]: {\r\n marginBottom: 0,\r\n },\r\n});\r\n\r\nconst HeaderTitleWrapper = styled.div({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n width: '100%',\r\n});\r\n\r\nconst LinkWrapper = styled.div({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n marginBottom: pixelsToUnit(5),\r\n [minMediumMediaQuery]: {\r\n justifyContent: 'flex-end',\r\n paddingRight: pixelsToUnit(10),\r\n marginBottom: pixelsToUnit(15),\r\n },\r\n});\r\n\r\nconst ProductsBlock = padStyled((props: PropType) => {\r\n const headerUrl = epiPropertyValue(props.block.linkUrl);\r\n const horizontalScrollMobile = epiPropertyValue(props.block.horizontalScrollMobile);\r\n const scrollStyle: Style = {\r\n overflow: 'auto',\r\n flexWrap: 'nowrap',\r\n justifyContent: 'left',\r\n padding: { xy: 15 },\r\n margin: { x: -15 },\r\n [minMediumMediaQuery]: {\r\n overflow: 'unset',\r\n flexWrap: 'unset',\r\n justifyContent: 'unset',\r\n padding: 0,\r\n margin: 0,\r\n },\r\n };\r\n return (\r\n \r\n {!!headerUrl ? (\r\n <>\r\n \r\n \r\n }\r\n for={props.block.linkText}\r\n />\r\n \r\n >\r\n ) : (\r\n \r\n )}\r\n \r\n \r\n );\r\n});\r\n\r\nexport default ProductsBlock;\r\n"],"sourceRoot":""}