{"version":3,"sources":["webpack:///./node_modules/elc-icons/src/views/StarIcon.tsx","webpack:///./node_modules/elc-rating/src/theme/default-theme.ts","webpack:///./node_modules/elc-rating/src/views/Star.tsx","webpack:///./node_modules/elc-rating/src/views/StarsSelector.tsx","webpack:///./node_modules/elc-rating/src/views/ReviewsNumber.tsx","webpack:///./node_modules/elc-rating/src/views/ReadReviews.tsx","webpack:///./node_modules/elc-rating/src/views/AverageRating.tsx","webpack:///./node_modules/elc-rating/src/views/StarsSimplified.tsx","webpack:///./node_modules/elc-rating/src/views/Rating.tsx","webpack:///./src/exported/product-rating/ProductRatingWrapper.tsx"],"names":["props","className","image","Icon","size","ratingTheme","Colors","primary600","starsWrapperTheme","starTheme","primary200","selectedStarTheme","readReviewsTheme","reviewsTextTheme","StarWrapper","span","ContentSpacing","space8","isDisabled","StarElement","Star","classNames","classnames","selected","starWrapperClassNames","onStarClick","clickHandler","index","onClick","StarsMainWrapper","div","StarsSelector","starsArray","map","_","key","selectedRating","ReviewsWrapper","ReviewsText","StyledReviewsLabel","ReviewsNumber","reviewsNumberClassNames","reviewsNumberLabelClassnames","reviewsNumberLabel","reviewsNumber","ReadReviewsWrapper","space12","ReadBtn","a","attrs","role","tabIndex","StyledText","readReviewsClassName","writeReviewClassName","ReadReviews","firstToWriteReviewLabel","readReviewsLabel","productLink","onReadReviewsClick","onWriteReviewsClick","hideReviewsLabel","handleReviewsEnterKeyPressed","func","event","ReviewsLink","linkProps","reviewsLinkClassNames","href","title","onKeyPress","label","AverageRatingWrapper","AverageRating","averageRating","numberOfStars","StarsSimpleWrapper","Stars","percentageRating","StarsSimplified","starClassNames","RatingWrapper","StarsWrapper","showOverlay","toggleOverlay","this","showReviews","hideStars","showReadReviews","onRatingClick","ratingClassNames","starsWrapperClassnames","starsRatingArray","Array","fill","shouldShowStars","shouldShowAvgRating","onMouseEnter","onMouseLeave","ratingWrapperClassnames","readReviewsClickHandler","config","viewController","initialize","data","isLoaded","translations","hideReviewsNumber","hideReadReviewsLink","onSelectRating","numberOfReviews","selectedRatingIndex","onWriteReviewClick","undefined","displayName"],"mappings":"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","file":"ProductRatingWrapper.d97da00f54e8a4a67951.bundle.js","sourcesContent":["import * as React from 'react';\nimport * as classNames from 'classnames';\nimport { Icon } from './Icon';\n\nexport interface IStarIconProps {\n className?: string;\n}\n\nconst StarIcon = (props: IStarIconProps) => {\n const className = classNames('elc-star-icon', props.className);\n const image = `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' preserveAspectRatio='none'%0Astroke='%23000000' strokeWidth='1px' %3E%3Cpath d='M12 .587l3.668 7.568 8.332 1.151-6.064 5.828 1.48 8.279-7.416-3.967-7.417 3.967 1.481-8.279-6.064-5.828 8.332-1.151z' /%3E%3C/svg%3E\")`;\n\n return ;\n};\n\nexport { StarIcon };\n","import { Colors } from 'elc-base-theme';\n\nexport const ratingTheme = `\n color: ${Colors.primary600};\n line-height: 0;\n font-weight: bold;\n`;\n\nexport const starsWrapperTheme = `\n font-size: 24px;\n font-weight: bold;\n`;\n\nexport const starTheme = `\n background-color: ${Colors.primary200};\n`;\n\nexport const selectedStarTheme = `\n background-color: ${Colors.primary600};\n`;\n\nexport const readReviewsTheme = `\n border-color: ${Colors.primary200};\n`;\n\nexport const reviewsTextTheme = `\n color: ${Colors.primary600};\n`;\n","import * as React from 'react';\nimport * as classnames from 'classnames';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { StarIcon } from 'elc-icons';\nimport { starTheme, selectedStarTheme } from '../theme/default-theme';\nimport { ContentSpacing } from 'elc-base-theme';\n\nexport interface IStar {\n className?: string;\n index?: number;\n selected?: boolean;\n clickHandler?(index: number): void;\n isDisabled?: boolean;\n}\n\nexport interface IStarStyle {\n isDisabled: boolean | undefined;\n}\n\nconst StarWrapper = styled.span`\n display: inline-block;\n margin-right: ${ContentSpacing.space8};\n cursor: ${({ isDisabled }: IStarStyle) => (isDisabled ? 'default' : 'pointer')};\n [dir='rtl'] & {\n margin-right: 0;\n margin-left: ${ContentSpacing.space8};\n }\n`;\n\nconst StarElement = styled(StarIcon)`\n ${starTheme};\n &.elc-star-selected {\n ${selectedStarTheme};\n }\n &:hover {\n stroke-width: ${({ isDisabled }: IStarStyle) => (isDisabled ? '1px' : '2px')};\n }\n`;\n\nexport const Star = observer((props: IStar) => {\n const classNames = classnames('elc-star', 'js-star', props.className, {\n 'elc-star-selected': props.selected\n });\n const starWrapperClassNames = classnames('elc-star-wrapper', 'js-star-wrapper');\n\n const onStarClick = () => {\n if (props.clickHandler && props.index) {\n props.clickHandler(props.index);\n }\n };\n\n return (\n \n \n \n );\n});\n","import * as classnames from 'classnames';\nimport * as React from 'react';\nimport styled from 'styled-components';\nimport { Star } from './Star';\nimport { observer } from 'mobx-react';\n\nexport interface IStarsSelector {\n className?: string;\n starsArray: number[];\n selectedRating: number;\n clickHandler(index: number): void;\n}\n\nconst StarsMainWrapper = styled.div`\n white-space: nowrap;\n`;\n\nexport const StarsSelector = observer((props: IStarsSelector) => {\n const classNames = classnames('elc-stars-selector', 'js-stars-selector', props.className);\n\n return (\n \n {props.starsArray.map((_, index) => (\n index}\n clickHandler={props.clickHandler}\n />\n ))}\n \n );\n});\n","import * as React from 'react';\nimport * as classnames from 'classnames';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { Caption } from 'elc-typography';\nimport { ContentSpacing } from 'elc-base-theme';\nimport { reviewsTextTheme } from '../theme/default-theme';\n\nexport interface IReviews {\n className?: string;\n reviewsNumber: number;\n reviewsNumberLabel?: string;\n}\n\nconst ReviewsWrapper = styled.div`\n display: inline-block;\n vertical-align: middle;\n margin: 0 ${ContentSpacing.space8};\n`;\n\nconst ReviewsText = styled(Caption)`\n ${reviewsTextTheme};\n`;\n\nconst StyledReviewsLabel = styled.span`\n display: none;\n`;\n\nexport const ReviewsNumber = observer((props: IReviews) => {\n const classNames = classnames('elc-rating-reviews', 'js-rating-reviews', props.className);\n const reviewsNumberClassNames = classnames('elc-reviews-number', 'js-reviews-number');\n const reviewsNumberLabelClassnames = classnames(\n 'elc-reviews-number-label',\n 'js-reviews-number-label'\n );\n const { reviewsNumberLabel, reviewsNumber } = props;\n\n return (\n \n \n ({reviewsNumber}\n {reviewsNumberLabel && (\n {` ${reviewsNumberLabel}`}\n )}\n )\n \n \n );\n});\n","import * as React from 'react';\nimport * as classnames from 'classnames';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { readReviewsTheme, reviewsTextTheme } from '../theme/default-theme';\nimport { Caption } from 'elc-typography';\nimport { ContentSpacing } from 'elc-base-theme';\n\nexport interface IReadReviews {\n className?: string;\n readReviewsLabel?: string;\n reviewsNumber: number;\n firstToWriteReviewLabel?: string;\n onReadReviewsClick?(): void;\n onWriteReviewsClick?(): void;\n productLink?: string;\n hideReviewsLabel?: boolean;\n}\n\nexport interface IReviewsLink {\n label?: string;\n className?: string;\n onClick?(): void;\n}\n\nconst ReadReviewsWrapper = styled.div`\n display: inline-block;\n vertical-align: middle;\n padding: 2px ${ContentSpacing.space12};\n margin: 0 ${ContentSpacing.space8};\n border-left-width: 1px;\n border-left-style: solid;\n ${readReviewsTheme};\n [dir='rtl'] & {\n border-right: 1px solid;\n border-left: none;\n }\n`;\n\nconst ReadBtn = styled.a.attrs({\n role: 'button',\n tabIndex: 0\n})`\n cursor: pointer;\n padding: 2px 4px;\n`;\n\nconst StyledText = styled(Caption)`\n display: inline-block;\n text-decoration: underline;\n ${reviewsTextTheme};\n`;\n\nconst readReviewsClassName = classnames('elc-read-reviews-link', 'js-read-reviews-link');\nconst writeReviewClassName = classnames('elc-write-first-review', 'js-write-first-review');\n\nexport const ReadReviews = observer((props: IReadReviews) => {\n const {\n reviewsNumber,\n firstToWriteReviewLabel,\n readReviewsLabel,\n className,\n productLink,\n onReadReviewsClick,\n onWriteReviewsClick,\n hideReviewsLabel\n } = props;\n const classNames = classnames('elc-read-reviews', 'js-read-reviews', className);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleReviewsEnterKeyPressed = (func: any) => (\n event: React.KeyboardEvent\n ) => {\n if (event.key === 'Enter' || event.key === ' ') {\n func();\n }\n };\n\n const ReviewsLink = (linkProps: IReviewsLink) => {\n const reviewsLinkClassNames = classnames(\n 'elc-product-reviews-link',\n 'js-product-reviews-link',\n linkProps.className\n );\n\n return (\n \n {linkProps.label}\n \n );\n };\n\n return (\n \n {hideReviewsLabel ? (\n reviewsNumber === 0 ? (\n \n ) : null\n ) : reviewsNumber > 0 ? (\n onReadReviewsClick ? (\n \n ) : (\n \n {readReviewsLabel}\n \n )\n ) : (\n onWriteReviewsClick && (\n \n )\n )}\n \n );\n});\n","import * as React from 'react';\nimport * as classnames from 'classnames';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { Body1 } from 'elc-typography';\nimport { ContentSpacing } from 'elc-base-theme';\n\nexport interface IAverageRating {\n className?: string;\n averageRating: number;\n numberOfStars: number;\n}\n\nconst AverageRatingWrapper = styled(Body1)`\n display: inline-block;\n vertical-align: middle;\n margin: 0 ${ContentSpacing.space8};\n`;\n\nexport const AverageRating = observer((props: IAverageRating) => {\n const classNames = classnames(\n 'elc-average-rating-text',\n 'js-average-rating-text',\n props.className\n );\n\n return (\n \n {`${props.averageRating}/${props.numberOfStars}`}\n \n );\n});\n","import * as classnames from 'classnames';\nimport * as React from 'react';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { ContentSpacing } from 'elc-base-theme';\n\nexport interface IStarsSimplified {\n percentageRating: number;\n className?: string;\n}\n\nconst StarsSimpleWrapper = styled.div`\n display: inline-block;\n margin-right: ${ContentSpacing.space8};\n [dir='rtl'] & {\n margin-right: 0;\n margin-left: ${ContentSpacing.space8};\n }\n`;\n\nconst Stars = styled.span`\n display: inline-block;\n margin-right: ${ContentSpacing.space8};\n [dir='rtl'] & {\n margin-right: 0;\n margin-left: ${ContentSpacing.space8};\n }\n width: ${(props: IStarsSimplified) => `${props.percentageRating}%`} !important;\n`;\n\nexport const StarsSimplified = observer((props: IStarsSimplified) => {\n const classNames = classnames('elc-stars-simplified', 'js-stars-simplified', props.className);\n const starClassNames = classnames(\n 'elc-stars-simplified-stars',\n 'js-stars-simplified-stars',\n props.className\n );\n\n return (\n \n \n \n );\n});\n","import * as classnames from 'classnames';\nimport * as React from 'react';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { StarsSelector } from './StarsSelector';\nimport { ReviewsNumber } from './ReviewsNumber';\nimport { ReadReviews } from './ReadReviews';\nimport { observable, action } from 'mobx';\nimport { starsWrapperTheme, ratingTheme } from '../theme/default-theme';\nimport { ContentSpacing } from 'elc-base-theme';\nimport { AverageRating } from './AverageRating';\nimport { StarsSimplified } from './StarsSimplified';\n\nexport interface IRating {\n className?: string;\n percentageRating: number;\n reviewsNumber: number;\n selectedRating: number;\n showReviews?: boolean;\n showReadReviews?: boolean;\n isDisabled: boolean;\n readReviewsLabel: string;\n firstToWriteReviewLabel: string;\n numberOfStars: number;\n onRatingClick(numbersOfStars: number): void;\n onReadReviewsClick?(): void;\n onWriteReviewsClick?(): void;\n productLink?: string;\n hideStars?: boolean;\n hideReviewsLabel?: boolean;\n reviewsNumberLabel?: string;\n averageRating: number;\n showSimplifiedStars?: boolean;\n}\n\nconst RatingWrapper = styled.div`\n margin: ${ContentSpacing.space12} 0;\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: center;\n ${ratingTheme};\n`;\n\nconst StarsWrapper = styled.div`\n margin: 0;\n display: inline-block;\n position: relative;\n padding: 0;\n user-select: none;\n ${starsWrapperTheme};\n`;\n\n@observer\nexport class Rating extends React.Component {\n @observable public showOverlay: boolean = false;\n constructor(props: IRating) {\n super(props);\n }\n\n @action\n public toggleOverlay = () => {\n if (!this.props.isDisabled) {\n this.showOverlay = !this.showOverlay;\n }\n };\n\n public render() {\n const {\n numberOfStars,\n isDisabled,\n percentageRating,\n reviewsNumber,\n selectedRating,\n onReadReviewsClick,\n onWriteReviewsClick,\n readReviewsLabel,\n firstToWriteReviewLabel,\n showReviews,\n hideStars,\n showReadReviews,\n onRatingClick,\n hideReviewsLabel,\n reviewsNumberLabel,\n productLink,\n averageRating,\n className\n } = this.props;\n\n const ratingClassNames = classnames('elc-rating', 'js-rating', className);\n const starsWrapperClassnames = classnames('elc-stars-wrapper', {\n 'elc-stars-disabled': isDisabled\n });\n\n const starsRatingArray = [...Array(numberOfStars)].fill(0);\n const shouldShowStars = !!reviewsNumber && !hideStars;\n const shouldShowAvgRating = !!reviewsNumber && !!averageRating;\n\n return (\n \n {shouldShowStars && (\n \n {isDisabled ? (\n \n ) : (\n \n )}\n \n )}\n {shouldShowAvgRating && (\n \n )}\n {shouldShowStars && showReviews && (\n \n )}\n {showReadReviews && (\n \n )}\n \n );\n }\n}\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { observer } from 'mobx-react';\nimport { Rating } from 'elc-rating';\nimport { ProductRatingViewController } from '../../internal/controllers/ProductRatingViewController';\nimport { translate } from 'elc-service';\nimport { PRODUCT_RATING } from '../../internal/constants/DataTestIdAttributes';\nimport { classes } from '../../internal/utils/Classes';\n\nexport interface ITranslation {\n readReviewsLabel: string;\n firstToWriteReviewLabel: string;\n}\n\nexport interface IProductRatingConfig {\n productId: string;\n hideReviewsNumber?: boolean;\n hideReadReviewsLink?: boolean;\n className?: string;\n isDisabled: boolean;\n numberOfStars: number;\n hideStars?: boolean;\n hideReviewsLabel?: boolean;\n percentageRating?: number;\n selectedRating?: number;\n productLink?: string;\n onReadReviewsClick?(): void;\n}\n\nexport interface IProductRating {\n translations?: ITranslation;\n config: IProductRatingConfig;\n viewController: ProductRatingViewController;\n}\n\nconst RatingWrapper = styled.div`\n width: 100%;\n justify-content: flex-end;\n display: flex;\n`;\n\nconst ratingWrapperClassnames = classes('product-rating-wrapper');\n\n@translate(['readReviewsLabel', 'firstToWriteReviewLabel'])\n@observer\nexport class ProductRatingWrapper extends React.Component {\n public static displayName: string;\n\n constructor(props: IProductRating) {\n super(props);\n props.viewController.initialize(props);\n }\n\n private readReviewsClickHandler = async () => {\n if (this.props.config.onReadReviewsClick) {\n this.props.config.onReadReviewsClick();\n } else {\n this.props.viewController.onReadReviewsClick();\n }\n };\n\n public render() {\n const { isLoaded } = this.props.viewController.data;\n if (!isLoaded) {\n return null;\n }\n\n const { readReviewsLabel, firstToWriteReviewLabel } = this.props\n .translations as ITranslation;\n const {\n className,\n isDisabled,\n numberOfStars,\n hideStars,\n hideReviewsLabel,\n productLink,\n hideReviewsNumber,\n hideReadReviewsLink\n } = this.props.config;\n\n const { onSelectRating, data } = this.props.viewController;\n const {\n numberOfReviews,\n selectedRatingIndex,\n percentageRating,\n onWriteReviewClick,\n averageRating\n } = data;\n\n return percentageRating !== undefined ? (\n \n \n \n ) : null;\n }\n}\n\nProductRatingWrapper.displayName = 'ProductRatingWrapper';\n\nexport default ProductRatingWrapper;\n"],"sourceRoot":""}