{"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","is_limited_stock","dataLayer","stock_count","container","getGtmContainer","getEvents","Env","name","matches","isNeedFallback","preventDefault","href","setTimeout","productEls","productEl","$product","index","productIds","join","limitedStockProducts","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","limitedStockItems","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.fd51d8f3b25de9729e3a.5f8deb53.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 if (product && product.is_limited_stock) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n 'event': 'limited_stock_product_teaser_click',\n 'product': {\n 'id': product.id,\n 'stock_count': product.stock_count\n }\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 const limitedStockProducts = products.filter(product => product.is_limited_stock);\n\n if (limitedStockProducts.length > 0) {\n limitedStockProducts.forEach(product => {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n 'event': 'limited_stock_product_teaser_view',\n 'product': {\n 'id': product.id,\n 'stock_count': product.stock_count\n }\n });\n });\n }\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 const limitedStockItems = state.items.filter(item => item.productGtm && item.productGtm.is_limited_stock);\n if (limitedStockItems.length > 0) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n 'event': 'limited_stock_product_purchase',\n 'products': limitedStockItems.map(item => ({\n id: item.productId,\n quantity: item.quantity,\n stock_count: item.productGtm.stock_count\n }))\n });\n }\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":""}