{"version":3,"file":"compare.bundle.js","mappings":"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","sources":["webpack://4tochki/./webpack/bundles/compare/CompareController.js","webpack://4tochki/./webpack/bundles/compare/index.js","webpack://4tochki/./webpack/src/modules/compare-head/templateCompareHead.js","webpack://4tochki/./webpack/src/modules/compare-head/index.js","webpack://4tochki/./webpack/src/modules/getAvailableInfo/index.js","webpack://4tochki/./webpack/src/modules/getBadgetInfo/index.js","webpack://4tochki/./webpack/src/modules/modalAfterAddToCart/index.js","webpack://4tochki/./webpack/src/modules/productItem/index.js","webpack://4tochki/./webpack/src/modules/restListPopovers/index.js","webpack://4tochki/./node_modules/bootstrap/js/dist/popover.js","webpack://4tochki/./node_modules/bootstrap/js/dist/tooltip.js","webpack://4tochki/./node_modules/bootstrap/js/dist/util/sanitizer.js","webpack://4tochki/./node_modules/bootstrap/js/dist/util/template-factory.js"],"sourcesContent":["/* eslint-disable require-jsdoc */\nexport class CompareController {\n constructor() {\n this.load_goods_in_compare = function() {\n fetch('/compare/list')\n .then(response => response.json())\n .then(response => {\n let goodCount = 0;\n if (Array.isArray(response.goods)) {\n response.goods.forEach(el => {\n const elements = document.querySelectorAll('.js-added-to-compare-' + el);\n elements.forEach(el => {\n el.classList.add('js-added-to-compare');\n el.classList.remove('js-add-to-compare');\n el.classList.add('js-remove-from-compare');\n el.title = 'Убрать из сравнения';\n });\n goodCount++;\n });\n }\n const compareDontShow = document.cookie === 'compareDontShow';\n const compareInitHide = document.querySelector('.js-compare-init-hide');\n\n if (compareDontShow === 'false' && goodCount > 0 && !compareInitHide) {\n const compareCount = document.querySelector('.js-compare-head-view-init .js-compare-count');\n compareCount.innerHTML = response.count_goods;\n const compareHeadViewInit = document.querySelector('.js-compare-head-view-init');\n compareHeadViewInit.style.display = 'block';\n }\n });\n };\n\n\n this.show_only_different_params = function() {\n const activeControls = document.querySelectorAll('.compare_controls .active');\n activeControls.forEach(el => {\n el.classList.remove('active');\n });\n\n const compareDiffs = document.querySelectorAll('.js-compare_diffs');\n compareDiffs.forEach(el => {\n el.classList.add('active');\n });\n\n const labels = document.querySelectorAll('.compareLabels label');\n labels.forEach(label => {\n const alias = label.dataset.alias;\n let hide = true;\n let value = -1;\n const params = document.querySelectorAll('.compareLabelsWrap .js-param-' + alias);\n\n params.forEach(param => {\n if (value === -1) {\n value = param.dataset.compareValue;\n } else if (value !== param.dataset.compareValue) {\n hide = false;\n }\n });\n\n if (hide) {\n const headerElement = document.querySelectorAll('.js-header-' + alias);\n if (headerElement.length > 0) {\n headerElement.forEach(el => {\n if (el) {\n el.style.display = 'none';\n }\n });\n }\n params.forEach(param => {\n param.style.display = 'none';\n });\n } else {\n const headerElement = document.querySelectorAll('.js-header-' + alias);\n if (headerElement.length > 0) {\n headerElement.forEach(el => {\n if (el) {\n el.style.display = 'block';\n }\n });\n }\n params.forEach(param => {\n param.style.display = 'block';\n });\n }\n });\n };\n\n this.show_all_params = function() {\n const activeControls = document.querySelectorAll('.compare_controls .active');\n activeControls.forEach(el => {\n el.classList.remove('active');\n });\n\n const compareAll = document.querySelectorAll('.js-compare_all');\n compareAll.forEach(el => {\n el.classList.add('active');\n });\n\n const labels = document.querySelectorAll('.compareLabels label');\n labels.forEach(label => {\n label.style.display = 'block';\n });\n\n const params = document.querySelectorAll('.compareLabelsWrap label');\n params.forEach(param => {\n param.style.display = 'block';\n });\n };\n\n this.hide_empty_params = function() {\n const labels = document.querySelectorAll('.compareLabels label');\n\n labels.forEach(label => {\n const alias = label.dataset.alias;\n let hide = true;\n const params = document.querySelectorAll('.compareLabelsWrap .js-param-' + alias);\n params.forEach(param => {\n if (param.dataset.compareValue !== '') {\n hide = false;\n }\n });\n\n if (hide) {\n const headerElement = document.querySelector('.js-header-' + alias);\n\n if (headerElement) {\n headerElement.remove();\n }\n params.forEach(param => {\n param.remove();\n });\n }\n });\n };\n }\n}\n","import './index.scss';\nimport {config} from 'core/config';\nimport Tab from 'bootstrap/js/dist/tab';\nimport {productItem} from 'modules/productItem';\nimport {CompareController} from './CompareController';\nimport Popover from 'bootstrap/js/dist/popover';\n\ndocument.addEventListener('DOMContentLoaded', function() {\n productItem.init();\n\n const Compare = new CompareController();\n Compare.load_goods_in_compare();\n Compare.hide_empty_params();\n\n\n document.querySelectorAll('.compareLabelsWrap').forEach(el => {\n el.addEventListener('scroll', function() {\n document.querySelectorAll('.compareItems_wrap').forEach(compareItem => {\n compareItem.style.marginLeft = -this.scrollLeft + 'px';\n });\n });\n });\n document.querySelectorAll('.js-compare_all').forEach(el => {\n el.addEventListener('click', function() {\n Compare.show_all_params();\n console.log('Все параметры');\n });\n });\n document.querySelectorAll('.js-compare_diffs').forEach(el => {\n el.addEventListener('click', function() {\n Compare.show_only_different_params();\n console.log('Различающиеся');\n });\n });\n\n document.querySelectorAll('.js-compare-good').forEach(function(el) {\n el.addEventListener('click', function() {\n el.parentNode.classList.add('closing');\n document.querySelector(`.js-compare-params-goodid-${el.dataset.id}`).classList.add('closing');\n config.get('/compare/remove', {gogoods_id: el.dataset.id}).then(() => {\n if (window.innerWidth <= config.breakpoints.lg) {\n const itemsCount = document.querySelectorAll('.compareItems_wrap .item:not(.closing)').length;\n const tabPaneActive = document.querySelector('.tab-pane.active');\n const activeItemsCount = tabPaneActive.querySelectorAll('.item.item__mobile:not(.closing)').length;\n document.querySelector('.nav-link.active .badge').innerHTML = activeItemsCount;\n if (itemsCount == 0) {\n document.querySelector('.js-compare-content').style.display = 'none';\n document.querySelector('.js-compare-empty').style.display = 'block';\n }\n } else {\n const itemsCount = document.querySelectorAll('.compareItems_wrap .item:not(.closing)').length;\n const tabPaneActive = document.querySelector('.tab-pane.active');\n const activeItemsCount = tabPaneActive.querySelectorAll('.item.item__desktop:not(.closing)').length;\n document.querySelector('.nav-link.active .badge').innerHTML = activeItemsCount;\n if (itemsCount == 0) {\n document.querySelector('.js-compare-content').style.display = 'none';\n document.querySelector('.js-compare-empty').style.display = 'block';\n }\n }\n });\n });\n });\n let isScrolling = false;\n\n document.querySelectorAll('.js-compareArrowLeft').forEach(button => {\n button.addEventListener('click', function() {\n const tabPane = button.closest('.tab-pane');\n\n if (tabPane && tabPane.classList.contains('active')) {\n const compareLabelsWrapActive = tabPane.querySelector('.compareLabelsWrap');\n const leftPos = compareLabelsWrapActive.scrollLeft;\n const itemWidth = tabPane.querySelector('.compareItems .item').offsetWidth;\n\n if (leftPos <= 0) {\n const rightButton = tabPane.querySelector('.js-compareArrowRight');\n rightButton.hidden = false;\n return;\n }\n\n button.disabled = true;\n button.hidden = false;\n isScrolling = true;\n compareLabelsWrapActive.scrollTo({left: leftPos - itemWidth - 5, behavior: 'smooth'});\n\n const onScroll = function() {\n if (compareLabelsWrapActive.scrollLeft <= leftPos - itemWidth - 5) {\n compareLabelsWrapActive.removeEventListener('scroll', onScroll);\n isScrolling = false;\n button.disabled = false;\n if (compareLabelsWrapActive.scrollLeft <= 0) {\n button.hidden = true;\n }\n }\n };\n\n compareLabelsWrapActive.addEventListener('scroll', onScroll);\n }\n });\n });\n document.querySelectorAll('.js-compareArrowRight').forEach(button => {\n button.addEventListener('click', function() {\n const tabPane = button.closest('.tab-pane');\n if (tabPane && tabPane.classList.contains('active')) {\n const compareLabelsWrapActive = tabPane.querySelector('.compareLabelsWrap');\n const leftPos = compareLabelsWrapActive.scrollLeft;\n const itemWidth = tabPane.querySelector('.compareItems .item').offsetWidth;\n\n if (leftPos >= (compareLabelsWrapActive.scrollWidth - compareLabelsWrapActive.clientWidth)) {\n const leftButton = tabPane.querySelector('.js-compareArrowLeft');\n leftButton.hidden = false;\n return;\n }\n\n button.disabled = true;\n button.hidden = false;\n isScrolling = true;\n compareLabelsWrapActive.scrollTo({left: leftPos + itemWidth + 5, behavior: 'smooth'});\n\n const onScroll = function() {\n if (compareLabelsWrapActive.scrollLeft >= leftPos + itemWidth + 5) {\n compareLabelsWrapActive.removeEventListener('scroll', onScroll);\n isScrolling = false;\n button.disabled = false;\n if (compareLabelsWrapActive.scrollLeft >= (compareLabelsWrapActive.scrollWidth - compareLabelsWrapActive.clientWidth)) {\n button.hidden = true;\n }\n }\n };\n\n compareLabelsWrapActive.addEventListener('scroll', onScroll);\n }\n });\n });\n document.querySelectorAll('.js-compareArrowLeft, .js-compareArrowRight').forEach(button => {\n button.addEventListener('click', function() {\n document.querySelectorAll('.js-compareArrowLeft, .js-compareArrowRight').forEach(el => {\n el.hidden = false;\n });\n });\n });\n});\n\nconst popoverTriggerList = document.querySelectorAll('[data-bs-toggle=\"popover\"]');\nconst popoverList = [...popoverTriggerList].map((popoverTriggerEl) => new Popover(popoverTriggerEl));\n\n","export const templateCompareHead = (data) =>\n `
\n
\n
\n
\n
\n Товар
${data.name}
\n
\n ${data.action == 'add' ? 'добавлен в избранное' : 'удалён из избранного'}\n
\n
\n
\n Всего в списке \n
\n
\n
\n
\n
\n
\n
\n
\n Больше не показывать\n
\n
В избранное\n
\n
\n
\n
\n
\n
\n
`;\n","import './index.scss';\n\nimport {config} from 'core/config';\nimport {templateCompareHead} from './templateCompareHead';\n\nconst SELECT = {\n 'good': '.js-compare-good',\n 'addedToCompare': 'js-added-to-compare',\n 'head': '.js-compare-head',\n 'headName': '.js-compare-name',\n 'headClose': '.js-compare-head-close',\n 'headCount': '.js-compare-count',\n 'headAction': '.js-compare-action-text',\n 'headDontShowBtn': '.js-compare-dontShow',\n 'jsonUrlAdd': '/compare/add',\n 'jsonUrlRemove': '/compare/remove',\n};\n\nexport const compareHead = {\n bindEvents: function() {\n const $addTofavorites = document.querySelector('.js-add-to-favorites');\n if ($addTofavorites !== null) {\n $addTofavorites.addEventListener('click', function() {\n if (this.classList.contains('added')) {\n this.querySelector('.link').textContent = 'Добавить в избранное';\n this.classList.remove('added');\n compareHead.removeGoodFromCompare(this.dataset.goodId);\n } else {\n this.classList.add('added');\n this.querySelector('.link').textContent = 'Удалить из избранного';\n compareHead.addGoodToCompare(this.dataset.goodId);\n }\n });\n }\n compareHead.setCompareStatus();\n },\n update: function(data) {\n const $compareHead = document.querySelector(SELECT.head);\n const $comparHeadName = document.querySelector(SELECT.headName);\n const $comparHeadCount = document.querySelector(SELECT.headCount);\n const $comparHeadAction = document.querySelector(SELECT.headAction);\n if ($compareHead !== null) {\n $compareHead.style.display = 'block';\n $comparHeadName.textContent = data.name;\n $comparHeadCount.innerHTML = '
';\n if (data.action == 'add') {\n $comparHeadAction.innerHTML = 'добавлен РІ избранное';\n compareHead.addGoodToCompare(data.id);\n } else {\n $comparHeadAction.innerHTML = 'удалён РёР· избранного';\n compareHead.removeGoodFromCompare(data.id);\n }\n } else {\n // $('#page').prepend(templateCompareHead(data));\n document.getElementById('page').insertAdjacentHTML('beforebegin', templateCompareHead(data));\n document.querySelector(SELECT.headClose).addEventListener('click', function() {\n document.querySelector(SELECT.head).style.display = 'none';\n });\n document.querySelector(SELECT.headDontShowBtn).addEventListener('click', function() {\n document.querySelector(SELECT.head).style.display = 'none';\n document.cookie = 'compareDontShow=true; max-age=86400; path=/;';\n });\n if (data.action == 'add') {\n compareHead.addGoodToCompare(data.id);\n } else {\n compareHead.removeGoodFromCompare(data.id);\n }\n };\n },\n addGoodToCompare: function(goodId) {\n config.get(SELECT.jsonUrlAdd, {gogoods_id: goodId}).then((response) => {\n compareHead.updateInHead();\n });\n document.cookie = 'compareDontShow=false; max-age=86400; path=/;';\n },\n removeGoodFromCompare: function(goodId) {\n config.get(SELECT.jsonUrlRemove, {gogoods_id: goodId}).then((response) => {\n compareHead.updateInHead();\n });\n },\n updateInHead: function() {\n const $headCount = document.querySelector(SELECT.headCount);\n config.get('/compare/list').then((response) => {\n if ($headCount !== null) $headCount.innerHTML = response.count_goods;\n const data = Object.values(response.goods);\n if (data.length > 0) {\n document.querySelector('.header-favorites .link').textContent = `Рзбранное (${data.length})`;\n } else {\n document.querySelector('.header-favorites .link').textContent = 'Рзбранное';\n }\n\n if (window.innerWidth <= config.breakpoints.lg) {\n const mobileCompare = document.querySelector('.compare-mobile');\n\n if (mobileCompare !== null && data.length > 0) {\n mobileCompare.classList.remove('d-none');\n let mobileLinkCompareVal = mobileCompare.querySelector('.compare-mobile-val');\n\n if (mobileLinkCompareVal === null) {\n mobileLinkCompareVal = document.createElement('span');\n mobileLinkCompareVal.classList.add('compare-mobile-val');\n mobileCompare.appendChild(mobileLinkCompareVal);\n }\n mobileLinkCompareVal.textContent = data.length;\n } else {\n mobileCompare.classList.add('d-none');\n }\n }\n });\n },\n setCompareStatus: function() {\n config.get('/compare/list').then((response) => {\n const data = Object.values(response.goods);\n if (data.length > 0) {\n document.querySelector('.header-favorites .link').textContent = `Рзбранное (${data.length})`;\n data.forEach((goodId) => {\n const $goodLink = document.querySelector(`.js-add-to-favorites[data-good-id=\"${goodId}\"]`);\n const $goodItem = document.querySelector(`.js-added-to-compare-${goodId}`);\n if ($goodLink) {\n $goodLink.classList.add('added');\n $goodLink.querySelector('.link').textContent = 'Удалить РёР· избранного';\n }\n if ($goodItem) {\n $goodItem.classList.add('js-added-to-compare');\n $goodItem.title = 'Убрать РёР· избранного';\n $goodItem.dataset.action = 'remove';\n }\n });\n }\n if (window.innerWidth <= config.breakpoints.lg) {\n const mobileCompare = document.querySelector('.compare-mobile');\n\n if (mobileCompare !== null && data.length > 0) {\n mobileCompare.classList.remove('d-none');\n let mobileLinkCompareVal = mobileCompare.querySelector('.compare-mobile-val');\n\n if (mobileLinkCompareVal === null) {\n mobileLinkCompareVal = document.createElement('span');\n mobileLinkCompareVal.classList.add('compare-mobile-val');\n mobileCompare.appendChild(mobileLinkCompareVal);\n }\n mobileLinkCompareVal.textContent = data.length;\n } else {\n mobileCompare.classList.add('d-none');\n }\n }\n });\n },\n};\n","import {config} from 'core/config';\nimport Dropdown from 'bootstrap/js/dist/dropdown';\n\nexport function getAvailableInfo(goodAvailableObj) {\n if (goodAvailableObj.jquery !== undefined) goodAvailableObj = $(goodAvailableObj)[0];\n const availableType = goodAvailableObj.dataset.available_type;\n if (availableType === undefined) {\n return false;\n }\n const param = {\n availableType: availableType,\n goodId: goodAvailableObj.dataset.item,\n };\n if (!goodAvailableObj.classList.contains(`was-loaded-${availableType}`) && param.goodId > 0) {\n config.get('/catalog/availableinfo/', param, 'html').then((response) => {\n const dropdown = goodAvailableObj.nextElementSibling;\n goodAvailableObj.classList.add(`was-loaded-${availableType}`);\n dropdown.innerHTML = response;\n\n const $dropdownMenu = goodAvailableObj.nextElementSibling;\n if ($dropdownMenu.querySelector('.btn-close') !== null) {\n const dropdownInstance = Dropdown.getOrCreateInstance(goodAvailableObj);\n const $dropdownIframe = $dropdownMenu.querySelector('iframe');\n $dropdownMenu.querySelector('.btn-close').addEventListener('click', () => {\n dropdownInstance.hide();\n if ($dropdownIframe !== null) {\n $dropdownIframe.remove();\n goodAvailableObj.classList.remove(`was-loaded-${availableType}`);\n }\n });\n }\n });\n }\n goodAvailableObj.addEventListener('hide.bs.dropdown', function(e) {\n goodAvailableObj.classList.remove(`was-loaded-${availableType}`);\n });\n};\n\nfunction initVideoBudget() {\n const $$smallVideoLoad = document.querySelectorAll('.js-smallVideoLoad');\n if ($$smallVideoLoad.length > 0) {\n $$smallVideoLoad.forEach((element) => {\n element.addEventListener('click', () => {\n const $badgeVideoContainer = document.querySelector('.dropdown-menu.show .js-videoContainer');\n const videoLink = element.dataset.smallVideoLink;\n const tpl = `
\n
\n
\n
\n
`;\n $badgeVideoContainer.classList.add('videoContainer--open');\n $badgeVideoContainer.insertAdjacentHTML('beforeend', tpl);\n const videoContainerHeight = $badgeVideoContainer.offsetHeight+'px';\n document.querySelector('.dropdown-menu--video').style.height = videoContainerHeight;\n\n document.querySelector('.videoContainer__close').addEventListener('click', () => {\n $badgeVideoContainer.classList.remove('videoContainer--open');\n $badgeVideoContainer.innerHTML = '';\n document.querySelector('.dropdown-menu--video').style.height = 'auto';\n });\n });\n });\n }\n}\n","import {config} from 'core/config';\nimport Dropdown from 'bootstrap/js/dist/dropdown';\n\nexport function getBadgetInfo(badgetObj) {\n if (badgetObj.jquery !== undefined) badgetObj = $(badgetObj)[0];\n const badgetType = badgetObj.dataset.badget_type;\n if (badgetType === undefined) {\n return false;\n }\n const param = {\n badgetType: badgetType,\n goodId: badgetObj.dataset.item,\n type: badgetObj.dataset.object_type ? badgetObj.dataset.object_type : 'goGood',\n };\n if (!badgetObj.classList.contains(`was-loaded-${badgetType}`) && param.goodId > 0) {\n config.get('/catalog/badgetinfo/', param, 'html').then((response) => {\n const dropdown = badgetObj.nextElementSibling;\n badgetObj.classList.add(`was-loaded-${badgetType}`);\n dropdown.innerHTML = response;\n if (badgetObj.dataset.badget_type === 'video') {\n initVideoBudget();\n const videoDiv = dropdown.querySelectorAll('[data-video-id]');\n if (videoDiv.length > 0 && dropdown.classList.contains('show')) {\n videoDiv.forEach((element) => {\n const videoLink = element.dataset.videoLink;\n element.innerHTML = `\n
\n
\n
\n `;\n });\n }\n }\n const $dropdownMenu = badgetObj.nextElementSibling;\n if ($dropdownMenu.querySelector('.btn-close') !== null) {\n const dropdownInstance = Dropdown.getOrCreateInstance(badgetObj);\n const $dropdownIframe = $dropdownMenu.querySelector('iframe');\n $dropdownMenu.querySelector('.btn-close').addEventListener('click', () => {\n dropdownInstance.hide();\n if ($dropdownIframe !== null) {\n $dropdownIframe.remove();\n badgetObj.classList.remove(`was-loaded-${badgetType}`);\n }\n });\n }\n });\n }\n badgetObj.addEventListener('hide.bs.dropdown', function(e) {\n badgetObj.classList.remove(`was-loaded-${badgetType}`);\n });\n};\n\nfunction initVideoBudget() {\n const $$smallVideoLoad = document.querySelectorAll('.js-smallVideoLoad');\n if ($$smallVideoLoad.length > 0) {\n $$smallVideoLoad.forEach((element) => {\n element.addEventListener('click', () => {\n const $badgeVideoContainer = document.querySelector('.dropdown-menu.show .js-videoContainer');\n const videoLink = element.dataset.smallVideoLink;\n const tpl = `
\n
\n
\n
\n
`;\n $badgeVideoContainer.classList.add('videoContainer--open');\n $badgeVideoContainer.insertAdjacentHTML('beforeend', tpl);\n const videoContainerHeight = $badgeVideoContainer.offsetHeight+'px';\n document.querySelector('.dropdown-menu--video').style.height = videoContainerHeight;\n\n document.querySelector('.videoContainer__close').addEventListener('click', () => {\n $badgeVideoContainer.classList.remove('videoContainer--open');\n $badgeVideoContainer.innerHTML = '';\n document.querySelector('.dropdown-menu--video').style.height = 'auto';\n });\n });\n });\n }\n}\n","import {config} from 'core/config';\nimport Modal from 'bootstrap/js/dist/modal';\n\nexport const modalAfterAddToCart = {\n config: {\n modalId: 'modalAfterAddToCart',\n },\n get: function() {\n let modal = document.querySelector('#'+ modalAfterAddToCart.config.modalId);\n if (modal === null) {\n const modalTemplate = `\n
\n
\n
\n
\n
\n `;\n document.body.insertAdjacentHTML('beforeend', modalTemplate);\n modal = document.querySelector('#'+ modalAfterAddToCart.config.modalId);\n }\n return modal;\n },\n setContent: function(content) {\n const modal = modalAfterAddToCart.get();\n modal.querySelector('.modal-content').innerHTML = content;\n },\n show: function() {\n const modalNode = Modal.getOrCreateInstance(this.get());\n modalNode.show();\n // this.get().modal('show');\n\n config.moveHeaderWhenModal(true);\n // document.querySelector(`#${this.config.modalId}`).on('hidden.bs.modal', function() {\n // config.moveHeaderWhenModal(false);\n // });\n },\n yaMetrika: function(){\n window.dataLayer = window.dataLayer || [];\n var products = [];\n document.querySelectorAll('meta.addToCartMeta').forEach((element) => {\n products.push({\n \"id\": element.getAttribute('data-id'),\n \"name\": element.getAttribute('data-name'),\n \"price\": element.getAttribute('data-price'),\n \"brand\": element.getAttribute('data-brand'),\n \"category\": element.getAttribute('data-category'),\n \"variant\": element.getAttribute('data-variant'),\n \"quantity\": element.getAttribute('data-quantity')\n })\n });\n window.dataLayer.push({\n \"ecommerce\": {\n \"currencyCode\": \"RUB\",\n \"add\": {\n \"products\": products\n }\n }\n });\n ym(32042756,'reachGoal','ORDER');\n }\n};\n","import './index.scss';\nimport {metricaModule} from 'modules/metrica';\nimport {compareHead} from 'modules/compare-head';\nimport {config} from 'core/config';\nimport {modalAfterAddToCart} from 'modules/modalAfterAddToCart';\nimport {getBadgetInfo} from 'modules/getBadgetInfo';\nimport {getAvailableInfo} from 'modules/getAvailableInfo';\nimport {restListPopover} from 'modules/restListPopovers';\nimport Dropdown from 'bootstrap/js/dist/dropdown';\n\nconst SELECT = {\n 'icon': '.icon-badget',\n 'available': '.b-item__avail-text',\n 'addedToCompare': 'js-added-to-compare',\n 'changeCount': '.js__decrementer, .js__incrementer',\n 'addToCart': '.b-item__wrap .btn-order',\n 'modalDialogData': '#modalDialogData',\n 'modalButtonlShow': '#modalShowButton',\n 'badgeVideoContainer': '.dropdown-menu.show .js-videoContainer',\n};\n\nexport const productItem = {\n init: function() {\n this.bindEvent();\n compareHead.setCompareStatus();\n restListPopover.loadRests();\n restListPopover.initPopoverListener();\n productItem.removePopoversFromStorage();\n },\n bindEvent: function() {\n const searchResult = document.getElementById('searchResult');\n if (searchResult) {\n searchResult.onclick = function(event) {\n let target = event.target;\n\n if (target.classList.contains('b-item__avail-text')) {\n getAvailableInfo(target);\n }\n if (\n target.tagName == 'svg' ||\n target.tagName == 'use' ||\n target.tagName == 'path'\n ) target = target.closest('div');\n\n if (target.classList.contains('js-compare-good')) {\n compareHead.update(target.dataset);\n if (target.dataset.action == 'remove') {\n target.dataset.action = 'add';\n target.classList.remove(SELECT.addedToCompare);\n } else {\n target.dataset.action = 'remove';\n target.classList.add(SELECT.addedToCompare);\n }\n }\n\n if (target.classList.contains('btn-order')) {\n const goodId = target.getAttribute('orderAddGoodId');\n const orderAddCount = target.parentNode.querySelector('.orderAddCount').value;\n const param = {goGoodId: goodId, count: orderAddCount};\n const url = '/Orders/addtocart/';\n config.get(url, param, 'html').then((answer) => {\n console.log('answer getted');\n modalAfterAddToCart.setContent(answer);\n modalAfterAddToCart.show();\n modalAfterAddToCart.yaMetrika();\n common.cartHead.reloadCarts({\n 'reason': 'add',\n 'good_id': goodId,\n });\n metricaModule.sendEvent(metricaModule.getMetricaRegionId(), 'ORDER');\n return false;\n });\n restListPopover.hideActivePopovers();\n }\n\n if (target.classList.contains('icon-badget')) {\n if (target.dataset.badget_type === 'leader') {\n return;\n }\n getBadgetInfo(target);\n }\n\n if (target.classList.contains('js__decrementer') || target.classList.contains('js__incrementer')) {\n productItem.changeCount(target);\n }\n\n if (target.classList.contains('videoContainer__close')) {\n document.querySelector(SELECT.badgeVideoContainer).classList.remove('videoContainer--open');\n document.querySelector(SELECT.badgeVideoContainer).innerHTML = '';\n document.querySelector('.dropdown-menu--video').style.height = 'auto';\n }\n };\n }else{\n const sizePrices = document.getElementById('sizePrices');\n if (sizePrices) {\n sizePrices.onclick = function(event) {\n let target = event.target;\n if (target.classList.contains('b-item__avail-text')) {\n getAvailableInfo(target);\n }\n }\n }\n }\n\n const selection = document.querySelector('.moreTextButton') !== null;\n if (selection) {\n document.querySelector('.moreTextButton').addEventListener('click', function() {\n this.classList.add('d-none');\n const txtBlock = document.querySelector('.moreText-container');\n txtBlock.style.height = 'max-content';\n txtBlock.classList.add('show');\n txtBlock.classList.add('show');\n });\n }\n\n window.addEventListener('show.bs.modal', function() {\n restListPopover.hideActivePopovers();\n });\n },\n changeCount: function(element) {\n const $container = element.closest('.b-item__container');\n const countMin = 0;\n const $input = $container.querySelector('.b-item__quantity');\n const inputValue = parseInt($input.value);\n let dataRest = $input.dataset.rest;\n let count = inputValue == '' ? 0 : inputValue;\n\n if (dataRest === 12) dataRest = 99;\n if (count === countMin) return;\n\n if (element.classList.contains('js__incrementer')) {\n if (inputValue < dataRest) {\n $input.value = ++count;\n }\n } else {\n if (inputValue > 1) {\n $input.value = --count;\n }\n }\n },\n setCompareStatus: function() {\n compareHead.setCompareStatus();\n },\n removePopoversFromStorage: () => {\n Object.keys(localStorage).forEach((key) => {\n if (key.startsWith('popup')) {\n localStorage.removeItem(key);\n }\n });\n },\n};\n","import './index.scss';\nimport {config} from 'core/config';\nimport Popover from 'bootstrap/js/dist/popover';\n\nexport const restListPopover = {\n init: function() {\n restListPopover.loadRests();\n restListPopover.initPopoverListener();\n },\n initPopoverListener: (target) => {\n let popoverOptions = {};\n\n if (window.innerWidth < config.breakpoints.md) {\n popoverOptions = {\n 'html': true,\n 'trigger': 'click',\n 'placement': 'auto',\n };\n } else {\n popoverOptions = {\n 'html': true,\n 'trigger': 'click',\n 'placement': 'right',\n 'fallbackPlacements': ['left', 'right'],\n };\n }\n\n const popoverTriggerList = document.querySelectorAll('.js-rest-list-popovers:not(.b-item--loaded) [data-bs-toggle=\"popover\"]');\n const popoverList = [...popoverTriggerList].map((popoverTriggerEl) => {\n new Popover(popoverTriggerEl, popoverOptions);\n\n popoverTriggerEl.addEventListener('show.bs.popover', (e) => {\n restListPopover.hideActivePopovers();\n });\n popoverTriggerEl.addEventListener('shown.bs.popover', (e) => {\n const $popoverBtn = e.target;\n $popoverBtn.classList.add('active');\n config.moveHeaderWhenModal(true);\n if (window.innerWidth > config.breakpoints.md) {\n document.body.classList.add('body-locked');\n }\n setTimeout(function () {\n const targetData = e.target.dataset;\n const localValue = 'popup-' + targetData.available_type + targetData.item;\n const $popoverHeader = document.querySelector('.available-popover .popover-header');\n const $popoverContent = document.querySelector('.available-popover .popover-body');\n\n if ($popoverHeader) {\n $popoverHeader.addEventListener('click', function (e) {\n document.body.classList.remove('body-locked');\n Popover.getInstance($popoverBtn).hide();\n config.moveHeaderWhenModal(false);\n });\n }\n\n if (localStorage.getItem(localValue) === null) {\n const param = {\n availableType: popoverTriggerEl.dataset.available_type,\n goodId: popoverTriggerEl.dataset.item,\n };\n config.get('/catalog/availableinfo/', param, 'html').then((response) => {\n $popoverContent.innerHTML = response;\n localStorage.setItem(localValue, response);\n Popover.getOrCreateInstance(e.target).update();\n });\n } else {\n $popoverContent.innerHTML = localStorage.getItem(localValue);\n }\n }, 200);\n });\n popoverTriggerEl.addEventListener('hide.bs.popover', (e) => {\n if (window.innerWidth > config.breakpoints.md) {\n document.body.classList.remove('body-locked');\n }\n });\n });\n },\n hideActivePopovers: () => {\n const popoverSelector = '.js-rest-list-popovers [data-bs-toggle=\"popover\"]';\n const $$popoverBtnActive = document.querySelectorAll(`${popoverSelector}.active`);\n if ($$popoverBtnActive.length > 0) {\n $$popoverBtnActive.forEach((el) => {\n Popover.getInstance(el).hide();\n el.classList.remove('active');\n });\n };\n },\n loadRests: () => {\n const ids = {};\n document.querySelectorAll('.js-rest-list-popovers.needrests').forEach((el) => {\n const id = el.getAttribute('itemId');\n ids[id] = id;\n });\n config.get('/catalog/availablesbygoods/', { 'goodIds': JSON.stringify(ids) }).then((response) => {\n if (response.length > 0) {\n response.forEach((goodInfo) => {\n const $$goodBlocks = document.querySelectorAll(`.js-rest-list-popovers[itemId=\"${goodInfo.good_id}\"]`);\n $$goodBlocks.forEach(($goodBlock) => {\n $goodBlock.classList.remove('needrests');\n if (goodInfo.stock) {\n $goodBlock.querySelector('.availabilityBlock.stockAvailability').setAttribute('data-available', goodInfo.maxStock);\n $goodBlock.querySelector('.availabilityBlock.stockAvailability .stockShopsCount').innerHTML = goodInfo.stock;\n $goodBlock.querySelector('.availabilityBlock.stockAvailability .stockShopsNames').innerHTML = goodInfo.pointNameStock;\n } else {\n $goodBlock.querySelector('.availabilityBlock.stockAvailability').classList.add('d-none');\n }\n if (goodInfo.delivery) {\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability').setAttribute('data-available', goodInfo.maxDelivery);\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability .deliveryShopsCount').innerHTML = goodInfo.delivery;\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability .deliveryLength').innerHTML = goodInfo.minDeliveryLogist;\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability .deliveryShopsNames').innerHTML = goodInfo.pointNameDelivery;\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability .deliveryLengthNames').innerHTML = goodInfo.daysNameDelivery;\n } else {\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability').classList.add('d-none');\n }\n if (goodInfo.tk) {\n $goodBlock.querySelector('.availabilityBlock.tkAvailability').setAttribute('data-available', goodInfo.maxTk);\n $goodBlock.querySelector('.availabilityBlock.tkAvailability .tkShopsCount').innerHTML = goodInfo.tk;\n $goodBlock.querySelector('.availabilityBlock.tkAvailability .tkLength').innerHTML = goodInfo.minTkLogist;\n $goodBlock.querySelector('.availabilityBlock.tkAvailability .tkShopsNames').innerHTML = goodInfo.pointNameTK;\n $goodBlock.querySelector('.availabilityBlock.tkAvailability .tkLengthNames').innerHTML = goodInfo.daysNameTK;\n } else {\n $goodBlock.querySelector('.availabilityBlock.tkAvailability').classList.add('d-none');\n }\n });\n });\n }\n });\n },\n};\n","/*!\n * Bootstrap popover.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./tooltip.js'), require('./util/index.js')) :\n typeof define === 'function' && define.amd ? define(['./tooltip', './util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.Tooltip, global.Index));\n})(this, (function (Tooltip, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'popover';\n const SELECTOR_TITLE = '.popover-header';\n const SELECTOR_CONTENT = '.popover-body';\n const Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' + '
' + '
' + '
' + '
',\n trigger: 'click'\n };\n const DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n };\n\n /**\n * Class definition\n */\n\n class Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n }\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Popover);\n\n return Popover;\n\n}));\n//# sourceMappingURL=popover.js.map\n","/*!\n * Bootstrap tooltip.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./util/index.js'), require('./util/sanitizer.js'), require('./util/template-factory.js')) :\n typeof define === 'function' && define.amd ? define(['@popperjs/core', './base-component', './dom/event-handler', './dom/manipulator', './util/index', './util/sanitizer', './util/template-factory'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global[\"@popperjs/core\"], global.BaseComponent, global.EventHandler, global.Manipulator, global.Index, global.Sanitizer, global.TemplateFactory));\n})(this, (function (Popper, BaseComponent, EventHandler, Manipulator, index_js, sanitizer_js, TemplateFactory) { 'use strict';\n\n function _interopNamespaceDefault(e) {\n const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });\n if (e) {\n for (const k in e) {\n if (k !== 'default') {\n const d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: () => e[k]\n });\n }\n }\n }\n n.default = e;\n return Object.freeze(n);\n }\n\n const Popper__namespace = /*#__PURE__*/_interopNamespaceDefault(Popper);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'tooltip';\n const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\n const CLASS_NAME_FADE = 'fade';\n const CLASS_NAME_MODAL = 'modal';\n const CLASS_NAME_SHOW = 'show';\n const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\n const EVENT_MODAL_HIDE = 'hide.bs.modal';\n const TRIGGER_HOVER = 'hover';\n const TRIGGER_FOCUS = 'focus';\n const TRIGGER_CLICK = 'click';\n const TRIGGER_MANUAL = 'manual';\n const EVENT_HIDE = 'hide';\n const EVENT_HIDDEN = 'hidden';\n const EVENT_SHOW = 'show';\n const EVENT_SHOWN = 'shown';\n const EVENT_INSERTED = 'inserted';\n const EVENT_CLICK = 'click';\n const EVENT_FOCUSIN = 'focusin';\n const EVENT_FOCUSOUT = 'focusout';\n const EVENT_MOUSEENTER = 'mouseenter';\n const EVENT_MOUSELEAVE = 'mouseleave';\n const AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: index_js.isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: index_js.isRTL() ? 'right' : 'left'\n };\n const Default = {\n allowList: sanitizer_js.DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' + '
' + '
' + '
',\n title: '',\n trigger: 'hover focus'\n };\n const DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n };\n\n /**\n * Class definition\n */\n\n class Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper__namespace === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW));\n const shadowRoot = index_js.findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', index_js.noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', index_js.noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = index_js.getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW);\n }\n _createPopper(tip) {\n const placement = index_js.execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return index_js.execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...index_js.execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : index_js.getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n }\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Tooltip);\n\n return Tooltip;\n\n}));\n//# sourceMappingURL=tooltip.js.map\n","/*!\n * Bootstrap sanitizer.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Sanitizer = {}));\n})(this, (function (exports) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n // js-docs-start allow-list\n const ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n // js-docs-end allow-list\n\n const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n /**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n // eslint-disable-next-line unicorn/better-regex\n const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\n const allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n };\n function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n }\n\n exports.DefaultAllowlist = DefaultAllowlist;\n exports.sanitizeHtml = sanitizeHtml;\n\n Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\n}));\n//# sourceMappingURL=sanitizer.js.map\n","/*!\n * Bootstrap template-factory.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/selector-engine.js'), require('./config.js'), require('./sanitizer.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/selector-engine', './config', './sanitizer', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.TemplateFactory = factory(global.SelectorEngine, global.Config, global.Sanitizer, global.Index));\n})(this, (function (SelectorEngine, Config, sanitizer_js, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'TemplateFactory';\n const Default = {\n allowList: sanitizer_js.DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n };\n const DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n };\n const DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n };\n\n /**\n * Class definition\n */\n\n class TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (index_js.isElement(content)) {\n this._putElementInTemplate(index_js.getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizer_js.sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return index_js.execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n }\n\n return TemplateFactory;\n\n}));\n//# sourceMappingURL=template-factory.js.map\n"],"names":["CompareController","constructor","this","load_goods_in_compare","fetch","then","response","json","goodCount","Array","isArray","goods","forEach","el","document","querySelectorAll","classList","add","remove","title","compareDontShow","cookie","compareInitHide","querySelector","innerHTML","count_goods","style","display","show_only_different_params","label","alias","dataset","hide","value","params","param","compareValue","headerElement","length","show_all_params","hide_empty_params","addEventListener","productItem","Compare","compareItem","marginLeft","scrollLeft","console","log","parentNode","id","config","gogoods_id","window","innerWidth","itemsCount","activeItemsCount","isScrolling","button","tabPane","closest","contains","compareLabelsWrapActive","leftPos","itemWidth","offsetWidth","hidden","disabled","scrollTo","left","behavior","onScroll","removeEventListener","scrollWidth","clientWidth","map","popoverTriggerEl","Popover","SELECT","compareHead","bindEvents","$addTofavorites","textContent","removeGoodFromCompare","goodId","addGoodToCompare","setCompareStatus","update","data","$compareHead","$comparHeadName","$comparHeadCount","$comparHeadAction","name","action","getElementById","insertAdjacentHTML","templateCompareHead","updateInHead","$headCount","Object","values","mobileCompare","mobileLinkCompareVal","createElement","appendChild","$goodLink","$goodItem","getAvailableInfo","goodAvailableObj","undefined","jquery","$","availableType","available_type","item","dropdown","nextElementSibling","$dropdownMenu","dropdownInstance","Dropdown","$dropdownIframe","e","getBadgetInfo","badgetObj","badgetType","badget_type","type","object_type","$$smallVideoLoad","element","$badgeVideoContainer","videoLink","smallVideoLink","tpl","videoContainerHeight","offsetHeight","height","initVideoBudget","videoDiv","modalAfterAddToCart","modalId","get","modal","modalTemplate","body","setContent","content","show","Modal","yaMetrika","dataLayer","products","push","getAttribute","ym","init","bindEvent","restListPopover","removePopoversFromStorage","searchResult","onclick","event","target","tagName","orderAddCount","goGoodId","count","url","answer","common","cartHead","reloadCarts","metricaModule","changeCount","sizePrices","txtBlock","$input","inputValue","parseInt","dataRest","rest","keys","localStorage","key","startsWith","removeItem","loadRests","initPopoverListener","popoverOptions","hideActivePopovers","$popoverBtn","setTimeout","targetData","localValue","$popoverHeader","$popoverContent","getItem","setItem","$$popoverBtnActive","ids","JSON","stringify","goodInfo","good_id","$goodBlock","stock","setAttribute","maxStock","pointNameStock","delivery","maxDelivery","minDeliveryLogist","pointNameDelivery","daysNameDelivery","tk","maxTk","minTkLogist","pointNameTK","daysNameTK","module","exports","Tooltip","index_js","NAME","SELECTOR_TITLE","SELECTOR_CONTENT","Default","offset","placement","template","trigger","DefaultType","_isWithContent","_getTitle","_getContent","_getContentForTemplate","_resolvePossibleFunction","_config","static","each","getOrCreateInstance","TypeError","defineJQueryPlugin","factory","Popper","BaseComponent","EventHandler","Manipulator","sanitizer_js","TemplateFactory","_interopNamespaceDefault","n","create","Symbol","toStringTag","k","d","getOwnPropertyDescriptor","defineProperty","enumerable","default","freeze","Popper__namespace","DISALLOWED_ATTRIBUTES","Set","CLASS_NAME_FADE","CLASS_NAME_SHOW","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","AttachmentMap","AUTO","TOP","RIGHT","isRTL","BOTTOM","LEFT","allowList","DefaultAllowlist","animation","boundary","container","customClass","delay","fallbackPlacements","html","popperConfig","sanitize","sanitizeFn","selector","super","_isEnabled","_timeout","_isHovered","_activeTrigger","_popper","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","toggle","click","_isShown","_leave","_enter","dispose","clearTimeout","off","_element","_hideModalHandler","_disposePopper","Error","showEvent","eventName","isInTheDom","findShadowRoot","ownerDocument","documentElement","defaultPrevented","_getTipElement","append","_createPopper","concat","children","on","noop","complete","_queueCallback","_isAnimated","_isWithActiveTrigger","removeAttribute","Boolean","_createTipElement","_getTemplateFactory","toHtml","tipId","getUID","toString","changeContent","extraClass","_initializeOnDelegatedTarget","delegateTarget","_getDelegateConfig","execute","attachment","toUpperCase","createPopper","_getPopperConfig","_getOffset","split","Number","popperData","arg","defaultBsPopperConfig","modifiers","options","enabled","phase","fn","state","triggers","eventIn","eventOut","context","relatedTarget","trim","_setTimeout","handler","timeout","includes","_getConfig","dataAttributes","getDataAttributes","dataAttribute","has","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getElement","entries","destroy","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","i","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","toLowerCase","test","nodeValue","filter","attributeRegex","RegExp","some","regex","sanitizeHtml","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elements","elementName","attributeList","attributes","allowedAttributes","SelectorEngine","Config","DefaultContentType","entry","getContent","hasContent","_checkContent","templateWrapper","_maybeSanitize","text","_setContent","templateElement","findOne","isElement","_putElementInTemplate"],"sourceRoot":""}