{"version":3,"sources":["webpack:///../jarvis/app/assets/javascripts/core/services/GTM/DOMEventHandler.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/ContainerScrollHandler.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/TeaserViewHandler.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/postScroll.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/services/checkout.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productAddToCollection.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productAvailabilitySubscribe.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productChangeQuantityInCart.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productRemoveFromCart.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productTeaserClick.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productTeaserView.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productQuickView.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/postTeaserView.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/postTeaserClick.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/userProfileUpdate.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/userSubscribe.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productDesignerPriceRequestSend.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/infoRequestSend.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/relatedProductsOpen.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/favoriteListAddObject.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/favoriteListRemoveObject.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/click.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productsFilter.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productsSorter.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productsTeasersPaginatorUsed.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productsTeasersPaginatorViewed.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productPreorderOpened.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productMetricLinkClick.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productDescriptionView.js","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/cartView.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/checkout.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/services/products.ts","webpack:///../jarvis/app/assets/javascripts/core/services/GTM/handlers/productAddToCart.ts"],"names":["DOMEventHandler","_ref","event","mapper","_ref$where","where","_event$split2","_slicedToArray","split","eventName","selector","$","document","on","e","_len","arguments","length","args","Array","_key","pushToDataLayer","apply","currentTarget","concat","ContainerScrollHandler","cond","points","__triggered","__points","handleScroll","rAFThrottle","pageYOffset","window","scrolledPoints","$el","position","offset","top","height","innerHeight","map","percent","calcPoints","filter","point","indexOf","isTriggered","forEach","push","setTriggered","addEventListener","passive","TeaserViewHandler","__teasers","Map","wait","el","get","teaser","isTracked","isProcessed","set","LazyBlock","then","process","debounce","elements","_toConsumableArray","_ref2","_ref3","_ref4","_ref5","setInterval","POINTS","post","scrollPercent","test","location","pathname","prepareGTMCartState","agg","items","isCartItems","includes","isIds","isEcommerceItems","isTotalPrice","reduce","acc","price","quantity","selected","productId","productGtm","cartItems","id","ecommerceItems","_objectSpread","totalPrice","ids","product","closest","data","_e","_$el","email","productAvailabilitySubscribe","_ref$detail","detail","_ref$detail$payload","payload","item","state","find","ecommerce","remove","products","metric1","CONTAINERS_TO_EVENTS","_defineProperty","_CONTAINERS_TO_EVENTS","CONTAINERS","catalog","showCrossSell","showSameCollection","showBestsellers","showComparison","showPopular","target","tagName","toLowerCase","events","_a","_b","_c","fromList","getAttribute","gtmPayload","_JSON$parse","JSON","parse","click","from","parentElement","children","actionField","list","container","getGtmContainer","getEvents","Env","name","matches","isNeedFallback","preventDefault","href","setTimeout","productEls","productEl","$product","index","productIds","join","impressions","eventByContainer","posts","postIds","dataset","gtmPost","serializeArray","fields","value","birthday","countryName","prev","text","cityName","user","Object","entries","type","gender","firstName","lastName","phone","workPlace","professionId","parseInt","site","skype","vkontakte","facebook","twitter","address","object","key","source","infoRequestForm","objectType","objectId","photoId","CONTAINER_TO_EVENT","_CONTAINER_TO_EVENT","show","FavoriteListService","gtmContainer","needFallback","is","eventCallback","attr","eventTimeout","FIELDS_NAMES_TO_EVENTS","color","size","styles","brand","country_slug","materials","_ref$changedFieldList","changedFieldList","order_availability","sort","STATUSES_VALUES_TO_EVENTS","sale","new","vip","METRICS_NAMES_TO_EVENTS","collection","metricName","gtmProductMetricLink","gtmState","cart","product_ids","checkout","step","getGTMData","gtmData","getGTMList","buildAddPayload","_ref$event","currencyCode","add","getCardTypeEvent","card_type","abTesting","newProductDescriptionTest","clickoutTest","availability","cardTypeEvent","listName"],"mappings":"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","file":"chunk.38.a17d98837c6c15c08f08.56c9d022.js","sourcesContent":["import { pushToDataLayer } from 'core/services/GTM';\nfunction DOMEventHandler({ event, mapper, where = () => true }) {\n const [eventName, selector] = event.split(' on ');\n if (where()) {\n $(document).on(eventName, selector || document, (e, ...args) => {\n pushToDataLayer(mapper(e, $(e.currentTarget), ...args));\n return true;\n });\n }\n}\nexport default DOMEventHandler;\n","import { pushToDataLayer } from 'core/services/GTM'\n\nimport rAFThrottle from 'core/utils/rAFThrottle'\n\nfunction ContainerScrollHandler({ selector, cond, points, mapper }) {\n if (!cond()) return\n\n let __triggered = []\n let __points = []\n\n let calcPoints = () => {\n if (__points.length) return __points\n\n let $el = $(selector)\n let position = (($el.offset() ? $el.offset().top : 0) + $el.height()) / 100\n let offset = window.innerHeight / 2\n\n __points = points.map(percent => ({\n percent: percent,\n position: position * percent - offset\n }))\n\n return __points\n }\n\n let isTriggered = point => {\n return __triggered.indexOf(point) > -1\n }\n\n let setTriggered = point => {\n __triggered.push(point)\n }\n\n let handleScroll = rAFThrottle(() => {\n let pageYOffset = window.pageYOffset\n\n let scrolledPoints = calcPoints()\n .filter(point => !isTriggered(point))\n .filter(point => pageYOffset > point.position)\n\n scrolledPoints.forEach(point => setTriggered(point))\n\n if (scrolledPoints.length) {\n pushToDataLayer(mapper(scrolledPoints))\n }\n }, 300)\n\n window.addEventListener('scroll', handleScroll, { passive: true })\n}\n\nexport default ContainerScrollHandler\n","import { pushToDataLayer } from 'core/services/GTM';\nimport { LazyBlock } from 'core/services/LazyBlock';\n\nimport debounce from 'core/utils/debounce';\n\nexport default function TeaserViewHandler({ selector, mapper }) {\n let __teasers = new Map();\n\n function wait(el) {\n if (__teasers.get(el)) return;\n\n let teaser = {\n isTracked: false,\n isProcessed: false,\n };\n\n __teasers.set(el, teaser);\n\n LazyBlock.wait($(el)).then(() => {\n teaser.isTracked = true;\n\n process();\n });\n }\n\n let process = debounce(500, () => {\n let elements = [...__teasers]\n .filter(([_el, teaser]) => teaser.isTracked && !teaser.isProcessed)\n .map(([el, teaser]) => {\n teaser.isProcessed = true;\n\n return el;\n });\n\n pushToDataLayer(mapper(elements));\n });\n\n setInterval(() => {\n $(selector).get().forEach(wait);\n }, 3000);\n}\n","import ContainerScrollHandler from '../ContainerScrollHandler';\nexport const POINTS = [10, 30, 70, 100];\nexport const mapper = (points) => {\n return points.map(({ percent }) => ({\n event: 'postScroll',\n post: {\n scrollPercent: percent\n }\n }));\n};\nContainerScrollHandler({\n selector: '.b-Article',\n points: POINTS,\n cond() {\n return /^\\/(posts|products\\/offers)\\/\\d+/.test(document.location.pathname);\n },\n mapper\n});\n","export function prepareGTMCartState({ items }, agg) {\n const isCartItems = agg.includes('cartItems');\n const isIds = agg.includes('ids');\n const isEcommerceItems = agg.includes('ecommerceItems');\n const isTotalPrice = agg.includes('totalPrice');\n return items.reduce((acc, { price, quantity, selected, productId, productGtm }) => {\n if (isCartItems)\n acc.cartItems.push({ id: productId, price, quantity, selected });\n if (isEcommerceItems)\n acc.ecommerceItems.push({ ...productGtm, quantity });\n if (isTotalPrice)\n acc.totalPrice = acc.totalPrice + quantity * price;\n if (isIds)\n acc.ids.push(productId);\n return acc;\n }, { totalPrice: 0, ids: [], cartItems: [], ecommerceItems: [] });\n}\n","import DOMEventHandler from '../DOMEventHandler';\n\nDOMEventHandler({\n event: 'click on [data-gtm-product-add-to-collection]',\n\n mapper(e, $el) {\n let { product } = $el.closest('[data-gtm-payload]').data('gtmPayload');\n\n return {\n event: 'productAddToCollection',\n product\n }\n }\n});\n","import DOMEventHandler from '../DOMEventHandler'\n\nDOMEventHandler({\n event: 'ProductAvailabilityForm:subscribe',\n\n mapper(_e, _$el, { email, productId }) {\n return {\n event: 'productAvailabilitySubscribe',\n productAvailabilitySubscribe: {\n productId,\n email\n }\n }\n }\n})\n","import DOMEventHandler from '../DOMEventHandler'\n\nDOMEventHandler({\n event: 'c-Checkout:changeItemQuantity',\n\n mapper({ detail: { payload: { productId, quantity }, state } }) {\n const item = state.items.find(item => item.productId === productId)\n\n if (!item.productGtm) return\n\n return {\n event: 'productChangeQuantityInCart',\n product: { ...item.productGtm, quantity }\n }\n }\n})\n","import DOMEventHandler from '../DOMEventHandler'\n\nDOMEventHandler({\n event: 'c-Checkout:removeItem',\n\n mapper({ detail: { payload: { productId }, state } }) {\n const item = state.items.find(item => item.productId === productId)\n\n if (!item.productGtm) return\n\n return {\n event: 'productRemoveFromCart',\n product: item.productGtm,\n ecommerce: {\n remove: {\n products: [{ ...item.productGtm,\n metric1: `-${item.quantity * item.price}`\n }]\n }\n }\n }\n }\n})\n","import { CONTAINERS, getGtmContainer, pushToDataLayer } from '..';\nconst CONTAINERS_TO_EVENTS = {\n [CONTAINERS.products.catalog]: 'ToItemFromCatalog',\n [CONTAINERS.products.showCrossSell]: 'OftenBuyWithProduct',\n [CONTAINERS.products.showSameCollection]: 'ToCollectionProduct',\n [CONTAINERS.products.showBestsellers]: 'ToHitProduct',\n [CONTAINERS.products.showComparison]: 'CompareProduct',\n [CONTAINERS.products.showPopular]: 'PopularProduct'\n};\nconst isNeedFallback = (el) => {\n return Env.name === 'production' && el.matches('a:not([target=_blank])');\n};\nfunction getEvents(el) {\n var _a, _b, _c;\n const fromList = (_a = el.closest('[data-product-list-name]')) === null || _a === void 0 ? void 0 : _a.getAttribute('data-product-list-name');\n const gtmPayload = (_b = el.closest('[data-gtm-payload]')) === null || _b === void 0 ? void 0 : _b.getAttribute('data-gtm-payload');\n if (!gtmPayload) {\n return [];\n }\n const { click, product } = JSON.parse(gtmPayload);\n const events = [\n {\n event: 'productClick',\n product: { ...product },\n ecommerce: {\n click: {\n products: [{ ...product, position: Array.from(((_c = el.parentElement) === null || _c === void 0 ? void 0 : _c.children) || []).indexOf(el) }],\n actionField: {\n list: fromList\n }\n }\n }\n },\n {\n event: 'click',\n payload: click\n }\n ];\n const container = getGtmContainer(el);\n if (container && CONTAINERS_TO_EVENTS[container]) {\n events.push({ event: CONTAINERS_TO_EVENTS[container] });\n }\n return events;\n}\ndocument.addEventListener('click', (e) => {\n const target = e.target;\n const el = target.closest('[data-gtm-product-click]');\n if (target.tagName.toLowerCase() === 'button') {\n return;\n }\n if (el) {\n const events = getEvents(el);\n if (isNeedFallback(el)) {\n e.preventDefault();\n const href = el.getAttribute('href');\n if (href) {\n setTimeout(() => {\n document.location.href = href;\n }, 250);\n }\n }\n pushToDataLayer(events);\n }\n});\n","import TeaserViewHandler from '../TeaserViewHandler';\n\nTeaserViewHandler({\n selector: '[data-gtm-product-preview]',\n\n mapper(productEls) {\n let products = productEls.map(productEl => {\n let $product = $(productEl);\n let index = $product.index();\n let fromList = $product.closest('[data-product-list-name]').data('productListName')\n let { product } = $product.closest('[data-gtm-payload]').data('gtmPayload');\n\n return { ...product,\n position: index,\n list: fromList\n };\n });\n\n let productIds = products\n .map(({ id }) => id)\n .join(',');\n\n return products.length && {\n event: 'productTeaserView',\n productIds: productIds,\n ecommerce: {\n impressions: products\n }\n }\n }\n});\n","import { CONTAINERS, getGtmContainer } from '..';\nimport DOMEventHandler from '../DOMEventHandler';\nconst CONTAINERS_TO_EVENTS = {\n [CONTAINERS.products.catalog]: 'FastViewCatalog'\n};\nfunction getEventByContainer(el) {\n const container = getGtmContainer(el);\n return container && CONTAINERS_TO_EVENTS[container]\n ? { event: CONTAINERS_TO_EVENTS[container] }\n : null;\n}\nDOMEventHandler({\n event: 'BtnProductQuickView:open',\n mapper({ target }) {\n const events = [{ event: 'click', payload: 'quick_view' }];\n const eventByContainer = getEventByContainer(target);\n if (eventByContainer) {\n events.push(eventByContainer);\n }\n return events;\n }\n});\n","import TeaserViewHandler from '../TeaserViewHandler';\n\nTeaserViewHandler({\n selector: '[data-gtm-post]',\n\n mapper(posts) {\n let postIds = posts\n .map(post => $(post).data('gtmPost'))\n .map(post => post.id)\n .join(',');\n\n return postIds && {\n event: 'postTeaserView',\n postIds\n }\n }\n});\n","import { CONTAINERS, getGtmContainer } from '..';\nimport DOMEventHandler from '../DOMEventHandler';\nconst CONTAINERS_TO_EVENTS = {\n [CONTAINERS.products.catalog]: 'ToArticleFromCatalog'\n};\nfunction getEvents(el) {\n const post = el.dataset.gtmPost ? JSON.parse(el.dataset.gtmPost) : {};\n const events = [{ event: 'postTeaserClick', post }];\n const container = getGtmContainer(el);\n if (container && CONTAINERS_TO_EVENTS[container]) {\n events.push({ event: CONTAINERS_TO_EVENTS[container] });\n }\n return events;\n}\nDOMEventHandler({\n event: 'click on [data-gtm-post]',\n mapper(e, [el]) {\n const events = getEvents(el);\n if (Env.name === 'production') {\n e.preventDefault();\n const href = el.getAttribute('href');\n if (href) {\n setTimeout(() => document.location.href = href, 250);\n }\n }\n return events;\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\n\nDOMEventHandler({\n event: 'ajax:success on .js-gtm-user-update-profile',\n\n mapper(e, $el) {\n const data = $el.serializeArray().reduce((fields, { name, value }) => {\n return { ...fields, [name]: value };\n }, {});\n\n const birthday = [\n data['user[birthday(3i)]'],\n data['user[birthday(2i)]'],\n data['user[birthday(1i)]']\n ].join('-');\n\n const countryName = $el.find(`[name=\"user[country_id]\"]`).prev('.select2-container').find('.select2-chosen').text();\n const cityName = $el.find(`[name=\"user[city_id]\"]`).prev('.select2-container').find('.select2-chosen').text();\n\n return {\n event: 'userProfileUpdate',\n user: Object.entries({\n birthday,\n cityName,\n countryName,\n id: Env.user.id,\n type: Env.user.type,\n gender: data['user[gender]'] == 'true' ? 'male' : 'female',\n firstName: data['user[first_name]'],\n lastName: data['user[last_name]'],\n email: data['user[email]'],\n phone: data['user[phone]'],\n workPlace: data['user[work_place]'],\n professionId: parseInt(data['user[user_profession_id]']),\n site: data['user[site]'],\n skype: data['user[skype]'],\n vkontakte: data['user[vkontakte]'],\n facebook: data['user[facebook]'],\n twitter: data['user[twitter]'],\n address: data['user[address]']\n })\n .map(([key, value]) => [key, value || ''])\n .reduce((object, [key, value]) => ({ ...object, [key]: value }), {})\n }\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\n\nDOMEventHandler({\n event: 'c-SubscribeForm:subscribe',\n\n mapper(e, $el, { email }) {\n return {\n event: 'userSubscribe',\n source: 'news_form',\n email\n }\n }\n});\n\nDOMEventHandler({\n event: 'c-SubscribePopup:subscribe',\n\n mapper(e, $el, { email }) {\n return {\n event: 'userSubscribe',\n source: 'coupon_form',\n email\n }\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\n\nDOMEventHandler({\n event: 'c-BtnRequestProductDesignerPrice:sended',\n\n mapper() {\n return {\n event: 'productDesignerPriceRequestSend'\n }\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\n\nDOMEventHandler({\n event: 'BtnRequestInfo:sended',\n\n mapper(e, el, { name, phone, email }) {\n return {\n event: 'infoRequestSend',\n infoRequestForm: {\n phone,\n email,\n name\n }\n }\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\n\nDOMEventHandler({\n event: 'c-BtnRelatedProducts:open',\n\n mapper(_e, _$el, { objectType, objectId }) {\n return {\n event: 'relatedProductsOpen',\n object: {\n id: objectId,\n type: objectType\n }\n }\n }\n});\n\nDOMEventHandler({\n event: 'c-PhotoRelatedProducts:open',\n\n mapper(_e, _$el, { photoId }) {\n return {\n event: 'relatedProductsOpen',\n object: {\n id: photoId,\n type: 'Photo'\n }\n }\n }\n});\n","import FavoriteListService from 'core/services/FavoriteListService'\nimport { pushToDataLayer, getGtmContainer, CONTAINERS } from '..'\n\nconst CONTAINER_TO_EVENT = {\n [CONTAINERS.products.show]: 'SaveProduct',\n [CONTAINERS.products.catalog]: 'SaveItemCatalog',\n}\n\nFavoriteListService.on('add', ({ objectId, objectType, el }) => {\n const events = [{\n event: 'favoriteListAddObject',\n object: {\n id: objectId,\n type: objectType\n }\n }]\n\n const gtmContainer = getGtmContainer(el)\n if (gtmContainer && CONTAINER_TO_EVENT[gtmContainer]) {\n events.push({ event: CONTAINER_TO_EVENT[gtmContainer] })\n }\n\n pushToDataLayer(events)\n})\n","import { pushToDataLayer } from '../../GTM'\n\nimport FavoriteListService from 'core/services/FavoriteListService'\n\nFavoriteListService.on('remove', ({ objectId, objectType }) => {\n pushToDataLayer({\n event: 'favoriteListRemoveObject',\n object: {\n id: objectId,\n type: objectType\n }\n })\n})\n","import DOMEventHandler from '../DOMEventHandler';\n\nlet needFallback = $el => {\n return Env.name === 'production' && $el.is('a') && !$el.is('[target=_blank]');\n}\n\nlet eventCallback = $el => () => {\n if (needFallback($el)) {\n document.location.href = $el.attr('href');\n }\n}\n\nDOMEventHandler({\n event: 'click on [data-gtm-click]',\n\n mapper(e, $el) {\n if (needFallback($el)) {\n e.preventDefault();\n }\n\n return {\n event: 'click',\n payload: $el.data('gtmClick'),\n eventTimeout: 200,\n eventCallback: eventCallback($el),\n }\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\nconst FIELDS_NAMES_TO_EVENTS = {\n price: 'PriceFilter',\n color: 'ColorFilter',\n size: 'SizeFilter',\n styles: 'StyleFilter',\n brand: 'BrandFilter',\n country_slug: 'CountryFilter',\n materials: 'MaterialFilter',\n 'property_groups[rzm]': 'Size2Filter'\n};\nDOMEventHandler({\n event: 'Filter:changed on [data-gtm-products-filter]',\n mapper(_e, _$el, { changedFieldList = [] }) {\n const events = [{ event: 'FilterCatalog' }];\n changedFieldList.forEach(({ name }) => {\n if (name in FIELDS_NAMES_TO_EVENTS) {\n events.push({ event: FIELDS_NAMES_TO_EVENTS[name] });\n }\n });\n return events;\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\nconst FIELDS_NAMES_TO_EVENTS = {\n order_availability: 'SortStockCatalog',\n sort: 'SortDiscountCatalog'\n};\nconst STATUSES_VALUES_TO_EVENTS = {\n sale: 'SortPriceCatalog',\n new: 'SortNewCatalog',\n vip: 'SortVipCatalog'\n};\nconst STATUS_FIELD_NAME = 'status';\nDOMEventHandler({\n event: 'Filter:changed on [data-gtm-products-sorter]',\n mapper(_e, _$el, { changedFieldList = [] }) {\n const events = [];\n changedFieldList.forEach(({ name, value }) => {\n if (name in FIELDS_NAMES_TO_EVENTS) {\n events.push({ event: FIELDS_NAMES_TO_EVENTS[name] });\n }\n if (name === STATUS_FIELD_NAME && value in STATUSES_VALUES_TO_EVENTS) {\n events.push({ event: STATUSES_VALUES_TO_EVENTS[value] });\n }\n });\n return events;\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\nDOMEventHandler({\n event: 'PaginatorWidget:changed on [data-gtm-products-paginator]',\n mapper() {\n return {\n event: 'PaginationCatalog'\n };\n }\n});\n","import TeaserViewHandler from '../TeaserViewHandler'\n\nTeaserViewHandler({\n selector: '[data-gtm-products-paginator]',\n mapper() {\n return { event: 'PaginationScrollCatalog' }\n }\n})\n","import { CONTAINERS, getGtmContainer } from '..';\nimport DOMEventHandler from '../DOMEventHandler';\nconst CONTAINERS_TO_EVENTS = {\n [CONTAINERS.products.catalog]: 'PreorderCatalog',\n [CONTAINERS.products.show]: 'PreorderProduct'\n};\nDOMEventHandler({\n event: 'BtnAddToCart:openedPreorder',\n mapper({ target }) {\n const events = [];\n const container = getGtmContainer(target);\n if (container && container in CONTAINERS_TO_EVENTS) {\n events.push({ event: CONTAINERS_TO_EVENTS[container] });\n }\n return events;\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\nconst METRICS_NAMES_TO_EVENTS = {\n brand: 'ToBrandProduct',\n collection: 'ToCollectionFromProduct'\n};\nDOMEventHandler({\n event: 'click on [data-gtm-product-metric-link]',\n mapper(e, [el]) {\n const metricName = el.dataset.gtmProductMetricLink;\n if (!(metricName in METRICS_NAMES_TO_EVENTS))\n return;\n e.preventDefault();\n const href = el.getAttribute('href');\n if (href) {\n setTimeout(() => { document.location.href = href; }, 0);\n }\n return { event: METRICS_NAMES_TO_EVENTS[metricName] };\n }\n});\n","import TeaserViewHandler from '../TeaserViewHandler'\n\nTeaserViewHandler({\n selector: '[data-gtm-product-description]',\n mapper() {\n return { event: 'InfoScrollProduct' }\n }\n})\n","import DOMEventHandler from '../DOMEventHandler';\nimport { prepareGTMCartState } from '../services/checkout';\nDOMEventHandler({\n event: 'c-Checkout:cartView',\n mapper({ detail: { state } }) {\n const gtmState = prepareGTMCartState(state, ['ids', 'cartItems', 'ecommerceItems', 'totalPrice']);\n return {\n event: 'cartView',\n cart: {\n items: gtmState.cartItems\n },\n ecommerce: {\n price: gtmState.totalPrice,\n product_ids: gtmState.ids,\n products: gtmState.ecommerceItems\n }\n };\n }\n});\n","import DOMEventHandler from '../DOMEventHandler';\nimport { prepareGTMCartState } from '../services/checkout';\nDOMEventHandler({\n event: 'c-Checkout:checkout',\n mapper({ detail: { state } }) {\n const gtmState = prepareGTMCartState(state, ['cartItems', 'ecommerceItems']);\n return {\n event: 'checkout',\n cart: {\n items: gtmState.cartItems\n },\n ecommerce: {\n checkout: { actionField: { step: 1 } },\n products: gtmState.ecommerceItems\n }\n };\n }\n});\n","export function getGTMData(el) {\n var _a;\n const gtmData = (_a = el.closest('[data-gtm-payload]')) === null || _a === void 0 ? void 0 : _a.getAttribute('data-gtm-payload');\n if (!gtmData)\n return;\n return JSON.parse(gtmData).product;\n}\nexport function getGTMList(el) {\n var _a;\n return (_a = el.closest('[data-product-list-name]')) === null || _a === void 0 ? void 0 : _a.getAttribute('data-product-list-name');\n}\n","import { CONTAINERS, getGtmContainer } from '..';\nimport DOMEventHandler from '../DOMEventHandler';\nimport { getGTMList, getGTMData } from '../services/products';\nconst CONTAINERS_TO_EVENTS = {\n [CONTAINERS.products.catalog]: 'CartItemCatalog',\n [CONTAINERS.products.show]: 'BuyProduct'\n};\nfunction buildAddPayload({ product, list, quantity, event = 'productAddToCart' }) {\n return {\n event,\n product,\n ecommerce: {\n currencyCode: 'RUB',\n add: {\n products: [{\n ...product,\n quantity: 1,\n metric1: quantity * product.price\n }],\n actionField: {\n list\n }\n }\n }\n };\n}\nfunction getCardTypeEvent(product) {\n const cardType = product.card_type || 'simple';\n switch (cardType) {\n case 'simple':\n return 'addToCartSimpleCard';\n case 'complex_1':\n return 'addToCartComplexCard1';\n case 'complex_2':\n return 'addToCartComplexCard2';\n case 'complex_3':\n return 'addToCartComplexCard3';\n default:\n return null;\n }\n}\nfunction getEventByContainer(el) {\n const container = getGtmContainer(el);\n return container && CONTAINERS_TO_EVENTS[container]\n ? { event: CONTAINERS_TO_EVENTS[container] }\n : null;\n}\nDOMEventHandler({\n event: 'c-Checkout:addItemFromRecent on [data-gtm-product-add-to-cart]',\n mapper({ target, detail: { item } }) {\n const currentTarget = target;\n const productGtm = getGTMData(currentTarget) || item.productGtm;\n if (!productGtm)\n return [];\n const listName = getGTMList(currentTarget) || 'Каталог';\n const events = [buildAddPayload({ product: productGtm, list: listName, quantity: item.quantity })];\n if (window.Env.abTesting.newProductDescriptionTest) {\n events.push({ event: 'productAddToCartWithNewDescription', product: productGtm });\n }\n if (window.Env.abTesting.clickoutTest) {\n events.push({ event: 'ClickoutProductAddToCart', product: productGtm });\n }\n if (item.availability === 'preorder') {\n events.push({ event: 'preorderProductAddToCart', product: productGtm });\n }\n const cardTypeEvent = getCardTypeEvent(productGtm);\n if (cardTypeEvent) {\n events.push({ event: cardTypeEvent, product: productGtm });\n }\n const eventByContainer = getEventByContainer(currentTarget);\n if (eventByContainer) {\n events.push(eventByContainer);\n }\n return events;\n }\n});\nDOMEventHandler({\n event: 'c-Checkout:addProductsSet on [data-gtm-products-set-add-to-cart]',\n mapper(event) {\n const { target } = event;\n const productGtm = getGTMData(target);\n const listName = getGTMList(target) || 'Каталог';\n if (!productGtm)\n return [];\n const events = [buildAddPayload({ event: 'productsSetAddToCart', product: productGtm, list: listName, quantity: 1 })];\n const cardTypeEvent = getCardTypeEvent(productGtm);\n if (cardTypeEvent) {\n events.push({ event: cardTypeEvent, product: productGtm });\n }\n return events;\n }\n});\nDOMEventHandler({\n event: 'c-TeaserCartActions:addedToCard',\n mapper(event) {\n const { detail: { quantity }, target } = event;\n const productGtm = getGTMData(target);\n const listName = getGTMList(target) || 'Каталог';\n if (!productGtm)\n return [];\n const events = [buildAddPayload({ product: productGtm, list: listName, quantity })];\n const cardTypeEvent = getCardTypeEvent(productGtm);\n if (cardTypeEvent) {\n events.push({ event: cardTypeEvent, product: productGtm });\n }\n return events;\n }\n});\n"],"sourceRoot":""}