{"version":3,"sources":["webpack:///./Avensia.Common/Features/Shared/Blocks/LatestReviews/components/HorizontalLatestReview.tsx","webpack:///./Avensia.Common/Features/Shared/Blocks/LatestReviews/components/VerticalLatestReview.tsx","webpack:///./Avensia.Common/Features/Shared/Blocks/LatestReviews/index.tsx","webpack:///./Avensia.Common/Features/Product/ProductDetails/AverageRating.tsx","webpack:///./Avensia.Common/Features/Shared/BoxLayout/index.tsx"],"names":["props","Fragment","reviews","length","ListContainer","map","review","ReviewItem","key","id","css","blockStyle","className","Viewport","isCompact","BorderedDiv","Body","to","productUrl","ImageContainer","alt","productTitle","itemProp","preset","productImageUrl","includes","undefined","Tiny","ratio","OneToOne","src","InfoContainer","ProductTitle","lines","fontSize","bgColor","rating","Reviewer","RatingsWrapper","ratingStandardStyles","StyledAverageRatings","average","spacing","Normal","size","AliasName","aliasName","ClampedText","reviewText","Array","fill","elem","index","Placeholder","div","width","marginRight","alignSelf","display","flexFlow","justifyContent","flexDirection","Item","margin","xy","paddingRight","paddingLeft","padding","x","CARD_GUTTER","backgroundColor","theme","cardBackgroundColor","Link","alignItems","paddingBottom","paddingTop","textDecoration","color","textAlign","bottom","position","AverageRating","whiteSpace","marginTop","fontWeight","span","textOverflow","overflow","minWidth","mixBlendMode","ImageWrapper","LeftContent","marginBottom","wordBreak","Container","connect","state","currentBreakpoint","HeaderTitle","title","isVertical","VerticalLatestReview","HorizontalLatestReview","h2","letterSpacing","lineHeight","textTransform","Spacing","Size","floatPart","Number","Math","trunc","toFixed","parsedFloat","parseFloat","starStyles","height","marginLeft","Micro","Large","Huge","Medium","Wide","getStyles","Base","compose","ceil","SPACING_DEFAULT","SPACING_MOBILE","BOX_ITEM_CLASSNAME","fractions","spacingDefaulter","value","isThin","fraction","Column","flexGrow","Block","sort","entities","a","b","render","children","Children","toArray","this","row","allowSorting","Small","entry","element","shift","columns","reduce","current","item","convert","layout","spacingBetweenBlocks","Div","flexWrap","wrap","entity","isColumn","flexBasis","Component","BoxLayout"],"mappings":"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","file":"assets/25.chunk.f00bf3dd6d48042c4761.js","sourcesContent":["import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { lightBlack } from 'Shared/Style/colors';\r\nimport { pseudo } from '@glitz/core';\r\nimport Link from 'Shared/Link';\r\nimport Viewport from 'Shared/Viewport';\r\nimport AverageRating from 'Product/ProductDetails/AverageRating';\r\nimport Image, { Ratio as ImageRatio, Preset as ImagePreset } from 'Shared/Image/Ratio';\r\nimport { Spacing, Size } from 'Product/ProductDetails/AverageRating';\r\nimport {\r\n pixelsToUnit,\r\n minMediumMediaQuery,\r\n minTinyMediaQuery,\r\n minMicroMediaQuery,\r\n minSmallMediaQuery,\r\n sigma,\r\n eta,\r\n milli,\r\n epsilon,\r\n kappa,\r\n theta,\r\n whitelilac,\r\n} from 'Shared/Style';\r\nimport LatestReviewViewModel from '../LatestReviewViewModel.type';\r\nimport ClampedText from 'Shared/ClampedText';\r\n\r\nconst CARD_GUTTER = 25;\r\n\r\ntype PropType = {\r\n reviews: LatestReviewViewModel[];\r\n currentBreakpoint: number;\r\n};\r\n\r\nexport default (props: PropType) => (\r\n \r\n {props.reviews.length > 0 && (\r\n \r\n {props.reviews.map((review) => {\r\n return (\r\n \r\n \r\n {(isCompact: boolean) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {review.productTitle}\r\n \r\n {review.rating > 0 && (\r\n \r\n \r\n \r\n \r\n {review.aliasName}\r\n \r\n )}\r\n \r\n {review.reviewText}\r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n })}\r\n {new Array(5).fill(0).map((elem, index) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nconst ImageContainer = styled.div({\r\n width: '25%',\r\n marginRight: pixelsToUnit(5),\r\n [minMediumMediaQuery]: {\r\n width: '33%',\r\n },\r\n});\r\nconst InfoContainer = styled.div({\r\n alignSelf: 'center',\r\n width: '75%',\r\n [minMediumMediaQuery]: {\r\n width: '66%',\r\n },\r\n});\r\n\r\nconst ListContainer = styled.div({\r\n display: 'flex',\r\n flexFlow: 'row wrap',\r\n justifyContent: 'center',\r\n [minMediumMediaQuery]: {\r\n justifyContent: 'space-around',\r\n },\r\n});\r\n\r\nconst blockStyle = {\r\n width: '100%',\r\n [minSmallMediaQuery]: {\r\n width: '49%',\r\n },\r\n [minMediumMediaQuery]: {\r\n width: '32.9%',\r\n },\r\n};\r\n\r\nconst BorderedDiv = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n});\r\n\r\nconst Item = styled.div({\r\n margin: { xy: pixelsToUnit(2) },\r\n ...pseudo(':nth-child(odd)', {\r\n paddingRight: pixelsToUnit(7),\r\n }),\r\n ...pseudo(':nth-child(even)', {\r\n paddingLeft: pixelsToUnit(7),\r\n }),\r\n [minTinyMediaQuery]: {\r\n ...pseudo(':nth-child(n)', {\r\n padding: {\r\n x: pixelsToUnit(CARD_GUTTER / 2),\r\n },\r\n }),\r\n },\r\n});\r\n\r\nconst Placeholder = styled(Item, {\r\n margin: {\r\n xy: 0,\r\n },\r\n padding: {\r\n xy: 0,\r\n },\r\n});\r\n\r\nconst ReviewItem = styled(Item, {\r\n backgroundColor: (theme) => theme.cardBackgroundColor,\r\n});\r\n\r\nconst Body = styled(Link, {\r\n alignItems: 'stretch',\r\n display: 'flex',\r\n paddingBottom: pixelsToUnit(5),\r\n paddingTop: pixelsToUnit(5),\r\n justifyContent: 'space-between',\r\n textDecoration: 'inherit',\r\n color: 'inherit',\r\n textAlign: 'left',\r\n});\r\n\r\nconst ratingStandardStyles = {\r\n [minMicroMediaQuery]: {\r\n fontSize: eta,\r\n },\r\n [minSmallMediaQuery]: {\r\n fontSize: sigma,\r\n },\r\n [minMediumMediaQuery]: {\r\n fontSize: milli,\r\n bottom: 0,\r\n position: 'static',\r\n textAlign: 'left',\r\n },\r\n};\r\n\r\nconst RatingsWrapper = styled.div({\r\n bottom: pixelsToUnit(-6),\r\n fontSize: pixelsToUnit(9),\r\n width: pixelsToUnit(95),\r\n marginRight: pixelsToUnit(5),\r\n [minMediumMediaQuery]: {\r\n bottom: 0,\r\n position: 'static',\r\n textAlign: 'right',\r\n },\r\n});\r\n\r\nconst StyledAverageRatings = styled(AverageRating, {\r\n whiteSpace: 'nowrap',\r\n});\r\n\r\nconst ProductTitle = styled(ClampedText, {\r\n marginTop: 0,\r\n color: lightBlack,\r\n fontWeight: 800,\r\n});\r\n\r\nconst Reviewer = styled.div({\r\n display: 'flex',\r\n alignItems: 'center',\r\n});\r\n\r\nconst AliasName = styled.span({\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n fontWeight: 'bold',\r\n overflow: 'hidden',\r\n minWidth: pixelsToUnit(40),\r\n});\r\n","import React from 'react';\r\nimport { styled } from '@glitz/react';\r\nimport { lightBlack } from 'Shared/Style/colors';\r\nimport Link from 'Shared/Link';\r\nimport AverageRating from 'Product/ProductDetails/AverageRating';\r\nimport Image, { Ratio as ImageRatio, Preset as ImagePreset } from 'Shared/Image/Ratio';\r\nimport { Spacing, Size } from 'Product/ProductDetails/AverageRating';\r\nimport {\r\n pixelsToUnit,\r\n minMediumMediaQuery,\r\n minSmallMediaQuery,\r\n epsilon,\r\n theta,\r\n kappa,\r\n sigma,\r\n whitelilac,\r\n} from 'Shared/Style';\r\nimport LatestReviewViewModel from '../LatestReviewViewModel.type';\r\nimport { medium, large, huge } from 'Shared/Style/spacing';\r\nimport Viewport from 'Shared/Viewport';\r\nimport ClampedText from 'Shared/ClampedText';\r\n\r\ntype PropType = {\r\n reviews: LatestReviewViewModel[];\r\n};\r\n\r\nexport default (props: PropType) => {\r\n return (\r\n props.reviews.length > 0 && (\r\n \r\n {props.reviews.map(review => {\r\n return (\r\n - \r\n \r\n {(isCompact: boolean) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {review.productTitle}\r\n \r\n {review.rating > 0 && (\r\n \r\n \r\n \r\n \r\n {review.aliasName}\r\n \r\n )}\r\n \r\n {review.reviewText}\r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n
\r\n );\r\n })}\r\n \r\n )\r\n );\r\n};\r\n\r\nconst ListContainer = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n margin: {\r\n x: large,\r\n },\r\n [minMediumMediaQuery]: {\r\n justifyContent: 'space-around',\r\n x: huge,\r\n },\r\n});\r\n\r\nconst BorderedDiv = styled.div({\r\n display: 'flex',\r\n alignItems: 'stretch',\r\n flexDirection: 'column',\r\n});\r\n\r\nconst Item = styled.div({\r\n marginBottom: pixelsToUnit(10),\r\n});\r\n\r\nconst Body = styled(Link, {\r\n backgroundColor: theme => theme.cardBackgroundColor,\r\n padding: { xy: pixelsToUnit(5) },\r\n alignItems: 'stretch',\r\n display: 'flex',\r\n flexFlow: 'row nowrap',\r\n justifyContent: 'center',\r\n textDecoration: 'inherit',\r\n color: 'inherit',\r\n textAlign: 'center',\r\n [minMediumMediaQuery]: {\r\n textAlign: 'left',\r\n },\r\n});\r\n\r\nconst ImageWrapper = styled.div({\r\n width: '20%',\r\n overflow: 'hidden',\r\n});\r\n\r\nconst LeftContent = styled.div({\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n paddingLeft: large,\r\n paddingRight: large,\r\n [minMediumMediaQuery]: {\r\n paddingLeft: huge,\r\n },\r\n paddingBottom: 0,\r\n textDecoration: 'inherit',\r\n color: 'inherit',\r\n textAlign: 'left',\r\n width: '80%',\r\n});\r\n\r\nconst RatingsWrapper = styled.div({\r\n fontSize: pixelsToUnit(9),\r\n width: pixelsToUnit(100),\r\n bottom: 0,\r\n position: 'static',\r\n textAlign: 'right',\r\n});\r\n\r\nconst StyledAverageRatings = styled(AverageRating, {\r\n whiteSpace: 'nowrap',\r\n textAlign: 'left',\r\n});\r\n\r\nconst ProductTitle = styled(ClampedText, {\r\n color: lightBlack,\r\n fontWeight: 800,\r\n wordBreak: 'break-word',\r\n [minMediumMediaQuery]: {\r\n marginTop: medium,\r\n },\r\n});\r\n\r\nconst Reviewer = styled.div({\r\n display: 'flex',\r\n alignItems: 'center',\r\n [minSmallMediaQuery]: {\r\n flexDirection: 'row',\r\n },\r\n});\r\n\r\nconst AliasName = styled.span({\r\n fontWeight: 'bold',\r\n});\r\n","/**\r\n * @ComponentFor LatestReviewsBlockViewModel\r\n */\r\nimport React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport connect from 'Shared/connect';\r\nimport ILatestReviewsBlockViewModel from './LatestReviewsBlockViewModel.type';\r\nimport HorizontalLatestReview from './components/HorizontalLatestReview';\r\nimport VerticalLatestReview from './components/VerticalLatestReview';\r\nimport { BOX_ITEM_CLASSNAME } from 'Shared/BoxLayout';\r\nimport { lightBlack } from 'Shared/Style/colors';\r\nimport { beta, delta } from 'Shared/Style/typography';\r\nimport { pixelsToUnit, minMediumMediaQuery, small, huge } from 'Shared/Style';\r\n\r\ntype ConnectStateType = {\r\n currentBreakpoint: number;\r\n};\r\n\r\nconst LatestReviews = (props: ILatestReviewsBlockViewModel & ConnectStateType & StyledProps) => {\r\n return (\r\n \r\n {props.title}\r\n {props.isVertical ? (\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 currentBreakpoint: state.currentBreakpoint,\r\n }),\r\n )(LatestReviews),\r\n);\r\n\r\nconst Container = styled.div({});\r\n\r\nconst HeaderTitle = styled.h2({\r\n color: lightBlack,\r\n fontSize: delta,\r\n fontWeight: 'bold',\r\n letterSpacing: pixelsToUnit(1.9),\r\n lineHeight: 'normal',\r\n padding: { xy: small },\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 padding: { xy: huge },\r\n },\r\n});\r\n","import React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport { pixelsToUnit } from 'Shared/Style';\r\nimport { Star, StarOutline, HalfStar } from 'Shared/Icon/Star';\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 React from 'react';\r\nimport { styled, StyledProps } from '@glitz/react';\r\nimport connect from '../connect';\r\nimport { Breakpoint } from '@avensia/scope';\r\nimport * as style from '../Style';\r\n\r\nexport const SPACING_DEFAULT = style.pixelsToUnit(25);\r\nexport const SPACING_MOBILE = style.pixelsToUnit(15);\r\nexport const BOX_CLASSNAME = 'purefun-box';\r\nexport const BOX_ITEM_CLASSNAME = 'purefun-box-item';\r\n\r\nconst fractions = {\r\n '1:2': 1 / 2,\r\n '1:3': 1 / 3,\r\n '1:4': 1 / 4,\r\n '2:3': 2 / 3,\r\n '3:4': 3 / 4,\r\n};\r\n\r\nexport type LayoutAliasType = keyof typeof fractions;\r\n\r\ntype LayoutColumnType = LayoutAliasType[] & {\r\n 0: LayoutAliasType;\r\n 1: LayoutAliasType[] & {\r\n 0: LayoutAliasType;\r\n 1: LayoutAliasType;\r\n };\r\n};\r\n\r\nexport type LayoutType = LayoutAliasType | LayoutColumnType;\r\n\r\nfunction spacingDefaulter(value: boolean | string, currentBreakpoint: number) {\r\n return value === true ? (currentBreakpoint > Breakpoint.Tiny ? SPACING_DEFAULT : SPACING_MOBILE) : value;\r\n}\r\n\r\nfunction isThin(fraction: number) {\r\n return fraction <= 1 / 3;\r\n}\r\n\r\nconst Column = styled.div({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n minWidth: 0,\r\n});\r\n\r\nconst Block = styled.div({\r\n flexGrow: 1,\r\n minWidth: 0,\r\n});\r\n\r\ntype BlockEntityType = {\r\n fraction: number;\r\n element: React.ReactNode;\r\n};\r\n\r\ntype ColumnEntityType = {\r\n fraction: number;\r\n columns: BlockEntityType[];\r\n};\r\n\r\nfunction sort(entities: BlockEntityType[]) {\r\n return entities.sort((a, b) => b.fraction - a.fraction);\r\n}\r\n\r\nfunction convert(\r\n row: LayoutType[],\r\n children: React.ReactNode[],\r\n currentBreakpoint: number,\r\n allowSorting?: boolean,\r\n ): (BlockEntityType | ColumnEntityType)[] {\r\n if (currentBreakpoint > Breakpoint.Small) {\r\n return row.map(entry => {\r\n if (typeof entry === 'string') {\r\n return {\r\n fraction: fractions[entry],\r\n element: children.shift(),\r\n };\r\n }\r\n\r\n return {\r\n fraction: fractions[entry[0]],\r\n columns: entry[1].map(entry => ({\r\n fraction: fractions[entry],\r\n element: children.shift(),\r\n })),\r\n };\r\n });\r\n }\r\n\r\n // Flatten all blocks to full or half width\r\n if (currentBreakpoint > Breakpoint.Micro) {\r\n const entities = row.reduce((current, item) => {\r\n if (typeof item === 'string') {\r\n return [\r\n ...current,\r\n {\r\n fraction: isThin(fractions[item]) ? 0.5 : 1,\r\n element: children.shift(),\r\n },\r\n ];\r\n }\r\n\r\n const value = isThin(fractions[item[0]]) ? 0.5 : 1;\r\n return [\r\n ...current,\r\n ...item[1].map(() => ({\r\n fraction: value,\r\n element: children.shift(),\r\n })),\r\n ];\r\n }, []);\r\n\r\n return allowSorting ? sort(entities) : entities;\r\n }\r\n\r\n // Flatten all blocks to full width\r\n const entities = row.reduce(\r\n (current, entry) =>\r\n typeof entry === 'string'\r\n ? [\r\n ...current,\r\n {\r\n fraction: 1,\r\n element: children.shift(),\r\n },\r\n ]\r\n : [\r\n ...current,\r\n ...entry[1].map(() => ({\r\n fraction: 1,\r\n element: children.shift(),\r\n })),\r\n ],\r\n [],\r\n );\r\n\r\n return allowSorting ? sort(entities) : entities;\r\n}\r\n\r\nfunction isColumn(entity: BlockEntityType | ColumnEntityType): entity is ColumnEntityType {\r\n return 'columns' in entity;\r\n}\r\n\r\nfunction wrap(spacingBetweenBlocks: boolean | string, currentBreakpoint: number) {\r\n const spacing = spacingDefaulter(spacingBetweenBlocks, currentBreakpoint);\r\n return (entity: BlockEntityType | ColumnEntityType, index: number): React.ReactNode => {\r\n return isColumn(entity) ? (\r\n \r\n {entity.columns.map(wrap(spacingBetweenBlocks, currentBreakpoint))}\r\n \r\n ) : (\r\n \r\n {entity.element}\r\n \r\n );\r\n };\r\n}\r\n\r\ntype RequiredPropType = {\r\n layout: LayoutType[];\r\n spacingBetweenBlocks?: boolean | string;\r\n allowSorting?: boolean;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n};\r\n\r\ntype ConnectStateType = {\r\n currentBreakpoint: number;\r\n};\r\n\r\ntype PropType = StyledProps & RequiredPropType & ConnectStateType;\r\n\r\nclass BoxLayout extends React.Component {\r\n render() {\r\n const children = React.Children.toArray(this.props.children);\r\n const entities = convert(this.props.layout, children, this.props.currentBreakpoint, this.props.allowSorting);\r\n const spacing = spacingDefaulter(this.props.spacingBetweenBlocks, this.props.currentBreakpoint);\r\n return (\r\n Breakpoint.Small && {\r\n flexWrap: 'nowrap',\r\n }),\r\n }}\r\n className={BOX_CLASSNAME}\r\n >\r\n {entities.map(wrap(this.props.spacingBetweenBlocks, this.props.currentBreakpoint))}\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 currentBreakpoint: state.currentBreakpoint,\r\n }),\r\n )(BoxLayout),\r\n);\r\n"],"sourceRoot":""}