{"version":3,"file":"static/chunks/8934-333542a972173d1c.js","mappings":"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","sources":["webpack://_N_E/./src/analytics/FullBuyEquipAnalyticsBase.analytics.ts","webpack://_N_E/./src/components/ProductCard/index.js","webpack://_N_E/./src/entities/equipment.js","webpack://_N_E/./src/entities/price.ts","webpack://_N_E/./src/features/work-in-home-ab/components/Description/components/Credit/constants/abnVariants.ts","webpack://_N_E/../../packages/api-domru/src/api-content/v1/shop/items/requestDto.ts"],"sourcesContent":["import { EShopCategory } from '@r1-frontend/api-domru/api-content/v1/shop/items/requestDto';\n\nimport { BaseAnalytics } from '@r1-frontend/analytics/dataLayerPush';\n\ntype TDeliveryType = 'russianPost' | 'serviceEngineerDelivery' | 'serviceEngineerDeliveryAndSetup';\n\nexport interface IBuildFullBuyEquipLabelParams {\n equipmentTitle: string,\n category: string,\n leasing: number,\n deliveryType?: TDeliveryType,\n cost?: number,\n testDrive?: number,\n}\nclass FullBuyEquipAnalyticsBase extends BaseAnalytics {\n category = 'full_buy_equip';\n\n private equipmentCategoryMap: Record = {\n [EShopCategory.Routers]:'router',\n [EShopCategory.YandexStation]: 'yandex-stanciya',\n [EShopCategory.YandexStationLite]: 'yandex-stanciya',\n [EShopCategory.Decoders]: 'tv',\n };\n\n private deliveryLabelMap: Record = {\n russianPost: 'post',\n serviceEngineerDelivery: 'service',\n serviceEngineerDeliveryAndSetup: 'service',\n };\n\n constructor() {\n super();\n }\n\n buildDataLayerLabel(params: IBuildFullBuyEquipLabelParams): string {\n const { equipmentTitle, category: equipmentCategory, leasing, deliveryType, cost, testDrive } = params;\n const purchaseType = leasing > 0 ? `Рассрочка (${leasing} мес.)` : 'В собственность';\n return `delivery:${deliveryType ? this.deliveryLabelMap[deliveryType] : 'not_selected'}|category:${this.equipmentCategoryMap[equipmentCategory] ?? ''}|name:${equipmentTitle}|payment:${purchaseType}${testDrive ? ' в тест-драйв' : ''}|cost:${cost}`;\n }\n\n enterFio(params: IBuildFullBuyEquipLabelParams) {\n const label = this.buildDataLayerLabel(params);\n this.send('enter_fio', label);\n }\n\n enterPhoneNumber(label: string) {\n this.send('enter_phone_number', label);\n }\n\n clickChangeContact(label: string) {\n this.send('click_change_contact', label);\n }\n\n clickChangeAddress(label: string) {\n this.send('click_address_change', label);\n }\n\n choosePurchaseType(label: string) {\n this.send('choose_type_purchase', label);\n }\n\n clickOrderDetails(params: IBuildFullBuyEquipLabelParams) {\n const label = this.buildDataLayerLabel(params);\n this.send('clicked_to_order_detail', label);\n }\n\n clickToBanner(label: string) {\n this.send('clicked_to_baner', label);\n }\n\n clickBurgerButton(label: string) {\n this.send('click_burger_bnt', label);\n }\n\n chooseDeliveryAddress(label: string) {\n this.send('click_choose_delivery_address', label);\n }\n\n contactConfirmSuccess(label: string) {\n this.send('contact_confirm_success', label);\n }\n\n chooseDeliveryAddressSuccess(label: string) {\n this.send('choose_delivery_address_success', label);\n }\n\n clickCreateRequest(label: string) {\n this.send('click_to_create_request', label);\n }\n\n createRequestSuccess(label: string) {\n this.send('create_request_success', label);\n }\n\n createRequestError(label: string) {\n this.send('create_request_error', label);\n }\n\n clickedToOrder(params: IBuildFullBuyEquipLabelParams) {\n const label = this.buildDataLayerLabel(params);\n this.send('clicked_to_order', label);\n }\n\n applicationForm(label: string) {\n this.send('application_form', label);\n }\n}\nconst fullBuyEquipAnalyticsBase = new FullBuyEquipAnalyticsBase();\n\nexport {\n FullBuyEquipAnalyticsBase,\n fullBuyEquipAnalyticsBase,\n};\n\n","import { truncate } from '@r1-frontend/shared/helpers/truncate';\nimport PropTypes from 'prop-types';\nimport React, { memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { connect } from 'react-redux';\n\nimport Card from '~/src/components/Card';\nimport CategoryBlock from '~/src/components/ProductCard/blocks/CategoryBlock';\nimport HeaderBlock from '~/src/components/ProductCard/blocks/HeaderBlock';\nimport ImageBlock from '~/src/components/ProductCard/blocks/ImageBlock';\nimport PurchaseBlock from '~/src/components/ProductCard/blocks/PurchaseBlock';\nimport TitleBlock from '~/src/components/ProductCard/blocks/TitleBlock';\nimport { EPriceOperationTypes } from '~/src/entities/price';\nimport { isCreditAbnEnabled } from '~/src/features/work-in-home-ab/components/Description/components/Credit/constants/abnVariants';\n\nimport { MinPriceTitle, SpecOption } from './styled';\n\nconst DEFAULT_DESCRIPTION = 'Бесплатно доставим и настроим';\nconst SPEC_NAME_SPEED = 'speed';\nconst SPEC_NAME_AREA = 'area';\nconst SPEC_NAME_DEVICES = 'devices';\nconst ROUTERS_CATEGORY = 'routers';\n\nconst ProductCard = (\n {\n city,\n dataTest,\n categoryTitle = '',\n categoryName = '',\n description = DEFAULT_DESCRIPTION,\n image,\n imageWebp,\n labels = [],\n name = '',\n shortName = '',\n orderHandler = () => ({}),\n detailHandler,\n orderText = 'Заказать',\n priceOptions = [],\n route,\n body,\n spec = [],\n withSelect = true,\n backgroundColorData = {},\n isDarkTheme = false,\n baseRoute,\n buttonLink = '',\n setIndexOfSelected,\n isSmallCards = false,\n linkUrl = false,\n },\n) => {\n const [selectedOption, setSelectedOption] = useState(() =>\n isCreditAbnEnabled()\n ? priceOptions.find(option => option.operType === EPriceOperationTypes.Possess)\n : priceOptions[0]);\n\n const [loading, setLoading] = useState({\n orderStatus: false,\n isLoadingOrder: false,\n });\n\n useEffect(() => {\n if (loading.isLoadingOrder === true) {\n orderHandler(selectedOption)\n .then(() => {\n setLoading({ ...loading, isLoadingOrder: false });\n });\n }\n }, [loading]);\n\n const checkSpecs = (specItem) => {\n return specItem.name === SPEC_NAME_SPEED || specItem.name === SPEC_NAME_AREA || specItem.name === SPEC_NAME_DEVICES;\n };\n\n const renderSpecs = useCallback(() => {\n return (\n
\n {spec.map((item, i) => {\n return checkSpecs(item) && \n {item.name === SPEC_NAME_SPEED ? item.title.split(' ')[0] : item.title}\n {item.value}\n ;\n })}\n
\n );\n }, [spec]);\n\n const hasOneOfSpec = spec.filter(checkSpecs).length > 0;\n const isRouters = categoryName === ROUTERS_CATEGORY;\n const descriptionPrepared = (city.hasFreeDeliveryAndInstallation || description !== DEFAULT_DESCRIPTION)\n ? description\n : '';\n\n const openInNewTab = (url) => {\n const newWindow = window.open(url, '_blank', 'noopener,noreferrer');\n if (newWindow) {\n newWindow.opener = null;\n }\n };\n\n const onClickUrl = (url) => {\n return url\n ? () => openInNewTab(url)\n : detailHandler;\n };\n\n const minPriceTitle = useMemo(() => {\n const result = [...priceOptions].sort((a, b) => a.price - b.price)[0]?.price;\n return result ? `от ${result} ₽/мес` : '';\n }, [priceOptions]);\n\n const prepareBody = useMemo(() => {\n if (!body) {\n return descriptionPrepared;\n }\n const regex = new RegExp(']*>(.+)

', 'g');\n const prepared = body.replace(regex, '$1');\n return `

${truncate(prepared, 90)}

`;\n }, [body]);\n\n return (\n \n }\n imageBlock={\n \n }\n categoryBlock={\n !isSmallCards && \n }\n titleBlock={\n \n }\n descriptionBlock={\n !isSmallCards && isRouters && hasOneOfSpec\n ? renderSpecs()\n : isSmallCards\n ? \n {minPriceTitle}\n \n :
\n }\n purchaseBlock={\n !isSmallCards && \n }\n />\n );\n};\n\nProductCard.propTypes = {\n categoryTitle: PropTypes.string,\n categoryName: PropTypes.string,\n name: PropTypes.string,\n orderHandler: PropTypes.func,\n detailHandler: PropTypes.func,\n labels: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.string,\n title: PropTypes.string,\n color: PropTypes.string,\n color_text: PropTypes.string,\n }),\n ),\n priceOptions: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n price: PropTypes.number,\n pricePromo: PropTypes.number,\n type: PropTypes.number,\n value: PropTypes.number,\n }),\n ),\n spec: PropTypes.arrayOf(\n PropTypes.shape({\n asIs: PropTypes.number,\n name: PropTypes.string,\n title: PropTypes.string,\n type: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n }),\n ),\n route: PropTypes.string,\n body: PropTypes.string,\n description: PropTypes.string,\n image: PropTypes.string,\n imageWebp: PropTypes.string,\n orderText: PropTypes.string,\n dataTest: PropTypes.string,\n isDarkTheme: PropTypes.bool,\n backgroundColorData: PropTypes.shape({\n bgImg: PropTypes.string,\n bgCard: PropTypes.string,\n }),\n baseRoute: PropTypes.string,\n linkUrl: PropTypes.string,\n setIndexOfSelected: PropTypes.func,\n};\n\nconst mapState = state => ({\n city: state.city.currentCity,\n});\n\nexport default connect(mapState)(memo(ProductCard));\n","import { getPluralize } from '@r1-frontend/shared/helpers/pluralize';\nimport { monthPluralize } from '@r1-frontend/shared/helpers/pluralize/predifined';\nimport { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\n\nimport { EPriceOperationTypes } from '~/src/entities/price';\nimport { sortFunction } from '~/src/helpers/functions';\n\nexport const convertDevicePrices = (device) => {\n if (!device) {\n return [];\n }\n\n const {\n posessPrice,\n posess_price,\n promo,\n leasing,\n leasingDuration,\n leasingPrice,\n leasing_dur,\n leasing_mon_price,\n leasingDurationSec,\n leasingPriceSec,\n leasing_dur_two,\n leasing_mon_price_two,\n prices,\n } = device;\n\n const convertedPrices = [];\n\n if (Array.isArray(prices) && prices.length > 0) {\n prices.filter(item => item.type === EPriceTypes.Possess)\n .forEach(item => {\n convertedPrices.push({\n type: EPriceTypes.Possess,\n value: item.value,\n valuePromo: promo,\n });\n });\n\n prices.filter(item => item.type === EPriceTypes.Leasing)\n .forEach(item => {\n convertedPrices.push({\n type: EPriceTypes.Leasing,\n value: item.value,\n duration: item.duration,\n });\n });\n } else {\n if (posessPrice || posess_price) {\n convertedPrices.push({\n type: EPriceTypes.Possess,\n value: posessPrice || posess_price,\n valuePromo: promo,\n });\n }\n\n if (Array.isArray(leasing)) {\n leasing.forEach(leasingPriceItem => {\n convertedPrices.push({\n type: EPriceTypes.Leasing,\n value: leasingPriceItem.price,\n duration: leasingPriceItem.duration,\n });\n });\n } else {\n if (leasingDuration && leasingPrice || leasing_dur && leasing_mon_price) {\n convertedPrices.push({\n type: EPriceTypes.Leasing,\n value: leasingPrice || leasing_mon_price,\n duration: leasingDuration || leasing_dur,\n });\n }\n\n if (leasingDurationSec && leasingPriceSec || leasing_dur_two && leasing_mon_price_two) {\n convertedPrices.push({\n type: EPriceTypes.Leasing,\n value: leasingPriceSec || leasing_mon_price_two,\n duration: leasingDurationSec || leasing_dur_two,\n });\n }\n }\n }\n\n return convertedPrices;\n};\n\n/**\n *\n * @param {(import('~/src/entities/price').Price | import('~/src/entities/price').IPriceProps)[] prices}\n * @param {string | null} [domain]\n * @param {boolean} [longLabel]\n * @param {(a: any, b: any) => number} [sort]\n */\nexport const getPriceOptions = (\n prices,\n domain,\n longLabel = false,\n sort = sortFunction,\n) => {\n const options = [];\n let hasNonEmptySortField = false;\n const pluralizeMonths = getPluralize(monthPluralize);\n\n prices\n .filter(item => item.type === EPriceTypes.Leasing)\n .forEach(item => {\n options.push({\n id: item.id,\n value: item.duration,\n label: longLabel\n ? `В рассрочку на ${item.duration} ${pluralizeMonths(item.duration)} - ${item.value} ₽/мес.`\n : `Рассрочка на ${item.duration} мес.`,\n price: item.value,\n pricePromo: item.valuePromo,\n type: EPriceTypes.Leasing,\n operType: EPriceOperationTypes.Leasing,\n sort: item.sort,\n requestId: item.requestId,\n });\n\n if (item.sort) {\n hasNonEmptySortField = true;\n }\n });\n\n prices\n .filter(item => item.type === EPriceTypes.Possess)\n .forEach(item => {\n const priceItem = {\n id: item.id,\n value: 0,\n label: 'Покупка',\n price: item.value,\n pricePromo: item.valuePromo,\n type: EPriceTypes.Possess,\n operType: EPriceOperationTypes.Possess,\n sort: item.sort,\n requestId: item.requestId,\n };\n\n if (item.sort) {\n hasNonEmptySortField = true;\n }\n\n if ('ekat' === domain) {\n options.unshift(priceItem);\n } else {\n options.push(priceItem);\n }\n });\n\n if (hasNonEmptySortField) {\n options.sort(sort);\n }\n\n return options;\n};\n","import { EPriceTypes } from '@r1-frontend/shared/types/EPriceTypes';\n\nimport { sortFunction } from '~/src/helpers/functions';\n\nexport enum EPriceOperationTypes {\n Possess = 'possess',\n Leasing = 'leasing',\n TestDrive = 'test-drive',\n Credit = 'credit',\n}\n\nexport enum EPriceBuyTypes {\n Sale = 'sale',\n Leasing = 'leasing',\n}\n\nexport interface IPriceProps {\n id?: number,\n type: EPriceTypes,\n value: number,\n valuePromo?: number,\n duration?: number,\n sort?: number,\n requestId?: number,\n}\n\nexport interface IPrice extends IPriceProps {\n periodText: string,\n label: string,\n buyType: EPriceBuyTypes,\n getValue: () => number,\n}\n\nexport interface IPriceOptionProps extends Omit {\n value?: IPrice['duration'],\n price: IPrice['value'],\n pricePromo?: IPrice['valuePromo'],\n operType: EPriceOperationTypes,\n}\n\nexport interface IPriceShopDefault {\n price: number,\n duration: number,\n}\n\nexport interface IPriceShopCustom {\n date_close_promo: string,\n duration: number,\n lifetime_price: null,\n value: number,\n}\n\nexport class Price implements IPrice {\n id;\n type;\n value;\n valuePromo;\n duration;\n sort;\n requestId;\n periodText;\n label;\n buyType;\n name: string | null | undefined;\n\n constructor(props: IPriceProps) {\n this.id = props.id,\n this.type = props.type;\n this.value = props.value;\n this.valuePromo = props.valuePromo;\n this.duration = Number(props.duration);\n this.sort = props.sort;\n this.requestId = props.requestId;\n\n this.label = this.type === EPriceTypes.Leasing\n ? `Рассрочка (${this.duration} мес.)`\n : 'Покупка';\n\n this.periodText = this.type === EPriceTypes.Leasing\n ? 'в мес.'\n : '';\n\n this.buyType = this.type === EPriceTypes.Leasing\n ? EPriceBuyTypes.Leasing\n : EPriceBuyTypes.Sale;\n }\n\n getValue(): number {\n return this.valuePromo || this.value;\n }\n}\n\nexport function convertShopPrices(item: any): Price[] {\n if (!item) {\n return [];\n }\n\n return item.pricesV2 && item.pricesV2.length\n ? convertShopPricesV2(item)\n : convertShopPricesV1(item);\n}\n\nfunction convertShopPricesV1(item: any): Price[] {\n const prices = [];\n\n const pricesLeasing = new Map(\n item.prices?.leasing.map((price: IPriceShopDefault) => [price.duration, price]),\n );\n\n const pricesLeasingPromo = new Map(\n item.pricesPromo?.leasing?.map((price: IPriceShopCustom) => [price.duration, price]),\n );\n\n for (const [duration, price] of pricesLeasing) {\n prices.push(new Price({\n type: EPriceTypes.Leasing,\n value: price.price,\n valuePromo: pricesLeasingPromo?.get(duration)?.value,\n duration: price.duration,\n }));\n }\n\n if (item.prices?.possess) {\n prices.push(new Price({\n type: EPriceTypes.Possess,\n value: item.prices.possess,\n valuePromo: item.pricesPromo?.possess?.value,\n }));\n }\n\n return prices;\n}\n\nfunction convertShopPricesV2(item: any): Price[] {\n const prices = [];\n\n const pricesLeasingPromo = new Map(\n item.pricesPromo?.leasing?.map((price: IPriceShopCustom) => [price.duration, price]),\n );\n\n item.pricesV2.sort(sortFunction);\n\n for (const priceElement of item.pricesV2) {\n prices.push(new Price({\n ...priceElement,\n valuePromo:\n priceElement?.promoValue ||\n (priceElement?.duration\n ? pricesLeasingPromo?.get(priceElement.duration)?.value\n : item.pricesPromo?.possess?.value),\n }));\n }\n\n return prices;\n}\n\ninterface IGetWithConvertedPricesProps {\n prices: IPriceProps[],\n}\n\n// Фундоментальная функция, все объекты/массивы объектов нужно прогонять через неё\nexport function getWithConvertedPrices(\n elementOrArray: Array | IGetWithConvertedPricesProps,\n): Array | IGetWithConvertedPricesProps {\n if (!elementOrArray) {\n return elementOrArray;\n }\n\n return Array.isArray(elementOrArray)\n ? elementOrArray.map(element => {\n element.prices = element.prices.map((price: IPriceProps) => new Price(price)).sort(sortFunction);\n return element;\n })\n : (elementOrArray.prices = elementOrArray.prices.map((price: IPriceProps) => new Price(price)).sort(sortFunction)) &&\n elementOrArray;\n}\n","import { getABNVariant } from '~/src/helpers/abn-tests';\n\nexport const CREDIT_AB = {\n testName: 'equipment_loan',\n variants: {\n on: 'equipment_loan_on',\n off: 'equipment_loan_off',\n },\n};\n\nexport const isCreditAbnEnabled = () => getABNVariant(CREDIT_AB.testName) === CREDIT_AB.variants.on;\n\n","export enum EShopCategory {\n Antiviruses = 'antiviruses',\n SpeedBonuses = 'speed-bonuses',\n Routers = 'routers',\n Intercom = 'intercom',\n Sale = 'special-offers',\n PartnerServices = 'partner-service-with-phone-check',\n Decoders = 'decoders',\n BonusToAll = 'bonus-to-all',\n YandexStation = 'yandex-stanciya',\n YandexStationLite = 'yandex-stanciya-lite',\n SafeKids = 'safe-kids',\n LoyaltyProgram = 'loyalty-program',\n Products = 'products',\n Subscriptions = 'subscriptions',\n Multibundle = 'multibundle',\n Videocontrol = 'videocontrol',\n}\n\nexport enum EExpandShopItems {\n Advertising = 'advertising',\n Category = 'category',\n Props = 'props',\n Labels = 'labels',\n CategoryProps = 'category.props',\n}\n"],"names":["FullBuyEquipAnalyticsBase","category","equipmentCategoryMap","EShopCategory","deliveryLabelMap","russianPost","serviceEngineerDelivery","serviceEngineerDeliveryAndSetup","buildDataLayerLabel","params","equipmentTitle","leasing","deliveryType","cost","testDrive","purchaseType","this","equipmentCategory","enterFio","label","send","enterPhoneNumber","clickChangeContact","clickChangeAddress","choosePurchaseType","clickOrderDetails","clickToBanner","clickBurgerButton","chooseDeliveryAddress","contactConfirmSuccess","chooseDeliveryAddressSuccess","clickCreateRequest","createRequestSuccess","createRequestError","clickedToOrder","applicationForm","BaseAnalytics","fullBuyEquipAnalyticsBase","DEFAULT_DESCRIPTION","SPEC_NAME_SPEED","ProductCard","city","dataTest","categoryTitle","categoryName","description","image","imageWebp","labels","name","shortName","orderHandler","detailHandler","orderText","priceOptions","route","body","spec","withSelect","backgroundColorData","isDarkTheme","baseRoute","buttonLink","setIndexOfSelected","isSmallCards","linkUrl","useState","isCreditAbnEnabled","find","option","operType","EPriceOperationTypes","selectedOption","setSelectedOption","orderStatus","isLoadingOrder","loading","setLoading","useEffect","then","url","checkSpecs","specItem","renderSpecs","useCallback","div","map","item","i","SpecOption","span","title","split","value","hasOneOfSpec","filter","length","isRouters","descriptionPrepared","hasFreeDeliveryAndInstallation","minPriceTitle","useMemo","result","sort","a","b","price","prepareBody","regex","RegExp","prepared","replace","truncate","Card","headerBlock","HeaderBlock","imageBlock","ImageBlock","categoryBlock","CategoryBlock","titleBlock","TitleBlock","descriptionBlock","MinPriceTitle","dangerouslySetInnerHTML","__html","purchaseBlock","PurchaseBlock","orderClickHandler","newWindow","window","open","opener","openInNewTab","propTypes","PropTypes","id","color","color_text","pricePromo","type","asIs","bgImg","bgCard","connect","state","currentCity","memo","getPriceOptions","prices","domain","longLabel","sortFunction","options","hasNonEmptySortField","pluralizeMonths","getPluralize","monthPluralize","EPriceTypes","forEach","push","duration","valuePromo","requestId","priceItem","unshift","EPriceBuyTypes","Price","props","Number","periodText","buyType","Leasing","Sale","getValue","convertShopPrices","pricesV2","pricesLeasingPromo","Map","pricesPromo","priceElement","promoValue","get","possess","convertShopPricesV2","pricesLeasing","convertShopPricesV1","CREDIT_AB","on","off","getABNVariant","EExpandShopItems"],"sourceRoot":""}