{"version":3,"sources":["webpack:///../jarvis/app/assets/javascripts/site/VControllers/Products/ProductVariants/components/VariantDetails/index.tsx","webpack:///../jarvis/app/assets/javascripts/site/VControllers/Products/ProductVariants/components/SelectVariantByPhoto/index.tsx","webpack:///../jarvis/app/assets/javascripts/site/VControllers/Products/ProductVariants/utils/getPluralForm.ts","webpack:///../jarvis/app/assets/javascripts/site/VControllers/Products/ProductVariants/components/ProductVariantsWidget/index.tsx"],"names":["h","createScope","VariantDetails","_Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","key","value","details","this","props","className","map","_ref","name","classNames","Env","version","Component","SelectVariantByPhoto","_this","_a","state","shownCount","handleToggleShownCount","setState","documentDispatch","VARIANTS_LIST_STATE_EVENT","shownFull","id","_this2","_this$props","variants","onSelect","onShowPreview","onHidePreview","useSelect","variant","index","isActive","isActiveById","previewClassName","htmlClassNames","isHidden","sold","onMouseOver","onMouseOut","type","title","label","style","backgroundImage","concat","imageThumb","disabled","onClick","href","url","target","isShowMoreButtonActive","get","_this$props2","length","getPluralForm","count","forms","one","few","many","Intl","PluralRules","select","ProductVariantsWidget","initialValue","previewValue","handleSelect","handleShowPreview","handleHidePreview","buildMobileTemplate","size","parsedVariants","hiddenVariantsCount","buildDesktopTemplate","currentVariant","isMobile","_this$state","detailsValue","find","_ref2","_this$props3","showedCount","slice","_this$props4"],"mappings":"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","file":"chunk.68.51c76734cd787abc3850.5fb8b0de.js","sourcesContent":["import { Component } from 'preact';\nimport classNames from 'classnames';\nimport { createScope } from 'core/services/VDOM';\nconst h = createScope('ProductCard');\n// Markup was copied from jarvis/app/views/products/show/_info.slim\nexport class VariantDetails extends Component {\n render() {\n const { details } = this.props;\n return (h(\"div\", { className: 'sb-Info __size_s __mb-0' }, details.map(({ name, value }) => (h(\"div\", { className: classNames('sb-Info_item', { '__overflow_text': Env.version === 'desktop' }) },\n h(\"em\", null,\n name,\n \":\"),\n h(\"span\", null, value))))));\n }\n}\n","import { Component } from 'preact';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nimport { documentDispatch } from 'core/utils/events';\nimport { VARIANTS_LIST_STATE_EVENT } from '../../events';\nimport h from '../../cssScope';\nexport class SelectVariantByPhoto extends Component {\n constructor() {\n var _a;\n super(...arguments);\n this.state = {\n shownCount: (_a = this.props.shownCount) !== null && _a !== void 0 ? _a : null\n };\n this.handleToggleShownCount = () => {\n const { shownCount } = this.state;\n if (this.props.shownCount) {\n this.setState({ shownCount: shownCount ? null : this.props.shownCount });\n documentDispatch(VARIANTS_LIST_STATE_EVENT, { shownFull: !!shownCount });\n }\n };\n }\n get isShowMoreButtonActive() {\n const { type, variants, shownCount } = this.props;\n return type === 'extendable' && shownCount ? shownCount < variants.length : false;\n }\n isActiveById(id) {\n return id === this.props.value;\n }\n render() {\n const { variants, onSelect, onShowPreview, onHidePreview, useSelect } = this.props;\n const { shownCount } = this.state;\n return (h(\"ul\", { className: 'sb-Select' },\n variants.map((variant, index) => {\n const isActive = this.isActiveById(variant.id);\n const previewClassName = htmlClassNames('sb-Preview', { '__isActive': isActive });\n const isHidden = shownCount ? shownCount <= index : false;\n // Buttons wrapped for smooth changing a preview\n return (h(\"li\", { className: htmlClassNames('sb-Select_item', { '__isHidden': isHidden, '__isSold': variant.sold }), key: variant.id, onMouseOver: () => { if (!isActive)\n onShowPreview(variant); }, onMouseOut: () => { if (!isActive)\n onHidePreview(); } }, !useSelect && !isActive ? (h(\"a\", { className: previewClassName, title: variant.label, \"aria-label\": variant.label, style: { backgroundImage: `url(${variant.imageThumb})` }, href: variant.url, target: '_blank' })) : (h(\"button\", { className: previewClassName, type: 'button', title: variant.label, \"aria-label\": variant.label, style: { backgroundImage: `url(${variant.imageThumb})` }, disabled: isActive, onClick: () => onSelect(variant) }))));\n }),\n this.isShowMoreButtonActive && (h(\"button\", { className: 'sb-Select_showMoreButton', type: 'button', onClick: this.handleToggleShownCount }, shownCount ? 'Ещё' : 'Скрыть'))));\n }\n}\n","export function getPluralForm(count) {\n const pluralRules = new Intl.PluralRules('ru-RU');\n const form = pluralRules.select(count);\n const forms = {\n one: 'вариант',\n few: 'варианта',\n many: 'вариантов'\n };\n return forms[form] || forms.many;\n}\n","import { Component } from 'preact';\nimport h from '../../cssScope';\nimport { VariantDetails } from '../VariantDetails';\nimport { SelectVariantByPhoto } from '../SelectVariantByPhoto';\nimport { getPluralForm } from '../../utils/getPluralForm';\nexport default class ProductVariantsWidget extends Component {\n constructor() {\n super(...arguments);\n this.state = {\n value: this.props.initialValue || this.props.variants[0].id,\n previewValue: null\n };\n this.handleSelect = (variant) => {\n this.setState({ value: variant.id });\n this.props.onSelect(variant);\n };\n this.handleShowPreview = (variant) => {\n this.setState({ previewValue: variant.id });\n this.props.onShowPreview(variant);\n };\n this.handleHidePreview = () => {\n this.setState({ previewValue: null });\n this.props.onHidePreview();\n };\n this.buildMobileTemplate = () => {\n // const { details } = this.currentVariant || {}\n const { size, version } = this.props;\n return (h(\"div\", null,\n h(\"div\", { className: 'sb-Variants' },\n version === 'v4' && size === 's' ? null : (h(SelectVariantByPhoto, { value: this.state.value, variants: this.parsedVariants, onSelect: this.handleSelect, onShowPreview: this.handleShowPreview, onHidePreview: this.handleHidePreview, useSelect: this.props.useSelect })),\n this.hiddenVariantsCount > 0 && (h(\"span\", { className: version === 'v4' ? 'sb-flat-HiddenCount' : 'sb-HiddenCount' },\n h(\"a\", { name: 'varinatsAnchor', target: '_blank', href: this.props.variants[0].url + `#varinatsAnchor` },\n \"+\",\n this.hiddenVariantsCount,\n \" \",\n version === 'v4' && getPluralForm(this.hiddenVariantsCount)))))));\n };\n this.buildDesktopTemplate = () => {\n const { type, shownCount } = this.props;\n const { details } = this.currentVariant || {};\n return (h(\"div\", null,\n type !== 'extendable' && details && details.length > 0 && (h(\"div\", { className: 'sb-VariantDetails' },\n h(VariantDetails, { details: details }))),\n h(\"div\", { className: 'sb-Variants' },\n h(SelectVariantByPhoto, { value: this.state.value, variants: this.parsedVariants, onSelect: this.handleSelect, onShowPreview: this.handleShowPreview, onHidePreview: this.handleHidePreview, useSelect: this.props.useSelect, type: type, shownCount: shownCount }),\n this.hiddenVariantsCount > 0 && (h(\"span\", { className: 'sb-HiddenCount' },\n \"+\",\n this.hiddenVariantsCount)))));\n };\n }\n get currentVariant() {\n const { value, previewValue } = this.state;\n const detailsValue = previewValue || value;\n return this.props.variants.find(({ id }) => id === detailsValue);\n }\n get parsedVariants() {\n const { variants, showedCount } = this.props;\n return showedCount ? variants.slice(0, showedCount) : variants;\n }\n get hiddenVariantsCount() {\n const { variants, showedCount } = this.props;\n return showedCount ? variants.length - showedCount : 0;\n }\n get isMobile() {\n return Env.version === 'mobile';\n }\n render() {\n if (this.isMobile)\n return this.buildMobileTemplate();\n return this.buildDesktopTemplate();\n }\n}\n"],"sourceRoot":""}