{"version":3,"file":"chunk.394.19237b94bace623e8171.645e1beb.js","mappings":"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","sources":["webpack:///../jarvis/app/assets/javascripts/core/utils/humanize.ts","webpack:///../jarvis/app/assets/javascripts/site/VControllers/components/Rating/components/RatingStar/index.tsx","webpack:///../jarvis/app/assets/javascripts/site/VControllers/components/Rating/index.tsx","webpack:///../jarvis/app/assets/javascripts/site/VControllers/Products/HeaderInfo/constants.ts","webpack:///../jarvis/app/assets/javascripts/site/VControllers/Products/HeaderInfo/components/Details/index.tsx"],"sourcesContent":["export function formatPrice(price, cents = false) {\n return `${(cents ? price / 100 : price).toLocaleString('ru-RU')} Р`;\n}\nexport function formatAmount(amount, forms = ['день', 'дня', 'дней']) {\n return [amount, pluralize(amount, forms)].join(' ');\n}\nexport function percentFrom(dividend, divider) {\n const res = (dividend / divider * 100);\n return res ? `${res.toFixed(2)}%` : '—';\n}\nexport function truncateString(input, limit) {\n if (input.length <= limit)\n return input;\n return input.slice(0, limit) + '...';\n}\nfunction pluralize(n, [singular, genitiveSingular, genitivePlural]) {\n n = Math.abs(n); // Для обработки отрицательных чисел\n if (n % 10 === 1 && n % 100 !== 11) {\n return singular;\n }\n else if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)) {\n return genitiveSingular;\n }\n else {\n return genitivePlural;\n }\n}\n","import { h, Component } from 'preact';\nimport { uuidV4 } from 'core/utils/uuid';\nexport class RatingStar extends Component {\n render() {\n const { star = 1, firstColor: fc, secondColor: sc } = this.props;\n const gradientId = `rating_star_fill_${uuidV4()}`;\n const offset = star != 0 ? star * 100 : (1 - star) * 100;\n const secondColor = sc !== null && sc !== void 0 ? sc : '#E6E6E6';\n const firstColor = star != 0 ? fc !== null && fc !== void 0 ? fc : '#000' : secondColor;\n return (h(\"svg\", { viewBox: '0 0 22 20', fill: 'none', xmlns: 'http://www.w3.org/2000/svg' },\n h(\"defs\", null,\n h(\"linearGradient\", { id: gradientId },\n h(\"stop\", { offset: `${offset}%`, \"stop-color\": firstColor, \"stop-opacity\": '1' }),\n star != 1 && (h(\"stop\", { offset: '0%', \"stop-color\": secondColor, \"stop-opacity\": '1' })))),\n h(\"path\", { d: 'M11.0247 16.5836L4.54454 20L5.78214 12.7639L0.539587 7.63932L7.78462 6.58359L11.0247 0L14.2648 6.58359L21.5098 7.63932L16.2673 12.7639L17.5049 20L11.0247 16.5836Z', fill: `url(#${gradientId})` })));\n }\n}\n","import { h, Component } from 'preact';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { RatingStar } from './components/RatingStar';\nexport class Rating extends Component {\n render() {\n const { value, reviewsCount, size = 'm', className = '', starsClassName = '', firstColor, secondColor } = this.props;\n const fullStars = Math.floor(value);\n const emptyStars = 4 - fullStars;\n const partStar = value - fullStars;\n return (h(\"div\", { className: htmlClassNames(['b-StarRatingV3', `__size_${size}`, className]) },\n h(\"div\", { className: htmlClassNames(['b-StarRatingV3_stars', starsClassName]), \"data-count\": value },\n fullStars > 0 && [...Array(fullStars)].map(() => (h(\"div\", { className: 'b-StarRatingV3_item' },\n h(RatingStar, { firstColor: firstColor, secondColor: secondColor })))),\n fullStars < 5 && (h(\"div\", { className: 'b-StarRatingV3_item' },\n h(RatingStar, { star: partStar, firstColor: firstColor, secondColor: secondColor }))),\n emptyStars > 0 && [...Array(emptyStars)].map(() => (h(\"div\", { className: 'b-StarRatingV3_item' },\n h(RatingStar, { star: 0, firstColor: firstColor, secondColor: secondColor }))))),\n h(\"div\", { className: 'b-StarRatingV3_value' }, value.toFixed(1)),\n reviewsCount && (h(\"div\", { className: 'b-StarRatingV3_name' }, reviewsCount))));\n }\n}\n","export const preferredDetails = ['Цвет', 'Размер', 'Материал'];\n","import { Component } from 'preact';\nimport { buildEventName, HIDE_PREVIEW_EVENT, SHOW_PREVIEW_EVENT } from 'site/VControllers/Products/ProductVariants';\nimport { formatAmount } from 'core/utils/humanize';\nimport { createScope, getScopedClass } from 'core/services/VDOM';\nimport { Rating } from 'site/VControllers/components/Rating';\nimport { preferredDetails } from '../../constants';\nconst scopeName = 'ProductCard';\nconst h = createScope('ProductCard');\nexport class Details extends Component {\n constructor() {\n super(...arguments);\n this.handleShowPreview = ({ detail: state }) => {\n this.setState({ ...state, shouldRender: true });\n this.props.onShowPreview();\n };\n this.handleHidePreview = () => {\n this.setState({ shouldRender: false });\n this.props.onHidePreview();\n };\n }\n componentWillMount() {\n document.addEventListener(this.buildEventName(SHOW_PREVIEW_EVENT), this.handleShowPreview);\n document.addEventListener(this.buildEventName(HIDE_PREVIEW_EVENT), this.handleHidePreview);\n }\n componentWillUnmount() {\n document.removeEventListener(this.buildEventName(SHOW_PREVIEW_EVENT), this.handleShowPreview);\n document.removeEventListener(this.buildEventName(HIDE_PREVIEW_EVENT), this.handleHidePreview);\n }\n buildEventName(event) {\n return buildEventName(event, this.props.viewType);\n }\n // = render 'products/show/versions/v3/_header_info.slim'\n render() {\n const { details, innerSku, label, isOurChoiceBadge, isNewBadge, averageRating, reviewsCount, shouldRender } = this.state;\n const humanReviewsCountText = formatAmount(reviewsCount, ['отзыв', 'отзыва', 'отзывов']);\n if (!shouldRender)\n return null;\n const showBadgeList = averageRating > 0 || isNewBadge || isOurChoiceBadge;\n return (h(\"div\", { className: 'sb-HeaderInfo_details __variantDetails' },\n h(\"h1\", Object.assign({ className: 'sb-Title' }, { itemprop: 'name' }), label),\n h(\"div\", { className: 'sb-Info __horizontal' },\n h(\"div\", { className: 'sb-Info_item' }, details\n .filter(detail => preferredDetails.includes(detail.name))\n .map(({ value }) => value).join(',')),\n h(\"div\", { className: 'sb-Info_item __sku' },\n h(\"em\", null, \"\\u0410\\u0440\\u0442\\u0438\\u043A\\u0443\\u043B:\"),\n h(\"span\", Object.assign({}, { itemprop: 'sku' }), innerSku))),\n showBadgeList && (h(\"div\", { className: 'sb-BadgeList' },\n isOurChoiceBadge && (h(\"div\", { className: 'b-BadgesOurChoice' })),\n averageRating > 0 && (h(Rating, { value: averageRating, reviewsCount: humanReviewsCountText, className: getScopedClass(scopeName, 'sb-Rating'), firstColor: '#000', secondColor: '#ccc' })),\n isNewBadge && (h(\"div\", { className: 'b-BadgesNew' }))))));\n }\n}\n"],"names":["formatPrice","price","concat","arguments","length","undefined","toLocaleString","formatAmount","amount","n","_ref","_ref2","singular","genitiveSingular","genitivePlural","Math","abs","join","RatingStar","_Component","_inherits","_super","_classCallCheck","apply","key","value","_this$props","this","props","_this$props$star","star","fc","firstColor","sc","secondColor","gradientId","uuidV4","offset","h","viewBox","fill","xmlns","id","d","Component","Rating","reviewsCount","_this$props$size","size","_this$props$className","className","_this$props$starsClas","starsClassName","fullStars","floor","emptyStars","partStar","htmlClassNames","_toConsumableArray","Array","map","toFixed","preferredDetails","createScope","Details","_this","handleShowPreview","state","detail","setState","_objectSpread","shouldRender","onShowPreview","handleHidePreview","onHidePreview","document","addEventListener","buildEventName","SHOW_PREVIEW_EVENT","HIDE_PREVIEW_EVENT","removeEventListener","event","viewType","_this$state","details","innerSku","label","isOurChoiceBadge","isNewBadge","averageRating","humanReviewsCountText","showBadgeList","Object","assign","itemprop","filter","includes","name","getScopedClass"],"sourceRoot":""}