{"version":3,"sources":["/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/catalog/catalog.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/filter/filter.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/sku-selector/sku-selector.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/sku-options/sku-options.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/sku-options/sku-options.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/sku-select/sku-select.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/sku-select/sku-select.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/sku-selector/sku-selector.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/quantity/quantity.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/quantity/quantity.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/product/product.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/entry/catalog.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/catalog.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog /^\\.\\/[^\\/]+\\/[^\\/.]+\\.(js|css|scss|sass|less)$/","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/catalog/catalog.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/description/description.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/filter/filter.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/item/item.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/product/product.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/component/tortured-map/tortured-map.js","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/sections/sections.scss*","/builds/32892/sites/eurocement.ru/www/local/templates/eurocement/frontend/src/block/catalog/sku-option/sku-option.scss*"],"names":["init","require","block","blockElement","offers","selects","tmpSelects","skuChangedEvent","CustomEvent","bubbles","detail","scope","document","querySelector","js_offers","querySelectorAll","map","tmpSelect","select","classList","contains","addEventListener","dispatchSkuUpdatedEvent","window","setByHash","dispatchEvent","currentHash","location","hash","test","offerId","parseInt","exec","Number","isNaN","offer","find","id","selectCombination","updateHash","url","href","replace","quantityBit","RegExp","lastMatch","history","replaceState","bestBet","getClosestKeys","treeId","key","disableInactive","result","value","tree","forEach","set","keys","activate","selectUpdatedEvent","Options","element","dataset","optionClick","bind","options","option","e","choise","target","closest","oldChoise","remove","add","arr","join","toggle","includes","Select","onChange","length","toggleAttribute","setStep","updateQuantity","step","quantity","input","capacity","quantityChangeEvent","offerID","hashedQuantity","getQuantityFromHash","parseFloat","getAttribute","setAttribute","initSubscribers","dispatchQuantityChangeEvent","newStep","localInput","min","strStep","Math","round","toString","innerHTML","newQuantity","cap","originalQuantity","notSoPreciseNumber","max","a","increment","decrease","getModifier","modifier","shiftKey","ctrlKey","offerBit","requireAll","r","ready","then","catalog","grid","line","preventDefault","expires","title","form","JCSmartFilter","prototype","TAO","updateItem","PID","arItem","VALUES","i","hasOwnProperty","CONTROL_ID","indexOf","control","BX","label","DISPLAY_VALUE","VALUE","toggleSubscribers","contractsHiddenClass","isAvailable","lastPrice","lastQuantity","lastOffer","lastPriceIndex","priceElement","imageElement","oneModalToRuleThemAll","region","get","noteElement","zeroElement","contractsElement","contractsSelect","extraElement","extraSelect","uniqContracts","uniqExtra","regionElement","unwrapScripts","initModal","price","contractChanged","extraChanged","skuChanged","quantityChanged","initBasketButtons","newIsAvailable","checkContracts","checkExtraPackages","updatePrice","prices","updateSinglePrice","updateSingleContract","contract","updateSingleExtraPack","extra_pack_name","setMeasure","measure","updateImage","src","width","replaceStuff","contractElement","parentNode","filter","item","selectedIndex","addToBasketFromDOM","addToBasketSequence","params","sendRequest","responseJson","count","getFooterContent","success","setContent","response","open","headers","Headers","append","body","FormData","type","extra_pack","fetch","method","credentials","status","Promise","resolve","error","Error","statusText","reject","json","catch","console","warn","needle","replacement","createRange","createContextualFragment","replaceWith","unwrappables","unwrappable","innerText","state","elem","closeLabel","cssClass","footer","beforeOpen","activeElement","blur","closeButton","getContent","appendChild","addFooterBtn","substr","lastIndexOf","contractItems","index","findIndex","it","l","cond","some","createElement","style","display","createTextNode","TorturedMap","elements","store","Array","isArray","push","ilen","entry","matched","j","entryKey","regex","Set","fill","entries","getClosestList","Object","assign","getClosest"],"mappings":"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","file":"js/catalog.js","sourcesContent":["// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/catalog/catalog.scss\n// module id = 190\n// module chunks = 2","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/filter/filter.scss\n// module id = 191\n// module chunks = 2","require('./sku-selector.scss');\n/* global js_offers */\n\n/**\n * @global {Array} js_offers\n */\n\n/**\n * TODO: refactor\n */\nimport {TorturedMap} from 'component/tortured-map/tortured-map';\nimport {Options} from \"catalog/sku-options\";\nimport {Select} from \"catalog/sku-select\";\n\nconst block = 'b-sku-selector';\n\nlet blockElement = null,\n\toffers = null,\n\tselects = [],\n\ttmpSelects = [],\n\tskuChangedEvent = new CustomEvent('sku-changed', {\n\t\tbubbles: true,\n\t\tdetail: {}\n\t});\n\nexport function init(scope = document) {\n\tblockElement = scope.querySelector(`.${block}`);\n\n\toffers = new TorturedMap(js_offers);\n\n\tif (!blockElement) {\n\t\treturn;\n\t}\n\n\ttmpSelects = [...blockElement.querySelectorAll(`.${block}__selector`)];\n\n\tselects = tmpSelects.map(select => {\n\t\tlet tmpSelect;\n\n\t\tif (select.classList.contains(`${block}__selector--type_options`)) {\n\t\t\ttmpSelect = new Options(select);\n\t\t} else {\n\t\t\ttmpSelect = new Select(select);\n\t\t}\n\n\t\treturn tmpSelect;\n\t});\n\n\tblockElement.addEventListener('sku-value-changed', dispatchSkuUpdatedEvent, true);\n\twindow.addEventListener('hashchange', setByHash);\n\n\tif (!setByHash()) {\n\t\tselects[0].dispatchEvent();\n\t}\n}\n\nfunction setByHash() {\n\tconst currentHash = window.location.hash;\n\n\tif (!/offer-\\d+/.test(currentHash)) {\n\t\treturn false;\n\t}\n\n\tconst offerId = parseInt(/offer-(\\d+)/.exec(currentHash)[1], 10);\n\tif (!offerId || Number.isNaN(offerId)) {\n\t\treturn false;\n\t}\n\n\tlet offer = js_offers.find(([, {id}]) => offerId == id);\n\n\tif (!offer) {\n\t\treturn false;\n\t}\n\n\tselectCombination(offer[0]);\n\n\tdispatchSkuUpdatedEvent();\n\n\treturn true;\n}\n\nfunction updateHash(id) {\n\tconst currentHash = window.location.hash;\n\n\tlet url = window.location.href;\n\tif (currentHash) {\n\t\turl = url.replace(currentHash, '');\n\t}\n\n\tlet quantityBit = '';\n\tif (/quantity-\\d+/.test(currentHash)) {\n\t\tquantityBit = `-and-quantity-${RegExp.lastMatch}`;\n\t}\n\turl += `#offer-${id}${quantityBit}`;\n\n\twindow.history.replaceState(null, null, url);\n}\n\nfunction dispatchSkuUpdatedEvent() {\n\tlet bestBet = offers.getClosestKeys(selects.map(select => select.treeId));\n\n\tselectCombination(bestBet.key);\n\tdisableInactive([...bestBet.result]);\n\n\tskuChangedEvent.detail.offer = bestBet.value;\n\tupdateHash(bestBet.value.id);\n\tblockElement.dispatchEvent(skuChangedEvent);\n}\n\nfunction selectCombination(tree) {\n\t// Пускай пробуют ставить\n\tselects.forEach(select => select.set(tree));\n}\n\nfunction disableInactive(keys) {\n\tselects.forEach(select => {\n\t\tselect.activate(keys);\n\t});\n}\n\n\n// WEBPACK FOOTER //\n// ./src/block/catalog/sku-selector/sku-selector.js","require('./sku-options.scss');\nconst block = `b-sku-options`;\n\nconst selectUpdatedEvent = new CustomEvent('sku-value-changed', {\n\tbubbles: true,\n\tdetail: {},\n});\n\nexport class Options {\n\tget treeId() {\n\t\treturn this.element.querySelector(`.${block}__choise--checked`).dataset.treeId;\n\t}\n\n\tconstructor(scope) {\n\t\tthis.element = scope.querySelector(`.${block}`);\n\t\tthis.optionClick = this.optionClick.bind(this);\n\n\t\tthis.options = [...this.element.querySelectorAll(`.${block}__choise`)];\n\n\t\tthis.options.forEach(option => option.addEventListener('click', this.optionClick));\n\t\tthis.dispatchEvent();\n\t}\n\n\toptionClick(e) {\n\t\tlet choise = e.target.closest(`.${block}__choise`);\n\t\tif (!choise || choise.classList.contains(`${block}__choise--disabled`)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.select(choise);\n\t\tthis.dispatchEvent();\n\t}\n\n\tdispatchEvent() {\n\t\tselectUpdatedEvent.detail.treeId = this.treeId;\n\n\t\tthis.element.dispatchEvent(selectUpdatedEvent);\n\t}\n\n\tselect(choise) {\n\t\tconst oldChoise = this.element.querySelector(`.${block}__choise--checked`);\n\t\toldChoise.classList.remove(`${block}__choise--checked`);\n\n\t\tchoise.classList.add(`${block}__choise--checked`);\n\t}\n\n\t/**\n\t * Поставить первый подходящий\n\t * @param {Array} arr\n\t */\n\tset(arr) {\n\t\tthis.select(this.element.querySelector(`[data-tree-id=\"${arr.join('\"], [data-tree-id=\"')}\"]`));\n\n\t\tselectUpdatedEvent.detail.treeId = this.treeId;\n\t}\n\n\tactivate(arr) {\n\t\tthis.options.forEach(option => {\n\t\t\toption.classList.toggle(`${block}__choise--disabled`, !arr.includes(option.dataset.treeId));\n\t\t});\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/block/catalog/sku-options/sku-options.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/sku-options/sku-options.scss\n// module id = 194\n// module chunks = 2","require('./sku-select.scss');\nconst block = `b-sku-select`;\n\nconst selectUpdatedEvent = new CustomEvent('sku-value-changed', {\n\tbubbles: true,\n\tdetail: {},\n});\n\nexport class Select {\n\tget treeId() {\n\t\treturn this.element.value;\n\t}\n\n\tconstructor(scope) {\n\t\tthis.element = scope.querySelector(`.${block}__select`);\n\t\tthis.onChange = this.onChange.bind(this);\n\n\t\tthis.element.addEventListener('change', this.onChange);\n\t\tthis.dispatchEvent();\n\t}\n\n\tonChange() {\n\t\tthis.dispatchEvent();\n\t}\n\n\tdispatchEvent() {\n\t\tselectUpdatedEvent.detail.treeId = this.treeId;\n\n\t\tthis.element.dispatchEvent(selectUpdatedEvent);\n\t}\n\n\t/**\n\t * Поставить первый подходящий\n\t * @param {Array} arr\n\t */\n\tset(arr) {\n\t\tif (!(arr && arr.length > 0)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.element.value = this.element.querySelector(`[value=\"${arr.join('\"], [value=\"')}\"]`).value;\n\t}\n\n\tactivate(arr) {\n\t\t[...this.element.options].forEach(option => {\n\t\t\toption.toggleAttribute('disabled', !arr.includes(option.value));\n\t\t});\n\t}\n}\n\n\n// WEBPACK FOOTER //\n// ./src/block/catalog/sku-select/sku-select.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/sku-select/sku-select.scss\n// module id = 196\n// module chunks = 2","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/sku-selector/sku-selector.scss\n// module id = 197\n// module chunks = 2","require('./quantity.scss');\nconst block = 'b-quantity';\nlet step = 1,\n\tquantity = 1,\n\tblockElement = null,\n\tinput = null,\n\tcapacity = 1;\n\nconst quantityChangeEvent = new CustomEvent('quantity-changed', {\n\tbubbles: true,\n\tdetail: {\n\t\tquantity: void 0,\n\t}\n});\n\nexport function init(offerID, scope = document) {\n\tblockElement = scope.querySelector(`.${block}`);\n\n\tif (!blockElement) {\n\t\treturn;\n\t}\n\n\tinput = blockElement.querySelector(`.${block}__input`);\n\n\tlet hashedQuantity = getQuantityFromHash();\n\n\tstep = parseFloat(input.getAttribute('step'));\n\tcapacity = (window.js_offers.find(([, {id}]) => offerID === id)[1].capacity);\n\tcapacity = capacity !== '0' ? parseFloat(capacity) : step;\n\tinput.setAttribute('value', capacity)\n\tquantity = hashedQuantity ? hashedQuantity : parseFloat(input.getAttribute('value'));\n\n\tinitSubscribers();\n\n\twindow.addEventListener('hashchange', () => {\n\t\tgetQuantityFromHash();\n\t\tupdateQuantity(input.value);\n\t});\n\n\tinput.addEventListener('change', e => {\n\t\tconst input = e.target;\n\t\tupdateQuantity(input.value);\n\t});\n\n\tdispatchQuantityChangeEvent();\n}\n\nexport function setStep(newStep, localInput = null, capacity = newStep) {\n\tstep = parseFloat(newStep);\n\tcapacity = parseFloat(capacity);\n\tif (localInput) {\n\t\tlocalInput.step = step;\n\t\tlocalInput.min = capacity;\n\t} else if (input) {\n\t\tinput.step = step;\n\t\tinput.min = capacity;\n\t}\n\n\tvar strStep = (Math.round(step * 100) / 100).toString().replace('.', ',');\n\t[...document.querySelectorAll('.js-step')].forEach(element => element.innerHTML = strStep);\n\t//[...document.querySelectorAll('.js-step')].forEach(element => element.innerHTML = step);\n\n\tupdateQuantity(quantity, localInput);\n}\n\nexport function updateQuantity(newQuantity = quantity, cap = capacity, localInput = null) {\n\tlet originalQuantity = parseFloat(newQuantity);\n\tcap = parseFloat(cap)\n\n\tif (cap !== capacity) {\n\t\tcapacity = cap\n\t}\n\n\tquantity = notSoPreciseNumber(Math.max(cap, (Math.round((originalQuantity - cap) / step) * step) + cap));\n\n\tif (isNaN(quantity)) {\n\t\tquantity = capacity;\n\t}\n\n\tif (localInput) {\n\t\tlocalInput.value = quantity;\n\t} else if (input) {\n\t\tinput.value = quantity;\n\t}\n\n\tdispatchQuantityChangeEvent();\n}\n\nfunction dispatchQuantityChangeEvent() {\n\tquantityChangeEvent.detail.quantity = quantity;\n\tupdateHash(quantity);\n\tif (blockElement) {\n\t\tblockElement.dispatchEvent(quantityChangeEvent);\n\t}\n}\n\nfunction notSoPreciseNumber(a) {\n\treturn Math.round(a * 10000) / 10000;\n}\n\nfunction initSubscribers() {\n\t[...blockElement.querySelectorAll('.js-increment')].forEach(element => element.addEventListener('click', increment));\n\t[...blockElement.querySelectorAll('.js-decrease')].forEach(element => element.addEventListener('click', decrease));\n}\n\n\nfunction increment(e) {\n\tupdateQuantity(quantity + step * getModifier(e));\n}\n\nfunction decrease(e) {\n\tupdateQuantity(quantity - step * getModifier(e));\n}\n\nfunction getModifier(e) {\n\tlet modifier = 1;\n\n\tswitch (true) {\n\t\tcase e.shiftKey && e.ctrlKey:\n\t\t\tmodifier = 10;\n\t\t\tbreak;\n\t\tcase e.shiftKey:\n\t\t\tmodifier = 5;\n\t\t\tbreak;\n\t\tcase e.ctrlKey:\n\t\t\tmodifier = 2;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn modifier;\n}\n\nfunction getQuantityFromHash() {\n\tconst currentHash = window.location.hash;\n\n\tif (!/quantity-[\\d,.]+/.test(currentHash)) {\n\t\treturn false;\n\t}\n\n\treturn parseFloat(/quantity-([\\d,.]+)/.exec(currentHash)[1], 10);\n}\n\nfunction updateHash(quantity) {\n\tconst currentHash = window.location.hash;\n\n\tlet url = window.location.href;\n\tif (currentHash) {\n\t\turl = url.replace(currentHash, '');\n\t}\n\n\tlet offerBit = '';\n\tif (/offer-\\d+/.test(currentHash)) {\n\t\tofferBit = `${RegExp.lastMatch}-and-quantity-`;\n\t\turl += `#${offerBit}${quantity}`;\n\t}\n\n\twindow.history.replaceState(null, null, url);\n}\n\n\n// WEBPACK FOOTER //\n// ./src/block/catalog/quantity/quantity.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/quantity/quantity.scss\n// module id = 199\n// module chunks = 2","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/product/product.scss\n// module id = 200\n// module chunks = 2","import 'block/catalog';\n\n\n// WEBPACK FOOTER //\n// ./src/entry/catalog.js","function requireAll(r) {\n\tr.keys().map(r);\n}\n\nrequireAll(require.context('.', true, /^\\.\\/[^/]+\\/[^/.]+\\.(js|css|scss|sass|less)$/));\n\n\n\n// WEBPACK FOOTER //\n// ./src/block/catalog/catalog.js","var map = {\n\t\"./catalog/catalog.js\": 495,\n\t\"./catalog/catalog.scss\": 190,\n\t\"./description/description.scss\": 496,\n\t\"./filter/filter.js\": 497,\n\t\"./filter/filter.scss\": 191,\n\t\"./item/item.scss\": 498,\n\t\"./product/product.js\": 499,\n\t\"./product/product.scss\": 200,\n\t\"./quantity/quantity.js\": 198,\n\t\"./quantity/quantity.scss\": 199,\n\t\"./sections/sections.scss\": 501,\n\t\"./sku-option/sku-option.scss\": 502,\n\t\"./sku-options/sku-options.js\": 193,\n\t\"./sku-options/sku-options.scss\": 194,\n\t\"./sku-select/sku-select.js\": 195,\n\t\"./sku-select/sku-select.scss\": 196,\n\t\"./sku-selector/sku-selector.js\": 192,\n\t\"./sku-selector/sku-selector.scss\": 197\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 494;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog ^\\.\\/[^\\/]+\\/[^\\/.]+\\.(js|css|scss|sass|less)$\n// module id = 494\n// module chunks = 2","require('./catalog.scss');\nimport Cookie from \"js-cookie\";\n\nconst block = 'b-catalog';\n\nready().then(() => {\n\tconst catalog = document.querySelector(`.${block}__items`);\n\tconst grid = document.querySelector(`.${block}__view--grid`);\n\tconst line = document.querySelector(`.${block}__view--line`);\n\n\tif (!catalog || !grid || !line) {\n\t\treturn;\n\t}\n\n\tgrid.addEventListener('click', e => {\n\t\te.preventDefault();\n\n\t\tgrid.classList.add(`${block}__view--checked`);\n\t\tline.classList.remove(`${block}__view--checked`);\n\t\tcatalog.classList.remove(`${block}__items--lines`);\n\t\tcatalog.classList.add(`${block}__items--grid`);\n\n\t\tCookie.remove('IS_LINES');\n\t});\n\n\tline.addEventListener('click', e => {\n\t\te.preventDefault();\n\n\t\tgrid.classList.remove(`${block}__view--checked`);\n\t\tline.classList.add(`${block}__view--checked`);\n\t\tcatalog.classList.remove(`${block}__items--grid`);\n\t\tcatalog.classList.add(`${block}__items--lines`);\n\n\t\tCookie.set('IS_LINES', true, { expires: 30 });\n\t});\n});\n\n\n// WEBPACK FOOTER //\n// ./src/block/catalog/catalog/catalog.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/description/description.scss\n// module id = 496\n// module chunks = 2","require('./filter.scss');\nconst block = 'b-filter';\n\nready().then(() => {\n\tconst title = document.querySelector(`.${block}__title`);\n\tconst form = document.querySelector(`.${block}__form`);\n\n\tif (!title || !form) {\n\t\treturn;\n\t}\n\n\t/**\n\t * Пришлось залезть в JS-объект, управляющий смарт-фильтром Битрикса,\n\t * чтобы научить его заменять текст на метках опций смарт-фильтра.\n\t * Код объекта хранится тут:\n\t * www/bitrix/components/bitrix/catalog.smart.filter/templates/.default/script.js\n\t *\n\t * Ссылку на родной метод обновления элементов сохраняем во временный объект.\n\t * вместо него вписываем свой код, который вызывает родной метод, а потом меняет\n\t * тексты для опций заводов (свойства элементов инфоблока с ID свойства 122).\n\t */\n\t// Проверяем наличие Битрикса и объекта, управляющего смарт-фильтром\n\tif (('undefined' !== typeof window['BX']) &&\n\t\t('undefined' !== typeof window['JCSmartFilter']) &&\n\t\t('undefined' !== typeof window.JCSmartFilter['prototype']) &&\n\t\t('undefined' !== typeof window.JCSmartFilter.prototype['updateItem'])) {\n\t\t// Создаём временный объект в глобальной оласти видимости\n\t\tif ('undefined' === typeof window['TAO']) {\n\t\t\twindow.TAO = {};\n\t\t}\n\t\tif ('undefined' === typeof window.TAO['JCSmartFilter']) {\n\t\t\twindow.TAO.JCSmartFilter = {};\n\t\t}\n\t\t// Сохраняем ссылку на родной метод Битрикса\n\t\twindow.TAO.JCSmartFilter.updateItem = window.JCSmartFilter.prototype.updateItem;\n\t\t// Подменяем метод своей реализацией\n\t\twindow.JCSmartFilter.prototype.updateItem = function (PID, arItem) {\n\t\t\t// Вызываем родной метод\n\t\t\twindow.TAO.JCSmartFilter.updateItem(PID, arItem);\n\t\t\t// Обрабатываем свойства (код частично скопирован из родного метода)\n\t\t\tif (arItem.VALUES) {\n\t\t\t\tfor (var i in arItem.VALUES) {\n\t\t\t\t\tif (arItem.VALUES.hasOwnProperty(i)) {\n\t\t\t\t\t\tvar value = arItem.VALUES[i];\n\t\t\t\t\t\t// Нас интересуют только заводы - ID свойства 122\n\t\t\t\t\t\tif (0 >= value.CONTROL_ID.indexOf('_122_')) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar control = window.BX(value.CONTROL_ID);\n\t\t\t\t\t\tif (control) {\n\t\t\t\t\t\t\t// Нам нужен только текст на опции фильтра\n\t\t\t\t\t\t\tvar label = document.querySelector('[data-role=\"label_'+value.CONTROL_ID+'\"] .bx-filter-param-text');\n\t\t\t\t\t\t\tif ('undefined' !== typeof value['DISPLAY_VALUE']) {\n\t\t\t\t\t\t\t\tlabel.innerHTML = value.DISPLAY_VALUE;\n\t\t\t\t\t\t\t} else if ('undefined' !== typeof value['VALUE']) {\n\t\t\t\t\t\t\t\tlabel.innerHTML = value.VALUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\ttitle.addEventListener('click', e => {\n\t\te.preventDefault();\n\n\t\ttitle.classList.toggle(`${block}__title--opened`);\n\t\tform.classList.toggle(`${block}__form--opened`);\n\t});\n});\n\n\n// WEBPACK FOOTER //\n// ./src/block/catalog/filter/filter.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/item/item.scss\n// module id = 498\n// module chunks = 2","require('./product.scss');\nimport {modal as Modal} from 'tingle.js';\nimport Cookie from 'js-cookie';\n\nimport {formatPrice} from 'component/common/common';\nimport {init as initSkuSelector} from 'catalog/sku-selector/sku-selector';\nimport {init as initQuantity, setStep, updateQuantity} from 'catalog/quantity/quantity';\n\nconst\n\tblock = 'b-product',\n\tcontractsHiddenClass = 'b-description__contract--hidden'\n;\n\nlet isAvailable = true,\n\tlastPrice = null,\n\tlastQuantity = null,\n\tlastOffer = null,\n\tcapacity = null,\n\tlastPriceIndex = 0,\n\tpriceElement = null,\n\timageElement = null,\n\toneModalToRuleThemAll = null,\n\tregion = Cookie.get('REGION'),\n\n\tnoteElement = null,\n\tzeroElement = null,\n\n\tcontractsElement = null,\n\tcontractsSelect = null,\n\n\textraElement = null,\n\textraSelect = null,\n\n\tuniqContracts = null,\n\tuniqExtra = null\n;\n\nready().then(init);\ndocument.addEventListener('layout-updated', init);\n\nexport function init() {\n\tconst blockElement = document.querySelector(`.${block}`);\n\n\tif (!blockElement) {\n\t\treturn;\n\t}\n\n\tlet regionElement = document.querySelector('.js-current-region');\n\tif (regionElement) {\n\t\tregion = regionElement.dataset.region;\n\t}\n\n\t// Хак для сео\n\tunwrapScripts(blockElement);\n\n\tinitModal();\n\n\tpriceElement = blockElement.querySelector(`.${block}__price`);\n\tlastPrice = parseFloat(priceElement.dataset.price);\n\n\timageElement = blockElement.querySelector(`.${block}__image`);\n\n\tif ((contractsElement = blockElement.querySelector('.b-description__contract'))) {\n\t\tif ((contractsSelect = contractsElement.querySelector('select'))) {\n\t\t\tcontractsSelect.addEventListener('change', contractChanged);\n\t\t}\n\t}\n\n\tif ((extraElement = blockElement.querySelector('.b-sku-selector__extra-pack-selector'))) {\n\t\tif ((extraSelect = extraElement.querySelector('select'))) {\n\t\t\textraSelect.addEventListener('change', extraChanged);\n\t\t}\n\t}\n\n\t// Обновление sku - приходит из sku-selector\n\tblockElement.addEventListener('sku-changed', skuChanged);\n\n\t// Обновление количества товаров - приходит из блока quantity\n\tblockElement.addEventListener('quantity-changed', quantityChanged);\n\n\tnoteElement = document.querySelector('.b-quantity__note');\n\tzeroElement = document.querySelector('.b-quantity__zero');\n\n\tinitBasketButtons();\n\t// Инициализируем вложенные блоки\n\tinitSkuSelector();\n\tinitQuantity(lastOffer.id);\n}\n\nfunction skuChanged(e) {\n\tlet newIsAvailable = typeof e.detail.offer !== 'undefined';\n\n\tif (newIsAvailable) {\n\t\tlastOffer = e.detail.offer;\n\t\tcapacity = (window.js_offers.find(([, {id}]) => lastOffer.id === id)[1].capacity);\n\t\tcapacity = capacity !== '0' ? capacity : lastOffer.step;\n\t\tlastPriceIndex = 0;\n\t\tcheckContracts();\n\n\t\tcheckExtraPackages();\n\n\t\tif (noteElement && zeroElement) {\n\t\t\tif (0 < lastOffer.capacity) {\n\t\t\t\tif (noteElement.classList.contains('b-quantity__note--hidden')) {\n\t\t\t\t\tnoteElement.classList.remove('b-quantity__note--hidden');\n\t\t\t\t}\n\t\t\t\tif (!zeroElement.classList.contains('b-quantity__zero--hidden')) {\n\t\t\t\t\tzeroElement.classList.add('b-quantity__zero--hidden');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!noteElement.classList.contains('b-quantity__note--hidden')) {\n\t\t\t\t\tnoteElement.classList.add('b-quantity__note--hidden');\n\t\t\t\t}\n\t\t\t\tif (zeroElement.classList.contains('b-quantity__zero--hidden')) {\n\t\t\t\t\tzeroElement.classList.remove('b-quantity__zero--hidden');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tupdatePrice(lastOffer.prices[lastPriceIndex].price);\n\t\tupdateSinglePrice(1 * lastOffer.prices[lastPriceIndex].price);\n\t\tupdateSingleContract(lastOffer.prices[lastPriceIndex].contract);\n\n\t\tupdateSingleExtraPack(lastOffer.prices[lastPriceIndex].extra_pack_name);\n\n\t\tsetStep(lastOffer.step, document.querySelector(`.${block} .b-quantity__input`), capacity);\n\t\tupdateQuantity(0, capacity);\n\t\tsetMeasure(lastOffer.measure);\n\n\t\tupdateImage(e.detail.offer.src, e.detail.offer.width);\n\t\treplaceStuff(lastOffer.replace);\n\t} else {\n\t\tupdateImage();\n\t}\n\n\tif (isAvailable !== newIsAvailable) {\n\t\tisAvailable = newIsAvailable;\n\n\t\ttoggleSubscribers(isAvailable);\n\t}\n}\n\nfunction quantityChanged(e) {\n\tupdatePrice(void 0, e.detail.quantity);\n}\n\nfunction updatePrice(price = lastPrice, quantity = lastQuantity) {\n\t[...document.querySelectorAll('.js-price-sum')].forEach(priceElement => priceElement.innerHTML = formatPrice(price * quantity) + ' руб.');\n\n\tlastPrice = price;\n\tlastQuantity = quantity;\n}\n\nfunction updateSinglePrice(price) {\n\t[...document.querySelectorAll('.js-single-price')].forEach(priceElement => priceElement.innerHTML = formatPrice(price) + ' руб.');\n}\n\nfunction updateSingleContract(contract) {\n\t[...document.querySelectorAll('.js-price-contract')].forEach(contractElement => {\n\t\tif (contract) {\n\t\t\tcontractElement.innerHTML = contract;\n\t\t\tcontractElement.parentNode.classList.remove('is-hidden');\n\t\t} else {\n\t\t\tcontractElement.parentNode.classList.add('is-hidden');\n\t\t\tcontractElement.innerHTML = '';\n\t\t}\n\t});\n}\n\nfunction updateSingleExtraPack(extra_pack_name) {\n\tuniqExtra = lastOffer.prices.filter((item) => {\n\t\treturn lastOffer.prices[contractsSelect.selectedIndex].contract == item.contract;\n\t});\n\n\tif (uniqExtra.length > 1) {\n\t\tdocument.querySelector('.js-price-extra').closest('.b-sku-selector__extra-pack').classList.add('is-hidden');\n\n\t\treturn;\n\t}\n\n\t[...document.querySelectorAll('.js-price-extra')].forEach(extraElement => {\n\t\tif (extra_pack_name) {\n\t\t\textraElement.innerHTML = extra_pack_name;\n\t\t\textraElement.closest('.b-sku-selector__extra-pack').classList.remove('is-hidden');\n\t\t\t//extraElement.parentNode.classList.add('is-hidden');\n\t\t} else {\n\t\t\textraElement.closest('.b-sku-selector__extra-pack').classList.add('is-hidden');\n\t\t\t//extraElement.parentNode.classList.add('is-hidden');\n\t\t\textraElement.innerHTML = '';\n\t\t}\n\t});\n}\n\nfunction updateImage(src, width) {\n\tif (!src) {\n\t\tsrc = '/images/layout/catalog/product-no-photo.svg';\n\t}\n\n\tif (!width) {\n\t\twidth = 424\n\t}\n\n\timageElement.src = src;\n\timageElement.width = width;\n}\n\nfunction setMeasure(measure) {\n\t[...document.querySelectorAll('.js-measure')].forEach(element => element.innerHTML = measure);\n}\n\nfunction initBasketButtons() {\n\t[...document.querySelectorAll('.js-add-to-basket')].forEach(element => element.addEventListener('click', addToBasketFromDOM));\n}\n\nfunction addToBasketFromDOM(e) {\n\te.preventDefault();\n\n\taddToBasketSequence({offerID: e.target.dataset.offerId});\n}\n\nfunction addToBasketSequence(params) {\n\tsendRequest(params)\n\t\t.then(responseJson => {\n\t\t\t[...document.querySelectorAll('.js-basket-quantity')].forEach(element => element.innerHTML = responseJson.count);\n\n\t\t\treturn responseJson;\n\t\t})\n\t\t.then(responseJson => {\n\t\t\toneModalToRuleThemAll.getFooterContent().querySelector('.js-modal-action-leave').classList.toggle('is-hidden', !responseJson.success);\n\n\t\t\toneModalToRuleThemAll\n\t\t\t\t.setContent(responseJson.response)\n\t\t\t\t.open();\n\t\t});\n}\n\nfunction sendRequest({url = '/basket/update/', offerID = lastOffer.id, quantity = lastQuantity} = {}) {\n\tlet headers = new Headers();\n\theaders.append('X-Requested-With', 'XMLHttpRequest');\n\n\tlet body = new FormData();\n\tbody.append('product-id', offerID);\n\tbody.append('price-type-id', lastOffer.prices[lastPriceIndex].type);\n\tbody.append('price-id', lastOffer.prices[lastPriceIndex].id);\n\tbody.append('price', lastOffer.prices[lastPriceIndex].price);\n\tbody.append('quantity', quantity);\n\tbody.append('region', region);\n\n\tif (lastOffer.prices[lastPriceIndex].extra_pack) {\n\t\tbody.append('extra_pack', lastOffer.prices[lastPriceIndex].extra_pack);\n\t}\n\n\treturn fetch(url, {\n\t\tmethod: 'post',\n\t\tcredentials: \"same-origin\",\n\t\theaders,\n\t\tbody,\n\t})\n\t\t.then(response => {\n\t\t\tif (response.status >= 200 && response.status < 300) {\n\t\t\t\treturn Promise.resolve(response);\n\t\t\t} else {\n\t\t\t\tlet error = new Error(response.statusText || response.status);\n\t\t\t\terror.response = response;\n\t\t\t\treturn Promise.reject(error);\n\t\t\t}\n\t\t})\n\t\t.then(response => response.json())\n\t\t.catch(e => {\n\t\t\tconsole.warn('An error occured: ', e);\n\t\t\treturn Promise.reject(e);\n\t\t});\n}\n\nfunction replaceStuff(replace = {}) {\n\tfor (let needle in replace) {\n\t\tif (replace.hasOwnProperty(needle)) {\n\t\t\t[...document.querySelectorAll(needle)].forEach(element => {\n\t\t\t\tlet replacement = document.createRange().createContextualFragment(replace[needle]);\n\n\t\t\t\telement.replaceWith(replacement);\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction unwrapScripts(scope = document) {\n\tconst unwrappables = [...scope.querySelectorAll('.js-unwrap-me')];\n\n\tunwrappables.forEach(unwrappable => {\n\t\tlet replacement = document.createRange().createContextualFragment(unwrappable.innerText);\n\n\t\tunwrappable.replaceWith(replacement);\n\t});\n}\n\nexport function toggleSubscribers(state) {\n\t[...document.querySelectorAll('.js-sku-available')].forEach(elem => elem.classList.toggle('is-hidden', !state));\n\t[...document.querySelectorAll('.js-sku-not-available')].forEach(elem => elem.classList.toggle('is-hidden', state));\n}\n\nfunction initModal() {\n\tif (oneModalToRuleThemAll) {\n\t\treturn;\n\t}\n\n\toneModalToRuleThemAll = new Modal({\n\t\tcloseLabel: 'Закрыть',\n\t\tcssClass: ['tingle-modal--product'],\n\n\t\tfooter: true,\n\n\t\tbeforeOpen() {\n\t\t\tif (document.activeElement) {\n\t\t\t\tdocument.activeElement.blur();\n\t\t\t}\n\n\t\t\tlet closeButton = oneModalToRuleThemAll.getContent().closest(`.tingle-modal`).querySelector('.tingle-modal__close');\n\t\t\toneModalToRuleThemAll.getContent().parentNode.appendChild(closeButton);\n\t\t},\n\t});\n\n\toneModalToRuleThemAll.addFooterBtn('Продолжить покупки', 'b-button b-button--secondary b-button--self-margin float-right js-modal-action-close', function () {\n\t\twindow.location.href = window.location.href.substr(0, window.location.href.lastIndexOf('/', window.location.href.length - 2) + 1);\n\t});\n\n\toneModalToRuleThemAll.addFooterBtn('Перейти в корзину', 'b-button b-button--secondary b-button--self-margin float-right js-modal-action-leave', function () {\n\t\twindow.location = '/basket/';\n\t});\n}\n\nfunction checkContracts() {\n\tif (!contractsElement || !contractsSelect || !lastOffer) {\n\t\treturn;\n\t}\n\n\t// проверяем соответствие списка договоров\n\tif (contractsSelect.dataset.offer === lastOffer.id) {\n\t\treturn;\n\t}\n\n\t// Проверяем, есть ли среди набора цен цены с договорами\n\n\tlet contractItems = lastOffer.prices.filter(item => item.contract != '');\n\n\t// устанавливаем видимость списка договоров\n\tif (2 > contractItems.length) {\n\t\tcontractsElement.classList.add(contractsHiddenClass);\n\t} else {\n\t\tcontractsElement.classList.remove(contractsHiddenClass);\n\t}\n\n\n\t/*\n\tвыбираем дублирующие договоры, чтобы затем на основании этих данных скрыть лишние option в селекторе, но сохранить нумерацию\n\t*/\n\n\tuniqContracts = lastOffer.prices.filter((item, i, arr) => {\n\t\tlet index = arr.findIndex(it => {\n\t\t\treturn it.contract === item.contract\n\t\t});\n\n\t\treturn index != i;\n\t});\n\n\t// пересобираем список договоров\n\tcontractsSelect.options.length = 0;\n\tlet l = lastOffer.prices.length;\n\tfor (let i = 0; i < l; i++) {\n\n\t\tlet cond = uniqContracts.some(function(elem) {\n\t\t\treturn elem.id == lastOffer.prices[i].id;\n\t\t});\n\n\t\tlet option = document.createElement('option');\n\n\t\tif (cond == true) {\n\t\t\toption.style.display = 'none';\n\t\t}\n\n\t\toption.setAttribute('value', lastOffer.prices[i].price);\n\t\toption.appendChild(document.createTextNode(lastOffer.prices[i].contract));\n\t\tcontractsSelect.appendChild(option);\n\t}\n\n\tcontractsSelect.dataset.offer = lastOffer.id;\n}\n\nfunction checkExtraPackages() {\n\n\tif (!extraElement || !extraSelect || !lastOffer) {\n\t\treturn;\n\t}\n\n\tlet count = 0;\n\tlet l = lastOffer.prices.length;\n\n\tlastPriceIndex = contractsSelect.selectedIndex;\n\n\tfor (let i = 0; i < l; i++) {\n\t\tif (lastOffer.prices[lastPriceIndex].contract == lastOffer.prices[i].contract) {\n\t\t\tcount++;\n\t\t}\n\t}\n\n\tif (count < 2) {\n\t\textraElement.classList.add(contractsHiddenClass);\n\n\t\treturn;\n\t}\n\n\t// устанавливаем видимость списка доп. модификаторов\n\tif (2 > lastOffer.prices.length) {\n\t\textraElement.classList.add(contractsHiddenClass);\n\t} else {\n\t\textraElement.classList.remove(contractsHiddenClass);\n\t}\n\n\t// пересобираем список доп. модификаторов\n\textraSelect.options.length = 0;\n\n\tfor (let i = 0; i < l; i++) {\n\t\tif (lastOffer.prices[lastPriceIndex].contract == lastOffer.prices[i].contract) {\n\t\t\tlet option = document.createElement('option');\n\t\t\toption.setAttribute('value', lastOffer.prices[i].price);\n\t\t\toption.appendChild(document.createTextNode(lastOffer.prices[i].extra_pack_name));\n\t\t\textraSelect.appendChild(option);\n\t\t}\n\t}\n\textraSelect.dataset.offer = lastOffer.id;\n}\n\nfunction contractChanged() {\n\tif (contractsElement.classList.contains(contractsHiddenClass)) {\n\t\treturn;\n\t}\n\n\tlastPriceIndex = contractsSelect.selectedIndex;\n\n\tcheckExtraPackages();\n\tupdatePrice(lastOffer.prices[lastPriceIndex].price);\n\tupdateSinglePrice(1 * lastOffer.prices[lastPriceIndex].price);\n\tupdateSingleContract(lastOffer.prices[lastPriceIndex].contract);\n\tupdateSingleExtraPack(lastOffer.prices[lastPriceIndex].extra_pack_name);\n}\n\nfunction extraChanged() {\n\tif (extraElement.classList.contains(contractsHiddenClass)) {\n\t\treturn;\n\t}\n\n\tuniqExtra = lastOffer.prices.filter((item) => {\n\t\treturn lastOffer.prices[contractsSelect.selectedIndex].contract == item.contract;\n\t});\n\n\tlastPriceIndex = lastOffer.prices.findIndex(it => {\n\t\treturn it === uniqExtra[extraSelect.selectedIndex];\n\t});\n\n\tupdatePrice(lastOffer.prices[lastPriceIndex].price);\n\tupdateSinglePrice(1 * lastOffer.prices[lastPriceIndex].price);\n\tupdateSingleContract(lastOffer.prices[lastPriceIndex].contract);\n\tupdateSingleExtraPack(lastOffer.prices[lastPriceIndex].extra_pack_name);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/block/catalog/product/product.js","export class TorturedMap {\n\tconstructor(elements) {\n\t\tthis.store = [];\n\n\t\tif (Array.isArray(elements)) {\n\t\t\telements.forEach(element => this.set(element[0], element[1]));\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (!Array.isArray(key)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.store.push({\n\t\t\tkey,\n\t\t\tvalue\n\t\t});\n\t}\n\n\tgetClosestList(...keys) {\n\t\tlet result = [];\n\n\t\tif (keys.length === 0) {\n\t\t\treturn this.store;\n\t\t}\n\n\t\tif (keys.length === 1 && Array.isArray(keys[0])) {\n\t\t\tkeys = keys[0];\n\t\t}\n\n\t\tfor (let i = 0, ilen = this.store.length; i < ilen; i++) {\n\t\t\tlet entry = this.store[i];\n\t\t\tlet matched = true;\n\n\t\t\tfor (let j = entry.key.length - 1; j >= 0; j--) {\n\t\t\t\tlet key = keys[j];\n\t\t\t\tlet entryKey = entry.key[j];\n\t\t\t\tmatched = matched && (typeof entryKey === 'undefined' || !entryKey || typeof key === 'undefined' || !key || key === entryKey);\n\t\t\t}\n\n\t\t\tif (keys.length <= entry.key.length && matched) {\n\t\t\t\tresult.push(entry);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * @unused\n\t * @param keys\n\t * @return {*}\n\t */\n\tgetClosestMatchList(...keys) {\n\t\tlet result = [];\n\n\t\tif (keys.length === 0) {\n\t\t\treturn this.store;\n\t\t}\n\n\t\tif (keys.length === 1 && Array.isArray(keys[0])) {\n\t\t\tkeys = keys[0];\n\t\t}\n\n\t\tfor (let i = 0, ilen = this.store.length; i < ilen; i++) {\n\t\t\tlet entry = this.store[i];\n\t\t\tlet matched = true;\n\n\t\t\tfor (let j = entry.key.length - 1; j >= 0; j--) {\n\t\t\t\tlet key = keys[j];\n\t\t\t\tlet entryKey = entry.key[j];\n\t\t\t\tlet regex = new RegExp(key);\n\n\t\t\t\tmatched = matched && (typeof entryKey === 'undefined' || !entryKey || typeof key === 'undefined' || !key || regex.test(entryKey));\n\t\t\t}\n\n\t\t\tif (keys.length <= entry.key.length && matched) {\n\t\t\t\tresult.push(entry);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tgetClosest(...keys) {\n\t\tif (keys.length === 0) {\n\t\t\treturn this.store[0];\n\t\t}\n\n\t\tif (keys.length === 1 && Array.isArray(keys[0])) {\n\t\t\tkeys = keys[0];\n\t\t}\n\n\t\tfor (let i = 0, ilen = this.store.length; i < ilen; i++) {\n\t\t\tlet entry = this.store[i];\n\t\t\tlet matched = true;\n\n\t\t\tfor (let j = entry.key.length - 1; j >= 0; j--) {\n\t\t\t\tlet key = keys[j];\n\t\t\t\tlet entryKey = entry.key[j];\n\t\t\t\tmatched = matched && (typeof entryKey === 'undefined' || !entryKey || typeof key === 'undefined' || !key || key === entryKey);\n\t\t\t}\n\n\t\t\tif (keys.length <= entry.key.length && matched) {\n\t\t\t\treturn entry;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @unused\n\t * @param keys\n\t * @return {*}\n\t */\n\tgetClosestMatch(...keys) {\n\t\tif (keys.length === 0) {\n\t\t\treturn this.store[0];\n\t\t}\n\n\t\tif (keys.length === 1 && Array.isArray(keys[0])) {\n\t\t\tkeys = keys[0];\n\t\t}\n\n\t\tfor (let i = 0, ilen = this.store.length; i < ilen; i++) {\n\t\t\tlet entry = this.store[i];\n\t\t\tlet matched = true;\n\n\t\t\tfor (let j = entry.key.length - 1; j >= 0; j--) {\n\t\t\t\tlet key = keys[j];\n\t\t\t\tlet entryKey = entry.key[j];\n\t\t\t\tlet regex = new RegExp(key);\n\n\t\t\t\tmatched = matched && (typeof entryKey === 'undefined' || !entryKey || typeof key === 'undefined' || !key || regex.test(entryKey));\n\t\t\t}\n\n\t\t\tif (keys.length <= entry.key.length && matched) {\n\t\t\t\treturn entry;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetClosestKeys(...keys) {\n\t\tif (keys.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (keys.length === 1 && Array.isArray(keys[0])) {\n\t\t\tkeys = keys[0];\n\t\t}\n\n\t\tlet result = new Set();\n\n\t\tlet key = (new Array(keys.length)).fill(null);\n\t\tkey[0] = keys[0];\n\n\t\tthis.store.forEach(entry => result.add(entry.key[0]));\n\n\t\tfor (let i = 1, ilen = keys.length; i < ilen; i++) {\n\t\t\tlet entries = this.getClosestList(key);\n\n\t\t\tentries.forEach(entry => {\n\t\t\t\tresult.add(entry.key[i]);\n\n\t\t\t\tif (entry.key[i] === keys[i]) {\n\t\t\t\t\tkey[i] = keys[i];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!key[i]) {\n\t\t\t\tkey[i] = entries[0].key[i];\n\t\t\t}\n\t\t}\n\n\t\treturn Object.assign({result}, this.getClosest(key));\n\t}\n}\n\n\n// WEBPACK FOOTER //\n// ./src/component/tortured-map/tortured-map.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/sections/sections.scss\n// module id = 501\n// module chunks = 2","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/block/catalog/sku-option/sku-option.scss\n// module id = 502\n// module chunks = 2"],"sourceRoot":""}