{"version":3,"file":"3343_6b05b20710dbf07d7646.bundle.js","mappings":"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","sources":["webpack://tumarket/./js/filter/filter.js","webpack://tumarket/./js/filter/filterCont.js","webpack://tumarket/./js/filter/script.js","webpack://tumarket/./js/global/form.js","webpack://tumarket/./js/previews/previewsEmbed.js","webpack://tumarket/./js/search/productsList.js"],"sourcesContent":["/* global tumarket */\n\nimport * as $ from \"jquery\";\nimport \"bootstrap/js/dist/tooltip\";\nimport \"bootstrap/js/dist/popover\";\nimport \"bootstrap/js/dist/tab\";\nimport \"bootstrap/js/dist/modal\";\nimport \"jquery-ui\";\nimport \"jquery-ui/ui/widgets/slider.js\";\nimport tumGlobal from \"../global.js\";\nimport filterCont from \"./filterCont.js\";\nimport filter from \"./script.js\";\nimport { closeProgressbar, openProgressbar } from \"../global/progressbar\";\nimport { ajaxSend } from \"../global/fetch\";\nimport { bootstrapAlert } from \"../global/alert\";\nimport { getUrlParameter } from \"../global/url\";\nimport { getCookie, setCookie } from \"../global/cookie\";\nimport \"readmore-js\";\nimport { isCtuIgnoredAdulthood, showAdultWarning } from \"../product/restrictAdult.js\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"../global/templates\";\nimport { initTuPopover } from \"../global/popover\";\nimport { addEvent, addEventDelegate, toggleClass } from \"../global/dom\";\nimport { swapAltHtml } from \"../global/util.js\";\n\nimport \"jquery-ui/dist/themes/base/jquery-ui.min.css\";\nimport { getLocationFromYandex } from \"../global/geo.js\";\n\nvar searchFilter = {\n\toptions: {\n\t\tarr: [],\n\t\tarr_alt: [],\n\t\taskForCoordinates: false\n\t},\n\tcoordinates: null,\n\tradius: 0,\n\telements: {\n\t\tsearch: \".b-aside-xs\",\n\t\tsearchMob: \".mobile-fullsize\",\n\t\tsearchOpen: '.search-open-time'\n\t},\n\tresetPrice: function (el) {\n\t\tif ($(el).attr('data-itemid') == 0 || $(el).attr('id') == 'slider' || $(el).attr('id') == 'slider-mob') {\n\t\t\tvar isMob = window.innerWidth < 768;\n\n\t\t\tvar minPrice = isMob ? $(\"input#minCost-mob\").attr('data-minprice') : $(\"input#minCost\").attr('data-minprice');\n\t\t\tvar maxPrice = isMob ? $(\"input#maxCost-mob\").attr('data-maxprice') : $(\"input#maxCost\").attr('data-maxprice');\n\t\t\t$(!isMob ? \"input#minCost\" : \"input#minCost-mob\").val(minPrice);\n\t\t\t$(!isMob ? \"input#minCost\" : \"input#minCost-mob\").trigger('change');\n\t\t\t$(!isMob ? \"input#maxCost\" : \"input#maxCost-mob\").val(maxPrice);\n\t\t\t$(!isMob ? \"input#maxCost\" : \"input#maxCost-mob\").trigger('change');\n\t\t}\n\t},\n\tresetMetric: function (el) {\n\t\tvar isMob = $(el).closest('.b-aside-modal').hasClass('mobile-fullsize');\n\t\tif (isMob) {\n\t\t\tvar sliders = $(el).closest('.card').find('.f-ch-slider');\n\t\t\t$.each($(sliders), function (i, elm) {\n\t\t\t\tvar sliderID = $(elm).attr('data-sid');\n\t\t\t\tsetSliderTrigger(sliderID);\n\t\t\t});\n\t\t} else {\n\t\t\tvar sliderID = $(el).attr('data-itemid');\n\t\t\tsetSliderTrigger(sliderID);\n\t\t}\n\n\t\tfunction setSliderTrigger(sliderID) {\n\t\t\tvar cont = $('.b-filter-f-ch[data-itemid=' + sliderID + ']');\n\t\t\tvar minInput = $(cont).find('input.minVal' + sliderID);\n\t\t\tvar maxInput = $(cont).find('input.maxVal' + sliderID);\n\t\t\t$(minInput).val($(minInput).attr('data-min-char'));\n\t\t\t$(minInput).trigger('change');\n\t\t\t$(maxInput).val($(maxInput).attr('data-max-char'));\n\t\t\t$(maxInput).trigger('change');\n\t\t}\n\t},\n\tsetFilterPriceAndMetrics: function (slider, sliderID) {\n\n\t\t$('.collapseSummaryClass').removeClass('d-none');\n\t\t$('.tum-filter-clear-all-cont').removeClass('d-none');\n\t\tthis.changeOfferResetFilter();\n\t\tvar filterItems = $('.collapseSummaryClass span');\n\t\tvar priceExist = false;\n\t\tvar isExist = false;\n\n\t\tif ($(slider).hasClass('f-ch-slider')) {\n\t\t\t$.each(filterItems, function (idx, el) {\n\t\t\t\tif ($(el).attr('data-itemid') == sliderID) {\n\t\t\t\t\tisExist = true\n\t\t\t\t}\n\t\t\t});\n\t\t\tvar metricName = ($(slider).slider(\"values\", 0) / $(slider).attr('data-multiply')) + \"-\" + ($(slider).slider(\"values\", 1) / $(slider).attr('data-multiply')) + $(slider).attr('data-siname') + ', ' + $(slider).attr('data-charactName');\n\t\t\tvar isMob = window.innerWidth < 768;\n\t\t\tif (isMob) {\n\t\t\t\tvar txt = '';\n\t\t\t\tvar mName = '';\n\t\t\t\tvar g = 0;\n\t\t\t\tvar sliders = $(slider).closest('.charactItems').find('.f-ch-slider');\n\t\t\t\t$.each($(sliders), function (i, elm) {\n\t\t\t\t\tvar minDef = parseFloat($(elm).attr('data-min-val'));\n\t\t\t\t\tvar maxDef = parseFloat($(elm).attr('data-max-val'));\n\t\t\t\t\tvar valMin = parseFloat($(elm).slider(\"values\", 0) / $(elm).attr('data-multiply'));\n\t\t\t\t\tvar valMax = parseFloat($(elm).slider(\"values\", 1) / $(elm).attr('data-multiply'));\n\t\t\t\t\tif (valMin > minDef || valMax < maxDef) {\n\t\t\t\t\t\tg++;\n\t\t\t\t\t\tmName = (valMin + \"-\" + valMax + $(elm).attr('data-siname') + ', ' + $(elm).attr('data-charactName')).trim();\n\t\t\t\t\t\ttxt += txt.length > 0 ? '; ' + (g > 2 ? ' + ещё ' + (g - 2) : mName) : mName;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t$(slider).closest('.card').find('.selected-items i').attr('data-itemid', sliderID);\n\t\t\t\t$(slider).closest('.card').find('.selected-items i').attr('data-slidername', 'metric');\n\t\t\t\t$(slider).closest('.card').find('.selected-items .value').html(txt);\n\n\t\t\t\tif ($(\".card .b-filter-f-ch\").length > 1) {\n\t\t\t\t\tvar values = $(\".card .b-filter-f-ch\").closest('.card').find('.value.item-char');\n\t\t\t\t\t$.each(values, function (i, el) {\n\t\t\t\t\t\tvar txt = $(el).text();\n\t\t\t\t\t\tvar spl = txt.split(';')[i];\n\t\t\t\t\t\t$(el).text(spl);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$(\".selected-items\", $(slider).closest('.card')).slideDown();\n\t\t\t} else {\n\t\t\t\tif (!isExist) {\n\t\t\t\t\tvar htmlOut = filterCont.renderFilterSortViewBtn({ id: sliderID, catid: 0, name: metricName, slider: 'metric' });\n\n\t\t\t\t\t$(\".collapseSummaryClass\").append(htmlOut).removeClass('d-none');\n\t\t\t\t\tthis.changeOfferResetFilter();\n\t\t\t\t\tvar filterCount = $('.b-aside-xs .filter-fields-count').text();\n\t\t\t\t\tvar count = parseInt(filterCount) + 1;\n\t\t\t\t\tvar fltrCount = count > 0 ? count : \"\";\n\t\t\t\t\t$('.b-aside-xs .filter-fields-count').html(fltrCount);\n\t\t\t\t\tif (count > 0 && !$('.b-aside-xs .filter-fields-count').hasClass(\"tum-bg-dark-red\")) {\n\t\t\t\t\t\t$('.b-aside-xs .filter-fields-count').addClass(\"tum-bg-dark-red\");\n\t\t\t\t\t} else if (count == 0) {\n\t\t\t\t\t\t$('.b-aside-xs .filter-fields-count').removeClass(\"tum-bg-dark-red\");\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\t$('.collapseSummaryClass span[data-itemid=' + sliderID + '] a').html(' ' + metricName);\n\n\t\t\t\t}\n\t\t\t\tthis.applyFilters(true);\n\t\t\t}\n\t\t}\n\n\t\tif ($(slider).hasClass('b-filter-price__slider')) {\n\t\t\t$.each(filterItems, function (idx, el) {\n\t\t\t\tif ($(el).attr('data-itemid') == 0) {\n\t\t\t\t\tpriceExist = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlet name = $(slider).slider(\"values\", 0) + \"-\" + $(slider).slider(\"values\", 1) + \" руб\";\n\t\t\tlet filterCount = \"\";\n\t\t\tlet isMob = window.innerWidth < 768;\n\t\t\tif (isMob) {\n\t\t\t\t$(slider).closest('.card').find('.selected-items i').attr('data-itemid', 0);\n\t\t\t\t$(slider).closest('.card').find('.selected-items i').attr('data-slidername', 'price');\n\t\t\t\t$(slider).closest('.card').find('.selected-items .value').text(name);\n\t\t\t\t$(\".selected-items\", $(slider).closest('.card')).slideDown();\n\n\t\t\t\tfilterCount = $('.card .filter-fields-count:visible').text();\n\t\t\t\tlet count = parseInt(filterCount) + 1;\n\t\t\t\tlet fltrCount = count > 0 ? count : \"\";\n\t\t\t\t$('.card .filter-fields-count:visible').html(fltrCount);\n\t\t\t\tif (count > 0 && !$('.card .filter-fields-count:visible').hasClass(\"tum-bg-dark-red\")) {\n\t\t\t\t\t$('.card .filter-fields-count:visible').addClass(\"tum-bg-dark-red\");\n\t\t\t\t} else if (count == 0) {\n\t\t\t\t\t$('.card .filter-fields-count:visible').removeClass(\"tum-bg-dark-red\");\n\t\t\t\t}\n\n\t\t\t\tif (priceExist) {\n\t\t\t\t\t$('.collapseSummaryClass span[data-itemid=0] a').html(' ' + name);\n\t\t\t\t\t$('.tum-filter-clear-price').removeClass('d-none');\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif (!priceExist) {\n\t\t\t\t\tlet htmlOut = filterCont.renderFilterSortViewBtn({ id: 0, catid: 0, name: name });\n\t\t\t\t\t$(\".collapseSummaryClass\").append(htmlOut).removeClass('d-none');\n\t\t\t\t\tthis.changeOfferResetFilter();\n\n\t\t\t\t\tlet filterCount = $('.b-aside-xs .filter-fields-count').text();\n\t\t\t\t\tlet count = parseInt(filterCount) + 1;\n\t\t\t\t\tlet fltrCount = count > 0 ? count : \"\";\n\t\t\t\t\t$('.b-aside-xs .filter-fields-count').html(fltrCount);\n\t\t\t\t\tif (count > 0 && !$('.b-aside-xs .filter-fields-count').hasClass(\"tum-bg-dark-red\")) {\n\t\t\t\t\t\t$('.b-aside-xs .filter-fields-count').addClass(\"tum-bg-dark-red\");\n\t\t\t\t\t} else if (count == 0) {\n\t\t\t\t\t\t$('.b-aside-xs .filter-fields-count').removeClass(\"tum-bg-dark-red\");\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\t$('.collapseSummaryClass span[data-itemid=0] a').html(' ' + name);\n\t\t\t\t\t$('.tum-filter-clear-price').removeClass('d-none');\n\n\t\t\t\t}\n\n\t\t\t\tthis.applyFilters(true);\n\t\t\t}\n\t\t}\n\n\t\tfilter.updateCollapseSummaryVisible(false);\n\n\t},\n\tsetFilterAvailable: function (el, isMob) {\n\t\tvar isExist = false;\n\t\t$.each($('.tum-filter-clear-item'), function (idx, element) {\n\t\t\tif ($(el).attr('data-itemid') == $(element).attr('data-itemid')) {\n\t\t\t\tisExist = true\n\t\t\t}\n\t\t});\n\n\t\tvar elemName = $(el).closest('.form-check-label').text();\n\t\tvar searchElement = !isMob ? this.elements.search : this.elements.searchMob;\n\t\tvar filteCount = $(searchElement + ' .filter-fields-count').text();\n\t\tif ($(el).prop('checked')) {\n\t\t\tvar fltrCount = (parseInt(filteCount) + 1) > 0 ? (parseInt(filteCount) + 1) : \"\";\n\t\t\t$(searchElement + ' .filter-fields-count').html(fltrCount);\n\t\t\tif ((parseInt(filteCount) + 1) > 0 && !$(searchElement + ' .filter-fields-count').hasClass(\"tum-bg-dark-red\")) {\n\t\t\t\t$(searchElement + ' .filter-fields-count').addClass(\"tum-bg-dark-red\");\n\t\t\t} else if ((parseInt(filteCount) + 1) == 0) {\n\t\t\t\t$(searchElement + ' .filter-fields-count').removeClass(\"tum-bg-dark-red\");\n\t\t\t}\n\t\t} else {\n\t\t\tif (parseInt(filteCount) > 0) {\n\t\t\t\tlet fltrCount = (parseInt(filteCount) - 1) > 0 ? (parseInt(filteCount) - 1) : \"\";\n\t\t\t\t$(searchElement + ' .filter-fields-count').html(fltrCount);\n\t\t\t\tif ((parseInt(filteCount) - 1) > 0 && !$(searchElement + ' .filter-fields-count').hasClass(\"tum-bg-dark-red\")) {\n\t\t\t\t\t$(searchElement + ' .filter-fields-count').addClass(\"tum-bg-dark-red\");\n\t\t\t\t} else if ((parseInt(filteCount) - 1) == 0) {\n\t\t\t\t\t$(searchElement + ' .filter-fields-count').removeClass(\"tum-bg-dark-red\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!isExist) {\n\t\t\tvar htmlOut = filterCont.renderFilterSortViewBtn({ id: $(el).attr('data-itemid'), catid: 0, name: elemName });\n\t\t\t$(\".collapseSummaryClass\").append(htmlOut).removeClass('d-none');\n\t\t\tthis.changeOfferResetFilter();\n\t\t} else {\n\t\t\t$('.collapseSummaryClass span[data-itemid=' + $(el).attr('data-itemid') + ']').remove();\n\t\t}\n\t},\n\tinitCallbacks: function () {\n\t\tlet self = this;\n\t\taddEventDelegate(document, 'click', '.tum-dmv-category a', () => {\n\t\t\t$('.b-aside-wrapper .tum-filter-cats').toggleClass('active');\n\t\t\tif ($('.b-aside-wrapper .tum-filter-cats').hasClass('active')) {\n\t\t\t\t$('.b-aside-wrapper .tum-filter-cats .b-aside-modal-cat').addClass('modalActive');\n\t\t\t} else {\n\t\t\t\t$('.b-aside-wrapper .tum-filter-cats .b-aside-modal-cat').removeClass('modalActive');\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, 'change', 'input[name=tuSort]', element => {\n\t\t\tfilterCont.filter.sort = $(element).val();\n\t\t});\n\n\t\taddEventDelegate(document, 'change', 'input[name=firmsSort]', element => {\n\t\t\tfilterCont.filter.firmSort = $(element).val();\n\t\t});\n\n\t\t$(document).on('change', self.elements.search + ' .isAvailable', element => {\n\t\t\tself.setFilterAvailable($(element), false);\n\t\t\tself.applyFilters();\n\t\t});\n\n\t\t$(document).on('change', self.elements.searchMob + ' .isAvailable', element => {\n\t\t\tself.setFilterAvailable($(element), true);\n\t\t});\n\n\t\t$(document).on('change', self.elements.search + ' .madeInOurs', element => {\n\t\t\tself.setFilterAvailable($(element), false);\n\t\t\tself.applyFilters();\n\t\t});\n\n\t\t$(document).on('change', self.elements.searchMob + ' .madeInOurs', element => {\n\t\t\tself.setFilterAvailable($(element), true);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.modalActive .mdl-close', () => {\n\t\t\t$('.modalActive .search-by-name').val('');\n\t\t\t$.each($(\".modalActive .b-aside-modal__content .form-check\"), function (i, el) {\n\t\t\t\t$(el).removeClass('hide');\n\t\t\t});\n\t\t\tself.options.arr = [];\n\t\t\tself.options.arr_alt = [];\n\n\t\t\tsearchFilter.toggleCtuModal(false);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-applyFilters, .ctuModal-applyFilters', element => {\n\t\t\tif ($(element).closest('.mobile-fullsize').length) {\n\t\t\t\tvar isAuto = $('.mobile-fullsize .tum-open-auto').prop('checked') == true;\n\t\t\t\tvar isManual = $('.mobile-fullsize .tum-open-manual').prop('checked') == true;\n\t\t\t\tsetCookie('isOpenNow_manual', isManual);\n\n\t\t\t\tvar datetime = filterCont.getDateTimeFilter(searchFilter.isMob());\n\n\t\t\t\tif (!isAuto && !isManual && getUrlParameter('datetime_open') || !(datetime.date && datetime.time)) {\n\t\t\t\t\t$('.mobile-fullsize .tum-open-date').val('');\n\t\t\t\t\t$('.mobile-fullsize .tum-open-time').val('');\n\t\t\t\t\tsetCookie('isOpenNow_manual', false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.applyFilters();\n\t\t});\n\n\t\t$(\".clear-filter, .tum-clear-all-filters\").on(\"click\", function (e) {\n\t\t\te.preventDefault();\n\t\t\tvar isSearch = location.pathname.toLowerCase().indexOf(\"search\") > -1;\n\t\t\tvar url = new URL(location.href);\n\t\t\tif (getUrlParameter(\"query\") && isSearch) {\n\t\t\t\turl.search = \"query=\" + getUrlParameter(\"query\");\n\t\t\t\tlocation.href = url.toString();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlocation.href = location.pathname;\n\t\t\t}\n\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.btn-products-search-inCtu, .btn-firms-search-inCtu', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tfilterCont.filter = filterCont.getFilter(self.elements.search, false);\n\t\t\tvar page = +$(element).attr('data-page');\n\t\t\tif (page == 1) $(element).addClass('d-none');\n\t\t\tvar isPrevItems = false;\n\t\t\tif ($(element).hasClass('btn-products-search-inCtu')) {\n\t\t\t\tif ($(element).hasClass('btn-show-more')) {\n\t\t\t\t\t$(element).attr('data-page', page + 1);\n\t\t\t\t\tself.setURLParameter('page', page);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$(element).attr('data-page', page - 1);\n\t\t\t\t\tisPrevItems = true;\n\t\t\t\t}\n\t\t\t\tfilterCont.filter.page = page;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif ($(element).hasClass('btn-show-more')) {\n\t\t\t\t\t$(element).attr('data-page', page + 1);\n\t\t\t\t\tself.setURLParameter('firmPage', page);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$(element).attr('data-page', page - 1);\n\t\t\t\t\tisPrevItems = true;\n\t\t\t\t}\n\t\t\t\tfilterCont.filter.firmPage = page;\n\t\t\t}\n\t\t\tif ($(element).hasClass('btn-show-more')) {\n\t\t\t\tfilterCont.filter.pageDirection = \"down\";\n\t\t\t}\n\n\t\t\tfilterCont.filter.activeTab = $(element).closest('.b-catalog').find('.nav-link.active').attr('data-href');\n\t\t\tself.searchProducts(1, $(element).hasClass('btn-products-search-inCtu'), isPrevItems);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tu-show-firm-tab', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$('.b-nav-search a[href=\"#firms\"]').tab('show');\n\t\t\tsetTimeout(function () {\n\t\t\t\t$('html, body').animate({\n\t\t\t\t\tscrollTop: $('.b-catalog').offset().top\n\t\t\t\t}, 1000);\n\t\t\t}, 100);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tu-show-offers-tab', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$('.b-nav-search a[href=\"#offers\"]').tab('show');\n\t\t\tsetTimeout(function () {\n\t\t\t\t$('html, body').animate({\n\t\t\t\t\tscrollTop: $('.b-catalog').offset().top\n\t\t\t\t}, 1000);\n\t\t\t}, 100);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.b-nav-search .nav-link', element => {\n\t\t\tvar tabname = $(element).attr('data-href');\n\n\t\t\tvar param = '';\n\t\t\tvar tab = self.getURLParameter('tab');\n\n\t\t\tif (!tab) {\n\t\t\t\tif (location.search.indexOf('?') == -1) {\n\t\t\t\t\tparam = '?tab=' + tabname;\n\t\t\t\t} else {\n\t\t\t\t\tparam = '&tab=' + tabname;\n\t\t\t\t}\n\t\t\t\tif (history.pushState) {\n\t\t\t\t\tvar url = location.pathname + location.search + param;\n\t\t\t\t\twindow.history.pushState({}, \"products\", url);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet url = location.pathname + location.search;\n\t\t\t\tif (!tabname) {\n\t\t\t\t\tif (location.search.substring(1).split('&').length > 1) {\n\t\t\t\t\t\turl = url.replace(\"&tab=\" + tab, \"\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\turl = url.replace(\"?tab=\" + tab, \"\");\n\t\t\t\t\t}\n\t\t\t\t\tif (history.pushState) {\n\t\t\t\t\t\twindow.history.pushState({}, \"products\", url);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (tab != tabname) {\n\t\t\t\t\t\turl = url.replace(\"tab=\" + tab, \"tab=\" + tabname);\n\t\t\t\t\t\tif (history.pushState) {\n\t\t\t\t\t\t\twindow.history.pushState({}, \"products\", url);\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\n\t\taddEventDelegate(document, 'click', '.filters-modal-showMore', element => {\n\t\t\tself.showMoreCharacteristics($(element));\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-aside-showCategories, .tu-show-cats, .offers-showCtus, .cat-more-info', () => {\n\t\t\timport(\"../searchMenu.js\").then(({ tum_searchMenu }) => {\n\t\t\t\ttum_searchMenu.toggleMenu('hide');\n\t\t\t\tself.toggleCtuModal();\n\t\t\t});\n\t\t});\n\t},\n\tinitSliders: function () {\n\t\tlet self = this;\n\n\t\t$(\"input#minCost\").val(filterCont.filter.priceFrom > 0 ? filterCont.filter.priceFrom : parseFloat(filterCont.defaultFilter.minPriceFrom.replace(',', '.')).toFixed(2));\n\t\t$(\"input#maxCost\").val(filterCont.filter.priceTo > 0 ? filterCont.filter.priceTo : parseFloat(filterCont.defaultFilter.maxPriceTo.replace(',', '.')).toFixed(2));\n\t\t$(\"input#minCost-mob\").val(filterCont.filter.priceFrom > 0 ? filterCont.filter.priceFrom : parseFloat(filterCont.defaultFilter.minPriceFrom.replace(',', '.')).toFixed(2));\n\t\t$(\"input#maxCost-mob\").val(filterCont.filter.priceTo > 0 ? filterCont.filter.priceTo : parseFloat(filterCont.defaultFilter.maxPriceTo.replace(',', '.')).toFixed(2));\n\n\t\tif (parseFloat(filterCont.defaultFilter.minPriceFrom.replace(',', '.')).toFixed(2) > 0 && parseFloat(filterCont.defaultFilter.maxPriceTo.replace(',', '.')).toFixed(2) > 0) {\n\t\t\t$(\"#slider\").slider({\n\t\t\t\tmin: (parseFloat($('#slider').attr('data-minprice')) == parseFloat($('#slider').attr('data-maxprice'))) ? 0 : parseFloat($('#slider').attr('data-minprice')),\n\t\t\t\tmax: parseFloat($('#slider').attr('data-maxprice')),\n\t\t\t\tvalues: [0, parseFloat($('#slider').attr('data-maxprice'))],\n\t\t\t\trange: true,\n\t\t\t\tstep: 0.1,\n\t\t\t\tstop: function (event, ui) {\n\t\t\t\t\t$(\"input#minCost\").val($(\"#slider\").slider(\"values\", 0));\n\t\t\t\t\t$(\"input#maxCost\").val($(\"#slider\").slider(\"values\", 1));\n\t\t\t\t\tself.setFilterPriceAndMetrics($(this));\n\n\t\t\t\t\tif (parseFloat(ui.value) < parseFloat(filterCont.defaultFilter.minPriceFrom)) {\n\t\t\t\t\t\tvar value1 = parseFloat(filterCont.defaultFilter.minPriceFrom.replace(',', '.'));\n\t\t\t\t\t\t$(\"#slider\").slider(\"values\", 0, value1);\n\t\t\t\t\t\t$(\"input#minCost\").val(value1);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tslide: function () {\n\t\t\t\t\tif (parseFloat($('#slider').attr('data-minprice').replace(',', '.')) == parseFloat($('#slider').attr('data-maxprice').replace(',', '.'))) return false;\n\t\t\t\t\t$(\"input#minCost\").val($(\"#slider\").slider(\"values\", 0));\n\n\t\t\t\t\t$(\"input#maxCost\").val($(\"#slider\").slider(\"values\", 1));\n\t\t\t\t\t$('.tum-price-apply').removeClass('d-none');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t$(\"input#minCost\").on('change', function () {\n\t\t\tlet value1 = parseFloat($(\"input#minCost\").val().replace(',', '.'));\n\t\t\tlet value2 = parseFloat($(\"input#maxCost\").val().replace(',', '.'));\n\n\t\t\tlet min = parseFloat($('#slider').attr('data-minprice').replace(',', '.'));\n\n\t\t\tif (value1 > value2) {\n\t\t\t\tvalue1 = value2;\n\t\t\t\t$(\"input#minCost\").val(value1);\n\t\t\t}\n\n\t\t\tif ($(\"input#minCost\").val().length == 0) {\n\t\t\t\tvalue1 = min;\n\t\t\t\t$(\"input#minCost\").val(value1);\n\t\t\t}\n\n\t\t\tif (value1 < min) {\n\t\t\t\tvalue1 = min;\n\t\t\t\t$(\"input#minCost\").val(value1);\n\t\t\t}\n\n\t\t\t$(\"#slider\").slider(\"values\", 0, value1);\n\t\t\t$('.tum-price-apply').removeClass('d-none');\n\t\t\tself.setFilterPriceAndMetrics($(\"#slider\"));\n\t\t});\n\n\t\t$(\"input#maxCost\").on('change', function () {\n\t\t\tlet value1 = parseFloat($(\"input#minCost\").val().replace(',', '.'));\n\t\t\tlet value2 = parseFloat($(\"input#maxCost\").val().replace(',', '.'));\n\t\t\tlet max = parseFloat($('#slider').attr('data-maxprice').replace(',', '.'));\n\n\t\t\tif (value2 > max) {\n\t\t\t\tvalue2 = max;\n\t\t\t\t$(\"input#maxCost\").val(value2)\n\t\t\t}\n\n\t\t\tif (value1 > value2) {\n\t\t\t\tvalue2 = value1;\n\t\t\t\t$(\"input#maxCost\").val(value2);\n\t\t\t}\n\t\t\tif ($(\"input#maxCost\").val().length == 0) {\n\t\t\t\tvalue2 = max;\n\t\t\t\t$(\"input#maxCost\").val(value2);\n\t\t\t}\n\n\t\t\t$(\"#slider\").slider(\"values\", 1, value2);\n\t\t\t$('.tum-price-apply').removeClass('d-none');\n\t\t\tself.setFilterPriceAndMetrics($(\"#slider\"));\n\t\t});\n\n\t\t//--init f-ch SLIDER with INPUT\n\t\t$.each($(\".f-ch-slider\"), function (i, el) {\n\t\t\tvar $el = $(el);\n\t\t\tvar siMultiply = parseFloat($el.attr('data-multiply'));\n\t\t\tvar minVal = Math.round(parseFloat($el.attr(\"data-min-val\")) * siMultiply);\n\t\t\tvar maxVal = Math.round(parseFloat($el.attr(\"data-max-val\")) * siMultiply);\n\t\t\tvar harID = $el.attr(\"data-itemid\");\n\t\t\t$(el).slider({\n\t\t\t\telem: el,\n\t\t\t\tmin: minVal,\n\t\t\t\tmax: maxVal,\n\t\t\t\tvalues: [minVal, maxVal],\n\t\t\t\trange: true,\n\t\t\t\tstop: function (event, ui) {\n\t\t\t\t\t$($(this).attr('data-min-cont')).val(parseInt($(this).slider(\"values\", 0)) / siMultiply);\n\t\t\t\t\t$($(this).attr('data-max-cont')).val(parseInt($(this).slider(\"values\", 1)) / siMultiply);\n\t\t\t\t\tif (parseInt(ui.value) < minVal) {\n\t\t\t\t\t\t$(this).slider(\"values\", 0, minVal);\n\t\t\t\t\t\t$($(this).attr('data-min-cont')).val(minVal);\n\t\t\t\t\t}\n\n\t\t\t\t\tself.setFilterPriceAndMetrics($(this), $(this).attr('data-sid'));\n\t\t\t\t},\n\t\t\t\tslide: function () {\n\t\t\t\t\t$($(this).attr('data-min-cont')).val(parseInt($(this).slider(\"values\", 0)) / siMultiply);\n\t\t\t\t\t$($(this).attr('data-max-cont')).val(parseInt($(this).slider(\"values\", 1)) / siMultiply);\n\t\t\t\t\t$(`.tum-metric-apply[data-id=${harID}]`).removeClass('d-none');\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\n\t\t$.each($('.b-filter-f-ch-min-val'), function (i, el) {\n\t\t\t$(el).on('change', function () {\n\t\t\t\tvar $el = $(el);\n\t\t\t\tvar curMinVal = $el.val();\n\t\t\t\tvar $slider = $($el.attr('data-slider'));\n\t\t\t\tvar siMultiply = parseFloat($slider.attr('data-multiply'));\n\t\t\t\tvar minVal = parseFloat($slider.attr(\"data-min-val\"));\n\t\t\t\tvar curMaxVal = parseFloat($($slider.attr('data-max-cont')).val());\n\t\t\t\tif (curMinVal < minVal || curMinVal > curMaxVal) {\n\t\t\t\t\tcurMinVal = minVal;\n\t\t\t\t\t$el.val(curMinVal);\n\t\t\t\t}\n\n\t\t\t\t$slider.slider(\"values\", 0, curMinVal * siMultiply);\n\t\t\t\tlet charId = $slider.attr('data-sid');\n\t\t\t\tself.setFilterPriceAndMetrics($slider, charId);\n\t\t\t\t$(`.tum-metric-apply[data-id=${charId}]`).removeClass('d-none');\n\t\t\t});\n\t\t});\n\n\t\t$.each($('.b-filter-f-ch-max-val'), function (i, el) {\n\t\t\t$(el).on('change', function () {\n\t\t\t\tvar $el = $(el);\n\t\t\t\tvar curMaxVal = $el.val();\n\t\t\t\tvar $slider = $($el.attr('data-slider'));\n\n\t\t\t\tvar siMultiply = parseFloat($slider.attr('data-multiply'));\n\t\t\t\tvar maxVal = parseFloat($slider.attr(\"data-max-val\"));\n\t\t\t\tvar curMinVal = parseFloat($($slider.attr('data-min-cont')).val());\n\t\t\t\tif (curMaxVal > maxVal || curMaxVal < curMinVal) {\n\t\t\t\t\tcurMaxVal = maxVal;\n\t\t\t\t\t$el.val(curMaxVal);\n\t\t\t\t}\n\n\t\t\t\t$slider.slider(\"values\", 1, curMaxVal * siMultiply);\n\t\t\t\tlet charId = $slider.attr('data-sid');\n\t\t\t\tself.setFilterPriceAndMetrics($slider, charId);\n\t\t\t\t$(`.tum-metric-apply[data-id=${charId}]`).removeClass('d-none');\n\t\t\t});\n\t\t});\n\n\t\t$(\"#slider-mob\").slider({\n\t\t\tmin: parseFloat($('#slider-mob').attr('data-minprice')),\n\t\t\tmax: parseFloat($('#slider-mob').attr('data-maxprice')),\n\t\t\tvalues: [0, parseFloat($('#slider-mob').attr('data-maxprice'))],//parseInt($('#slider-mob').attr('data-maxprice'))\n\t\t\trange: true,\n\t\t\tstep: 0.1,\n\t\t\tstop: function (event, ui) {\n\t\t\t\t$(\"input#minCost-mob\").val($(\"#slider-mob\").slider(\"values\", 0));\n\t\t\t\t$(\"input#maxCost-mob\").val($(\"#slider-mob\").slider(\"values\", 1));\n\t\t\t\tself.setFilterPriceAndMetrics($(this));\n\t\t\t\tif (parseFloat(ui.value) < parseFloat($('#slider-mob').attr('data-minprice'))) {\n\t\t\t\t\tvar value1 = parseFloat($('#slider-mob').attr('data-minprice'));\n\t\t\t\t\t$(\"#slider-mob\").slider(\"values\", 0, value1);\n\t\t\t\t\t$(\"input#minCost-mob\").val(value1);\n\t\t\t\t}\n\t\t\t},\n\t\t\tslide: function () {\n\t\t\t\t$(\"input#minCost-mob\").val($(\"#slider-mob\").slider(\"values\", 0));\n\t\t\t\t$(\"input#maxCost-mob\").val($(\"#slider-mob\").slider(\"values\", 1));\n\t\t\t}\n\t\t});\n\n\t\t$(\"input#minCost-mob\").on('change', function () {\n\t\t\tlet value1 = parseFloat($(\"input#minCost-mob\").val().replace(',', '.'));\n\t\t\tlet value2 = parseFloat($(\"input#maxCost-mob\").val().replace(',', '.'));\n\t\t\tlet min = parseFloat($('#slider-mob').attr('data-minprice'));\n\n\t\t\tif (value1 > value2) {\n\t\t\t\tvalue1 = value2;\n\t\t\t\t$(\"input#minCost-mob\").val(value1);\n\t\t\t}\n\n\t\t\tif ($(\"input#minCost-mob\").val().length == 0) {\n\t\t\t\tvalue1 = min;\n\t\t\t\t$(\"input#minCost-mob\").val(value1);\n\t\t\t}\n\n\t\t\tif (value1 < min) {\n\t\t\t\tvalue1 = min;\n\t\t\t\t$(\"input#minCost-mob\").val(value1);\n\t\t\t}\n\n\t\t\t$(\"#slider-mob\").slider(\"values\", 0, value1);\n\t\t\tself.setFilterPriceAndMetrics($(\"#slider-mob\"));\n\t\t});\n\n\t\t$(\"input#maxCost-mob\").on('change', function () {\n\t\t\tlet value1 = parseFloat($(\"input#minCost-mob\").val().replace(',', '.'));\n\t\t\tlet value2 = parseFloat($(\"input#maxCost-mob\").val().replace(',', '.'));\n\t\t\tlet max = parseFloat($('#slider-mob').attr('data-maxprice'));\n\n\t\t\tif (value2 > max) {\n\t\t\t\tvalue2 = max;\n\t\t\t\t$(\"input#maxCost-mob\").val(value2)\n\t\t\t}\n\n\t\t\tif (value1 > value2) {\n\t\t\t\tvalue2 = value1;\n\t\t\t\t$(\"input#maxCost-mob\").val(value2);\n\t\t\t}\n\t\t\tif ($(\"input#maxCost-mob\").val().length == 0) {\n\t\t\t\tvalue2 = max;\n\t\t\t\t$(\"input#maxCost-mob\").val(value2);\n\t\t\t}\n\n\t\t\t$(\"#slider-mob\").slider(\"values\", 1, value2);\n\t\t\tself.setFilterPriceAndMetrics($(\"#slider-mob\"));\n\t\t});\n\t},\n\tinitOpenNowFilter: function () {\n\t\tlet self = this;\n\n\t\t$(document).on('change', '.tum-search-open-input', () => {\n\t\t\tsearchFilter.updateDatetimePlaceholder();\n\t\t});\n\n\t\taddEventDelegate(document, 'change', '.tum-open-auto', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tvar isMob = searchFilter.isMob();\n\t\t\tvar datetime = filterCont.getDateTimeFilter(isMob);\n\t\t\tvar isDropdownMenu = $('.dropdown-menu.show').length;\n\n\t\t\tvar $wrap = isMob ? $('.mobile-fullsize .card .datetime-wrap') : $('.search-toolbar .search-open-time');\n\t\t\tif (isMob && isDropdownMenu) {\n\t\t\t\t$wrap = $('.search-toolbar .search-open-time');\n\t\t\t}\n\t\t\tif ($(element).prop('checked')) {\n\t\t\t\t$('input.tum-search-open-input', $wrap).attr('disabled', true);\n\t\t\t\t$('.tum-open-manual', $wrap).prop('checked', false);\n\n\t\t\t\t$wrap.find('.tum-open-date').val(datetime.date);\n\t\t\t\t$wrap.find('.tum-open-time').val(datetime.time);\n\t\t\t} else {\n\t\t\t\t$wrap.find('.tum-open-date').val('');\n\t\t\t\t$wrap.find('.tum-open-time').val('');\n\t\t\t}\n\t\t\tsearchFilter.updateDatetimePlaceholder();\n\t\t});\n\n\t\taddEventDelegate(document, 'change', '.tum-open-manual', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tvar isMob = searchFilter.isMob();\n\t\t\tvar datetime = filterCont.getDateTimeFilter(isMob);\n\t\t\tvar isDropdownMenu = $('.dropdown-menu.show').length;\n\t\t\tvar $wrap = isMob ? $('.mobile-fullsize .card .datetime-wrap') : $('.search-toolbar .search-open-time');\n\t\t\tif (isMob && isDropdownMenu) {\n\t\t\t\t$wrap = $('.search-toolbar .search-open-time');\n\t\t\t}\n\n\t\t\tif ($(element).prop('checked')) {\n\t\t\t\t$('input.tum-search-open-input', $wrap).removeAttr('disabled');\n\t\t\t\t$('.tum-open-auto', $wrap).prop('checked', false);\n\t\t\t\t$wrap.find('.tum-open-date').val(datetime.date);\n\t\t\t\t$wrap.find('.tum-open-time').val(datetime.time);\n\t\t\t} else {\n\t\t\t\t$('input.tum-search-open-input', $wrap).attr('disabled', true);\n\t\t\t\t$wrap.find('.tum-open-date').val('');\n\t\t\t\t$wrap.find('.tum-open-time').val('');\n\t\t\t}\n\t\t\tsearchFilter.updateDatetimePlaceholder();\n\t\t});\n\n\t\tdocument.querySelector('[data-dismiss-open-filter]')?.addEventListener('click', () => {\n\t\t\tlet container = document.querySelector(this.elements.searchOpen);\n\t\t\ttoggleClass(container, 'show', false);\n\t\t\ttoggleClass(container.querySelector('.dropdown-menu'), 'show', false);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', self.elements.searchOpen + ' .btn-enter', () => {\n\t\t\tlet container = document.querySelector(this.elements.searchOpen);\n\n\t\t\tvar isAuto = container.querySelector('.tum-open-auto').checked;\n\t\t\tvar isManual = container.querySelector('.tum-open-manual').checked;\n\t\t\tlet filled = [...container.querySelectorAll('.tum-search-open-input')].every(e => e.value);\n\n\t\t\tif (isManual && !filled) {\n\t\t\t\tbootstrapAlert('Укажите время', { type: \"danger\" });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoggleClass(container, 'show', false);\n\t\t\ttoggleClass(container.querySelector('.dropdown-menu'), 'show', false);\n\n\t\t\tsetCookie('isOpenNow_manual', isManual);\n\n\t\t\tvar datetime = filterCont.getDateTimeFilter(searchFilter.isMob());\n\n\t\t\tif ((isAuto || isManual && (datetime.date && datetime.time)) || (!isAuto && !isManual && getUrlParameter('datetime_open'))) {\n\t\t\t\tif ((isAuto || isManual) && getUrlParameter('datetime_open') && (!datetime.date || !datetime.time)) return;\n\n\t\t\t\tthis.applyFilters();\n\t\t\t}\n\t\t});\n\n\t\t$(document).on('click.bs.dropdown.data-api', '.dropdown.search-open-time', function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\t$(document).on('show.bs.dropdown', self.elements.searchOpen, () => {\n\t\t\tsearchFilter.updateDatetimePlaceholder();\n\t\t});\n\n\t\t$('.tum-filter-clear-datetime').on('click', function () {\n\t\t\tfilterCont.filter.datetimeOpen = '';\n\t\t\tfilterCont.filter.datetimeIsReset = true;\n\t\t\tsetCookie('isOpenNow_manual', false);\n\t\t\tself.applyFilters();\n\t\t});\n\t},\n\tinit: function (filter, options) {\n\t\tlet self = this;\n\n\t\tself.options = $.extend({}, self.options, options)\n\t\tfilterCont.defaultFilter = filterCont.filter = $.extend(filterCont.filter, filter);\n\n\t\tif (!$('.collapseSummaryClass').hasClass('d-none')) {\n\t\t\t$('.tum-filter-warning div').removeClass('d-none');\n\t\t}\n\n\t\tthis.initCallbacks();\n\t\tthis.initSliders();\n\t\tthis.initOpenNowFilter();\n\n\t\tif (window.innerWidth < 768) {\n\t\t\tfilterCont.initFilterUI(this.elements.searchMob, true);\n\t\t}\n\t\telse {\n\t\t\tfilterCont.initFilterUI(this.elements.search, false);\n\t\t}\n\n\t\t$('.showAnnotation').tooltip({\n\t\t\tplacement: 'auto',\n\t\t\tboundary: 'window',\n\t\t\thtml: true\n\t\t});\n\n\t\tthis.initCallbacksForQuery();\n\n\t\tthis.initGeoSearch();\n\t\tthis.initSearchToolbar();\n\t\tthis.syncCtuModal();\n\n\t\tif ($('._adult-product').length) {\n\t\t\tlet ignoreCheck = isCtuIgnoredAdulthood();\n\t\t\tshowAdultWarning(false, ignoreCheck);\n\t\t}\n\n\t\tif (!tumGlobal.isMob()) this.initStickyFilter($('.left-side-block, .left-side-block-toggle'));\n\n\t\tthis.initUrlParams();\n\t},\n\tinitUrlParams: function () {\n\t\tif (getUrlParameter('showMapSettings') == '') {\n\t\t\tthis.openMapSettings();\n\t\t}\n\n\t\tif (getUrlParameter('showOnMap') == '1') {\n\t\t\tthis._toggleMap();\n\t\t}\n\t},\n\tupdateDatetimePlaceholder: function () {\n\t\tvar isMob = searchFilter.isMob();\n\t\tif (isMob) {\n\t\t\tvar datetime = filterCont.getDateTimeFilter(isMob);\n\t\t\tif (!datetime.date) {\n\t\t\t\t$('.tum-search-open-input.tum-open-date').addClass('mob-placeholder');\n\t\t\t} else {\n\t\t\t\t$('.tum-search-open-input.tum-open-date').removeClass('mob-placeholder');\n\t\t\t}\n\t\t\tif (!datetime.time) {\n\t\t\t\t$('.tum-search-open-input.tum-open-time').addClass('mob-placeholder');\n\t\t\t} else {\n\t\t\t\t$('.tum-search-open-input.tum-open-time').removeClass('mob-placeholder');\n\t\t\t}\n\t\t}\n\t},\n\tshowMoreCharacteristics: function ($btn) {\n\t\tlet container = $btn.closest('.b-aside-modal__content');\n\n\t\tif (!$btn.hasClass('show')) {\n\t\t\t$('.list-group-item', container).removeClass('hide');\n\t\t} else {\n\t\t\t$('.list-group-item:lt(6)', container).removeClass('hide');\n\t\t\t$('.list-group-item:gt(5)', container).addClass('hide');\n\t\t}\n\n\t\t$btn.toggleClass('show');\n\t\tswapAltHtml($btn[0]);\n\t},\n\tinitCallbacksForQuery: function () {\n\t\tvar self = this;\n\n\t\t//----поиск по тексту в в рамках КТУ----\n\t\t//--очистка запроса(для wide-страницы вызываем перегрузку)\n\t\tdocument.querySelectorAll(\".tum-filter-clear-query-wide\").forEach(element => {\n\t\t\telement.addEventListener(\"click\", e => {\n\t\t\t\te.preventDefault();\n\t\t\t\tfilterCont.filter = filterCont.getFilter(self.elements.search, false);\n\t\t\t\tfilterCont.defaultFilter.query = '';\n\t\t\t\tfilterCont.filter.query = '';\n\t\t\t\tself.updateBrowserHistory();\n\t\t\t\tlocation.reload();\n\t\t\t});\n\t\t});\n\n\t\t//--очистка запроса(для mob-страницы вызываем только очистку, без перегрузки, и чистим сводку вверху)\n\t\taddEventDelegate(document, 'click', '.tum-filter-clear-query-mob', () => {\n\t\t\t$('.tum-filter-search-text').val('');\n\t\t\t$('.clear-value.tum-filter-clear-query-mob')[0]?.click();\n\t\t});\n\n\t\t//--обработка enter (только для wide страницы идет перезагрузка)\n\t\taddEventDelegate(document, 'keypress', '.tum-filter-search-text-wide', (element, e) => {\n\t\t\tif (e.which == 13) { // Checks for the enter key\n\t\t\t\te.preventDefault(); // Stops IE from triggering the button to be clicked\n\t\t\t\tself.searchItemsByQuery();\n\t\t\t}\n\t\t});\n\n\t\t//--обработка enter (для mob страницы - фокус на ПРИМЕНИТЬ)\n\t\taddEventDelegate(document, 'keypress', '.tum-filter-search-text-mob', (element, e) => {\n\t\t\tif (e.which == 13) { // Checks for the enter key\n\t\t\t\t$('.btn-enter').focus();\n\t\t\t}\n\t\t});\n\n\t\t//--клик по лупе поиска\n\t\taddEventDelegate(document, 'click', '.tum-filter-search-btn', element => {\n\t\t\tvar cont = $(element).closest('.tum-filter-search');\n\t\t\tif (cont.length > 0) {\n\t\t\t\tvar el = cont.find('.tum-filter-search-text');\n\t\t\t\tif (el.length > 0) {\n\t\t\t\t\tself.searchItemsByQuery();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.open-category-filter', () => {\n\t\t\tvar moreInfo = $('.b-aside-wrapper .tum-filter-cats .cat-more-info');\n\t\t\tif ($(moreInfo).length > 0) {\n\t\t\t\t$('button', moreInfo)[0]?.click();\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, 'change', \".tum-mdc-categories-grouped input\", element => {\n\t\t\tvar ctuID = $(element).attr(\"data-itemid\");\n\t\t\tvar checked = $(element).prop('checked');\n\t\t\t$(\".tum-mdc-categories-ungrouped input[data-itemid=\" + ctuID + \"]\").prop('checked', checked).trigger('change');\n\t\t});\n\n\t\taddEventDelegate(document, \"change\", \".tum-mdc-toggleGroups\", () => this.toggleCtuGroups());\n\t\taddEventDelegate(document, 'click', \".mdc-hideGroup\", element => {\n\t\t\tlet $group = $(element).closest('.tum-mdc-group');\n\t\t\t$group.find('ul').toggleClass('d-none');\n\n\t\t\t$('i', this).toggleClass('fa-chevron-circle-up fa-chevron-circle-down');\n\t\t});\n\n\t\taddEventDelegate(document, \"click\", \".tu-toggle-all-groups\", () => {\n\t\t\tlet groups = [...document.querySelectorAll('.tum-mdc-group > ul')];\n\t\t\tlet anyShown = groups.some(e => !e.classList.contains('d-none'));\n\t\t\ttoggleClass(groups, 'd-none', anyShown);\n\t\t});\n\t},\n\tctuGroupsEnabled: function () {\n\t\treturn document.querySelector('.tum-mdc-toggleGroups').checked;\n\t},\n\ttoggleCtuGroups: function () {\n\t\t$(\".tum-mdc-categories-grouped, .tum-mdc-categories-ungrouped, .tu-toggle-all-groups\").toggleClass(\"d-none\");\n\t},\n\tuploadFilter: function (cont, isMob) {\n\t\tfilterCont.filter = filterCont.getFilter(cont, isMob);\n\t\tthis.updateBrowserHistory();\n\t\tthis.searchProducts(2);\n\t},\n\tknownParams: [\n\t\t'query',\n\t\t'tu',\n\t\t'firm',\n\t\t'ctu',\n\t\t'available',\n\t\t'madeInOurs',\n\t\t'p_fr',\n\t\t'p_to',\n\t\t'ch',\n\t\t'fch',\n\t\t'tch',\n\t\t'tfch',\n\t\t'firmIDs',\n\t\t'geo_lat',\n\t\t'geo_long',\n\t\t'get_maxDistance',\n\t\t'datetime_open',\n\t\t'sort',\n\t\t'firmSort',\n\t\t'statuses',\n\t\t'tableView',\n\t\t'firms',\n\t\t'tab'\n\t],\n\tupdateBrowserHistory: function () {\n\t\tif (history.pushState) {\n\t\t\tvar url = location.pathname;\n\t\t\tvar query = [];\n\n\n\n\t\t\tif (filterCont.filter.query) {\n\t\t\t\tquery.push({ name: 'query', value: filterCont.filter.query });\n\t\t\t} else if (url.indexOf('/category/') == -1 && url.indexOf('/offers') == -1) { //если правльный запрос указан в параметр только для search-{type}\n\t\t\t\tvar queryRequest = this.getURLParameter('query');\n\t\t\t\tif (queryRequest) {\n\t\t\t\t\tquery.push({ name: 'query', value: queryRequest });\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filterCont.filter.tu) {\n\t\t\t\tquery.push({ name: 'tu', value: filterCont.filter.tu });\n\t\t\t}\n\n\t\t\tif (filterCont.filter.firmType && filterCont.filter.firmType != 'byproducts') {\n\t\t\t\tquery.push({ name: 'firm', value: filterCont.filter.firmType }); //value: filterCont.filter.filterType\n\t\t\t}\n\t\t\tif (!filterCont.filter.query || !filterCont.filter.withoutFilters) {\n\n\t\t\t\tif (filterCont.defaultFilter.searchByTU && filterCont.filter.ctu) {\n\t\t\t\t\tquery.push({ name: 'ctu', value: filterCont.filter.ctu });\n\t\t\t\t}\n\t\t\t\tif (filterCont.filter.available) {\n\t\t\t\t\tquery.push({ name: 'available', value: filterCont.filter.available ? 1 : 0 });\n\t\t\t\t}\n\n\t\t\t\tif (filterCont.filter.madeInOurs) {\n\t\t\t\t\tquery.push({ name: 'madeInOurs', value: filterCont.filter.madeInOurs ? 1 : 0 });\n\t\t\t\t}\n\n\t\t\t\tvar urlP_from = Number(this.getURLParameter('p_fr') || 0);\n\t\t\t\tvar urlP_to = Number(this.getURLParameter('p_to') || 0);\n\t\t\t\tvar priceFrom = Number(filterCont.filter.priceFrom && filterCont.filter.priceFrom.toString().replace(',', '.') || 0);\n\t\t\t\tvar priceTo = Number(filterCont.filter.priceTo && filterCont.filter.priceTo.toString().replace(',', '.') || 0);\n\t\t\t\tif (\n\t\t\t\t\t(urlP_from > 0 || priceFrom != 0) && (urlP_from > 0 || priceFrom != Number($('.b-filter-price__input.p_fr').attr('data-minprice')))\n\t\t\t\t\t||\n\t\t\t\t\t(urlP_to > 0 || priceTo != 0) && (urlP_to > 0 || priceTo != Number($('.b-filter-price__input.p_to').attr('data-maxprice')))) {\n\t\t\t\t\tif (priceFrom >= 0) {\n\t\t\t\t\t\tif (priceFrom == 0 && urlP_from > 0 && !filterCont.defaultFilter.priceClear) {\n\t\t\t\t\t\t\tfilterCont.filter.priceFrom = urlP_from;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (filterCont.filter.priceFrom > 0)\n\t\t\t\t\t\t\tquery.push({ name: 'p_fr', value: filterCont.filter.priceFrom.toString().replace(',', '.') });\n\t\t\t\t\t}\n\n\t\t\t\t\tif (priceTo >= 0) {\n\t\t\t\t\t\tif (priceTo == 0 && urlP_to > 0 && !filterCont.defaultFilter.priceClear) {\n\t\t\t\t\t\t\tfilterCont.filter.priceTo = urlP_to;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (filterCont.filter.priceTo > 0)\n\t\t\t\t\t\t\tquery.push({ name: 'p_to', value: filterCont.filter.priceTo.toString().replace(',', '.') });\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif (filterCont.filter.ch) {\n\t\t\t\t\tquery.push({ name: 'ch', value: filterCont.filter.ch });\n\t\t\t\t}\n\n\t\t\t\tif (filterCont.filter.fch) {\n\t\t\t\t\tquery.push({ name: 'fch', value: filterCont.filter.fch });\n\t\t\t\t}\n\n\t\t\t\tif (filterCont.filter.tch) {\n\t\t\t\t\tquery.push({ name: 'tch', value: filterCont.filter.tch });\n\t\t\t\t}\n\n\t\t\t\tif (filterCont.filter.tfch) {\n\t\t\t\t\tquery.push({ name: 'tfch', value: filterCont.filter.tfch });\n\t\t\t\t}\n\n\t\t\t\tif (filterCont.filter.firmIDs) {\n\t\t\t\t\tquery.push({ name: 'firmIDs', value: filterCont.filter.firmIDs });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//filterType переключатель берется из кук\n\t\t\t//if (filterCont.filter.filterType && filterCont.filter.filterType != 'byproducts') {\n\t\t\t//\tquery.push({ name: 'filter', value: filterCont.filter.filterType });\n\t\t\t//}\n\n\t\t\tif (filterCont.filter.geo_lat) {\n\t\t\t\tquery.push({ name: 'geo_lat', value: filterCont.filter.geo_lat });\n\t\t\t}\n\n\t\t\tif (filterCont.filter.geo_long) {\n\t\t\t\tquery.push({ name: 'geo_long', value: filterCont.filter.geo_long });\n\t\t\t}\n\n\t\t\tif (filterCont.filter.intervalFrom) {\n\t\t\t\tquery.push({ name: 'intervalFrom', value: filterCont.filter.intervalFrom });\n\t\t\t}\n\n\t\t\tif (filterCont.filter.intervalTo) {\n\t\t\t\tquery.push({ name: 'intervalTo', value: filterCont.filter.intervalTo });\n\t\t\t}\n\n\t\t\tif (filterCont.filter.geo_maxDistance) {\n\t\t\t\tquery.push({ name: 'geo_maxDistance', value: filterCont.filter.geo_maxDistance });\n\t\t\t}\n\n\t\t\tif (filterCont.filter.datetimeOpen && !filterCont.filter.datetimeIsReset) {\n\t\t\t\tquery.push({ name: 'datetime_open', value: filterCont.filter.datetimeOpen });\n\t\t\t}\n\n\t\t\tif (filterCont.filter.sort) {\n\t\t\t\tquery.push({ name: 'sort', value: filterCont.filter.sort });\n\t\t\t}\n\n\t\t\tif (filterCont.filter.firmSort) {\n\t\t\t\tquery.push({ name: 'firmSort', value: filterCont.filter.firmSort });\n\t\t\t}\n\n\t\t\tif (filterCont.filter.statuses) {\n\t\t\t\tquery.push({ name: 'statuses', value: filterCont.filter.statuses });\n\t\t\t}\n\t\t\tif (filterCont.filter.tableView) {\n\t\t\t\tquery.push({ name: 'tableView', value: filterCont.filter.tableView });\n\t\t\t}\n\t\t\tif (getUrlParameter(\"firms\")) {\n\t\t\t\tquery.push({ name: 'firms', value: getUrlParameter(\"firms\") });\n\t\t\t}\n\n\t\t\tif (url.indexOf('tab') == -1 && tab) {\n\t\t\t\tquery.push({ name: 'tab', value: tab });\n\t\t\t}\n\n\t\t\tvar _url = new URL(location.href);\n\t\t\tvar additionalParams = [..._url.searchParams.keys()].filter(k => this.knownParams.indexOf(k) == -1);\n\t\t\tfor (let param of additionalParams) {\n\t\t\t\tquery.push({ name: param, value: _url.searchParams.get(param) });\n\t\t\t}\n\n\t\t\tif (query.length > 0) {\n\t\t\t\tfor (var i = 0; i < query.length; i++) {\n\t\t\t\t\turl += i === 0 ? '?' + query[i].name + '=' + query[i].value : query[i].name + '=' + query[i].value;\n\t\t\t\t\turl += i < query.length - 1 ? '&' : '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar tab = this.getURLParameter('tab');\n\t\t\tif (tab) {\n\t\t\t\tif ($('#tu-tabs a.active').attr('data-tab-def') == '0' && query.length > 0) {\n\t\t\t\t\turl += ('&tab=' + $('#tu-tabs a.active').attr('data-href'));\n\t\t\t\t} else if ($('#tu-tabs a.active').attr('data-tab-def') == '0' && query.length == 0) {\n\t\t\t\t\turl += ('?tab=' + $('#tu-tabs a.active').attr('data-href'));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twindow.history.pushState({ filter: filterCont.filter }, filterCont.filter.filterType, url);\n\t\t}\n\t},\n\t_searchProducts: function (uploadType, isProducts, isPrevItems) {\n\t\tif (uploadType === undefined) uploadType = 0;// default arguments\n\t\tif (isPrevItems === undefined) isPrevItems = false;// for ie\n\t\tfilterCont.filter.uploadType = uploadType;\n\t\tvar currentFirmPage = filterCont.filter.firmPage;\n\t\tvar params = { filter: filterCont.filter };\n\n\t\tvar firmTemplates = {\n\t\t\tgrid: 'firm-mini-list',\n\t\t\tmini: 'firm-mini-list',\n\t\t\trows: 'firm-mini-row-list'\n\t\t};\n\n\t\tvar firmTemplate = getPrecompiledTemplate(firmTemplates[filter.options.viewMode]);\n\n\t\tajaxSend({ url: '/categoryRequests/SearchProduct', data: params }).then(data => {\n\t\t\tif (typeof (data) != \"object\") { data = eval('(' + data + ')'); }\n\n\t\t\tif (uploadType == 1 || uploadType == 2) {\n\t\t\t\tif (data.FirmItems.length > 0) {\n\t\t\t\t\tif (!data.Type) data.Type = \"bygoods\";\n\t\t\t\t\tdata.bygoods = data.Type == \"bygoods\";\n\t\t\t\t\tvar newFirms = $(firmTemplate(data));\n\t\t\t\t\tinitTuPopover(newFirms);\n\n\t\t\t\t\tif (uploadType == 1) {\n\t\t\t\t\t\tif (!isPrevItems) {\n\t\t\t\t\t\t\t$('.firm-content').append(newFirms);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$('.firm-content').prepend(newFirms);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t$('.firm-content').html(newFirms);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar firmPageSize = parseInt(filterCont.filter.firmPageSize);\n\t\t\t\tvar fc = data.FirmItems.length > 0 && data.firmFilteredCount > ((currentFirmPage) * firmPageSize);\n\n\t\t\t\tif (!fc) {\n\t\t\t\t\t$('.btn-show-more:visible').addClass('d-none');\n\t\t\t\t}\n\n\t\t\t\t$(\"[data-toggle=popover]\").popover({\n\t\t\t\t\tsanitize: false\n\t\t\t\t});\n\t\t\t}\n\n\t\t});\n\t},\n\tsearchProducts: function (uploadType, isProducts, isPrevItems) {\n\t\tlet templates = [\n\t\t\t'firm-mini',\n\t\t\t'firm-mini-row',\n\t\t\t'firm-mini-list',\n\t\t\t'firm-mini-row-list'\n\t\t];\n\n\t\tloadPrecompiledTemplates(templates).then(() => this._searchProducts(uploadType, isProducts, isPrevItems));\n\t},\n\tsearchItemsByQuery: function () {\n\t\tfilterCont.filter = filterCont.getFilter(this.elements.search, false);\n\t\tif ($('.tum-offers-withoutFilters').length) {\n\t\t\tfilterCont.filter.withoutFilters = $('.tum-offers-withoutFilters').prop('checked');\n\t\t}\n\t\tthis.updateBrowserHistory();\n\t\tlocation.reload();\n\t},\n\tgetURLParameter: function (sParam) {\n\t\tvar sPageURL = window.location.search.substring(1);\n\t\tvar sURLVariables = sPageURL.split('&');\n\t\tfor (var i = 0; i < sURLVariables.length; i++) {\n\t\t\tvar sParameterName = sURLVariables[i].split('=');\n\t\t\tif (sParameterName[0] == sParam) {\n\t\t\t\treturn sParameterName[1];\n\t\t\t}\n\t\t}\n\t},\n\tsetURLParameter: function (name, value) {\n\t\tvar sPageURL = window.location.search.substring(1);\n\t\tif (sPageURL.indexOf(name) != -1) {\n\t\t\tvar sURLVariables = sPageURL.split('&');\n\t\t\tfor (var i = 0; i < sURLVariables.length; i++) {\n\t\t\t\tvar sParameterName = sURLVariables[i].split('=');\n\t\t\t\tif (sParameterName[0] == name) {\n\t\t\t\t\tsParameterName[1] = value;\n\t\t\t\t}\n\t\t\t\tsURLVariables[i] = sParameterName.join('=');\n\t\t\t}\n\t\t\tsPageURL = sURLVariables.join('&');\n\t\t} else {\n\t\t\tif (window.location.href.indexOf('?') != -1) sPageURL += \"&\";\n\t\t\tsPageURL += name + \"=\" + value;\n\t\t}\n\t\tvar newUrl = window.location.href.split('?')[0] + '?' + sPageURL;\n\t\twindow.history.pushState({ path: newUrl }, '', newUrl);\n\t},\n\tchangeOfferResetFilter: function () {\n\t\tif ($('.tum-clear-all-filters').length > 0) {\n\t\t\t$('.tum-clear-all-filters').addClass(\"tum-bg-dark-red-light\");\n\t\t\t$('.tum-clear-all-filters').addClass(\"text-white\");\n\t\t}\n\t},\n\tapplyFilters: function (skipReload) {\n\t\tvar isMob = false;\n\t\tvar filterType = this.elements.search;\n\t\tif (window.innerWidth < 768) {\n\t\t\tisMob = true;\n\t\t\tfilterType = this.elements.searchMob;\n\t\t}\n\t\tfilterCont.filter = filterCont.getFilter(filterType, isMob);\n\n\t\tif (!skipReload) {\n\t\t\tthis.updateBrowserHistory();\n\t\t\topenProgressbar();\n\t\t\tlocation.reload();\n\t\t}\n\t},\n\tisMob: function () {\n\t\treturn window.innerWidth < 768;\n\t},\n\tgetCoordinates: function () {\n\t\treturn new Promise(resolve => {\n\t\t\tif (this.coordinates) {\n\t\t\t\tresolve(this.coordinates);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.options.askForCoordinates) {\n\t\t\t\tresolve(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\topenProgressbar();\n\t\t\tnavigator.geolocation.getCurrentPosition(\n\t\t\t\te => {\n\t\t\t\t\tcloseProgressbar();\n\n\t\t\t\t\tgetLocationFromYandex(e.coords.latitude, e.coords.longitude).then(yl => {\n\t\t\t\t\t\tif (yl.locality == tumarket.general.location.name || getCookie('ignoreMapCityCheck') == '1') {\n\t\t\t\t\t\t\tthis.coordinates = {\n\t\t\t\t\t\t\t\tlat: e.coords.latitude,\n\t\t\t\t\t\t\t\tlong: e.coords.longitude\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve(this.coordinates);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\tcloseProgressbar()\n\t\t\t\t\tif (e.code > 1) {\n\t\t\t\t\t\tbootstrapAlert('Не удалось определить местоположение.', { type: 'danger' });\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(e);\n\t\t\t\t\tresolve(null);\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttimeout: 5000\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t},\n\t_initMap: function (callback) {\n\t\tlet center = this.coordinates || {\n\t\t\tlat: tumarket.searchMap.center[0],\n\t\t\tlong: tumarket.searchMap.center[1]\n\t\t};\n\n\t\tlet defaultCenter = {\n\t\t\tlat: tumarket.searchMap.center[0],\n\t\t\tlong: tumarket.searchMap.center[1]\n\t\t};\n\n\t\tvar $btn = $('.tum-search-onMap');\n\t\t$btn.prop('disabled', true);\n\t\topenProgressbar()\n\n\t\timport(\"../map.js\").then(({ tu_maps }) => {\n\t\t\tthis.map = tu_maps.create({\n\t\t\t\tcontainerId: 'tum-search-map',\n\t\t\t\tcenter: center,\n\t\t\t\tdefaultCenter: defaultCenter,\n\t\t\t\tzoom: Number(getUrlParameter('mapZoom')) || 12,\n\t\t\t\tshowSettingsButton: true,\n\t\t\t\tshowSettings: false,\n\t\t\t\tshowUserMark: true,\n\t\t\t\tlocationDetected: !!this.coordinates,\n\t\t\t\tradius: this.radius,\n\t\t\t\tshowInfo: !$('.tum-items-empty').length, //если на вьюшке уже есть блок \"в радиусе не найдено\", то не показываем радиус\n\t\t\t\tonLoad: (ymap, modules, map) => {\n\t\t\t\t\tlet collection = new modules.GeoObjectCollection();\n\t\t\t\t\tfor (let p of tumarket.searchMap.points) {\n\t\t\t\t\t\tlet placemarkOptions = {\n\t\t\t\t\t\t\thideIconOnBalloonOpen: false,\n\t\t\t\t\t\t\tballoonOffset: [0, -20],\n\t\t\t\t\t\t\tballoonMaxWidth: 200\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tlet placemark = new modules.Placemark(p.coords, {\n\t\t\t\t\t\t\tballoonContentBody: 'Загрузка...'\n\t\t\t\t\t\t}, placemarkOptions);\n\n\t\t\t\t\t\tplacemark.events.add('balloonopen', function () {\n\t\t\t\t\t\t\timport('../statistics.js').then(({ tumStats }) => {\n\t\t\t\t\t\t\t\tmap.getBalloonContent(p.firmID, tumarket.search.ctuIDs)\n\t\t\t\t\t\t\t\t\t.then(e => placemark.properties.set('balloonContentBody', e))\n\t\t\t\t\t\t\t\t\t.then(() => tumStats.logEvent({\n\t\t\t\t\t\t\t\t\t\tfirmID: p.firmID,\n\t\t\t\t\t\t\t\t\t\tobjectType: 'map',\n\t\t\t\t\t\t\t\t\t\teventType: 'click_showContacts'\n\t\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t\t\t.catch(e => console.log(e));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcollection.add(placemark);\n\t\t\t\t\t}\n\t\t\t\t\tymap.geoObjects.add(collection);\n\t\t\t\t\t$btn.prop('disabled', false);\n\t\t\t\t\tcloseProgressbar()\n\t\t\t\t\tif (callback) callback();\n\t\t\t\t\t$('.tum-search-map-header').removeClass('d-none');\n\t\t\t\t},\n\t\t\t\tonApplySettings: settings => {\n\t\t\t\t\tfilterCont.filter.geo_lat = settings.center.lat;\n\t\t\t\t\tfilterCont.filter.geo_long = settings.center.long;\n\t\t\t\t\tfilterCont.filter.geo_maxDistance = settings.radius;\n\n\t\t\t\t\tsearchFilter.applyFilters();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\t_toggleMap: function (callback) {\n\t\tvar $map = $('#tum-search-map');\n\t\tif ($map.is('.initialized')) {\n\t\t\t$map.toggleClass('d-none');\n\t\t\t$('.tum-search-map-header').toggleClass('d-none');\n\n\t\t\tvar $mapInfo = $($map.attr('data-info'));\n\t\t\tvar show = !$map.hasClass('d-none');\n\t\t\tif (show) {\n\t\t\t\t$mapInfo.removeClass('d-none');\n\t\t\t} else if (!this.radius) {\n\t\t\t\t$mapInfo.addClass('d-none');\n\t\t\t}\n\t\t} else {\n\t\t\tthis.getCoordinates()\n\t\t\t\t.then(() => this._initMap(callback));\n\t\t}\n\t},\n\tinitGeoSearch: function () {\n\t\tlet self = this;\n\t\taddEventDelegate(document, 'click', '.tum-search-onMap', element => {\n\t\t\tif ($(element).prop('disabled')) return;\n\t\t\tself._toggleMap();\n\t\t});\n\n\t\tlet lat_param = getUrlParameter('geo_lat');\n\t\tlet long_param = getUrlParameter('geo_long');\n\t\tlet maxDistance_param = getUrlParameter('geo_maxDistance');\n\n\t\tif (lat_param && long_param) {\n\t\t\tthis.coordinates = {\n\t\t\t\tlat: Number(lat_param),\n\t\t\t\tlong: Number(long_param)\n\t\t\t};\n\n\t\t\tfilterCont.filter.geo_lat = this.coordinates.lat;\n\t\t\tfilterCont.filter.geo_long = this.coordinates.long;\n\n\t\t\tif (maxDistance_param) {\n\t\t\t\tthis.radius = Number(maxDistance_param);\n\t\t\t\t$('.tum-distance').html(this.radius + ' м');\n\t\t\t\t$('.tum-distance').closest('.selected-items').removeClass('d-none');\n\t\t\t\tfilterCont.filter.geo_maxDistance = this.radius;\n\t\t\t}\n\n\t\t\tif (getUrlParameter('showOnMap') != '0') this._toggleMap();\n\t\t}\n\n\t\taddEvent('.filter-openMapSettings', 'click', element => {\n\t\t\tlet enableRadius = element.matches('.map-openSettings-enableRadius');\n\t\t\tthis.openMapSettings(enableRadius);\n\t\t});\n\n\t\t$('.clear-distance').on('click', function () {\n\t\t\tfilterCont.filter.geo_maxDistance = 0;\n\t\t});\n\n\t\t$('.tum-filter-clear-radius').on('click', function () {\n\t\t\tfilterCont.filter.geo_maxDistance = 0;\n\t\t\tself.applyFilters();\n\t\t});\n\t},\n\tinitSearchToolbar: function () {\n\t\tlet self = this;\n\t\t$('.productSort-select').on('click', function () {\n\t\t\tfilterCont.filter.sort = $(this).attr('data-type');\n\t\t\tfilter.updateSortType();\n\t\t\tself.applyFilters();\n\t\t});\n\n\t\t$('.firmSort-select').on('click', function () {\n\t\t\tfilterCont.filter.firmSort = $(this).attr('data-type');\n\t\t\tfilter.updateSortType();\n\t\t\tself.applyFilters();\n\t\t});\n\t},\n\topenMapSettings: function (enableRadius) {\n\t\tfilter.hideAsideModal();\n\n\t\tlet showSettings = () => {\n\t\t\t$('#map-settingsModal').modal('show');\n\t\t\tif (enableRadius) this.map.enableRadius();\n\t\t}\n\n\t\tif (this.map) {\n\t\t\tshowSettings();\n\t\t}\n\t\telse {\n\t\t\tthis._toggleMap();\n\t\t\twindow.addEventListener('tu.map.settingsLoaded', () => {\n\t\t\t\tshowSettings();\n\t\t\t});\n\t\t}\n\t},\n\t//синхронизирует выбранные чекбоксы кту между несгруппированными и сгруппированными\n\tsyncCtuModal: function () {\n\t\t$(\".tum-mdc-categories-ungrouped input[data-itemid]:checked\").each(function () {\n\t\t\tlet ctuID = $(this).attr('data-itemid');\n\t\t\t$(\".tum-mdc-categories-grouped input[data-itemid=\" + ctuID + \"]\").prop('checked', true);\n\t\t});\n\t},\n\ttoggleCtuModal: function (value) {\n\n\t\tfilter.hideAsideModal();\n\n\t\t$('.ctuModal-container').toggleClass('active', value);\n\t\t$('.ctuModal-container .b-aside-modal').toggleClass('modalActive', value);\n\n\t\tif ($('.ctuModal-container').hasClass('active')) {\n\t\t\tsearchFilter.options.arr = tumarket.ctuFilter.categories.map(e => (e.ctuNameClean || e.ctuName).toLowerCase());\n\t\t}\n\t},\n\tinitStickyFilter: function (element, options) {\n\t\t//фильтры всегда видимы на странице, но скроллятся вместе с ней\n\t\t//пример отсюда https://discourse.wicg.io/t/scrollable-sticky-element/5669 https://jsfiddle.net/qm3KZ/26/\n\n\t\tfunction _getTopOffset() {\n\t\t\tif ($('.header-floating').hasClass('show')) {\n\t\t\t\treturn $('.header-floating').height();\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\tfunction _pegToScreenTop($element) {\n\t\t\t$element.css({\n\t\t\t\t'top': _getTopOffset(),\n\t\t\t\t'bottom': ''\n\t\t\t});\n\t\t}\n\n\t\tfunction _pegToFollowTop($element, followTop, screenTop) {\n\t\t\t$element.css({\n\t\t\t\t'top': _getTopOffset() + followTop - screenTop,\n\t\t\t\t'bottom': ''\n\t\t\t});\n\t\t}\n\n\t\tfunction _pegToFollowBottom($element, followBottom, screenBottom) {\n\t\t\t$element.css({\n\t\t\t\t'top': '',\n\t\t\t\t'bottom': screenBottom - followBottom\n\t\t\t});\n\t\t}\n\n\t\tfunction _scrollEl($element, distance) {\n\t\t\tvar oldTop = $element.offset().top - $(window).scrollTop() - _getTopOffset();\n\t\t\t$element.css({\n\t\t\t\t'top': _getTopOffset() + oldTop - (distance || 0),\n\t\t\t\t'bottom': ''\n\t\t\t});\n\t\t}\n\n\t\tfunction follow(event) {\n\t\t\tvar $window = $(window),\n\t\t\t\tsettings = event.data.settings,\n\t\t\t\t$element = event.data.follower,\n\t\t\t\telHeight = $element.outerHeight(),\n\t\t\t\telTop = $element.offset().top,\n\t\t\t\telBottom = elTop + elHeight,\n\t\t\t\tisShorterThanScreen = elHeight < $window.height(),\n\t\t\t\tscreenTop = $window.scrollTop(),\n\t\t\t\tscreenBottom = screenTop + $window.height(),\n\t\t\t\tisFollowTopPxVisible = screenTop - settings.topPixel <= 0,\n\t\t\t\tisFollowBottomPxVisible = settings.bottomPixel - screenBottom <= 0,\n\t\t\t\tprevScreenTop = ($element.data('followScreen') || 0),\n\t\t\t\tscrollDistance = screenTop - prevScreenTop;\n\n\t\t\tif (elHeight < settings.bottomPixel - settings.topPixel) { //El is capable of scrolling\n\t\t\t\tif (isShorterThanScreen) {\n\t\t\t\t\tif (isFollowTopPxVisible) {\n\t\t\t\t\t\t_pegToFollowTop($element, settings.topPixel, screenTop);\n\t\t\t\t\t} else if (isFollowBottomPxVisible && (settings.bottomPixel - screenTop < elHeight)) {\n\t\t\t\t\t\t_pegToFollowBottom($element, settings.bottomPixel, screenBottom);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_pegToScreenTop($element);\n\t\t\t\t\t}\n\t\t\t\t} else { //El is bigger than screen\n\t\t\t\t\tif (isFollowBottomPxVisible) {\n\t\t\t\t\t\t_pegToFollowBottom($element, settings.bottomPixel, screenBottom);\n\t\t\t\t\t} else if (isFollowTopPxVisible) {\n\t\t\t\t\t\t_pegToFollowTop($element, settings.topPixel, screenTop);\n\t\t\t\t\t} else { //We're between the designated top and bottom following points\n\t\t\t\t\t\tif (scrollDistance < 0) { //Scrolling up\n\t\t\t\t\t\t\tif (Math.abs(scrollDistance) > (screenTop - elTop)) { //Not enough of the element left off-screen to scroll the whole distance\n\t\t\t\t\t\t\t\t_pegToScreenTop($element);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_scrollEl($element, scrollDistance); //Scroll the element up the same distance the user scrolled\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else { //Scrolling down\n\t\t\t\t\t\t\tif (Math.abs(scrollDistance) > (elBottom - screenBottom)) { //Not enough of the element left off-screen to scroll the whole distance\n\t\t\t\t\t\t\t\t//_pegToScreenBottom($element); //это не нужно при position sticky, а в оригинале fixed\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_scrollEl($element, scrollDistance); //Scroll the element down the same distance the user scrolled\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\n\t\t\t//Store for next time\n\t\t\t$element.data('followScreen', screenTop);\n\t\t}\n\n\t\tvar eventNumber = Math.floor(Math.random() * 10 ^ 5),\n\t\t\tsettings = $.extend({\n\t\t\t\t'topPixel': 0,\n\t\t\t\t'bottomPixel': Infinity\n\t\t\t}, options),\n\t\t\tprevEventNumber = element.data('fsn');\n\n\t\t//Remove previous followScreen listener from this element\n\t\tif (prevEventNumber) {\n\t\t\t$(window).off('scroll.followScreen.' + prevEventNumber, follow);\n\t\t}\n\n\t\treturn element.each(function () {\n\t\t\tvar data = { follower: $(this), settings: settings };\n\t\t\t$(window).on('scroll.followScreen.' + eventNumber, data, follow);\n\t\t\tfollow({ data: data });\n\t\t});\n\t}\n};\n\nexport default searchFilter;","import * as $ from \"jquery\";\nimport { getUrlParameter } from \"../global/url\";\nimport { getCookie, setCookie } from \"../global/cookie\";\nimport tumGlobal from \"../global\";\nimport { getFormData } from \"../global/form\";\nimport dateFormat from \"../lib/dateformat/dateformat\";\n\nvar filterCont = {\n\tdefaultFilter: {\n\t\tpage: 1,\n\t\tfirmPage: 1,\n\t\tpageSize: 13,\n\t\tfirmPageSize: 13,\n\t\tch: '',\n\t\tfch: '',\n\t\ttch: '',\n\t\ttfch: '',\n\t\tavailable: 0,\n\t\tmadeInOurs: 0,\n\t\tpriceFrom: 0,\n\t\tpriceTo: 0,\n\t\tfilterType: '',\n\t\tfirmType: '',\n\t\tctuID: 0,\n\t\tctu: '',\n\t\tsearchByTU: false,\n\t\tcropChNameCount: 0,\n\t\tpageType: '',\n\t\tpriceClear: false,\n\t\twithoutFilters: false,\n\t\ttu:'',\n\t\tgeo_lat: 0,\n\t\tgeo_long: 0,\n\t\tgeo_maxDistance: 0,\n\t\tsort: '',\n\t\tfirmSort: '',\n\t\tdatetimeOpen: '',\n\t\tdatetimeIsReset: false\n\t},\n\tselectedCtus: [],\n\tfilter: {\n\t\tpage: 1,\n\t\tfirmPage: 1,\n\t\tpageSize: 13,\n\t\tfirmPageSize: 13,\n\t\tch: '',\n\t\tfch: '',\n\t\ttch: '',\n\t\ttfch: '',\n\t\tavailable: 0,\n\t\tmadeInOurs: 0,\n\t\tpriceFrom: 0,\n\t\tpriceTo: 0,\n\t\tfilterType: '',\n\t\tfirmType: '',\n\t\tfchList: [],\n\t\ttfchList: [],\n\t\tctuID: 0,\n\t\tctu: '',\n\t\tsearchByTU: false,\n\t\tcropChNameCount: 0,\n\t\tpageType: '',\n\t\tpriceClear: false,\n\t\tpageDirection : '',\n\t\tactiveTab: '',\n\t\twithoutFilters: false,\n\t\ttu: '',\n\t\tisEditMode: false,\n\t\tstatuses: '',\n\t\ttableView: 0,\n\t\tgeo_lat: 0,\n\t\tgeo_long: 0,\n\t\tgeo_maxDistance: 0,\n\t\tsort: '',\n\t\tfirmSort: '',\n\t\tdatetimeOpen: '',\n\t\tdatetimeIsReset: false\n\t},\n\telements: {\n\t\tsearch: \".b-aside-xs\"\n\t},\n\trenderFilterSortViewBtn: function(data) {\n\t\treturn `\n\t\t\n\t\t\t\n\t\t\t\t ${data.name}\n\t\t\t\n\t\t`;\n\t},\n\tinitFilterUI: function (searchElement, isMob) {\n\t\t$(searchElement + ' .in-stock .form-check-input').prop(\"checked\", filterCont.filter.available == 1);\n\t\t$(searchElement + ' .madeInOurs').prop(\"checked\", filterCont.filter.madeInOurs == 1);\n\t\t$('.b-aside-modal_views .form-check-input[name=view]:checked').trigger('change');\n\t\tif (filterCont.filter.priceFrom.replace(',', '.') > 0) {\n\t\t\t$(searchElement + (isMob ? ' #minCost-mob' : ' #minCost')).val(filterCont.filter.priceFrom.replace(',', '.'));\n\t\t\t$(searchElement + (isMob ? ' input#minCost-mob' : ' input#minCost')).trigger('change');\n\t\t}\n\t\tif (filterCont.filter.priceTo.replace(',', '.') > 0) {\n\t\t\t$(searchElement + (isMob ? ' #maxCost-mob' : ' #maxCost')).val(filterCont.filter.priceTo.replace(',', '.'));\n\t\t\t$(searchElement + (isMob ? ' input#maxCost-mob' : ' input#maxCost')).trigger('change');\n\t\t}\n\t\tif (!filterCont.filter.isEditMode || (filterCont.filter.isEditMode && $(window).width() >= 768)) {\n\t\t\tvar catIDs = filterCont.filter.ctu.split(',');\n\t\t\t$('.b-aside .form-check-input').each(function (i, el) {\n\t\t\t\tvar itemID = $(el).attr('data-itemid');\n\t\t\t\tif ($.inArray(itemID, catIDs) !== -1) {\n\t\t\t\t\t$(el).prop('checked', true)\n\t\t\t\t\tif (isMob) {\n\t\t\t\t\t\t$(el).trigger('change');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} \n\t\tvar charIDs = filterCont.filter.ch.split(',');\n\t\t$(isMob ? '.mobile-fullsize .card .form-check-input' : '.panel-filter .form-check-input').each(function (i, el) {\n\t\t\tvar itemID = $(el).attr('data-itemid');\n\t\t\tif ($.inArray(itemID, charIDs) !== -1) {\n\t\t\t\t$(el).prop('checked', true)\n\t\t\t\tif (isMob) $(el).trigger('change');\n\t\t\t}\n\t\t});\n\t\tvar charactCount = 0;\n\t\tvar metricsFCH = filterCont.defaultFilter.fchList;\n\t\tvar metricsTFCH = [];\n\t\tif (window.innerWidth < 768) {\n\t\t\tcharactCount = parseInt(charIDs[0] != \"\" ? charIDs.length : 0)\n\t\t\tif (filterCont.filter.priceFrom > 0) { //под вопросом\n\t\t\t\tcharactCount += 1;\n\t\t\t}\n\t\t\tif (filterCont.defaultFilter.pageType == 'tu') {\n\t\t\t\tmetricsTFCH = filterCont.defaultFilter.tfchList;\n\t\t\t}\n\t\t}\n\n\t\tvar metrics = [metricsFCH, metricsTFCH];\n\t\tvar metricCount = 0;\n\n\t\tfor (var i = 0; i < metrics.length; i++) {\n\t\t\t$.each(metrics[i], function (i, value) {\n\t\t\t\tif (value.id > 0 && value.minVal > 0 && value.maxVal > 0) {\n\t\t\t\t\tvar $cont = $('.b-filter-f-ch[data-itemid=\"' + value.id + '\"]');\n\t\t\t\t\t\n\t\t\t\t\tvar $minInput = $cont.find('input.minVal' + value.id)\n\t\t\t\t\tvar $maxInput = $cont.find('input.maxVal' + value.id)\n\t\t\t\t\t$minInput.val(value.minVal);\n\t\t\t\t\t$minInput.trigger('change');\n\t\t\t\t\t$maxInput.val(value.maxVal);\n\t\t\t\t\t$maxInput.trigger('change');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tcharactCount += metricCount;\n\t\tvar isFilterAvailable = $(!isMob ? filterCont.elements.search + ' .isAvailable' : '.mobile-fullsize .isAvailable').prop('checked');\n\t\tif (isFilterAvailable) {\n\t\t\tcharactCount += 1;\n\t\t}\n\n\t\tvar isFilterMadeInOurs = $(!isMob ? filterCont.elements.search + ' .madeInOurs' : '.mobile-fullsize .madeInOurs').prop('checked');\n\t\tif (isFilterMadeInOurs) {\n\t\t\tcharactCount += 1;\n\t\t}\n\n\t\t//это же учтено выше?\n\t\tcharactCount += $('.tum-filter-clear-item-cont:visible').length; // пред реализация не работала, врем. решение\n\t\tif (window.innerWidth < 768) {\n\t\t\tcharactCount = catIDs && catIDs.length && catIDs[0] ? 1 : 0;\n\t\t\tcharactCount += $(\".card .b-aside-item__top .value.item-char\").length;\n\t\t}\n\t\tif ($('.tum-filter-search-text').length > 0 && $('.tum-filter-search-text').val().trim() != '') {\n\t\t\tcharactCount += 1;\n\t\t}\n\t\tif ($(\".card .b-filter-f-ch\").length > 1) {\n\t\t\tvar values = $(\".card .b-filter-f-ch\").closest('.card').find('.value.item-char');\n\t\t\t$.each(values, function (i, el) {\n\t\t\t\tvar txt = $(el).text();\n\t\t\t\tvar spl = txt.split(';')[i];\n\t\t\t\t$(el).text(spl);\n\t\t\t});\n\t\t}\n\t\tvar fltrCountXS = charactCount > 0 ? charactCount : \"\";\n\t\t$('.b-aside-xs .filter-fields-count:visible').html(fltrCountXS);\n\t\tif (charactCount > 0 && !$('.b-aside-xs .filter-fields-count:visible').hasClass(\"tum-bg-dark-red\")) {\n\t\t\t$('.b-aside-xs .filter-fields-count:visible').addClass(\"tum-bg-dark-red\");\n\t\t} else if (charactCount == 0) {\n\t\t\t$('.b-aside-xs .filter-fields-count:visible').removeClass(\"tum-bg-dark-red\");\n\t\t}\n\t\tif (charactCount > 0 && $('.b-aside-xs .clear-filter').hasClass(\"d-none\")) {\n\t\t\t$('.b-aside-xs .clear-filter').removeClass(\"d-none\")\n\t\t}\n\n\t\t$.each($('.card .filter-fields-count'), function (i, el) {\n\t\t\tvar fltrCount = charactCount > 0 ? charactCount : \"\";\n\t\t\t$(el).html(fltrCount);\n\t\t\tif (charactCount > 0 && !$(el).hasClass(\"tum-bg-dark-red\")) {\n\t\t\t\t$(el).addClass(\"tum-bg-dark-red\");\n\t\t\t} else if (charactCount == 0){\n\t\t\t\t$(el).removeClass(\"tum-bg-dark-red\");\n\t\t\t}\n\n\t\t\tif (charactCount > 0 && $(el).closest(\".card\").find(\".clear-filter\").hasClass(\"d-none\")) {\n\t\t\t\t$(el).closest(\".card\").find(\".clear-filter\").removeClass(\"d-none\");\n\t\t\t}\n\t\t});\n\t\t\n\t\tif (filterCont.filter.available == 1) {\n\t\t\tlet name = $(!isMob ? filterCont.elements.search + ' .isAvailable' : '.mobile-fullsize .isAvailable').closest('label').text();\n\t\t\t$('.collapseSummaryClass').removeClass('d-none');\n\t\t\t$('.tum-filter-clear-all-cont').removeClass('d-none');\n\n\t\t\tlet htmlOut = this.renderFilterSortViewBtn({ \n\t\t\t\tid: $(!isMob ? filterCont.elements.search + ' .isAvailable' : '.mobile-fullsize .isAvailable').attr('data-itemid'), \n\t\t\t\tcatid: 0, \n\t\t\t\tname: name \n\t\t\t});\n\n\t\t\t$(\".collapseSummaryClass\").append(htmlOut).removeClass('d-none');\n\t\t}\n\n\t\tif (filterCont.filter.madeInOurs == 1) {\n\t\t\tlet name = $(!isMob ? filterCont.elements.search + ' .madeInOurs' : '.mobile-fullsize .madeInOurs').closest('label').text();\n\t\t\t$('.collapseSummaryClass').removeClass('d-none');\n\t\t\t$('.tum-filter-clear-all-cont').removeClass('d-none');\n\n\t\t\tlet htmlOut = this.renderFilterSortViewBtn({ \n\t\t\t\tid: $(!isMob ? filterCont.elements.search + ' .madeInOurs' : '.mobile-fullsize .madeInOurs').attr('data-itemid'), \n\t\t\t\tcatid: 0, \n\t\t\t\tname: name \n\t\t\t});\n\t\t\t$(\".collapseSummaryClass\").append(htmlOut).removeClass('d-none');\n\t\t}\n\n\n\t\t//показываем кнопку \"очистить все\" для категорий\n\t\tvar countChecked = $('.b-aside-modal.b-aside-modal-cat .tum-flt-gr-items .form-check-input:checked').length;\n\t\tif (countChecked > 0) {\n\t\t\t$('.b-aside-modal.b-aside-modal-cat .clear-filter').removeClass('d-none');\n\t\t}\n\n\t\tfilterCont.setDateTimeFilter(isMob);\n\t},\n\tgetFilter: function (searchElement, isMob) {\n\t\tlet query = tumGlobal.isMob() ? $('.tum-filter-search-text-mob').val() : $('.tum-filter-search-text:not(.tum-filter-search-text-mob)').val();\n\t\tfilterCont.filter.query = query || filterCont.filter.query;\n\t\tfilterCont.defaultFilter.query = query || filterCont.defaultFilter.query;\n\n\t\t// получаем значения фильтра\n\t\tvar isMob2 = window.innerWidth < 768;\n\t\tvar available = false;\n\t\tvar madeInOurs = false;\n\n\t\tvar isOwnCharID = true;\n\t\tvar $catCont = $('.tum-flt-category-cont');\n\t\tif ($catCont.length>0) {\n\t\t\tisOwnCharID = $catCont.attr('data-is-own-ch-id') === \"1\";\n\t\t}\n\t\t\n\t\tif (isMob2) {\n\t\t\tavailable = $('.mobile-fullsize .isAvailable').prop('checked');\n\t\t\tmadeInOurs = $('.mobile-fullsize .madeInOurs').prop('checked');\n\t\t} else {\n\t\t\tavailable = $(searchElement + ' .isAvailable').prop('checked');\n\t\t\tmadeInOurs = $(searchElement + ' .madeInOurs').prop('checked');\n\t\t}\n\n\t\tvar priceFrom = $(searchElement + (isMob ? ' #minCost-mob' : ' #minCost')).val();\n\t\tvar priceTo = $(searchElement + (isMob ? ' #maxCost-mob' : ' #maxCost')).val() || 0;\n\n\t\t//обнуляем только если нажали на сбросить цену\n\t\tif ($('.tum-filter-clear-price.tum-filter-clear-item .fa-times').length == 0) {\n\t\t\tif (priceFrom == $(searchElement + (isMob ? ' #minCost-mob' : ' #minCost')).attr('data-minprice')) {\n\t\t\t\tpriceFrom = 0;\n\t\t\t}\n\t\t\tif (priceTo == $(searchElement + (isMob ? ' #maxCost-mob' : ' #maxCost')).attr('data-maxprice')) {\n\t\t\t\tpriceTo = 0;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (parseInt(priceFrom) != 0 || parseInt(priceTo) != 0) {\n\t\t\tpriceFrom = $(searchElement + (isMob ? ' #minCost-mob' : ' #minCost')).val();\n\t\t\tpriceTo = $(searchElement + (isMob ? ' #maxCost-mob' : ' #maxCost')).val();\n\t\t}\n\n\t\tvar sort = this.filter.sort;\n\n\t\tvar selectFilters = [\n\t\t\t'sortKADef',\n\t\t\t'sortTUDef',\n\t\t];\n\t\t\n\t\tif ($.inArray(sort, selectFilters) != -1) {\n\t\t\tsort = '';\n\t\t}\n\n\t\tvar firmSort = this.filter.firmSort;\n\n\t\tif ($.inArray(firmSort, selectFilters) != -1) {\n\t\t\tfirmSort = '';\n\t\t}\n\t\t\n\t\tvar charIDs = [];\n\t\tvar fCharIDs = [];\n\t\tvar firmIDs = [];\n\n\t\t//продавцы\n\t\t$(isMob ? '.mobile-fullsize .card .firm .form-check-input' : '.panel-filter .firm .form-check-input').each(function (i, el) {\n\t\t\tvar itemID = $(el).attr('data-itemid')\n\t\t\tif (itemID > 0 && $.inArray(itemID, firmIDs) == -1) {\n\t\t\t\tif ($(el).prop('checked')) {\n\t\t\t\t\tfirmIDs.push($(el).attr('data-itemid'));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//обычные флаги\n\t\t$(isMob ? '.mobile-fullsize .card .ch .form-check-input' : '.panel-filter .ch .form-check-input').each(function (i, el) {\n\t\t\tvar itemID = $(el).attr('data-itemid')\n\t\t\tif (itemID > 0 && $.inArray(itemID, charIDs) == -1) {\n\t\t\t\tif ($(el).prop('checked')) {\n\t\t\t\t\tcharIDs.push($(el).attr('data-itemid'));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//метрики\n\t\t$(isMob ? '.mobile-fullsize .card .b-filter-f-ch' : '.panel-filter .b-filter-f-ch').each(function (i, el) {\n\t\t\tvar $el = $(el);\n\t\t\tvar itemID = $el.attr('data-itemid');\n\t\t\tvar minVal = $('.minVal' + itemID, $el).val();\n\t\t\tvar maxVal = $('.maxVal' + itemID, $el).val();\n\t\t\tvar minValConst = $el.attr('data-min-val');\n\t\t\tvar maxValConst = $el.attr('data-max-val');\n\t\t\tif (parseFloat(minVal) == parseFloat(minValConst) && parseFloat(maxVal) == parseFloat(maxValConst)) return true;\n\t\t\tvar curChar = itemID + \"_[\" + minVal + \"-\" + maxVal + \"]\";\n\t\t\tif (itemID > 0 && $.inArray(itemID, curChar) == -1) {\n\t\t\t\tfCharIDs.push(curChar);\n\t\t\t}\n\t\t});\n\t\t\n\n\t\t$('.mobile-fullsize .card .form-check-input').each(function (i, el) {\n\t\t\tvar itemID = $(el).attr('data-itemid');\n\t\t\tif ($.inArray(itemID, charIDs) !== -1) {\n\t\t\t\t$(el).prop('checked', true)\n\t\t\t\t$(el).trigger('change');\n\t\t\t}\n\t\t});\n\t\t\n\t\tvar catIDs = [];\n\t\tvar checkboxesInCont = $('.b-aside .list-group .form-check .form-check-input');\n\n\t\tif (!filterCont.filter.isEditMode || (filterCont.filter.isEditMode && $(window).width() >= 768)) {\n\t\t\t$(checkboxesInCont).each(function (i, el) {\n\t\t\t\tif ($(el).attr('data-itemid') > 0) {\n\t\t\t\t\tif ($(el).prop('checked')) {\n\t\t\t\t\t\tcatIDs.push($(el).attr('data-itemid'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (filterCont.filter.isEditMode && $(window).width() < 768) {\n\t\t\tcheckboxesInCont = $('.mobEditViewFilterHeader .b-aside-modal .form-check .form-check-input');\n\t\t\t$(checkboxesInCont).each(function (i, el) {\n\t\t\t\tif ($(el).attr('data-itemid') > 0) {\n\t\t\t\t\tif ($(el).prop('checked')) {\n\t\t\t\t\t\tcatIDs.push($(el).attr('data-itemid'));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (location.pathname.includes('/offers') && !catIDs.length && (charIDs.length || fCharIDs.length)) {\n\t\t\tcatIDs.push($('.b-aside .list-group .form-check .form-check-input').first().attr('data-itemid'));\n\t\t}\n\n\t\tlet ctuCheckboxes = [...document.querySelectorAll('.category-checkbox')];\n\t\tlet allCtusChecked = ctuCheckboxes.every(e => e.checked);\n\n\t\tif (!allCtusChecked) {\n\t\t\tfor (var ctu of ctuCheckboxes) {\n\t\t\t\tlet ctuId = ctu.getAttribute('data-itemid');\n\t\t\t\tif (ctu.checked && !catIDs.includes(ctuId)) {\n\t\t\t\t\tcatIDs.push(ctuId);\n\t\t\t\t}\n\n\t\t\t\tif (!ctu.checked) {\n\t\t\t\t\tcatIDs = catIDs.filter(e => e != ctuId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar queryWithoutFilters = $('.tum-offers-withoutFilters').length > 0 && $('.tum-offers-withoutFilters').prop(\"checked\");\n\t\tvar paramsString = location.search.slice(1);\n\t\tvar searchParams = new URLSearchParams(paramsString);\n\t\tvar statuses = searchParams.get(\"statuses\") || '';\n\t\tvar tableView = searchParams.get(\"tableView\") || '';\n\n\t\tif (isMob) {\n\t\t\tvar viewMode = $(\".form-check-input[name=view]:checked\").val();\n\t\t\tsetCookie(\"tu-viewMode\", viewMode, 1/24*3);\n\t\t}\n\t\t\n\t\tlet intervals = getFormData(document.getElementById('interval-filters'));\n\t\tif (intervals?.tch?.length) {\n\t\t\tcharIDs = intervals.tch;\n\t\t\tfCharIDs = [];\n\t\t\tisOwnCharID = false;\n\t\t}\n\n\t\tif (intervals?.firmIDs?.length) {\n\t\t\tfirmIDs = intervals.firmIDs;\n\t\t}\n\n\t\tlet intervalFrom = intervals?.interval_from;\n\t\tlet intervalTo = intervals?.interval_to;\n\t\tlet intervalFromDate = intervalFrom && new Date(intervalFrom);\n\t\tlet intervalToDate = intervalTo && new Date(intervalTo);\n\n\t\tif (intervalFromDate && intervalToDate && intervalToDate <= intervalFromDate) {\n\t\t\tintervalToDate = null;\n\t\t}\n\n\t\tif (intervalFromDate && !intervalToDate) {\n\t\t\tintervalToDate = new Date(intervalFromDate);\n\t\t\tintervalToDate.setMonth(intervalToDate.getMonth() + 1);\n\t\t}\n\n\t\tvar datetime = this.getDateTimeFilter(isMob);\n\t\tvar filter = {\n\t\t\tpage: 1,\n\t\t\tfirmPage: 1,\n\t\t\tpageSize: filterCont.filter.pageSize,\n\t\t\tfirmPageSize: filterCont.filter.firmPageSize,\n\t\t\tch: isOwnCharID ? charIDs.join(',') : '',\n\t\t\tfch: isOwnCharID ? fCharIDs.join(',') : '',\n\t\t\ttch: !isOwnCharID ? charIDs.join(',') : '',\n\t\t\ttfch: !isOwnCharID ? fCharIDs.join(',') : '',\n\t\t\tfirmIDs: firmIDs.join(','),\n\t\t\tavailable: available,\n\t\t\tmadeInOurs: madeInOurs,\n\t\t\tstatuses: statuses,\n\t\t\ttableView: tableView,\n\t\t\tpriceFrom: priceFrom,\n\t\t\tpriceTo: priceTo,\n\t\t\tintervalFrom: intervalFromDate && dateFormat(intervalFromDate, 'yyyy-MM-dd HH:mm'),\n\t\t\tintervalTo: intervalToDate && dateFormat(intervalToDate, 'yyyy-MM-dd HH:mm'),\n\t\t\tfirmType: filterCont.defaultFilter.firmType,//'byproducts',\n\t\t\tfilterType: filterCont.defaultFilter.filterType,//'byproducts', //filterType,,\n\t\t\tsort: sort,\n\t\t\tfirmSort: firmSort,\n\t\t\tctuID: filterCont.defaultFilter.ctuID,\n\t\t\tctu: catIDs.join(','),\n\t\t\tquery: filterCont.filter.query,\n\t\t\twithoutFilters: queryWithoutFilters,\n\t\t\ttu: filterCont.filter.tu,\n\t\t\tgeo_lat: this.filter.geo_lat,\n\t\t\tgeo_long: this.filter.geo_long,\n\t\t\tgeo_maxDistance: this.filter.geo_maxDistance,\n\t\t\tdatetimeOpen: datetime.date ? `${datetime.date} ${datetime.time}` : '',\n\t\t\tdatetimeIsReset: filterCont.filter.datetimeIsReset\n\t\t};\n\t\treturn filter;\n\t},\n\tsetDateTimeFilter: function (isMob) {\n\t\tvar date = getUrlParameter('datetime_open');\n\n\t\tif (date) {\n\t\t\tvar arr = date.split(' ');\n\t\t\tvar s_date, s_time;\n\t\t\tif (arr.length > 1) {\n\t\t\t\ts_date = arr[0];\n\t\t\t\ts_time = arr[1];\n\t\t\t} else {\n\t\t\t\ts_date = new Intl.DateTimeFormat('fr-CA', { month: 'numeric', year: 'numeric', day: 'numeric' }).format(new Date());\n\t\t\t\ts_time = new Intl.DateTimeFormat('ru', { hour: 'numeric', minute: 'numeric' }).format(new Date());\n\t\t\t}\n\n\t\t\t$('.tum-open-date').val(s_date);\n\t\t\t$('.tum-open-time').val(s_time);\n\n\t\t\tvar isOpen = getCookie('isOpenNow_manual') == 'true';\n\t\t\tif (isOpen) {\n\t\t\t\t$('input.tum-search-open-input').removeAttr('disabled');\n\t\t\t\t$('.tum-open-manual').prop('checked', true);\n\t\t\t\t$('.tum-open-auto').prop('checked', false);\n\t\t\t} else {\n\t\t\t\t$('input.tum-search-open-input').attr('disabled');\n\t\t\t\t$('.tum-open-auto').prop('checked', true);\n\t\t\t\t$('.tum-open-manual').prop('checked', false);\n\t\t\t}\n\t\t} else if (getCookie('isOpenNow_manual') == 'true') {\n\t\t\tsetCookie('isOpenNow_manual', false);\n\t\t} \n\n\t\tif (isMob) {\n\t\t\t$('.tum-search-open-input').addClass('mob-placeholder');\n\t\t}\n\t},\n\tgetDateTimeFilter: function (isMob) {\n\t\tvar res = {\n\t\t\tdate: '', time: ''\n\t\t};\n\t\tvar self = this;\n\n\t\tif (self.filter.datetimeIsReset) return res;\n\n\t\tvar $wrap = isMob ? $('.mobile-fullsize .card .datetime-wrap') : $('.search-toolbar .search-open-time');\n\n\t\tvar isMobFilterOpen = $('.mobile-fullsize .b-aside-item__top .tum-applyFilters:visible').length;\n\t\tif (isMob && !isMobFilterOpen && $('.search-toolbar .search-open-time .tum-open-date').val()\n\t\t\t|| $('.dropdown-menu.show').length) {\n\t\t\t$wrap = $('.search-toolbar .search-open-time');\n\t\t}\n\n\t\tres.date = $wrap.find('.tum-open-date').val(); \n\t\tres.time = $wrap.find('.tum-open-time').val();\n\n\n\t\tvar isAuto = $('.tum-open-auto', $wrap).prop('checked') == true;\n\t\tvar isManual = $('.tum-open-manual', $wrap).prop('checked') == true;\n\n\t\tif (isAuto) {\n\t\t\tres.date = new Intl.DateTimeFormat('fr-CA', { month: 'numeric', year: 'numeric', day: 'numeric' }).format(new Date());\n\t\t\tres.time = new Intl.DateTimeFormat('ru', { hour: 'numeric', minute: 'numeric' }).format(new Date());\n\t\t}\n\t\tif (!isManual && !isAuto) {\n\t\t\tres.date = '';\n\t\t\tres.time = '';\n\t\t}\n\t\t\n\t\treturn res;\n\t}\n};\n\nwindow.filterCont = filterCont;\nexport default filterCont;\n","/* global tumarket */\n\nimport $ from 'jquery'\nimport \"bootstrap/js/dist/dropdown\";\nimport \"readmore-js\";\nimport searchFilter from \"./filter.js\";\nimport tumGlobal from \"../global.js\";\nimport filterCont from \"./filterCont.js\";\nimport { getUrlParameter } from '../global/url';\nimport { getCookie, setCookie } from '../global/cookie';\nimport { addEvent, addEventDelegate } from '../global/dom';\n\n$.fn.sortDomElements = (function () {\n\treturn function (comparator) {\n\t\treturn Array.prototype.sort.call(this, comparator).each(function () {\n\t\t\tthis.parentNode.appendChild(this);\n\t\t});\n\t};\n})();\n\nfunction checkCheckboxesAndShowApplyBtn($el) {\n\tvar selectedCheckbox = [];\n\tvar activeCheckbox = [];\n\t$.each($('.b-aside-xs .charactItems .form-check-input:checked, .categoryItems .form-check-input:checked'), function (i, item) {\n\t\tselectedCheckbox.push($(item).attr('data-itemid'));\n\t});\n\t\n\tvar url = new URL(location.href);\n\tvar urlParams = [...url.searchParams];\n\tfor (let param of urlParams) {\n\t\tlet value = param[1];\n\t\tvar ids = value.split(',').filter(e => e);\n\t\tactiveCheckbox = activeCheckbox.concat(ids);\n\t}\n\n\tvar difference = selectedCheckbox.length > activeCheckbox.length ? \n\t\tselectedCheckbox.diff(activeCheckbox) :\n\t\tactiveCheckbox.diff(selectedCheckbox);\n\n\tif (difference.length > 0) {\n\t\t$('.tum-applyFilters', $el.closest('.b-aside-options')).removeClass('d-none');\n\t\t$('.tum-applyFiltersAll').removeClass('d-none');\n\t} else {\n\t\t$('.tum-applyFilters', $el.closest('.b-aside-options')).addClass('d-none');\n\t\t$('.tum-applyFiltersAll').addClass('d-none');\n\t}\n}\n\nfunction _showAsideModal($el) {\n\tif ($(\".has-aside-modal.active\").length > 0) {\n\t\tfilter.hideAsideModal();\n\t}\n\n\tif ($('.tum-flt-gr-items input', $el.closest(\".has-aside-modal\")).length == $('.tum-flt-gr-items input:checked', $el.closest(\".has-aside-modal\")).length\n\t\t&& $('.tum-flt-gr-items input:checked', $el.closest(\".has-aside-modal\")).length != 0)\n\t\t$('.tum-flt-set-all', $el.closest(\".has-aside-modal\")).prop('checked', true);\n\t$el.closest(\".has-aside-modal\").addClass(\"active\");\n\tvar modal = $el.closest(\".has-aside-modal\");\n\n\tvar ch = $el.closest('.group-cont').find('.form-check-input:checked');\n\tvar ids = [];\n\t$.each(ch, function (i, el) {\n\t\tids.push($(el).attr('data-itemID'));\n\t});\n\n\tif ($el.closest('.b-aside').length > 0 && document.URL.indexOf('ch=') != -1 || document.URL.indexOf('tch=') != -1 ||\n\t\tdocument.URL.indexOf('fch=') != -1 || document.URL.indexOf('tfch=') != -1) {\n\t\t$(\".tum-filter-warning\", modal).removeClass(\"d-none\");\n\t}\n\n\tif ($('.b-aside-modal .rdm-dmv-categ').length > 0 && $('.b-aside-modal .rdm-dmv-categ[data-readmore]').length == 0) {\n\t\t$('.b-aside-modal .rdm-dmv-categ').readmore({\n\t\t\tmoreLink: '',\n\t\t\tlessLink: '',\n\t\t\tspeed: 400,\n\t\t\tcollapsedHeight: 15\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.b-aside-modal .rdm-dmv-categ', element => {\n\t\t\t$(element).readmore(\"toggle\");\n\t\t});\n\t}\n}\n\nvar filter = {\n\toptions: {\n\t\t$wrap: $(\".left-side-block\"),\n\t\tlastAppliedModel: {},\n\t\tfilterFieldsCount: 0,\n\t\tshowFilters: false,\n\t\tisMob: $(window).width() < 768,\n\t\tisCategory: location.href.toLowerCase().indexOf(\"/category\") > -1,\n\t\tviewMode: \"\"\n\t},\n\tinit: function (options) {\n\t\tthis.options = $.extend(true, {}, this.options, options);\n\n\t\tif (this.options.showFilters && this.options.isMob) this.options.showFilters = false;\n\n\t\tvar self = this;\n\n\t\t$(\"input[name=tuSort]:checked\").trigger(\"change\");\n\t\t$(\"input[name=firmsSort]:checked\").trigger(\"change\");\n\t\t$('.b-aside-modal_views .form-check:first-child .form-check-input:checked').trigger('change');\n\t\t\n\t\tthis.initViewMode();\n\n\t\t$(\".b-aside-modal .b-aside-modal__content .btn-all\").on(\"click\", function () {\n\t\t\tvar $this = $(this);\n\t\t\tsetTimeout(function () {\n\t\t\t\tif ($this.closest(\".b-aside-modal\").find(\".b-aside-modal__content input:checked\").length !=\n\t\t\t\t\t$this.closest(\".b-aside-modal\").find(\".b-aside-modal__content input\").length) {\n\t\t\t\t\t$this.closest(\".b-aside-modal\").find(\".b-aside-item__top__btns input:not(:disabled)\").prop(\"checked\", false);\n\t\t\t\t} else {\n\t\t\t\t\t$this.closest(\".b-aside-modal\").find(\".b-aside-item__top__btns input:not(:disabled)\").prop(\"checked\", true);\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t});\n\n\t\tself.updateCollapseSummaryVisible(true);\n\t\t\n\t\taddEventDelegate(document, 'click', '.tum-itemToggleFilter', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tvar params = location.search;\n\t\t\tvar url = '';\n\t\t\tvar isReload = false;\n\t\t\tvar switchSearchFilter = $(element).attr('data-filter-reverse-type');\n\n\t\t\tvar arr = location.pathname.slice(1).split('/');\n\t\t\tvar pageType = arr[0].split('-')[0];\n\t\t\tif (arr.length > 2) {\n\t\t\t\tpageType = arr[arr.length - 1];\n\t\t\t}\n\n\t\t\tif (params.length == 0) {\n\t\t\t\tif (switchSearchFilter == 'byctu') {\n\t\t\t\t\tsetCookie('switchSearchFilter_' + pageType, switchSearchFilter);\n\t\t\t\t} else if (switchSearchFilter == 'byproducts') {\n\t\t\t\t\tsetCookie('switchSearchFilter_' + pageType, '');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\turl = location.pathname + '?filter=' + $(element).attr('data-filter-reverse-type');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar filter = searchFilter.getURLParameter('filter');\n\t\t\t\tif (filter) {\n\t\t\t\t\tif (switchSearchFilter == 'byctu') {\n\t\t\t\t\t\tsetCookie('switchSearchFilter_' + pageType, switchSearchFilter);\n\t\t\t\t\t} else if (switchSearchFilter == 'byproducts') {\n\t\t\t\t\t\tsetCookie('switchSearchFilter_' + pageType, '');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearchFilter.setURLParameter('filter', $(element).attr('data-filter-reverse-type'));\n\t\t\t\t\t\tisReload = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (switchSearchFilter == 'byctu') {\n\t\t\t\t\t\tsetCookie('switchSearchFilter_' + pageType, switchSearchFilter);\n\t\t\t\t\t} else if (switchSearchFilter == 'byproducts') {\n\t\t\t\t\t\tsetCookie('switchSearchFilter_' + pageType, '');\n\t\t\t\t\t} else {\n\t\t\t\t\t\turl = location.pathname + params + '&filter=' + $(element).attr('data-filter-reverse-type');\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isReload) {\n\t\t\t\tlocation.reload();\n\t\t\t} else {\n\t\t\t\tif (url) {\n\t\t\t\t\tlocation.href = url;\n\t\t\t\t} else {\n\t\t\t\t\tlocation.reload();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-ctu-change-firm-type-btn', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tlocation.href = location.pathname + '?firm=' + $(element).attr('data-filter-reverse-type') + '&tab=' + $(element).attr('data-filter-tab-href');\n\t\t});\n\n\t\tthis.initCallbacks();\n\n\t\tif (this.options.isMob && !this.options.isCategory) {\n\t\t\tthis.toggleLeftSide();\n\t\t}\n\n\t\t$(\".tum-other-searcha-name-container\").append($(\".tum-other-search-name\").clone());\n\n\t\tthis.init2();\n\t\tthis.initUrlParams();\n\t},\n\tinitUrlParams: function(){\n\t\tif (getUrlParameter('showCtuModal') == '1') {\n\t\t\t$('.tum-mdc-search').removeClass('d-none').addClass('d-inline-block');\n\t\t\tif (!searchFilter.ctuGroupsEnabled()) {\n\t\t\t\tsearchFilter.toggleCtuGroups();\n\t\t\t}\n\n\t\t\tif (!tumGlobal.isMob())$('.b-aside-modal-cat').addClass('large');\n\t\t\tsearchFilter.toggleCtuModal();\n\t\t}\n\t},\n\thideAsideModal: function(modalClass) {\n\t\tlet $modal = $('.has-aside-modal.' + (modalClass || 'active'));\n\t\t$modal.closest(\".has-aside-modal\").removeClass(\"active\");\n\t\t$('.modalActive').removeClass('modalActive');\n\n\t\tsearchFilter.options.arr = [];\n\t\tsearchFilter.options.arr_alt = [];\n\n\t\t$('.search-by-name').val('');\n\t\t//$(\"body\").removeClass(\"modal-open\")\n\t\tvar cont = $modal.closest('.b-aside-modal');\n\n\t\t$.each($('.form-check-input:checked', cont), function (i, item) {\n\t\t\t$('.charactItems .form-check-input[data-itemid=\"' + $(item).attr('data-itemid') + '\"]', cont.closest('.b-aside-options')).prop('checked', true);\n\t\t});\n\n\t\tcheckCheckboxesAndShowApplyBtn(cont);\n\t},\n\t_showAsideModal: function($el) {\n\t\tif ($(\".has-aside-modal.active\").length > 0) {\n\t\t\tthis.hideAsideModal();\n\t\t}\n\t\n\t\tif ($('.tum-flt-gr-items input', $el.closest(\".has-aside-modal\")).length == $('.tum-flt-gr-items input:checked', $el.closest(\".has-aside-modal\")).length\n\t\t\t&& $('.tum-flt-gr-items input:checked', $el.closest(\".has-aside-modal\")).length != 0)\n\t\t\t$('.tum-flt-set-all', $el.closest(\".has-aside-modal\")).prop('checked', true);\n\t\t$el.closest(\".has-aside-modal\").addClass(\"active\");\n\t\tvar modal = $el.closest(\".has-aside-modal\");\n\t\n\t\tvar ch = $el.closest('.group-cont').find('.form-check-input:checked');\n\t\tvar ids = [];\n\t\t$.each(ch, function (i, el) {\n\t\t\tids.push($(el).attr('data-itemID'));\n\t\t});\n\t\n\t\tif ($el.closest('.b-aside').length > 0 && document.URL.indexOf('ch=') != -1 || document.URL.indexOf('tch=') != -1 ||\n\t\t\tdocument.URL.indexOf('fch=') != -1 || document.URL.indexOf('tfch=') != -1) {\n\t\t\t$(\".tum-filter-warning\", modal).removeClass(\"d-none\");\n\t\t}\n\t\n\t\tif ($('.b-aside-modal .rdm-dmv-categ').length > 0 && $('.b-aside-modal .rdm-dmv-categ[data-readmore]').length == 0) {\n\t\t\t$('.b-aside-modal .rdm-dmv-categ').readmore({\n\t\t\t\tmoreLink: '',\n\t\t\t\tlessLink: '',\n\t\t\t\tspeed: 400,\n\t\t\t\tcollapsedHeight: 15\n\t\t\t});\n\t\t\taddEventDelegate(document, 'click', '.b-aside-modal .rdm-dmv-categ', element => {\n\t\t\t\t$(element).readmore(\"toggle\");\n\t\t\t});\n\t\t}\n\t},\n\tshowAsideModal: function($el, event){\n\t\tif ($(\".has-aside-modal.active\").length > 0) {\n\t\t\tthis.hideAsideModal();\n\t\t}\n\n\t\tif (event && $(event.target).hasClass(\"fa-question-circle\")) return false;\n\t\tif ($el.closest(\".b-aside-item__top\").hasClass(\"metric-type\")) return false;\n\t\tvar items = {};\n\t\tvar isCatModal = false;\n\t\tif ($el.hasClass('btn-ch')) {\n\t\t\titems = $el.closest('.group-cont').find('.charact-item-name');\n\t\t} else if ($el.closest('.tum-flt-category-cont').length > 0) {\n\t\t\titems = $el.closest('.b-aside-options').find('.categoryItems .tum-filter-ctuName');\n\t\t\tisCatModal = true;\n\t\t} else {\n\t\t\titems = $el.closest('.b-aside-options').find('.charactItems .charact-item-name');\n\t\t}\n\t\t$el.closest('.group-cont').find('.b-aside-modal').addClass('modalActive');\n\t\t$('.form-check', $el.closest('.group-cont').find('.b-aside-modal.modalActive')).removeClass('hide');\n\t\tif (items) {\n\t\t\t$(items).each(function (i, el) {\n\t\t\t\tvar text = '';\n\t\t\t\tvar text_alt = '';\n\t\t\t\tif (isCatModal) {\n\t\t\t\t\ttext = $('.charact-item-name', $(el)).text().replace('•', '').trim().toLowerCase();\n\t\t\t\t\ttext_alt = $('.charact-item-name', $(el)).attr('data-alttext')?.trim().toLowerCase();\n\t\t\t\t} else {\n\t\t\t\t\ttext = $(el).text().trim().toLowerCase();\n\t\t\t\t\ttext_alt = $(el).attr('data-alttext')?.trim().toLowerCase();\n\t\t\t\t}\n\n\t\t\t\tsearchFilter.options.arr.push(text);\n\t\t\t\tif (text_alt) searchFilter.options.arr_alt.push(text_alt);\n\t\t\t});\n\t\t}\n\t\t_showAsideModal($el);\n\t},\n\texpandCtuModal: function(){\n\t\t$('.b-aside-modal-cat').toggleClass('large');\n\t},\n\t_showFiltersAsideModal: function(){\n\t\t_showAsideModal($('.tum-filter-wrap .btn-show'));\n\t\t$(\".b-aside-itemCats\").readmore({\n\t\t\tmoreLink: '',\n\t\t\tlessLink: '',\n\t\t\tspeed: 400,\n\t\t\tcollapsedHeight: 35\n\t\t});\n\t},\n\t_toggleFilters_desktop: function(){\n\t\tthis.toggleLeftSide();\n\t\ttumGlobal.highlight($('.b-aside-xs'), 3000);\n\t},\n\t_toggleFilters_mob: function(value){\n\t\tthis.hideAsideModal();\n\n\t\t$('.filterModal-container').toggleClass('active', value);\n\t\t$('.filterModal-container .b-aside-modal').toggleClass('modalActive', value);\n\t},\n\ttoggleFilters: function(){\n\t\t\n\t\tthis.hideAsideModal('ctuModal-container');\n\n\t\tif (tumGlobal.isMob()) {\n\t\t\tthis._toggleFilters_mob();\n\t\t} else {\n\t\t\tthis._toggleFilters_desktop();\n\t\t}\n\t},\n\t//всё, что запускается в init2, раньше валялось где попало вне компонента.\n\t//на прайсе (/firm/*/offers) не нужно инициализировать данный компонент в целом, но нужно запустить эту функцию\n\tinit2: function(){\n\t\tvar self = this;\n\n\t\taddEventDelegate(document, 'click', \".b-aside-modal .b-aside-item__top__btns .btn-all\", element => {\n\t\t\tvar isChecked = $(element).prop(\"checked\");\n\t\t\tself.setModalFilter($(element), isChecked);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-filter-clear-item', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tif ($(element).hasClass('tum-filter-clear-price')) {\n\t\t\t\tfilterCont.defaultFilter.priceClear = true;\n\t\t\t}\n\t\t\tself.clearFilterItem($(element));\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \"[title]\", element => {\n\t\t\t$(element).trigger('blur');\n\t\t})\n\t\n\t\t$(document).on(\"shown.bs.modal\", function () {\n\t\t\t$(\".ui-tooltip\").remove();\n\t\t});\n\t\n\t\t$('.dropdown-toggle').dropdown();\n\t\n\t\taddEvent(\".view-toggler\", \"click\", element => {\n\t\t\tvar type = element.dataset.type;\n\t\t\tfilter.setViewMode(type);\n\t\t});\n\t\n\t\taddEvent(\".b-cropped-text .load-more\", \"click\", (element, event) => {\n\t\t\tevent.preventDefault();\n\t\n\t\t\tvar wrap = element.closest(\".b-cropped-text\");\n\t\t\telement.remove();\n\t\t\t$(\".more\", wrap).show();\n\t\t});\n\t\t\n\t\t$('.b-filter-price__input').on('keyup', function () {\n\t\t\t$(this).val($(this).val().replace(/[^\\d.]/g, ''));\n\t\t});\n\t\n\t\taddEventDelegate(document, 'click', '.b-aside-item__title .font-weight-bold.text-uppercase.tum-light-grey', element => {\n\t\t\t$(element).closest(\"span.option\").find(\".b-aside-itemToggleView\")[0]?.click();\n\t\t});\n\t\n\t\taddEventDelegate(document, 'click', '.b-aside-itemToggleView, .b-aside-itemShowFilter', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tfilter.toggleLeftSide();\n\t\t});\n\t\n\t\taddEventDelegate(document, 'click', '.b-aside-itemShowCats', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tfilter.toggleLeftSide();\n\t\t\ttumGlobal.highlight($('.b-aside'), 2000);\n\t\t});\n\t\n\t\taddEventDelegate(document, 'click', '.b-aside-itemShowSearch', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tfilter.toggleLeftSide();\n\t\t\tif ($('.b-aside-search-min:visible').length > 0) {\n\t\t\t\t$('.b-aside-search-min:visible .b-aside-searchBtn')[0]?.click();\n\t\t\t}\n\n\t\t\ttumGlobal.highlight($('.tum-filter-search'), 2000);\n\t\t});\n\t\n\t\taddEventDelegate(document, 'click', '.b-aside-itemShowFilterBlock, .tu-show-filters', () => {\n\t\t\timport(\"../searchMenu.js\").then(({tum_searchMenu}) => {\n\t\t\t\ttum_searchMenu.toggleMenu('hide');\n\t\t\t\tself.toggleFilters();\n\t\t\t});\n\t\t});\n\t\n\t\taddEventDelegate(document, 'click', '.b-aside-itemToggleFilter', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$(element).toggleClass('fa-toggle-on fa-toggle-off');\n\t\t});\n\t\n\t\taddEventDelegate(document, 'click', '.tum-showCloseCats', (element, e) => {\n\t\t\te.preventDefault();\n\n\t\t\tself.toggleFilters();\n\n\t\t\tif (!tumGlobal.isMob()) {\n\t\t\t\t$('html, body').animate({\n\t\t\t\t\tscrollTop: $('.tum-filter-closeCats').offset().top - 150\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\t$('.tum-closeCats-mobShow')[0]?.click();\n\t\t\t\tsetTimeout(() => self.scrollMobFiltersToBottom(), 1000);\n\t\t\t}\n\t\t});\n\t\n\t\taddEventDelegate(document, 'click', '.tum-showHiddenGroups', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$(element).addClass('d-none');\n\t\t\t$('.tum-hideHiddenGroups, .group-cont-hidden').removeClass('d-none');\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-hideHiddenGroups', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$(element).addClass('d-none');\n\t\t\t$('.tum-showHiddenGroups').removeClass('d-none');\n\t\t\t$('.group-cont-hidden').addClass('d-none');\n\t\t});\n\n\t\t$(\".b-aside-itemCats\").readmore({\n\t\t\tmoreLink: '',\n\t\t\tlessLink: '',\n\t\t\tspeed: 400,\n\t\t\tcollapsedHeight: 35\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".search-showByName\", () => {\n\t\t\tlet elem = $(window).width() > 768 ? '.firm-content' : '.product-card';\n\t\t\ttumGlobal.highlight($(elem), 500);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".search-showByContacts, .search-showByAddress\", () => {\n\t\t\ttumGlobal.highlight($(\".tum-firms-alterFilterWrap\"), 500);\n\t\t});\n\n\t\t(function () {\n\t\n\t\t\tvar iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n\t\n\t\t\tif (iOS) {\n\t\t\t\t$('body').addClass('iOS-device');\n\t\t\t}\n\t\n\t\t\tvar scrollPosition;\n\t\n\t\t\t$('.modal').on('show.bs.modal', function () {\n\t\t\t\tscrollPosition = $(window).scrollTop();\n\t\t\t\t$('.iOS-device').css('top', -scrollPosition);\n\t\t\t});\n\t\n\t\t\t$('.modal').on('hide.bs.modal', function () {\n\t\t\t\t$('.iOS-device').removeClass('modal-open');\n\t\t\t\t$('.iOS-device').css('top', 0);\n\t\t\t\t$(document).scrollTop(scrollPosition);\n\t\t\t});\n\t\n\t\t})();\n\n\t\t/* ASIDE MODAL */\n\t\t$('.btn-ch, .group-name, .categoryItems span.disabled-detector, .tum-flt-category-cont button.text-primary').on('click', function (e) {\n\t\t\tself.showAsideModal($(this), e);\n\t\t});\n\n\t\taddEventDelegate(document, 'change', \".charactItems .form-check .form-check-input, .categoryItems .form-check-input, .b-aside-modal .form-check-input\", element => {\n\t\t\tvar dataItemID = $(element).attr(\"data-itemid\") || \"\";\n\t\t\tvar isCheck = $(element).prop(\"checked\");\n\t\t\t$(\"input[type='checkbox'][data-itemid='\" + dataItemID + \"']\").prop(\"checked\", isCheck);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.charactItems .form-check .form-check-input, .categoryItems .form-check-input', element => {\n\t\t\tcheckCheckboxesAndShowApplyBtn($(element));\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".tum-filter-wrap .b-aside-item__top\", element => {\n\t\t\tsearchFilter.options.arr = [];\n\t\t\tsearchFilter.options.arr_alt = [];\n\t\t\tif (!$(element).hasClass('in')) {\n\t\t\t\tvar items = $('.b-aside-modal__content .charact-item-name', $(element).closest('.card'));\n\t\t\t\t$(items).each(function (i, el) {\n\t\t\t\t\tvar node = $(el).contents().get(0);\n\t\t\t\t\tif (node) {\n\t\t\t\t\t\tsearchFilter.options.arr.push($(el).contents().get(0).nodeValue.trim().toLowerCase());\n\t\t\t\t\t\tvar alttext= $(el).attr('data-alttext')?.trim().toLowerCase();\n\t\t\t\t\t\tif (alttext) searchFilter.options.arr_alt.push(alttext);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.btn-show', element => {\n\t\t\t_showAsideModal($(element));\n\t\t\t$(\".b-aside-itemCats\").readmore({\n\t\t\t\tmoreLink: '',\n\t\t\t\tlessLink: '',\n\t\t\t\tspeed: 400,\n\t\t\t\tcollapsedHeight: 35\n\t\t\t});\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.mdl-close', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$(element).removeClass('modalActive');\n\t\t\tself.hideAsideModal();\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.hideAsideModal', () => {\n\t\t\tself.hideAsideModal();\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".b-aside-modal .btn-enter\", function () {\n\t\t\tself.hideAsideModal();\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-expandCtuModal', () => this.expandCtuModal());\n\t\t\n\t\taddEventDelegate(document, 'click', \".b-aside-modal .collapse-header\", (element, e) => {\n\t\t\tif ($(e.target).closest(\".selected-items\").length > 0) {\n\t\t\t\te.preventDefault();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\n\t\t\t$(element).toggleClass(\"in\");\n\t\t\tif ($(element).hasClass(\"in\")) {\n\t\t\t\t$(element).next(\".b-aside-modal__content\").slideDown();\n\t\t\n\t\t\t\tvar cardPosition = $('.tum-flt-aside-modal-title', $(element)).offset().top;\n\t\t\t\tvar wH = window.innerHeight;\n\t\t\t\tif (cardPosition >= (wH - 70)) {\n\t\t\t\t\tvar scrollVal = $('.mobile-fullsize .b-aside-modal__content').scrollTop() + 70;\n\t\t\n\t\t\t\t\t$('.mobile-fullsize .b-aside-modal__content').animate({\n\t\t\t\t\t\tscrollTop: scrollVal\n\t\t\t\t\t}, 'slow');\n\t\t\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$(element).next(\".b-aside-modal__content\").slideUp();\n\t\t\t}\n\t\t});\n\t\t\n\t\t$(\".selected-items .clear-value\").on(\"click\", function () {\n\t\t\tif ($(this).attr('data-slidername') == 'metric') {\n\t\t\t\tsearchFilter.resetMetric($(this));\n\t\t\t}\n\t\t\tif ($(this).attr('data-slidername') == 'price') {\n\t\t\t\tsearchFilter.resetPrice($(this));\n\t\t\t}\n\t\t\tif ($(this).attr('data-code') == 'datetime_open') {\n\t\t\t\tfilterCont.filter.datetimeOpen = '';\n\t\t\t\tfilterCont.filter.datetimeIsReset = true;\n\t\t\t\tsetCookie(\"isOpenNow_manual\", false);\n\t\t\t\t\n\t\t\t\t$('.tum-open-auto').prop('checked', false);\n\t\t\t\t$('.tum-open-manual').prop('checked', false);\n\t\t\t\t$('.tum-search-open-input').val('');\n\t\t\t}\n\t\t\tvar $wrap = $(this).closest(\"div\");\n\t\t\t$(\".value\", $wrap).text(\"\");\n\t\t\t$wrap.slideUp();\n\t\t\t$(this).closest(\".card\").find(\".form-check-input\").prop(\"checked\", false);\n\t\t\t$(this).closest(\".card\").find(\".form-check-input.tum-def-val\").prop(\"checked\", true);\n\t\t\n\t\t\t//чистим query для моб фильтра\n\t\t\tif ($(this).hasClass('tum-filter-clear-query-mob')) {\n\t\t\t\t$('.tum-filter-search-text').val('');\n\t\t\t\tfilterCont.defaultFilter.query = '';\n\t\t\t\tfilterCont.filter.query = '';\n\t\t\t}\n\t\t});\n\t\t\n\t\t$(\".b-aside-modal.mobile-fullsize\").on(\"change\", \".form-check-input\", function () {\n\t\t\tvar $card = $(this).closest(\".card\");\n\n\t\t\tif ($(this).closest('.datetime-wrap').length && $card.find(\".form-check-input:checked\").length == 2) {\n\t\t\t\tvar idName = $(this).parent().find('input').attr('id');\n\t\t\t\t$card.find(`.form-check-input:checked:not(#${idName})`).prop('checked', false);\n\t\t\t}\n\n\t\t\tvar values = $card.find(\".form-check-input:checked\").map(function () {\n\t\t\t\tvar txt = $(this).parent().find('.charact-item-name').text();//.split(' ')[0];\n\t\t\t\ttxt = getChStr(txt, filterCont.defaultFilter.cropChNameCount);\n\t\t\t\tvar inputTXT = '';\n\t\t\t\tif (txt) {\n\t\t\t\t\tinputTXT = txt;\n\t\t\t\t} else {\n\t\t\t\t\tvar $parent = $(this).parent();\n\t\t\t\t\tinputTXT = $parent.text().trim();\n\t\t\t\t\tif ($parent.find('input').attr('data-code') == 'auto') {\n\t\t\t\t\t\tinputTXT = 'Сейчас';\n\t\t\t\t\t}\n\t\t\t\t\telse if ($parent.find('input').attr('data-code') == 'manual') {\n\t\t\t\t\t\tvar date = $(this).closest('.datetime-wrap').find('.tum-open-date').val();\n\t\t\t\t\t\tvar time = $(this).closest('.datetime-wrap').find('.tum-open-time').val();\n\t\t\t\t\t\tif (date && time) {\n\t\t\t\t\t\t\tinputTXT = `${date} ${time}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn inputTXT;\n\t\t\t}).toArray();\n\t\t\n\t\t\tif (values.length > 0) {\n\t\t\t\t$(\".selected-items\", $card).slideDown()\n\t\t\t\tif (values.length > 2) {\n\t\t\t\t\t$(\".selected-items .value:first\", $card).text(values[0] + ', ' + values[1] + ' + ещё ' + (values.length - 2));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$(\".selected-items .value:first\", $card).text(values.join(\", \"));\n\t\t\t\t}\n\t\t\t\t$(\".selected-items .value\", $card).not(':first').remove();\n\t\t\t\t$(\".selected-items .clear-value\", $card).not(':first').remove();\n\t\t\t} else {\n\t\t\t\t$(\".selected-items\", $card).slideUp()\n\t\t\t}\n\t\t\n\t\t\tfunction getChStr(str, cropCount) {\n\t\t\t\tvar res = '';\n\t\t\t\tvar word = '';\n\t\t\t\tvar strCount = str ? str.trim().length : 0;\n\t\t\t\tif (strCount > cropCount) {\n\t\t\t\t\tvar nextChar = str.trim().substring(cropCount, cropCount + 1);\n\t\t\t\t\tif (nextChar == ' ') {\n\t\t\t\t\t\tword = str.trim().substring(0, cropCount);\n\t\t\t\t\t\tres = word + '..';\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tword = str.trim().substring(0, cropCount);\n\t\t\t\t\t\tres = word + '..';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tres = str;\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t}\n\t\t});\n\n\t\tlet asideModalClasses = [\n\t\t\t'.b-aside-modal', \n\t\t\t'.b-aside-modal-cat', \n\t\t\t'.tum-aside-showCategories', \n\t\t\t'.tu-show-cats', \n\t\t\t'.offers-showCtus', \n\t\t\t'.cat-more-info',\n\t\t\t'.btn-ch',\n\t\t\t'.tu-show-filters',\n\t\t\t'.tum-showCloseCats'\n\t\t];\n\n\t\ttumGlobal.onClickOutside($(asideModalClasses.join(', ')), () => searchFilter.toggleCtuModal(false));\n\t},\n\tscrollMobFiltersToBottom: function(){\n\t\tlet container = $('.b-aside-modal.mobile-fullsize .b-aside-modal__content');\n\t\tcontainer.scrollTop(container.prop('scrollHeight'));\n\t},\n\tinitCallbacks: function () {\n\t\taddEventDelegate(document, 'animationend', \".left-side-block\", () => {\n\t\t\tthis.options.showFilters = !this.options.showFilters;\n\t\t});\n\t},\n\tinitViewMode: function() {\n\t\tvar viewMode = getCookie(\"tu-viewMode\") || (this.options.isMob ? \"mini\" : \"grid\");\n\t\tlet el = $(`input[name=\"view\"][value=\"${viewMode}\"]`)[0];\n\n\t\tif (el) {\n\t\t\tel.click();\n\t\t\tel.dispatchEvent(new Event('change', { bubbles: true }));\n\t\t}\n\n\t\t$(\".view-toggler.active\").removeClass(\"active\");\n\t\t$(`.view-toggler[data-type=\"${viewMode}\"]`).addClass(\"active\");\n\n\t\tthis.options.viewMode = viewMode;\n\t},\n\tsetViewMode: function(mode) {\n\t\tsetCookie(\"tu-viewMode\", mode, 1/24*3);\n\t\tthis.updateViewModeIcon(mode);\n\t\tdocument.querySelector('.prod-cont').dataset.view = mode;\n\n\t\t$(\".view-toggler.active\").removeClass(\"active\");\n\t\t$(`.view-toggler[data-type=\"${mode}\"]`).addClass(\"active\");\n\t},\n\tupdateViewModeIcon: function(mode){\n\t\tvar $elem = $('.viewMode-select');\n\t\t\n\t\tlet icons = tumarket.searchToolbar.icons;\n\t\t$elem.removeClass(Object.values(icons).join(\" \"));\n\n\t\t$elem.addClass(icons[mode]);\n\t},\n\tupdateSortType: function(){\n\t\tlet sortCode = filterCont.filter.sort;\n\t\tlet firmSortCode = filterCont.filter.firmSort;\n\t\tlet defaultSortCode = tumarket.searchToolbar.defaultSort;\n\t\tlet defaultFirmSortCode = tumarket.searchToolbar.defaultFirmSort;\n\t\tlet sortTypes = tumarket.searchToolbar.productSortOptions;\n\t\tlet firmSortTypes = tumarket.searchToolbar.firmSortOptions;\n\n\t\tlet sortType = (!sortCode || sortCode == defaultSortCode) ? 'Сортировка' : sortTypes.find(e => e.code == sortCode).name;\n\t\tlet firmSortType = (!firmSortCode || firmSortCode == defaultFirmSortCode) ? 'Сортировка' : firmSortTypes.find(e => e.code == firmSortCode).name;\n\n\t\t$('.search-productsSort .name').html(sortType);\n\t\t$('.search-firmsSort .name').html(firmSortType);\n\t},\n\t_isFilterShown: function(){\n\t\treturn $('.left-side-block').hasClass('d-none');\n\t},\n\t_toggleFilter: function(){\n\t\t$(\".right-side-block\").toggleClass('col-lg-9 col-md-8');\n\n\t\t//if (!this.options.isMob) {\n\t\t$('.left-side-block').toggleClass('d-none');\n\t\t//}\n\n\t\t$(\".b-aside-itemShowFilterWrap\").toggleClass('d-none');\n\t\t$('.search-showFilters').toggleClass('d-md-block');\n\t},\n\ttoggleLeftSide: function () {\n\t\tvar self = this;\n\t\t\n\t\tif (!this.options.isMob) {\n\t\t\t$(\".left-side-block\").addClass('animated');\n\t\t}\n\n\t\t$(\".left-side-block\").toggleClass('fadeInLeft fadeOutLeft');\n\t\tif (this._isFilterShown()) {\n\t\t\tthis._toggleFilter();\n\t\t\tsetTimeout(function () {\n\t\t\t\tsearchFilter.map?.map?.container.fitToViewport()\n\t\t\t}, 500);\n\t\t} else {\n\t\t\tsetTimeout(function () {\n\t\t\t\tself._toggleFilter();\n\t\t\t\tself.options.showFilters = !self.options.showFilters;\n\t\t\t\tsearchFilter.map?.map?.container.fitToViewport()\n\t\t\t}, 500);\n\t\t}\n\t},\n\tupdateFilterSelectedValues: function () {\n\t\t$(\".b-aside-modal.mobile-fullsize .card\", this.options.$wrap).each(function () {\n\t\t\tvar $card = $(this);\n\t\t\tvar values = $card.find(\".form-check-input:checked\").map(function () {\n\t\t\t\treturn $(this).parent().text().trim();\n\t\t\t}).toArray();\n\n\t\t\tif (values.length > 0) {\n\t\t\t\t$(\".selected-items\", $card).slideDown();\n\t\t\t\t$(\".selected-items .value\", $card).text(values.join(\", \"));\n\t\t\t} else {\n\t\t\t\t$(\".selected-items\", $card).slideUp();\n\t\t\t}\n\t\t});\n\t},\n\tgetModel: function ($prioritySource) {\n\t\tvar res = {};\n\n\t\tfunction getData($el, includeEmpty) {\n\t\t\tvar res = {};\n\t\t\t$(\"input[name]\", $el).each(function () {\n\t\t\t\tvar type = $(this).attr(\"type\");\n\t\t\t\tvar name = $(this).attr(\"name\");\n\t\t\t\tvar value = \"\";\n\n\t\t\t\tif (name.length == 0)\n\t\t\t\t\treturn true;\n\n\t\t\t\tvar isArray = type == \"checkbox\" && $(\"input[name='\" + name + \"']\", $el).length > 0;\n\n\t\t\t\tif (type == 'checkbox' || type == 'radio') {\n\t\t\t\t\tif ($(this).prop(\"checked\")) {\n\t\t\t\t\t\tvalue = $(this).val();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (value.length == 0) {\n\t\t\t\t\tif (includeEmpty && !(name in res)) {\n\t\t\t\t\t\tres[name] = isArray ? [] : \"\";\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (isArray) {\n\t\t\t\t\tif (name in res) {\n\t\t\t\t\t\tif (res[name].indexOf(value) == -1)\n\t\t\t\t\t\t\tres[name].push(value);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tres[name] = [value];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tres[name] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn res;\n\t\t}\n\n\t\tres = getData(this.options.$wrap);\n\n\t\t// Override general data using priority source\n\t\tif ($prioritySource && $prioritySource.length > 0) {\n\t\t\tvar priorityData = getData($prioritySource, true);\n\t\t\tfor (var n in priorityData) {\n\t\t\t\tres[n] = priorityData[n];\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t},\n\tapplyModel: function (model) {\n\t\tvar $wrap = this.options.$wrap;\n\t\t//this.resetAllFilter();\n\t\tvar isMob = window.innerWidth < 768;\n\t\tif (isMob) {\n\t\t\t$(\".categoryItems input\").prop('checked', false);\n\t\t}\n\n\t\tfor (let item in model) {\n\t\t\tvar $input = $(\"input[name='\" + item + \"']\", $wrap);\n\t\t\tif ($input.length == 0)\n\t\t\t\tcontinue;\n\n\t\t\tvar type = $input.first().attr(\"type\");\n\t\t\tvar value = model[item];\n\t\t\tvar isArray = typeof (value) === \"object\";\n\n\t\t\tif (type == \"checkbox\" || type == \"radio\") {\n\t\t\t\tif (type == \"checkbox\" && isArray) {\n\t\t\t\t\t$.each(value, function (i, item) {\n\t\t\t\t\t\t$input.filter(function () {\n\t\t\t\t\t\t\treturn $(this).val() == item;\n\t\t\t\t\t\t}).prop(\"checked\", true);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if (type == \"radio\") {\n\t\t\t\t\t$input.filter(function () {\n\t\t\t\t\t\treturn $(this).val() == value;\n\t\t\t\t\t}).prop(\"checked\", true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.updateFilterFieldsCount(model);\n\t\tthis.options.lastAppliedModel = model;\n\t},\n\tresetMobileFilter: function () {\n\t\t$(\".b-aside-modal.mobile-fullsize input\").prop(\"checked\", false);\n\t\tthis.updateFilterSelectedValues();\n\t},\n\tresetAllFilter: function () {\n\t\t$(\"input\", this.options.$wrap).prop(\"checked\", false);\n\t\tvar isMob = window.innerWidth < 768;\n\t\tif (isMob) {\n\t\t\tvar t = $('.selected-items:visible');\n\t\t\t$.each(t, function (i, el) {\n\t\t\t\tif ($('i+div.value', el).text().length > 0) {\n\t\t\t\t\t$('.clear-value', el)[0]?.click();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t$.each($('.f-ch-slider:visible'), function (i, el) {\n\t\t\t\tsearchFilter.resetMetric($(el));\n\t\t\t});\n\t\t\tsearchFilter.resetPrice($('.tum-filter-clear-item-cont[data-itemid=0]'));\n\t\t\tsearchFilter.applyFilters();\n\t\t}\n\t},\n\tresetModalFilter: function ($el) {\n\t\tthis.setModalFilter($el, false);\n\t},\n\tsetModalFilter: function ($el, val) {\n\t\t$el = $el.closest(\".b-aside-modal\");\n\t\t$(\".b-aside-modal__content input:not(:disabled)\", $el).each(function () {\n\t\t\tvar dataItemID = $(this).attr(\"data-itemid\");\n\t\t\t$(\"input[data-itemid='\" + dataItemID + \"']\").prop(\"checked\", val);\n\t\t});\n\t},\n\tupdateFilterFieldsCount: function (model) {\n\t\tvar filterFieldsCount = 0;\n\t\tfor (let item in model) {\n\t\t\tvar index = item.indexOf(\"sort\");\n\t\t\tif (index == -1 || index > 0) {\n\t\t\t\tif (typeof (model[item]) == 'object') {\n\t\t\t\t\tfilterFieldsCount += model[item].length;\n\t\t\t\t} else {\n\t\t\t\t\tfilterFieldsCount++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.options.filterFieldsCount = filterFieldsCount;\n\t\t//$(\".filter-fields-count\", this.options.$wrap).text(filterFieldsCount);\n\t},\n\tupdateCollapseSummaryVisible: function (isFirst) {\n\t\tvar elm = document.getElementById('collapseSummary');\n\t\tif (!elm) return false;\n\t\tvar $elm = $('.collapseSummaryClass');\n\n\t\tvar maxCollapseHeight = Math.ceil(parseFloat($elm.attr('data-height')));\n\t\tvar $elmLink = $('.collapseSummaryLink');\n\t\tvar sH = Math.ceil(parseFloat(elm.scrollHeight));\n\t\tvar iH = Math.ceil(parseFloat($('#collapseSummary').innerHeight()));\n\t\tvar isNoCollapse = !$elm.hasClass('collapse');\n\n\t\tif ((sH > iH + 1) && (isFirst || !isNoCollapse)) {// Contains hidden content!\n\t\t\t$elmLink.removeClass('d-none');\n\t\t}\n\t\telse if ((isNoCollapse) || (sH == maxCollapseHeight) || sH == 0) {\n\t\t\t$elmLink.addClass('d-none');\n\t\t}\n\t},\n\t/*\n\t\tclearAllFilter: function () {\n\t\n\t\t\tfilter.resetAllFilter();//sidebar\t\t\n\t\t\tvar model = filter.getModel();\n\t\t\tfilter.applyModel(model);\n\t\n\t\t\t$('.tum-filter-clear-item-cont').remove();\n\t\t\t//$('.tum-filter-clear-all-cont').addClass('d-none');\n\t\t\t$('.filter-fields-count').text(0);\n\t\t\tfilter.updateCollapseSummaryVisible(false);\n\t\t},\n\t*/\n\tclearFilterItem: function (elm) {\n\t\tvar cont = elm.closest('.collapseSummaryClass');\n\t\tif (elm.hasClass('tum-filter-clear-ctu')) {\n\t\t\t$('.tum-filter-cats input[type=\"checkbox\"]').prop(\"checked\", false);\n\t\t}\n\t\tif (elm.attr('data-itemid') == 0) {\n\t\t\tsearchFilter.resetPrice($(elm));\n\t\t}\n\t\tif (elm.attr('data-slide') == 'metric') {\n\t\t\tsearchFilter.resetMetric($(elm));\n\t\t}\n\t\tif (elm.attr('data-itemid') == 'isAvailable') {\n\t\t\t$(searchFilter.elements.search + ' .isAvailable').prop('checked', false);\n\t\t\t$(searchFilter.elements.search + ' .isAvailable').trigger('change');\n\t\t}\n\t\tif (elm.attr('data-itemid') == 'madeInOurs') {\n\t\t\t$(searchFilter.elements.search + ' .madeInOurs').prop('checked', false);\n\t\t\t$(searchFilter.elements.search + ' .madeInOurs').trigger('change');\n\t\t}\n\t\t$('.tum-filter-clear-item-cont[data-itemid=\"' + elm.attr('data-itemid') + '\"]').remove();\n\n\t\tif (elm.hasClass('tum-filter-statusesCTU')) {\n\t\t\t$('.tum-filter-statuses .b-aside-modal .tum-flt-gr-items .form-check-input:checked').prop('checked', false);\n\t\t\t$('.tum-filter-statuses .selected-filter-fields-count').removeClass('font-weight-bold tum-dark-red');\n\t\t\t$('.tum-filter-statuses .selected-filter-fields-count .filter-fields-count').text('0');\n\t\t\t$(\".tum-filter-statuses .b-aside-modal .btn-set-filter\")[0]?.click();\n\t\t} else {\n\t\t\tvar cnt = cont.find('.tum-filter-clear-item-cont').length;\n\t\t\tif (cnt == 0) {\n\t\t\t\t$('.tum-filter-clear-all-cont').addClass('d-none');\n\t\t\t}\n\t\t\tvar fltrCount = cnt > 0 ? cnt : \"\";\n\t\t\t$('.filter-fields-count').html(fltrCount);\n\t\t\tif (cnt > 0 && !$('.filter-fields-count').hasClass(\"tum-bg-dark-red\")) {\n\t\t\t\t$('.filter-fields-count').addClass(\"tum-bg-dark-red\");\n\t\t\t} else if (cnt == 0) {\n\t\t\t\t$('.filter-fields-count').removeClass(\"tum-bg-dark-red\");\n\t\t\t}\n\t\t\t$('.form-check-input[data-itemid=\"' + elm.attr('data-itemid') + '\"]').prop('checked', false);\n\t\t}\n\n\t\tfilter.updateCollapseSummaryVisible(false);\n\t\tsearchFilter.applyFilters();\n\t},\n\tclearFilterQuery: function () {\n\t\tlocation.href = location.pathname;\n\t}\n};\n\nexport default filter;","/* global tumarket */\n\nimport { addEventDelegate } from \"./dom\";\nimport { distinct, toBool } from \"./util\";\n\n/**\n * Gets data from a container with a bunch of input fields\n * @param {Element} form\n * @param {boolean} changedOnly\n */\nfunction getFormData(form, changedOnly) {\n if (!form) return null;\n let result = {};\n\n for (let element of form.querySelectorAll('input, select, textarea, [data-tum-toggle]')) {\n if (element.matches('[data-select], [data-form-ignore]')) continue;\n\n let name = element.getAttribute('name');\n\n if (!name) continue;\n\n if (element.matches('[data-tum-toggle]')) {\n let name = element.dataset.name;\n if (name) {\n result[name] = element.matches('.fa-toggle-on');\n }\n\n continue;\n }\n\n if (element.matches('input[type=\"checkbox\"]')) {\n if (!element.value) {\n result[name] = element.checked;\n } else if (element.checked) {\n if (result[name]) result[name].push(element.value);\n else result[name] = [element.value];\n }\n \n continue;\n }\n\n if (element.matches('input[type=\"radio\"]')) {\n if (!element.checked) continue;\n\n result[name] = element.value;\n continue;\n }\n\n if (element.matches('input[type=\"datetime-local\"]')) {\n if (changedOnly && !element.matches('[data-form-selected]')) continue;\n result[name] = element.value.replace('T', ' ') || element.dataset.default || null;\n continue;\n }\n\n if (changedOnly && !element.matches('[data-form-selected]')) continue;\n\n if (element.matches('[data-range-from]') \n && element.closest('[data-form-range-ignore-limit]')\n && element.min == element.value\n ) {\n result[`__${name}_limit`] = true;\n }\n\n if (element.matches('[data-range-to]') \n && element.closest('[data-form-range-ignore-limit]')\n && element.max == element.value\n ) {\n result[`__${name}_limit`] = true;\n }\n\n let hasValueAttr = element.matches('[data-value]');\n\n let value = hasValueAttr ? (element.dataset.value || element.dataset.default || element.value || null) :\n (element.value || element.dataset.default || null);\n\n result[name] = value;\n }\n\n return result;\n}\n\n/**\n * Gets data from a container with a bunch of input fields\n * @param {object} data \n */\nfunction submitFormData(data) {\n let url = new URL(location.href);\n url.search = \"\";\n for (let item in data) {\n if (item.startsWith('__')) continue;\n\n if (Array.isArray(data[item])) {\n if (data[item].length) url.searchParams.set(item, distinct(data[item]).join(','));\n continue;\n }\n\n if (data[item]) url.searchParams.set(item, data[item]);\n }\n\n location.href = url.toString();\n}\n\n/**\n * \n * @param {string} source \n * @param {string} target \n */\nfunction patchForm(source, target) {\n let sourceForm = document.getElementById(source);\n let targetForm = document.getElementById(target);\n let sourceData = getFormData(sourceForm);\n let targetData = getFormData(targetForm);\n let mergedData = Object.assign({}, sourceData, targetData);\n\n let targetFields = targetForm.querySelectorAll('input, textarea');\n for (let field of targetFields) {\n fillFormField(field, mergedData);\n }\n}\n\n/**\n * \n * @param {HTMLElement} field \n * @param {object} data \n * @returns \n */\nfunction fillFormField(field, data){\n if (field.matches('input[type=\"checkbox\"]')) {\n if (Array.isArray(data[field.name])) {\n let fieldValue = data[field.name].some(e => e.toString() == field.value);\n field.checked = fieldValue;\n return;\n } else {\n let fieldValue = toBool(data[field.name]) || false;\n field.checked = fieldValue;\n return;\n }\n }\n\n if (field.matches('input[type=\"radio\"]')) {\n let fieldValue = data[field.name] == field.value || false; \n field.checked = fieldValue;\n return;\n }\n\n if (field.matches('input[type=\"datetime-local\"]')) {\n let fieldValue = data[field.name]?.replace(' ', 'T') || '';\n field.value = fieldValue;\n return;\n }\n\n //берем .getAttribute('value') вместо .value, т.к. у type=\"color\" почему-то .value сам не заполняется\n if (data[field.name] === 0) data[field.name] = '0';\n let value = data[field.name] || field.value || field.getAttribute('value') || '';\n field.value = value;\n}\n\nfunction initFormUtils(){\n addEventDelegate(document, 'click', '[data-submit-form]', element => {\n let forms = element.dataset.target ? [...document.querySelectorAll(element.dataset.target)] : [element.closest('form')];\n let data = {};\n for (let form of forms) {\n Object.assign(data, getFormData(form));\n }\n\n let callback = element.dataset.callback;\n if (callback) data = tumarket.callbacks[callback];\n\n submitFormData(data);\n });\n}\n\nwindow.getFormData = getFormData;\n\nexport { getFormData, submitFormData, patchForm, initFormUtils };\n","import * as $ from \"jquery\";\nimport \"readmore-js\";\nimport { ajaxSend } from \"../global/fetch\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"../global/templates\";\nimport { youtubePreview } from \"../youtubePreview.js\";\nimport { initTuPopover } from \"../global/popover\";\nimport tu_slider from \"../slider.js\";\nimport { showAlert } from \"../global/dialog\";\n\nimport \"../../css/modules/previews/previewItem.css\";\n\nvar previews = {\n\toptions: {\n\t\tcontainer: '', // селектор элемента с классом collapse. Не может быть \"#previewsContainer\", потому что такой занят в шаблоне с обзорами\n\t\tdisabled: false,\n\t\turl: {\n\t\t\tgetPreviews: '/preview/getPreviewsEmbed'\n\t\t},\n\t\tpageCode: null,\n\t\tlimit: null\n\t},\n\tinit: function(options) {\n\t\tthis.options = $.extend(this.options, options);\n\n\t\tthis.initCallbacks();\n\n\t\t//сразу загружаем обзоры, если collapse развернут\n\t\tif (this.options.container) {\n\t\t\tvar $collapse = $(this.options.container);\n\t\t\tif ($collapse.hasClass(\"show\")){\n\t\t\t\tvar params = {\n\t\t\t\t\tproductID: $collapse.attr(\"data-productid\"),\n\t\t\t\t\tfirmID: $collapse.attr(\"data-firmid\"),\n\t\t\t\t\tpreviewIDs: $collapse.attr(\"data-previewids\"),\n\t\t\t\t\tpageCode: $collapse.attr(\"data-pagecode\"),\n\t\t\t\t\tlimit: $collapse.attr(\"data-limit\")\n\t\t\t\t};\n\n\t\t\t\tthis.getPreviews(params);\n\t\t\t}\n\t\t}\n\n\t\tyoutubePreview.init();\n\t},\n\tinitCallbacks: function() {\n\t\tlet self = this;\n\n\t\tif (this.options.container) {\n\t\t\t$(document).on('show.bs.collapse', this.options.container, function() {\n\t\t\t\tvar params = {\n\t\t\t\t\tproductID: $(this).attr(\"data-productid\"),\n\t\t\t\t\tfirmID: $(this).attr(\"data-firmid\"),\n\t\t\t\t\tpreviewIDs: $(this).attr(\"data-previewids\"),\n\t\t\t\t\tpageCode: $(this).attr(\"data-pagecode\"),\n\t\t\t\t\tlimit: $(this).attr(\"data-limit\")\n\t\t\t\t};\n\n\t\t\t\tself.getPreviews(params);\n\t\t\t});\n\t\t}\n\t},\n\t_getPreviews: function(params) { // { productID: 0, firmID: 0, previewIDs: \"\" }\n\t\tif (this.options.disabled) return;\n\n\t\tvar cont = document.querySelector(\"#previewsContainer\");\n\n\t\tif (cont.innerHTML) return;\n\n\t\tajaxSend({ url: this.options.url.getPreviews, data: params }).then(data => {\n\t\t\tif (data.result) {\n\t\t\t\tvar tmpl = getPrecompiledTemplate('previews');\n\t\t\t\tlet _data = JSON.parse(data.JsonData);\n\t\t\t\t_data.previews = data.items;\n\t\t\t\t_data.needsHeader = cont.dataset.needsHeader == '';\n\t\t\t\tvar htmlOut = tmpl(_data);\n\n\t\t\t\tcont.innerHTML = htmlOut;\n\n\t\t\t\tinitTuPopover($(cont));\n\t\t\t\t//youtubePreview.initPreviews(cont);\n\t\t\t\ttu_slider.create({\n\t\t\t\t\tcontainer: document.querySelector('[data-previews-slider]')\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tshowAlert(\"Ошибка загрузки обзоров\", { type: \"danger\" });\n\t\t\t}\n\t\t});\n\t},\n\tgetPreviews: function(params){\n loadPrecompiledTemplates(['previews']).then(() => this._getPreviews(params));\n }\n};\n\nexport default previews;","import { ajaxSend } from \"../global/fetch\";\nimport tumGlobal from \"../global.js\";\nimport tumCommon from \"../common.js\";\nimport { isCtuIgnoredAdulthood, showAdultWarning } from \"../product/restrictAdult\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"../global/templates\";\nimport { initTuPopover } from \"../global/popover\";\nimport { toggleClass } from \"../global/dom\";\nimport { addEventDelegate, setHtml } from \"../global/dom\";\nimport { initIntersectionObserver } from \"../intersectionObserver\";\n\n/**\n * @typedef {object} ItemListState\n * @property {number} productsPage_up номер первой страницы из показанных\n * @property {number} productsPage номер последней страницы из показанных\n * @property {number} productsPageSize\n * @property {number} totalPages\n * @property {number} totalProducts\n * @property {object[]} products\n * @property {object[]} productsSecondary\n * @property {string} viewMode\n * @property {boolean} restrictAdult\n * @property {number} minItemsLeftToShowBanner\n */\n\n/**\n * @typedef {object} ItemListOptions\n * @property {string} url\n * @property {string} container\n * @property {(data: object) => object} dataMapperCallback позволяет получить данные из произвольного источника и привести их к нужному виду\n * @property {(state: ItemListState, data: object, prepend: boolean) => void} dataUpdateCallback выполняется после отображения результатов\n * @property {(state: ItemListState, prepend: boolean) => object} getUrlParamsCallback позволяет задать кастомные параметры для источника данных\n * @property {string} viewMode поддержка нескольких способов вывода\n * @property {boolean} renderOnInit если false, то компонент используется только при пагинации, а до нее показывается просто тот html, который был при загрузке страницы\n * @property {object} additionalData\n */\n\n/**\n * @typedef {object} ItemList\n * @property {ItemListOptions} options\n * @property {ItemListState} state\n * @property {HTMLElement} container\n * @property {HandlebarsTemplateDelegate} template\n * @property {(options: ItemListOptions) => void} init\n * @property {() => void} truncate если страница не последняя и на последней строке вывода осталось пустое место, то она скрывается и переносится на следующую страницу\n */\n\n/** @type {ItemList} */\nvar productsList = {\n\toptions: {\n\t\turl: '',\n\t\tcontainer: '',\n\t\tdataMapperCallback: null,\n\t\tdataUpdateCallback: null,\n\t\tgetUrlParamsCallback: null,\n\t\tviewMode: null,\n\t\trenderOnInit: false,\n\t\tadditionalData: {}\n\t},\n\tstate: {\n\t\tproductsPage_up: 1,\n\t\tproductsPage: 1,\n\t\tproductsPageSize: 0,\n\t\ttotalPages: 0,\n\t\ttotalProducts: 0,\n\t\tproducts: [],\n\t\tproductsSecondary: [],\n\t\tloadedPages: [],\n\t\tproductsViewMode: 'mini',\n\t\trestrictAdult: true,\n\t\tminProductsLeftToShowBanner: 0,\n\t\tadditional_items: []\n\t},\n\tcontainer: null,\n\ttemplate: null,\n\tinit: function (options) {\n\t\tObject.assign(this.options, options);\n\t\tthis.container = document.querySelector(this.options.container);\n\t\tif (!this.container) return;\n\n\t\tObject.assign(this.state, this.options);\n\t\tthis.state.productsViewMode = this.options.viewMode || (tumGlobal.isMob() ? 'mini' : 'grid');\n\n\t\tthis.initEvents();\n\n\t\treturn this.getProductsList()\n\t\t.then(() => {\n\t\t\tif (this.options.renderOnInit) this.renderProductsList();\n\t\t\tthis.truncate();\n\t\t});\n\t},\n\tinitEvents: function () {\n\t\taddEventDelegate(this.container, 'click', '.products-list-next', () => {\n\t\t\tthis.state.productsPage += 1;\n\t\t\tthis.getProductsList()\n\t\t\t.then(() => {\n\t\t\t\tthis.renderProductsList();\n\t\t\t});\n\t\t});\n\n\t\taddEventDelegate(this.container, 'click', '.products-list-prev', () => {\n\t\t\tthis.state.productsPage_up -= 1;\n\t\t\tthis.getProductsList(true)\n\t\t\t.then(() => {\n\t\t\t\tthis.renderProductsList();\n\t\t\t});\n\t\t});\n\t},\n\t_updateProductsList: function (prepend, data) {\n\t\tif (this.options.dataMapperCallback && !data.noMap) data = this.options.dataMapperCallback(data);\n\n\t\tthis.state.productsPageSize = this.state.productsPageSize || data.PageSize || 0;\n\t\tthis.state.totalProducts = this.state.totalProducts || data.Total || 0;\n\t\tthis.state.restrictAdult = this.state.restrictAdult || data.RestrictAdult || true;\n\n\t\tif (prepend) {\n\t\t\tthis.state.products = data.Products.concat(this.state.products);\n\t\t\tthis.state.productsSecondary = data.ProductsSecondary?.concat(this.state.productsSecondary) || [];\n\t\t}\n\t\telse {\n\t\t\tif (this.bannerRequired()) {\n\t\t\t\tlet banner = this.state.banners.find(e => e.TypeID == -1);\n\t\t\t\tif (banner) {\n\t\t\t\t\tbanner.isBanner = true;\n\t\t\t\t\tif (data.Products.length) {\n\t\t\t\t\t\tdata.Products = [banner].concat(data.Products);\n\t\t\t\t\t}\n\t\t\t\t\telse if (data.ProductsSecondary.length) {\n\t\t\t\t\t\tdata.ProductsSecondary = [banner].concat(data.ProductsSecondary);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.state.products = this.state.products.concat(data.Products);\n\n\t\t\tif (data.ProductsSecondary)\n\t\t\tthis.state.productsSecondary = this.state.productsSecondary?.concat(data.ProductsSecondary) || [];\n\t\t}\n\n\t\tthis.state.totalPages = this.state.productsPageSize ? Math.ceil(this.state.totalProducts / this.state.productsPageSize) : 0;\n\n\t\tif (this.options.dataUpdateCallback) this.options.dataUpdateCallback(this.state, data, prepend);\n\t},\n\tgetProductsList: function (prepend) {\n\t\tlet self = this;\n\n\t\tif (this.state.productsPage == this.state.productsPage_up && (this.state.products.length || this.state.productsSecondary.length)) {\n\t\t\tthis._updateProductsList(prepend, {\n\t\t\t\tProducts: [],\n\t\t\t\tProductsSecondary: [],\n\t\t\t\tnoMap: true\n\t\t\t});\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tif (!this.options.url) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tlet params = {};\n\t\tif (this.options.getUrlParamsCallback) params = this.options.getUrlParamsCallback(this.state, prepend);\n\t\telse params = { page: this.state.productsPage };\n\n\t\treturn new Promise(resolve => {\n\t\t\tajaxSend({ url: this.options.url, data: params }).then(data => {\n\t\t\t\tself._updateProductsList(prepend, data);\n\t\t\t\tresolve(data);\n\t\t\t});\n\t\t});\n\t},\n\trenderProductsList: function () {\n\t\treturn loadPrecompiledTemplates(['products-list'])\n\t\t.then(() => {\n\t\t\tthis.template = this.template || getPrecompiledTemplate('products-list');\n\n\t\t\tlet products = this.state.products.concat(this.state.productsSecondary);\n\n\t\t\tlet model = {\n\t\t\t\tfilter: {\n\t\t\t\t\tpage: this.state.productsPage,\n\t\t\t\t\tpage_up: this.state.productsPage_up\n\t\t\t\t},\n\t\t\t\tProductItems: this.state.products,\n\t\t\t\tProductItemsSecondary: this.state.productsSecondary,\n\t\t\t\tViewMode: this.state.productsViewMode,\n\t\t\t\tRestrictAdult: this.state.restrictAdult,\n\t\t\t\tShowProductsPaging: this.state.productsPage < this.state.totalPages || (products.length && products.length < this.state.totalProducts),\n\t\t\t\tBanners: this.state.banners,\n\t\t\t\tCtuCloud: this.state.ctuCloud,\n\t\t\t\tShowSoftMatch: this.state.productsSecondary.length,\n\t\t\t\tOnlyHasSecondaryProducts: !this.state.products.length && this.state.productsSecondary.length,\n\t\t\t\tadditional_items: this.state.additional_items\n\t\t\t};\n\n\t\t\tObject.assign(model, this.options.additionalData);\n\n\t\t\tsetHtml(this.container, this.template(model));\n\t\t\tinitTuPopover(this.container);\n\t\t\ttumCommon.initCtuCloud();\n\n\t\t\tshowAdultWarning(false, isCtuIgnoredAdulthood());\n\t\t\tthis.truncate();\n\t\t\tinitIntersectionObserver();\n\t\t});\n\t},\n\tproductsLeft: function(){\n\t\tlet result = this.state.totalProducts - (this.state.products?.length || 0) - (this.state.productsSecondary?.length || 0);\n\t\treturn Math.max(result, 0);\n\t},\n\tbannerRequired: function(){\n\t\treturn !!(this.state.productsPage > this.state.productsPage_up &&\n\t\t\tthis.state.minProductsLeftToShowBanner && \n\t\t\tthis.productsLeft() > this.state.minProductsLeftToShowBanner &&\n\t\t\tthis.state.banners?.length);\n\t},\n\ttruncate: function(){\n\t\tif (!this.productsLeft()) return;\n\n\t\tlet container = this.container.querySelector('.prod-cont');\n\t\tif (!container) return;\n\n\t\tlet itemWidth = container.firstElementChild.offsetWidth - 1;\n\t\tlet containerWidth = container.offsetWidth;\n\t\tlet rowSize = Math.floor(containerWidth / itemWidth);\n\t\tlet additionalItemsLength = this.state.additional_items?.filter(e => e.index < this.state.products.length).length || 0;\n\t\tlet tail = (this.state.products.length + additionalItemsLength + this.state.productsSecondary.length + (this.state.productsSecondary.length ? 1 : 0)) % rowSize;\n\n\t\tif (tail) toggleClass([...container.children].slice(-tail), 'd-none tail', true);\n\t}\n};\n\nwindow.productsList = productsList;\nexport default productsList;"],"names":["searchFilter","options","arr","arr_alt","askForCoordinates","coordinates","radius","elements","search","searchMob","searchOpen","resetPrice","el","attr","isMob","window","innerWidth","minPrice","maxPrice","val","trigger","resetMetric","closest","hasClass","sliders","find","i","elm","setSliderTrigger","sliderID","cont","minInput","maxInput","setFilterPriceAndMetrics","slider","removeClass","this","changeOfferResetFilter","filterItems","priceExist","isExist","idx","metricName","txt","mName","g","minDef","parseFloat","maxDef","valMin","valMax","trim","length","html","values","spl","text","split","slideDown","htmlOut","renderFilterSortViewBtn","id","catid","name","append","filterCount","count","parseInt","fltrCount","addClass","applyFilters","updateCollapseSummaryVisible","setFilterAvailable","element","elemName","searchElement","filteCount","prop","remove","initCallbacks","self","document","toggleClass","filter","sort","firmSort","on","toggleCtuModal","isAuto","isManual","datetime","getDateTimeFilter","date","time","e","preventDefault","isSearch","location","pathname","toLowerCase","indexOf","url","URL","href","toString","getFilter","page","isPrevItems","setURLParameter","firmPage","pageDirection","activeTab","searchProducts","tab","setTimeout","animate","scrollTop","offset","top","tabname","param","getURLParameter","replace","history","pushState","substring","showMoreCharacteristics","then","tum_searchMenu","toggleMenu","initSliders","priceFrom","defaultFilter","minPriceFrom","toFixed","priceTo","maxPriceTo","min","max","range","step","stop","event","ui","value","value1","slide","value2","$el","siMultiply","minVal","Math","round","maxVal","harID","elem","curMinVal","$slider","curMaxVal","charId","initOpenNowFilter","updateDatetimePlaceholder","isDropdownMenu","$wrap","removeAttr","querySelector","addEventListener","container","checked","filled","querySelectorAll","every","type","stopPropagation","datetimeOpen","datetimeIsReset","init","initFilterUI","tooltip","placement","boundary","initCallbacksForQuery","initGeoSearch","initSearchToolbar","syncCtuModal","ignoreCheck","initStickyFilter","initUrlParams","openMapSettings","_toggleMap","$btn","forEach","query","updateBrowserHistory","reload","click","which","searchItemsByQuery","focus","moreInfo","ctuID","toggleCtuGroups","groups","anyShown","some","classList","contains","ctuGroupsEnabled","uploadFilter","knownParams","push","queryRequest","tu","firmType","withoutFilters","searchByTU","ctu","available","madeInOurs","urlP_from","Number","urlP_to","priceClear","ch","fch","tch","tfch","firmIDs","geo_lat","geo_long","intervalFrom","intervalTo","geo_maxDistance","statuses","tableView","_url","additionalParams","searchParams","keys","k","get","filterType","_searchProducts","uploadType","isProducts","undefined","currentFirmPage","params","firmTemplates","grid","mini","rows","firmTemplate","viewMode","data","eval","FirmItems","Type","bygoods","newFirms","prepend","firmPageSize","fc","firmFilteredCount","popover","sanitize","sParam","sURLVariables","sParameterName","sPageURL","join","newUrl","path","skipReload","getCoordinates","Promise","resolve","navigator","geolocation","getCurrentPosition","coords","latitude","longitude","yl","locality","tumarket","general","lat","long","code","console","log","timeout","_initMap","callback","center","searchMap","defaultCenter","tu_maps","map","create","containerId","zoom","showSettingsButton","showSettings","showUserMark","locationDetected","showInfo","onLoad","ymap","modules","collection","GeoObjectCollection","p","points","placemarkOptions","hideIconOnBalloonOpen","balloonOffset","balloonMaxWidth","placemark","Placemark","balloonContentBody","events","add","tumStats","getBalloonContent","firmID","ctuIDs","properties","set","logEvent","objectType","eventType","catch","geoObjects","onApplySettings","settings","$map","is","$mapInfo","lat_param","long_param","maxDistance_param","enableRadius","matches","updateSortType","hideAsideModal","modal","each","ctuFilter","categories","ctuNameClean","ctuName","_getTopOffset","height","_pegToScreenTop","$element","css","_pegToFollowTop","followTop","screenTop","_pegToFollowBottom","followBottom","screenBottom","_scrollEl","distance","oldTop","follow","$window","follower","elHeight","outerHeight","elTop","elBottom","isShorterThanScreen","isFollowTopPxVisible","topPixel","isFollowBottomPxVisible","bottomPixel","scrollDistance","abs","eventNumber","floor","random","Infinity","prevEventNumber","off","filterCont","pageSize","cropChNameCount","pageType","selectedCtus","fchList","tfchList","isEditMode","width","catIDs","itemID","charIDs","charactCount","metricsFCH","metricsTFCH","metrics","$cont","$minInput","$maxInput","fltrCountXS","setDateTimeFilter","isMob2","isOwnCharID","$catCont","selectFilters","fCharIDs","minValConst","maxValConst","curChar","checkboxesInCont","includes","first","ctuCheckboxes","ctuId","getAttribute","queryWithoutFilters","paramsString","slice","URLSearchParams","intervals","getFormData","getElementById","interval_from","interval_to","intervalFromDate","Date","intervalToDate","setMonth","getMonth","s_date","s_time","Intl","DateTimeFormat","month","year","day","format","hour","minute","res","isMobFilterOpen","checkCheckboxesAndShowApplyBtn","selectedCheckbox","activeCheckbox","item","urlParams","ids","concat","diff","_showAsideModal","readmore","moreLink","lessLink","speed","collapsedHeight","sortDomElements","comparator","Array","prototype","call","parentNode","appendChild","lastAppliedModel","filterFieldsCount","showFilters","isCategory","initViewMode","$this","isReload","switchSearchFilter","toggleLeftSide","clone","init2","modalClass","$modal","showAsideModal","target","items","isCatModal","text_alt","expandCtuModal","_showFiltersAsideModal","_toggleFilters_desktop","highlight","_toggleFilters_mob","toggleFilters","scrollPosition","isChecked","setModalFilter","clearFilterItem","dropdown","dataset","setViewMode","wrap","show","scrollMobFiltersToBottom","test","userAgent","MSStream","dataItemID","isCheck","contents","nodeValue","alttext","next","innerHeight","scrollVal","slideUp","$card","idName","parent","inputTXT","str","cropCount","getChStr","$parent","toArray","not","onClickOutside","dispatchEvent","Event","bubbles","mode","updateViewModeIcon","view","$elem","icons","searchToolbar","Object","sortCode","firmSortCode","defaultSortCode","defaultSort","defaultFirmSortCode","defaultFirmSort","sortTypes","productSortOptions","firmSortTypes","firmSortOptions","sortType","firmSortType","_isFilterShown","_toggleFilter","fitToViewport","updateFilterSelectedValues","getModel","$prioritySource","getData","includeEmpty","isArray","priorityData","n","applyModel","model","$input","updateFilterFieldsCount","resetMobileFilter","resetAllFilter","t","resetModalFilter","index","isFirst","$elm","maxCollapseHeight","ceil","$elmLink","sH","scrollHeight","iH","isNoCollapse","cnt","clearFilterQuery","form","changedOnly","result","default","submitFormData","startsWith","patchForm","source","sourceForm","targetForm","sourceData","targetData","mergedData","assign","targetFields","field","fillFormField","fieldValue","initFormUtils","forms","callbacks","disabled","getPreviews","pageCode","limit","$collapse","productID","previewIDs","y","_getPreviews","innerHTML","tmpl","_data","JSON","parse","JsonData","previews","needsHeader","productsList","dataMapperCallback","dataUpdateCallback","getUrlParamsCallback","renderOnInit","additionalData","state","productsPage_up","productsPage","productsPageSize","totalPages","totalProducts","products","productsSecondary","loadedPages","productsViewMode","restrictAdult","minProductsLeftToShowBanner","additional_items","template","initEvents","getProductsList","renderProductsList","truncate","_updateProductsList","noMap","PageSize","Total","RestrictAdult","Products","ProductsSecondary","bannerRequired","banner","banners","TypeID","isBanner","page_up","ProductItems","ProductItemsSecondary","ViewMode","ShowProductsPaging","Banners","CtuCloud","ctuCloud","ShowSoftMatch","OnlyHasSecondaryProducts","initCtuCloud","initIntersectionObserver","productsLeft","itemWidth","firstElementChild","offsetWidth","containerWidth","rowSize","additionalItemsLength","tail","children"],"sourceRoot":""}