{"version":3,"file":"3722_d4812ac792231dc7cb03.bundle.js","mappings":"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","sources":["webpack://tumarket/./js/browserConsole.js","webpack://tumarket/./js/editmode.js","webpack://tumarket/./js/global/geo.js","webpack://tumarket/./js/global/lazyHub.js","webpack://tumarket/./js/intersectionObserver.js","webpack://tumarket/./js/navbar/searchSelect.js","webpack://tumarket/./js/notifications.js","webpack://tumarket/./js/global/sessionTimer.js","webpack://tumarket/./js/pwa.js","webpack://tumarket/./js/hints/hints.js","webpack://tumarket/./js/location.js","webpack://tumarket/./js/CookiesNotice.js","webpack://tumarket/./js/userContentMistakes/reportErrorWidget.js","webpack://tumarket/./js/backToTop.js","webpack://tumarket/./js/welcome-dialog.js","webpack://tumarket/./js/banners.js","webpack://tumarket/./js/pages/layout.js","webpack://tumarket/./js/product/restrictAdult.js","webpack://tumarket/./js/search/searchSuggestions.js","webpack://tumarket/./js/slider.js","webpack://tumarket/./js/statistics.js"],"sourcesContent":["import { bootstrapAlert } from \"./global/alert\";\nimport { showDialog } from \"./global/dialog\";\nimport { isMob } from \"./global/util\";\n\nfunction logToConsoleDump(text){\n let element = document.createElement('p');\n element.innerHTML = text;\n let dump = document.getElementById('console-dump');\n dump.appendChild(element);\n\n let logElement = document.getElementById('console-log');\n if (logElement) {\n logElement.innerHTML = dump.innerHTML;\n logElement.scrollTop = logElement.scrollHeight;\n } \n}\n\nfunction showConsoleDialog(){\n showDialog({\n content: `\n \n
\n \n \n \n \n
\n
\n Вывод:\n
\n        `,\n        title: 'Консоль',\n        showFooter: false,\n        onShown: () => {\n            let history = localStorage.getItem('console-history');\n            history = history ? JSON.parse(history) : [];\n\n            let historyPosition = history.length;\n            let log = document.getElementById('console-log');\n            log.innerHTML = document.getElementById('console-dump').innerHTML;\n            log.scrollTop = log.scrollHeight;\n\n            document.querySelector('[data-console-send]').addEventListener('click', () => {\n                let text = document.querySelector('[data-console-command]');\n                if (!text) return;\n\n                try {\n                    eval(text.value);\n                } catch (e) {\n                    console.log(e);\n                }\n\n                let history = localStorage.getItem('console-history');\n                history = history ? JSON.parse(history) : [];\n                if (history[history.length - 1] != text.value) history.push(text.value);\n                historyPosition = history.length;\n                localStorage.setItem('console-history', JSON.stringify(history));\n\n                text.value = '';\n            });\n\n            document.querySelector('[data-console-previous]').addEventListener('click', () => {\n                if (!historyPosition) return;\n                let history = localStorage.getItem('console-history');\n                if (history) {\n                    try {\n                        history = JSON.parse(history);\n                        historyPosition -= 1;\n                        document.querySelector('[data-console-command]').value = history[historyPosition] || '';\n                    } catch {}\n                }\n            });\n\n            document.querySelector('[data-console-next]').addEventListener('click', () => {\n                let history = localStorage.getItem('console-history');\n                if (history) {\n                    try {\n                        history = JSON.parse(history);\n                        if (historyPosition < history.length - 1) {\n                            historyPosition += 1;\n                            document.querySelector('[data-console-command]').value = history[historyPosition] || '';\n                        }\n                    } catch {}\n                }\n            });\n\n            document.querySelector('[data-console-clear]').addEventListener('click', () => {\n                localStorage.removeItem('console-history');\n                bootstrapAlert('История очищена');\n            });\n        },\n        pinToBottom: isMob()\n    });\n}\n\nfunction initConsoleHandler() {\n    if (!document.getElementById('show-console')) return;\n\n    if (!document.getElementById('console-dump')) {\n        let element = document.createElement('div');\n        element.id = 'console-dump';\n        element.classList.add('d-none');\n        document.body.appendChild(element);\n    }\n\n    // define a new console\n    let console = (function(oldCons){\n        return {\n            log: function(text){\n                oldCons.log(text);\n                logToConsoleDump(text);\n            },\n            info: function (text) {\n                oldCons.info(text);\n                logToConsoleDump(text);\n            },\n            warn: function (text) {\n                oldCons.warn(text);\n                logToConsoleDump(text);\n            },\n            error: function (text) {\n                oldCons.error(text);\n                logToConsoleDump(text);\n            },\n            debug: function(text){\n                oldCons.debug(text);\n                logToConsoleDump(text);\n            }\n        };\n    }(window.console));\n\n    //Then redefine the old console\n    window.console = console;\n\n    document.getElementById('show-console').addEventListener('click', showConsoleDialog);\n}\n\nexport { initConsoleHandler };\n","import * as $ from \"jquery\";\nimport { getCookie, setCookie } from \"./global/cookie\";\nimport { showDialog, closeDialog } from \"./global/dialog\";\nimport { addEventDelegate } from \"./global/dom\";\n\nvar editMode = {\n\toptions: {\n\t\tcookieKey: 'isEditView',\n\t\tinterval: null,\n\t\tidleTimer: null,\n\t\tidleState: false, // состояние отсутствия\n\t\tidleWait: 4*60*60*1000, // интервал запуска счетчика 4ч\n\t\teditLimitationsMsg: \"\"\n\t},\n\tinit: function (options) {\n\t\teditMode.options = $.extend(editMode.options, options);\n\t\tthis.options.editLimitationsMsg = $(\".tum-editLimitationsMsg\").html();\n\n\t\t$(document).on('mousemove keydown scroll', function () {\n\t\t\tif (getCookie(editMode.options.cookieKey)) {\n\t\t\t\tclearTimeout(editMode.options.idleTimer); // отменяем прежний временной отрезок\n\t\t\t\tif (editMode.options.idleState == true) {\n\t\t\t\t\t// Действия на возвращение пользователя\n\t\t\t\t\t$(\".time-edit-unset\").text('');\n\t\t\t\t\t$(\".time-edit-desc\").addClass('hide');\n\t\t\t\t\tclearTimeout(editMode.options.interval);\n\t\t\t\t\tif ($('.isTumViewEditTime').lenght > 0) {\n\t\t\t\t\t\tcloseDialog();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\teditMode.options.idleState = false;\n\t\t\t\teditMode.options.idleTimer = setTimeout(function () {\n\t\t\t\t\t// Действия на отсутствие пользователя\n\t\t\t\t\tif (getCookie(editMode.options.cookieKey)) {\n\t\t\t\t\t\t$(\".time-edit-desc\").removeClass('hide');\n\t\t\t\t\t\tif ($('.isTumViewEditTime').length < 1) {\n\n\t\t\t\t\t\t\tvar isEditViewActive = getCookie(\"isEditViewActive\");\n\t\t\t\t\t\t\tif (isEditViewActive == \"1\"){\n\t\t\t\t\t\t\t\tsetCookie(editMode.options.cookieKey, 1, 365);\n\t\t\t\t\t\t\t\t$('#asModal .isTumViewEditTime').remove(); \n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar text = '
' +\n\t\t\t\t\t\t\t\t'Продолжить ' +\n\t\t\t\t\t\t\t\t'Завершить
' +\n\t\t\t\t\t\t\t\t'У вас несколько минут до автозавершения, таймер включен' +\n\t\t\t\t\t\t\t\t'
';\n\t\t\t\t\t\t\tvar header = '';\n\t\t\t\t\t\t\theader += '';\n\t\t\t\t\t\t\t$('#asModal .modal-header').html(header);\n\n\t\t\t\t\t\t\tshowDialog({\n\t\t\t\t\t\t\t\ttitle: 'Режим редактирования',\n\t\t\t\t\t\t\t\tcontent: text,\n\t\t\t\t\t\t\t\tonSubmit: () => {\n\t\t\t\t\t\t\t\t\tsetCookie(editMode.options.cookieKey, 1, 365);\n\t\t\t\t\t\t\t\t\tcloseDialog();\n\t\t\t\t\t\t\t\t\t$('#asModal .isTumViewEditTime').remove(); \n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonShown: () => {\n\t\t\t\t\t\t\t\t\t$('#asModal .modal-dialog').addClass('modal-dialog-centered');\n\t\t\t\t\t\t\t\t\t$(\"#asModal .modal-footer\").empty().append($(\"#asModal .tum-edit-set\")).append($(\".isTumViewEditTime.tum-edit-unset\"));\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonClosed: () => $('#asModal .isTumViewEditTime').remove()\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\teditMode.countDown();\n\t\t\t\t\t}\n\t\t\t\t\teditMode.options.idleState = true; \n\t\t\t\t}, editMode.options.idleWait);\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.isEditView', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tlet enable = !$(element).hasClass('tum-edit-unset');\n\t\t\tlet redirectUrl = $(element).hasClass('turn') ? $(element).attr('data-url') : null;\n\t\t\teditMode.showRolesModal(enable, redirectUrl);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '#logoutForm', () => {\n\t\t\tsetCookie(editMode.options.cookieKey, '', -1);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.isTumViewEditTime', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\teditMode.toggleEditView(element);\n\t\t\tcloseDialog();\n\t\t\tlocation.reload();\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.toggleEditMode', () => {\n\t\t\teditMode.toggleEditView();\n\t\t\tlocation.reload();\n\t\t});\n\t},\n\tshowRolesModal: function (enable, redirect) {\n\t\tif (!enable) {\n\t\t\tsetCookie(editMode.options.cookieKey, '', -1);\n\t\t\tlocation.reload();\n\t\t\treturn;\n\t\t}\n\n\t\tvar confirm = function () {\n\t\t\teditMode.toggleEditView(enable);\n\t\t\tlocation.reload();\n\t\t};\n\n\t\tvar $msg = $(editMode.options.editLimitationsMsg);\n\t\tvar txt = $('.isEditView.tum-edit-set + .tum-unauthorized-hint').attr('data-content');\n\t\tif ($msg.hasClass(\"showModal\")) {\n\t\t\tshowDialog({ title: \"Права на редактирование\", content: txt, submitButtonText: \"Продолжить\" })\n\t\t\t$(\"#asModal .btn-primary\").remove();\n\t\t\t$(\"#asModal .tum-editLimitationsMsg i\").remove();\n\t\t\t$(\"#asModal\").on(\"hide.bs.modal\", confirm);\n\t\t} else {\n\t\t\teditMode.toggleEditView(enable);\n\t\t\tif (redirect) {\n\t\t\t\tlocation.href = redirect;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlocation.reload();\n\t\t}\n\t},\n\ttoggleEditView: function (enable) {\n\t\tif (enable) {\n\t\t\tsetCookie(editMode.options.cookieKey, 1, 365);\n\t\t} else {\n\t\t\tsetCookie(editMode.options.cookieKey, '', -1);\n\t\t}\n\t},\n\tenabled: function(){\n\t\treturn getCookie(editMode.options.cookieKey) == 1;\n\t},\n\tcountDown: function () {\n\t\tvar date = new Date();\n\t\tvar Day = date.getDate();\n\t\tvar Year = date.getFullYear();\n\t\tvar Month = date.getMonth();\n\t\tvar Hours = date.getHours();\n\t\tvar Minutes = date.getMinutes();\n\t\tvar Seconds = date.getSeconds();\n\t\tvar Milliseconds = date.getMilliseconds();\n\t\tvar countDownDate = new Date(Year, Month, Day, Hours, Minutes+15, Seconds, Milliseconds).getTime();\n\t\teditMode.countDownInterval(countDownDate);\n\t},\n\tcountDownInterval: function (dateTime) {\n\t\teditMode.options.interval = setInterval(function () {\n\t\t\tvar time = new Date().getTime();\n\t\t\tvar timeLeft = dateTime - time;\n\t\t\tif (timeLeft <= 0) {\n\t\t\t\tsetCookie(editMode.options.cookieKey, '', -1);\n\t\t\t\tclearTimeout(editMode.options.interval);\n\t\t\t\tlocation.reload();\n\t\t\t}\n\t\t\tvar minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60));\n\t\t\tif (minutes.toString().length == 1) {\n\t\t\t\tminutes = '0' + minutes.toString();\n\t\t\t}\n\n\t\t\tvar seconds = Math.floor((((timeLeft % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000)) / 1000 * 1);\n\t\t\tif (seconds.toString().length == 1) {\n\t\t\t\tseconds = '0' + seconds.toString();\n\t\t\t}\n\n\t\t\tvar milisecons = Math.floor((timeLeft % 1000) / 10);\n\t\t\tif (milisecons.toString().length == 1) {\n\t\t\t\tmilisecons = '0' + milisecons.toString();\n\t\t\t}\n\n\t\t\tvar tmrStr = minutes + ':' + seconds + ':' + milisecons;\n\t\t\t$(\".time-edit-unset\").text(tmrStr);\n\n\t\t}, 10);\n\t}\n};\n\nexport { editMode };","import param from 'jquery-param';\nimport { ajaxGet } from './fetch';\n\nfunction getYandexApiLocation(lat, long){\n let params = param({ \n geocode: `${long},${lat}`, \n lang: \"ru_RU\", \n apikey: \"58d3ef21-0b56-4982-a66d-4f11b1f52d90\", \n format: \"json\" \n });\n\n return ajaxGet({ url: \"https://geocode-maps.yandex.ru/1.x/?\" + params })\n .then(response => {\n if (response.statusCode == 403) {\n return Promise.reject(\"yandex api access denied\");\n }\n \n return response;\n })\n}\n\nfunction getLocationFromYandex(lat, long) {\n return getYandexApiLocation(lat, long).then(e => {\n var model = e.response.GeoObjectCollection.featureMember[0]?.GeoObject.metaDataProperty;\n if (!model) {\n return Promise.reject(\"yandex api error\");\n }\n\n var addressComponents = model.GeocoderMetaData.Address.Components;\n var localityItem = addressComponents.filter(e => e.kind == \"locality\");\n var locality = localityItem.length ? localityItem[0].name : \"\";\n var provinces = addressComponents.filter(e => e.kind == \"province\").map(e => e.name);\n\n var province1 = provinces.length > 0 ? provinces[0] : \"\";\n var province2 = provinces.length > 1 ? provinces[1] : \"\";\n\n return { locality, province1, province2 };\n });\n}\n\nexport { getLocationFromYandex }","import { addEventDelegate } from \"./dom\";\nimport { isMob } from \"./util\";\n\n/**\n * Регистрирует события, которые работают глобально, но нужный для них код загружается по требованию, а не сразу\n */\nfunction initLazyModules() {\n addEventDelegate(document, 'click', '.toggleSearchMenu', () => {\n import(\"../searchMenu\").then(({ tum_searchMenu }) => tum_searchMenu.toggleMenu());\n });\n\n addEventDelegate(document, 'click', '.home-catalog-link, .show-catalog', (element, e) => {\n if (!isMob()) {\n location.href = \"/catalog\";\n return;\n };\n\n e.preventDefault();\n import(\"../searchMenu\").then(({ tum_searchMenu }) => {\n tum_searchMenu.toggleMenu().then(() => { \n tum_searchMenu.scrollToCatalog();\n\n if (element.dataset.searchType) {\n tum_searchMenu.setSearchType(element.dataset.searchType);\n }\n });\n });\n });\n\n addEventDelegate(document, 'click', '.mod-ord-window', (element, event) => {\n event.preventDefault();\n let idFirm = element.dataset.firmid;\n let idProd = element.dataset.productid;\n let params = { idFirm: idFirm, idProd: idProd };\n\n import(\"../showCaseManagement\").then(({ management }) => management.getModalData(params));\n });\n\n addEventDelegate(document, 'click', '.toggleMenu', element => {\n import(\"../MainMenu\").then(({ tum_mainMenu }) => tum_mainMenu.toggleMenu(element.dataset.highlight, element.dataset.showReadmore));\n });\n\n addEventDelegate(document, 'click', '.editTopListDate', (element) => {\n import(\"../product/editTopListDate.js\").then(({ editTopListDate }) => {\n let productId = element.dataset.itemid;\n let previewId = element.dataset.previewid;\n editTopListDate.editTopListDate(productId, previewId);\n });\n });\n\n addEventDelegate(document, 'click', '.tum-miniatureCartBtn', (element, event) => {\n event.preventDefault();\n import(\"../cart/cartWidget\").then(({ cartWidget }) => cartWidget.showCartWidget(element));\n });\n\n addEventDelegate(document, 'click', ['.topbar-openCatalog', '.tu-showCatalog'], element => {\n element.disabled = true;\n import(\"../catalogItems\").then(({ catItems }) => {\n catItems.showCatalog().then(() => element.disabled = false);\n });\n });\n\n addEventDelegate(document, 'click', '.firm-edit-item', (element, event) => {\n event.preventDefault();\n import(\"../firm/firmStatusEdit\").then(({ firmStt }) => firmStt.editFirmStatus(event, element));\n });\n\n addEventDelegate(document, 'click', '.task-update', (element) => {\n import(\"../tasks.js\").then(({ tu_tasks }) => tu_tasks.updateButtonHandler(element));\n });\n\n addEventDelegate(document, 'click', '[data-edit-preview-connections]', (element) => {\n let productId = element.dataset.productid;\n let firmId = element.dataset.firmid;\n let ctuId = element.dataset.ctuid;\n\n import(\"../previews/connection_editor\").then(({previewConnectionEditor}) => {\n previewConnectionEditor.open({ productId, ctuId, firmId });\n });\n });\n\n refreshLazyModules();\n}\n\nfunction refreshLazyModules(){\n for (let crud of document.querySelectorAll('[data-crud]')) {\n import(\"../crud.js\").then(({ initCrud }) => initCrud(crud));\n }\n\n if (document.querySelector('.tu-modal-form')) {\n import(\"../form/form.modals\").then(({ initFormModals }) => initFormModals());\n }\n\n if (document.querySelector('[data-tu-select]')) {\n import(\"../global/tu_select\").then(({ initSelects }) => initSelects());\n }\n\n for (let timer of document.querySelectorAll('[data-timer]')) {\n import(\"../global/timer\").then(({ initTimer }) => initTimer(timer));\n }\n\n if (document.querySelector('[data-submit-form]')) {\n import(\"../global/form\").then(({ initFormUtils }) => initFormUtils());\n }\n\n for (let item of document.querySelectorAll('[data-highlight-search]')) {\n import(\"../global/highlight_search\").then(({ initHighlightSearch }) => initHighlightSearch(item));\n }\n\n for (let item of document.querySelectorAll('[data-slider-auto-init]')) {\n import(\"../slider\").then(module => {\n module.default.create({\n container: item,\n mobLoadMoreChevronDirection: 'right',\n autoCycling: true\n });\n });\n }\n\n if (document.querySelector('[data-range-slider]:not(.noUi-target)')) {\n import('../util/rangeSlider').then(({ initRangeSliders }) => initRangeSliders());\n }\n\n if (document.querySelector('[data-observe-visibility], [data-classes-when-shown], [data-classes-when-visible]', '[data-set-cookie-on-shown]')) {\n import('../intersectionObserver').then(({ initIntersectionObserver }) => initIntersectionObserver());\n }\n \n if (document.querySelector('[data-input-mask]')) {\n import('../util/inputMask').then(({ initInputMasks }) => initInputMasks());\n }\n\n if (document.querySelector('[data-switch-frames]')) {\n import('../util/switchFrames/switchFrames').then(({ initSwitchFrames }) => {\n for (let elem of document.querySelectorAll('[data-switch-frames]')) { \n initSwitchFrames(elem);\n }\n });\n }\n\n if (document.querySelector('[data-file-uploader]')) {\n import('./file').then(({ initFileUploaders }) => initFileUploaders());\n }\n}\n\nexport { initLazyModules, refreshLazyModules };\n","import { setCookie } from \"./global/cookie\";\nimport { dataStorage } from \"./global/dom\";\n\n/** @type {IntersectionObserverCallback} */\nfunction intersectionHandler(entries) {\n\tfor (let entry of entries) {\n\t\tlet element = entry.target\n\t\tlet target = element;\n\t\tif (element.dataset.visibilityObserverTarget) {\n\t\t\ttarget = document.querySelector(element.dataset.visibilityObserverTarget);\n\t\t}\n\n\t\tlet classesShown = element.dataset.classesWhenShown?.split(' ').filter(e => e) || [];\n\t\tlet classesVisible = element.dataset.classesWhenVisible?.split(' ').filter(e => e) || [];\n\t\tlet cookieName = element.dataset.setCookieOnShown;\n\t\tlet cookieValue = element.dataset.cookieValue || \"\";\n\t\tlet cookieDuration = Number(element.dataset.cookieDuration) || 1;\n\n\t\tif (entry.isIntersecting) {\n\t\t\tif (!target.hasAttribute('data-shown')) {\n\t\t\t\ttarget.dispatchEvent(new Event(\"tu.shown\", { bubbles: false }));\n\t\t\t\ttarget.setAttribute('data-shown', '');\n\t\t\t\ttarget.classList.add(...classesShown);\n\n\t\t\t\tif (cookieName) {\n\t\t\t\t\tsetCookie(cookieName, cookieValue, cookieDuration)\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\ttarget.setAttribute('data-visible', '');\n\t\t\ttarget.classList.add(...classesVisible);\n\t\t} else {\n\t\t\ttarget.removeAttribute('data-visible');\n\t\t\ttarget.classList.remove(...classesVisible);\n\t\t}\n\t}\n}\n\n/**\n * \n * @param {HTMLElement} element \n */\nfunction observeElement(element) {\n\tlet threshold = Number(element.dataset.threshold) || 0;\n\n\t/** @type {IntersectionObserver} */\n\tlet intersectionObserver = dataStorage.get(element, 'intersection-observer');\n\tif (intersectionObserver) {\n\t\tintersectionObserver.disconnect();\n\t}\n\n\tintersectionObserver = new IntersectionObserver(intersectionHandler, { threshold });\n\tdataStorage.put(element, 'intersection-observer', intersectionObserver);\n\n\tintersectionObserver.observe(element);\n\n\treturn intersectionObserver;\n}\n\n/**\n * \n * @param {HTMLElement} element \n */\nfunction initIntersectionObserver() {\n\tfor (let el of document.querySelectorAll('[data-observe-visibility], [data-classes-when-shown], [data-classes-when-visible], [data-set-cookie-on-shown]')) {\n\t\tobserveElement(el);\n\t}\n}\n\nexport { initIntersectionObserver };\n","/* global tumarket */\n\nimport * as $ from \"jquery\";\nimport tumGlobal from \"../global.js\";\nimport searchHistory from \"../searchHistory.js\";\nimport \"bootstrap/js/dist/collapse\";\nimport { addEventDelegate, onClickOutside, setHtml, smoothScrollTo, toggle, toggleClass } from \"../global/dom\";\nimport { handleError } from \"../global/debug.js\";\n\nlet searchWidgets = {};\n\nfunction createSearchWidget(options){\n\tlet instance = {\n\t\toptions: {\n\t\t\t//https://docs.google.com/document/d/1R-WGv7E3tSx6L8KGrJ-RJjFImjO4J3OTC4ErTmEs_Yo/edit\n\t\t\tarrru: new Array('Я', 'я', 'Ю', 'ю', 'Ч', 'ч', 'Щ', 'щ', 'Ш', 'ш', 'Ж', 'ж', 'Э', 'э', 'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ы', 'ы', 'Ь', 'ь', 'Ъ', 'ъ'),\n\t\t\tarren: new Array('Ya', 'ya', 'Yu', 'yu', 'Ch', 'ch', 'Shh', 'shh', 'Sh', 'sh', 'Zh', 'zh', 'Eh', 'eh', 'A', 'a', 'B', 'b', 'V', 'v', 'G', 'g', 'D', 'd', 'E', 'e', 'E', 'e', 'Z', 'z', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'F', 'f', 'H', 'h', 'C', 'c', 'Y', 'y', '``', '`', '\"', '\"'),\n\t\t\tconcllatchars: new Array('э', 'ш', 'сх', 'цх', 'схх', 'уа', 'уу', 'зх', 'ех', 'эх', 'ь', 'ъ'),\n\t\t\tcontainer: '.searchWidget-container'\n\t\t},\n\t\t/** @type {HTMLElement} */\n\t\tcontainer: null,\n\t\tinit: function (options) {\n\t\t\tObject.assign(this.options, options);\n\t\t\tthis.container = document.querySelector(this.options.container);\n\t\n\t\t\tif (!this.container) return;\n\t\t\tlet searchTypes = this.container.querySelector('.searchWidget-searchTypes');\n\t\t\tlet searchTypesList = this.container.querySelector('.searchTypes-list');\n\t\n\t\t\taddEventDelegate(this.container, 'keypress', 'input', (element, event) => {\n\t\t\t\tif (event.charCode == 13) {\n\t\t\t\t\tthis.sendQuery();\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\taddEventDelegate(this.container, 'click', '.searchType', element => {\n\t\t\t\tlet code = element.dataset.code;\n\t\t\t\tthis.setSearchType(code, true);\n\t\t\t\tthis.toggleSearchTypes();\n\t\t\t});\n\t\n\t\t\tonClickOutside(searchTypes, () => {\n\t\t\t\t$(searchTypesList).collapse('hide');\n\t\t\t});\n\t\n\t\t\tlet input = this._input();\n\t\t\tinput.addEventListener('input', () => {\n\t\t\t\t//явно обновляем строку поиска, чтобы она синхронизировалась между всеми полями ввода (второе поле ввода в плавающей шапке, например)\n\t\t\t\tthis.setQuery(input.value);\n\t\n\t\t\t\tif (tumarket.state.searchMenuLoaded) { \n\t\t\t\t\timport(\"../searchMenu\").then(({tum_searchMenu}) => {\n\t\t\t\t\t\ttum_searchMenu.setSearchQuery(this.getQuery()); \n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\taddEventDelegate(this.container, 'click', '.clearField', () => {\n\t\t\t\tthis.clear();\n\t\t\t\tthis.focus();\n\t\t\t});\n\t\n\t\t\taddEventDelegate(this.container, 'click', '.searchButton', () => this.sendQuery(true));\n\t\t\tthis.updateClearButton();\n\t\t},\n\t\ttoggleSearchTypes: function(action){\n\t\t\t$(this.container.querySelector('.searchTypes-list')).collapse(action || 'toggle');\n\t\t},\n\t\tupdateClearButton: function(){\n\t\t\ttoggle(this.container.querySelector('.clearField'), this.getQuery());\n\t\t},\n\t\tsetSearchType: function(code, isInternal) {\n\t\t\tlet oldType = this.getSearchType();\n\n\t\t\tlet searchTypes = this._searchTypes();\n\t\t\tlet newType = searchTypes.find(e => e.code == code);\n\t\t\t\n\t\t\tfor (let type of searchTypes) type.selected = false;\n\t\t\tnewType.selected = true;\n\t\n\t\t\tthis.updateSearchTypes(oldType);\n\n\t\t\t//this.focus();\n\t\n\t\t\t//isInternal = true, если метод вызывается внутри компонента.\n\t\t\t//только в этом случае нужно также обновить тип поиска в меню поиска, иначе будет рекурсия\n\t\t\tif (isInternal && tumarket.state.searchMenuLoaded) {\n\t\t\t\timport(\"../searchMenu\").then(({tum_searchMenu}) => {\n\t\t\t\t\ttum_searchMenu.setSearchType(code);\n\t\t\t\t});\n\t\t\t} \n\t\n\t\t\tlet isOffers = code == \"byFirmOffers\";\n\t\t\t$('.searchWidget-offers').toggleClass('d-none', !isOffers);\n\n\t\t\tlet input = this._input();\n\t\t\tlet firm = tumarket.firmName;\n\t\t\tlet region = tumarket.general.location.parentCityID ? tumarket.general.location.nameIN : tumarket.general.location.regionName;\n\n\t\t\tinput.placeholder = newType.placeholder.replace(\"{{firm}}\", firm).replace(\"{{region}}\", region);\n\n\t\t\tthis.sendQuery();\n\t\t},\n\t\tupdateSearchTypes: function(oldType){\n\t\t\tlet newType = this.getSearchType();\n\n\t\t\ttoggleClass(this.container.querySelectorAll('.searchType'), 'active', false);\n\t\t\ttoggleClass(this.container.querySelectorAll(`.searchType[data-code=\"${newType.code}\"]`), 'active', true);\n\t\t\ttoggleClass(this.container.querySelectorAll('.searchTypeIcon'), oldType.icon, false);\n\t\t\ttoggleClass(this.container.querySelectorAll('.searchTypeIcon'), newType.icon, true);\n\n\t\t\tfor (let elem of this.container.querySelectorAll('.searchTypeName-text')) {\n\t\t\t\tsetHtml(elem, newType.text);\n\t\t\t}\n\t\t},\n\t\tsendQuery: function(focusSearch) {\n\t\t\tlet searchText = this.getQuery();\n\t\t\tlet searchType = this.getSearchType()?.type;\n\t\n\t\t\tif (!searchType) {\n\t\t\t\tsearchType = 'offer';\n\t\t\t\thandleError(new Error('attempting search with empty type. Setting to default (offer)'), true, true);\n\t\t\t}\n\t\n\t\t\tif (searchText) {\n\t\t\t\tthis.search(searchText, searchType);\n\t\t\t} else {\n\t\t\t\tif (focusSearch) this.focus();\n\t\t\t}\n\t\t},\n\t\tsearch: function(query, type){\n\t\t\tif (!query || !type) return;\n\t\n\t\t\tif (type == \"firmOffer\") {\n\t\t\t\tlet url = new URL(location.href);\n\t\t\t\turl.searchParams.set(\"query\", query);\n\t\t\t\tlocation.href = url.toString();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tvar hasLatinChars = /[a-z]/.test(query.toLowerCase());\n\t\t\tvar hasConclLatin = this.isConclLatinContains(query.toLowerCase());\n\t\t\tvar hasCapitalLetter = /[А-Я]/.test(query) || /[A-Z]/.test(query);\n\t\t\tvar hasSpecialChars = /[ё!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/.test(query);\n\t\n\t\t\tvar href = `/search-${type}/${this.cyrill_to_latin(query.toLowerCase()).replace(\" \", \"%20\")}`;\n\t\t\tif (hasLatinChars || hasConclLatin || hasCapitalLetter || hasSpecialChars) {\n\t\t\t\thref = `/search-${type}/query?query=${query.replace(\"+\", \"%2B\").replace(\"&\", \"%26\")}`;\n\t\t\t}\n\t\t\tsearchHistory.add(query, type);\n\t\t\tlocation.href = href;\n\t\t},\n\t\tcyrill_to_latin: function (text) {\n\t\t\tfor (var i = 0; i < this.options.arrru.length; i++) {\n\t\t\t\tvar reg = new RegExp(this.options.arrru[i], \"g\");\n\t\t\t\ttext = text.replace(reg, this.options.arren[i]);\n\t\t\t}\n\t\t\treturn text;\n\t\t},\n\t\tisConclLatinContains: function (text) {\n\t\t\tvar result = false;\n\t\t\tfor (var i = 0; i < this.options.concllatchars.length; i++) {\n\t\t\t\tif (text.indexOf(this.options.concllatchars[i]) > -1) result = true;\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\tgetSearchType: function(){\n\t\t\treturn this._searchTypes().find(e => e.selected);\n\t\t},\n\t\tgetQuery: function(){\n\t\t\treturn this._input()?.value.trim();\n\t\t},\n\t\tsetQuery: function(query){\n\t\t\tif (!this.exists()) return;\n\t\t\tthis._input().value = query;\n\t\t\tthis.updateClearButton();\n\t\t},\n\t\t_input: function(){\n\t\t\treturn this.container?.querySelector('input');\n\t\t},\n\t\t_searchTypes: function(){\n\t\t\treturn tumarket.searchWidget.searchSelectOptionsList;\n\t\t},\n\t\tfocus: function(){\n\t\t\tthis._input().focus();\n\t\t},\n\t\tclear: function(){\n\t\t\tthis._input().value = '';\n\t\t\tthis._input().dispatchEvent(new Event('input', { bubbles: true }));\n\t\t},\n\t\thighlight: function(){\n\t\t\ttumGlobal.highlight($(this.container));\n\t\t},\n\t\texists: function(){\n\t\t\treturn !!this.container;\n\t\t},\n\t\tisFocused: function(){\n\t\t\treturn this._input()?.matches(':focus') || false;\n\t\t},\n\t\tscrollTo: function(){\n\t\t\tsmoothScrollTo(this.container);\n\t\t}\n\t};\n\n\tinstance.init(options);\n\n\treturn instance;\n}\n\nfunction initSearchWidget() {\n\tif (document.querySelector('.topbar.floating .searchWidget')) {\n\t\tsearchWidgets.floating = createSearchWidget({ container: '.topbar.floating .searchWidget-container' });\n\t}\n\t\n\tif (document.querySelector('.topbar.main .searchWidget')) {\n\t\tsearchWidgets.main = createSearchWidget({ container: '.topbar.main .searchWidget-container' });\n\t} else {\n\t\tsearchWidgets.main = createSearchWidget({ container: '.searchWidget-container' }); //home page\n\t}\n\n\tif (document.querySelector('.custom-search-widget .searchWidget-container')) {\n\t\tsearchWidgets.custom = createSearchWidget({ container: '.custom-search-widget .searchWidget-container' });\n\t}\n}\n\nwindow.searchWidgets = searchWidgets;\n \nexport { initSearchWidget, searchWidgets };","import * as signalR from \"@microsoft/signalr\";\nimport { showDialog } from \"./global/dialog\";\nimport { getCookie, setCookie } from \"./global/cookie\";\nimport { addEventDelegate, toggleClass } from \"./global/dom\";\n\nvar notifications = {\n\toptions: {\n\t\thubName: \"signalRHub\"\n\t},\n\thubInitialized: false,\n\thub: null,\n\tinit: function (options) {\n\t\tObject.assign(this.options, options);\n\n\t\t// if ('serviceWorker' in navigator) {\n\t\t// \tnavigator.serviceWorker.register('/js/sw.js');\n\t\t// }\n\n\t\taddEventDelegate(document, 'change', \".tum-enableNotifications\", () => {\n\t\t\tthis.toggleNotifications(null, true);\n\t\t});\n\n\t\treturn this.initHub().then(() => {\n\t\t\tthis.askForPermission(false, true);\n\t\t})\n\t},\n\tregisterCallback: function(name, callback){\n\t\tif (this.hubInitialized) { \n\t\t\tthis.hub.on(name, callback);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\twindow.addEventListener('signalRReady', () => this.hub.on(name, callback));\n\t},\n\tinitHub: function () {\n\t\tlet self = this;\n\t\tthis.hub = new signalR.HubConnectionBuilder().withUrl(\"/\" + this.options.hubName).build();\n\n\t\tif (!this.hub) {\n\t\t\tconsole.log(\"notification hub not found\");\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tthis.registerCallback('showNotification', this.showNotification);\n\n\t\tfunction startHubCallback() {\n\t\t\tself.hubInitialized = true;\n\t\t\twindow.dispatchEvent(new Event('signalRReady'));\n\n\t\t\ttry {\n\t\t\t\tself.hub.invoke(\"connectNotifications\");\n\t\t\t} catch {\n\t\t\t\tconsole.log(\"Failed to connect to push notifications\");\n\t\t\t}\n\t\t}\n\n\t\tthis.hub.onclose(function () {\n\t\t\tself.hubInitialized = false;\n\t\t\tsetTimeout(startHubCallback, 5000);\n\t\t});\n\n\t\treturn this.hub.start().then(startHubCallback);\n\t},\n\tenabled: function(){\n\t\treturn document.querySelector(\".tum-enableNotifications\")?.checked || false;\n\t},\n\tshowNotification: function (title, body, id) {\n\t\tif (!(\"Notification\" in window)) {\n\t\t\tconsole.log(\"This browser does not support desktop notification\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (!('serviceWorker' in navigator)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.enabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (Notification.permission == \"granted\") {\n\t\t\tnavigator.serviceWorker.getRegistrations().then(function (registrations) {\n\t\t\t\tregistrations[0].showNotification(title, { body: body, data: { id: id }, icon: \"/Content/images/tu.m/fav/prod/favicon.ico\" });\n\t\t\t});\n\t\t}\n\t\telse if (Notification.permission != \"denied\") {\n\t\t\tNotification.requestPermission().then(function (permission) {\n\t\t\t\tif (permission == \"granted\") {\n\t\t\t\t\tnavigator.serviceWorker.getRegistrations().then(function (registrations) {\n registrations[0].showNotification(title, { body: body, data: { id: id }, icon: \"/Content/images/tu.m/fav/prod/favicon.ico\" });\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\taskForPermission: function (showDisabledWarning, readCookie) {\n\t\tlet self = this;\n\t\tif (!(\"Notification\" in window)) {\n\t\t\tconsole.log(\"This browser does not support desktop notification\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (Notification.permission != \"granted\" && Notification.permission != \"denied\" && getCookie(\"tum-enableNotifications\") != \"0\") {\n\t\t\tNotification.requestPermission().then(function (permission) {\n\t\t\t\tconsole.log(\"notifications - asking for permission: \" + permission);\n\n\t\t\t\tif (permission == \"granted\") {\n\t\t\t\t\tself.toggleNotifications(\"enable\");\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tself.toggleNotifications(\"disable\");\n\t\t\t\t}\n\t\t\t}).catch(e => {\n\t\t\t\tconsole.log(\"notifications - asking for permission - catch: \" + e.toString());\n\t\t\t});\n\t\t}\n\t\telse if (Notification.permission == \"granted\" && readCookie) {\n\t\t\tvar notificationsEnabled = getCookie(\"tum-enableNotifications\") == \"1\" ? \"enable\" : \"disable\";\n\t\t\tself.toggleNotifications(notificationsEnabled, false, true);\n\t\t}\n\n\t\tif (Notification.permission != \"granted\" && showDisabledWarning) {\n\t\t\tvar instr = \"Как разрешить пуш-уведомления от TU.Market\";\n\t\t\tshowDialog({\n\t\t\t\ttitle: \"Уведомления запрещены веб-браузером\",\n\t\t\t\tcontent: \"Чтобы включить push-уведомления, нужно разрешить их в вашем веб-браузере
\" + instr,\n\t\t\t\tonShown: () => toggleClass(\"#asModal .btn-primary\", \"d-none\", true)\n\t\t\t});\n\t\t}\n\t},\n\ttoggleNotifications: function (code, ask, updateButtonOnly) {\n\t\tif (updateButtonOnly) {\n\t\t\tlet checkbox = document.querySelector('.tum-enableNotifications');\n\n\t\t\tif (code == \"enable\") {\n\t\t\t\tcheckbox.checked = true;\n\t\t\t}\n\t\t\telse if (code == \"disable\") {\n\t\t\t\tcheckbox.checked = false;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcheckbox.checked = !checkbox.checked;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.enabled()) {\n\t\t\tif (ask) {\n\t\t\t\tthis.askForPermission(true, false);\n\t\t\t}\n\n\t\t\tconsole.log(\"notifications enabled\");\n\t\t\tsetCookie(\"tum-enableNotifications\", \"1\", 30);\n\t\t}\n\t\telse {\n\t\t\tconsole.log(\"notifications disabled\");\n\t\t\tsetCookie(\"tum-enableNotifications\", \"0\", 30);\n\t\t}\n\t}\n};\n\nexport default notifications;","let storageKey = 'sessionStart';\n\nfunction initSessionTimer(){\n let currentTimer = localStorage.getItem(storageKey);\n if (currentTimer && Number(currentTimer)) {\n return;\n }\n\n localStorage.setItem(storageKey, Number(new Date()));\n}\n\n/**\n * \n * @returns {number}\n */\nfunction getSessionLength(){\n let sessionStartDate = null;\n \n let currentTimer = localStorage.getItem(storageKey);\n if (currentTimer && Number(currentTimer)) sessionStartDate = new Date(Number(currentTimer));\n else {\n return 0;\n }\n\n return (new Date() - sessionStartDate)/1000;\n}\n\nwindow.getSessionLength = getSessionLength;\n\nexport { initSessionTimer, getSessionLength };","/* global tumarket */\n\nimport { showDialog, closeDialog, showModal } from \"./global/dialog\";\nimport { getUrlParameter } from \"./global/url\";\nimport { getCookie, setCookie } from \"./global/cookie\";\nimport { addEventDelegate, appendHtml, show, toggleClass } from \"./global/dom\";\nimport { getSessionLength } from \"./global/sessionTimer\";\nimport { isIos } from \"./global/util\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"./global/templates\";\nimport { ajaxSend } from \"./global/fetch\";\n\nfunction arrayBufferToBase64(buffer) {\n\tvar binary = '';\n\tvar bytes = new Uint8Array(buffer);\n\tvar len = bytes.byteLength;\n\tfor (var i = 0; i < len; i++) {\n\t\tbinary += String.fromCharCode(bytes[i]);\n\t}\n\treturn window.btoa(binary);\n}\n\nlet tumPwa = {\n\tprompt: null,\n\tfirstEvent: true,\n\tisPwa: false,\n\talreadyInstalled: false,\n\toptions: {\n\t\tisEmployee: false\n\t},\n\tinit: function (options) {\n\t\tObject.assign(this.options, options);\n\n\t\tif (\"serviceWorker\" in navigator) {\n\t\t\tnavigator.serviceWorker\n\t\t\t.register(\"/pwabuilder-sw.js\", {\n\t\t\t\tscope: \"/\"\n\t\t\t})\n\t\t\t.then(function (reg) {\n\t\t\t\tconsole.log(\"[PWA Builder] Service worker has been registered for scope: \" + reg.scope);\n\n\t\t\t\treturn reg.pushManager.getSubscription().then(sub => {\n\t\t\t\t\tif (sub) return Promise.resolve(sub);\n\n\t\t\t\t\treturn reg.pushManager.subscribe({\n\t\t\t\t\t\tuserVisibleOnly: true,\n\t\t\t\t\t\tapplicationServerKey: tumarket.vapidPublicKey\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}).then(sub => {\n\t\t\t\tif (!sub) return Promise.resolve();\n\t\t\t\treturn ajaxSend({\n\t\t\t\t\turl: '/requests/subscribePush',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tendpoint: sub.endpoint,\n\t\t\t\t\t\tp256dh: arrayBufferToBase64(sub.getKey('p256dh')),\n\t\t\t\t\t\tauth: arrayBufferToBase64(sub.getKey('auth'))\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).catch(e => console.log(e));\n\t\t}\n\n\t\tif (window.matchMedia('(display-mode: standalone)').matches) {\n\t\t\tthis.isPwa = true;\n\t\t}\n\n\t\tif (this.isPwa) {\n\t\t\ttoggleClass(\".tum-installPwa:not(.always-show)\", \"d-none\", true);\n\t\t\ttoggleClass(\".tum-pwaOpenInBrowser\", \"d-none\", false);\n\t\t\tshow(\"[data-show-if-pwa]\");\n\t\t}\n\n\t\tif ('getInstalledRelatedApps' in navigator) {\n\t\t\tnavigator.getInstalledRelatedApps().then(e => {\n\t\t\t\tif (e.length) {\n\t\t\t\t\tthis.alreadyInstalled = true;\n\t\t\t\t\ttoggleClass(\".tum-installPwa:not(.always-show)\", \"d-none\", true);\n\t\t\t\t\ttoggleClass(\".tum-hide-when-pwa-installed\", \"d-none\", true);\n\n\t\t\t\t\tif (getUrlParameter(\"installpwa\") == \"\") {\n\t\t\t\t\t\tlet isDev = location.href.indexOf(\"localhost\") > -1 || location.href.indexOf(\"dev.\") > -1;\n\t\t\t\t\t\tlet title = '\"logo\"Приложение TU.Market';\n\t\t\t\t\t\tlet body = 'Приложение уже установлено на вашем устройстве.';\n\t\t\t\t\t\tshowDialog({title: title, content: body, onShown: () => document.querySelector('#asModal .btn-primary').remove()});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}).catch(error => {\n\t\t\t\tconsole.log(error);\n\t\t\t});\n\t\t}\n\n\t\tthis.initEvents();\n\t\tthis.showIosPwaPrompt();\n\t},\n\tinitEvents: function(){\n\t\twindow.addEventListener('beforeinstallprompt', e => {\n\t\t\te.preventDefault();\n\t\t\tthis.prompt = e;\n\n\t\t\tif (!this.isPwa) {\n\t\t\t\tif (getUrlParameter(\"installpwa\") == \"\" && window.screen.width < 993) {\n\t\t\t\t\tthis.showInstallPwaModal();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tgetCookie(\"skipPwaInstall\") != \"1\"\n\t\t\t\t\t&& this.firstEvent\n\t\t\t\t\t&& window.screen.width < 993\n\t\t\t\t\t&& getSessionLength()/60 > 3\n\t\t\t\t) {\n\t\t\t\t\tthis.showInstallPwaModal();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.firstEvent = false;\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".tum-installPwa\", () => {\n\t\t\tif (this.prompt) {\n\t\t\t\tthis.install();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (location.pathname.startsWith(\"/info/appInstall\")) {\n\t\t\t\tthis.showInstallPwaModal(true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlocation.href = \"/info/appInstall?installpwa\"\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".tum-pwa-scrollDown\", () => {\n\t\t\tsetCookie(\"skipPwaInstall\", \"1\", 30);\n\t\t\tcloseDialog();\n\n\t\t\twindow.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });\n\t\t});\n\n\t\taddEventDelegate(document, \"click\", \"[data-pwa-agree]\", () => {\n\t\t\tcloseDialog(\"#pwa-modal\");\n\t\t\tthis.install();\n\n\t\t\timport(\"./statistics\").then(({ tumStats }) => {\n\t\t\t\ttumStats.logEvent({\n\t\t\t\t\tobjectType: \"pwa\",\n\t\t\t\t\teventType: \"installPwa\"\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\taddEventDelegate(document, \"click\", \"[data-pwa-cancel]\", () => {\n\t\t\tsetCookie(\"skipPwaInstall\", \"1\", 30);\n\t\t});\n\t},\n\tshowIosPwaPrompt: function(){\n\t\tif (!isIos()) return;\n\t\tif (this.isPwa) return;\n\n\t\tif (getUrlParameter(\"installpwa\") == \"\" && window.screen.width < 993) {\n\t\t\tthis.showInstallPwaModal();\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tgetCookie(\"skipPwaInstall\") != \"1\"\n\t\t\t&& this.firstEvent\n\t\t\t&& window.screen.width < 993\n\t\t\t&& getSessionLength()/60 > 3\n\t\t) {\n\t\t\tthis.showInstallPwaModal();\n\t\t}\n\n\t\tthis.firstEvent = false;\n\t},\n\tinstall: function () {\n\t\tthis.prompt.prompt();\n\n\t\tthis.prompt.userChoice.then(function (result) {\n\t\t\tif (result.outcome === 'accepted') {\n\t\t\t\ttoggleClass(\".tum-installPwa:not(.always-show)\", \"d-none\", true);\n\t\t\t}\n\t\t});\n\t},\n\tshowInstallPwaModal: function (force) {\n\t\tif (tumarket.disablePopups && !force) return;\n\t\tvar isDev = location.href.indexOf(\"localhost\") > -1 || location.href.indexOf(\"dev.\") > -1;\n\n\t\tloadPrecompiledTemplates(['pwa-modal']).then(() => {\n\t\t\tif (!document.getElementById('pwa-modal')) {\n\t\t\t\tlet template = getPrecompiledTemplate('pwa-modal');\n\t\t\t\tlet html = template({\n\t\t\t\t\tisDev,\n\t\t\t\t\tios: isIos(),\n\t\t\t\t\tpwaSupported: !!this.prompt,\n\t\t\t\t\talreadyInstalled: this.alreadyInstalled\n\t\t\t\t});\n\n\t\t\t\tappendHtml(document.body, html);\n\t\t\t}\n\n\t\t\tshowModal('#pwa-modal');\n\t\t});\n\t}\n};\n\nwindow.tumPwa = tumPwa;\n\nexport default tumPwa;\n","import * as $ from \"jquery\";\nimport \"./hints.css\";\nimport { addEventDelegate } from \"../global/dom\";\n\nvar hints = {\n\tinit: function () {\n\t\taddEventDelegate(document, 'click', '.tum-hints-showHint', element => {\n\t\t\tlet target = $(element).attr('data-contenttarget');\n\n\t\t\tvar text = target ? $(target).html() : $(element).attr(\"data-content\");\n\t\t\tvar elem = $(element).closest(\".tum-hints-hasHint\");\n\n\t\t\tif ($(element).hasClass(\"show\")) {\n\t\t\t\thints.showHint(text, elem, true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thints.showHint(text, elem, false, element);\n\t\t\t$(element).addClass(\"show\");\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".tum-hints-hideHint\", (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$(\".tum-hints-hintBlock\").removeClass(\"show\");\n\t\t\t$(\".tum-hints-showHint\").removeClass(\"show\");\n\t\t});\n\t},\n\tshowHint: function (txt, elem, close) {\n\t\tvar hintBlock = $(elem).find(\".tum-hints-hintBlock:last\");\n\n\t\t$(\".tum-hints-hintBlock\").removeClass(\"show\");\n\t\t$(\".tum-hints-showHint\").removeClass(\"show\");\n\n\t\tif (close) {\n\t\t\treturn;\n\t\t}\n\n\t\thintBlock.html('
Закрыть
' + txt);\n\t\thintBlock.addClass('tum-hints-hintBorder');\n\t\thintBlock.addClass('mb-2');\n\t\thintBlock.addClass(\"show\");\n\t}\n};\n\nexport default hints;","/* global tumarket */\n\nimport * as $ from \"jquery\";\n\nimport \"bootstrap/js/dist/popover\";\nimport tumGlobal from \"./global.js\";\nimport { ajaxSend } from \"./global/fetch\";\nimport { getUrlParameter } from \"./global/url\";\nimport { getCookie, setCookie } from \"./global/cookie\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"./global/templates\";\nimport { addEventDelegate, empty, hasClass, setHtml, setProperty, toggleClass } from \"./global/dom\";\nimport { getLocationFromYandex } from \"./global/geo.js\";\n\nif (!Object.entries)\n Object.entries = function( obj ){\n var ownProps = Object.keys( obj ),\n i = ownProps.length,\n resArray = new Array(i); // preallocate the Array\n while (i--)\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n\n return resArray;\n};\n\nvar locationDetect = {\n\toptions: {\n\t\turlReferrer: ''\n\t},\n\tinvalidLocation: false,\n\tinit: function (options) {\n\t\tObject.assign(this.options, options);\n\t\tvar cookiesAreEmpty = !getCookie(\"geo_cityID\") && !getCookie(\"geo_subDomain\") && !getCookie(\"geo_isNear\");\n\t\tvar IsNeedYandexRequest = getCookie(\"geo_IsNeedYandexRequest\")==\"\"; //нужен ли яндекс\n\t\tvar forceLocationPopover = false;\n\t\tvar _location = getCookie('geo_location');\n\n\t\tthis.invalidLocation = _location && JSON.parse(_location).invalid;\n\t\tif (getCookie(\"geo_forceLocationPopover\") == \"1\") {\n\t\t\tforceLocationPopover = true;\n\t\t\tsetCookie(\"geo_forceLocationPopover\", \"\", -1);\n\t\t}\n\n\t\taddEventDelegate(document, 'click', '.tum-header-citiesNearby', element => {\n\t\t\ttoggleClass(element, \"show\");\n\t\t\tif (hasClass(element, \"show\")) {\n\t\t\t\tsetHtml(element, element.dataset.items);\n\t\t\t} else {\n\t\t\t\tsetHtml(element, element.dataset.short);\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, \"click\", \".tum-location-selectCity, .tum-location-selectCityAndPool\", (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tsetCookie(\"geo_resetLocation\", \"1\", 1);\n\t\t\tif (IsNeedYandexRequest) {\n\t\t\t\tsetCookie(\"geo_IsNeedYandexRequest\", \"1\", 1); //один раз установили через яндекс и все, дальше только по урле\n\t\t\t\tlocation.href = element.getAttribute(\"href\");//перезагрузку экрана делаем только при получении яндекса\n\t\t\t} else {\n\t\t\t\tlet popover = document.querySelector('.locationDetectPopover').closest('.popover');\n\t\t\t\ttoggleClass(popover, 'show', false);\n\t\t\t\ttoggleClass(popover, 'hide', false);\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, \"click\", \".restoreOldLocation\", (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tsetCookie(\"geo_resetLocation\", \"1\", 1);\n\t\t\tlocation.href = element.getAttribute(\"href\");\n\t\t});\n\n\t\taddEventDelegate(document, 'change', '.city-check input, .tum-head-ellipses input', element => {\n\t\t\tvar isNear = element.checked ? \"1\" : \"0\";\n\t\t\tvar parentCityID = element.dataset.parentcityid;\n\t\t\tvar citySubDomain = element.dataset.citysubdomain;\n\t\t\tthis.changeIsNear(isNear, parentCityID, citySubDomain);\n\t\t});\n\n\t\treturn loadPrecompiledTemplates(['location-popup']).then(() => {\n\t\t\tif (cookiesAreEmpty) {\n\t\t\t\tif (IsNeedYandexRequest) {\n\t\t\t\t\treturn this.getLocation();\n\t\t\t\t}\n\t\t\t\telse { \n\t\t\t\t\treturn this.getGeoData(\"Благовещенск\", null, null, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (forceLocationPopover) {\n\t\t\t\treturn ajaxSend({ url: '/selectregion/getlocationinfo', data: {} }).then(locationData => {\n\t\t\t\t\tif (!locationData) return;\n\t\t\t\t\tvar name = locationData.name;\n\t\t\t\t\tif (locationData.cityID > 0 || locationData.citySubDomain || locationData.parentCityID) {\n\t\t\t\t\t\treturn this.getGeoData(name);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treturn this.getGeoData(\"\", name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.checkUrl();\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t});\n\t},\n\tchangeIsNear: function (isNear, parentCityID, citySubDomain) {\n\t\tvar cookieSubDomain = getCookie(\"geo_subDomain\");\n\n\t\tvar url = new URL(location.href);\n\t\tvar isDev = url.hostname.indexOf(\"dev.\") == 0 || url.hostname == \"localhost\";\n\n\t\tvar params = {};\n\t\turl.searchParams.forEach(function (value, key) {\n\t\t\tif (key == \"cityID\" || key == \"subDomain\" || key == \"isNear\") return;\n\t\t\tparams[key] = value;\n\t\t});\n\n\n\t\tif (cookieSubDomain) {\n\t\t\tif (!isDev) {\n\t\t\t\tif (url.hostname.split(\".\").length > 2) url.hostname = url.hostname.substring(url.hostname.indexOf(\".\") + 1);\n\t\t\t\turl.hostname = cookieSubDomain + \".\" + url.hostname;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparams.subDomain = cookieSubDomain;\n\t\t\t}\n\t\t}\n\n\t\tvar includePool = isNear == \"1\";\n\n\t\tif (includePool) {\n\t\t\tif (!citySubDomain && parentCityID != \"3\") {\n\t\t\t\tparams.cityID = parentCityID;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tparams.cityID = parentCityID;\n\t\t\tif (!citySubDomain && parentCityID != \"3\") params.isNear = \"0\";\n\t\t}\n\n\t\tsetCookie(\"geo_resetLocation\", \"1\", 1);\n\t\turl.search = Object.entries(params).map(e => e[0] + \"=\" + e[1]).join(\"&\");\n\n\t\tlocation.href = url.toString();\n\t},\n\tgetLocation: function () {\n\t\tlet self = this;\n\n\t\tif (location.href.toString().indexOf(\"/selectregion\") > -1) {\n\t\t\t//если сами указываем город, значит яндекс не нужен\n\t\t\tsetCookie(\"geo_IsNeedYandexRequest\", \"1\", 1);\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tfunction yandexLocationSuccess(e){\n\t\t\tif (e.locality && e.province1) {\n\t\t\t\treturn self.getGeoData(e.locality, e.province1, e.province2);\n\t\t\t} else {\n\t\t\t\treturn browserLocationFail();\n\t\t\t}\n\t\t}\n\n\t\tfunction browserLocationSuccess(e){\n\t\t\treturn getLocationFromYandex(e.coords.latitude, e.coords.longitude)\n\t\t\t.then(yandexLocationSuccess)\n\t\t\t.catch(browserLocationFail);\n\t\t}\n\n\t\tfunction browserLocationFail(){\n\t\t\treturn self.getGeoData(\"Благовещенск\", null, null, true);\n\t\t}\n\n\t\tif (!('geolocation' in navigator)){\n\t\t\treturn browserLocationFail();\n\t\t}\n\n\t\tfunction getCurrentPosition() {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tnavigator.geolocation.getCurrentPosition(resolve, reject);\n\t\t\t});\n\t\t}\n\n\t\treturn getCurrentPosition()\n\t\t.then(browserLocationSuccess)\n\t\t.catch(browserLocationFail);\n\t},\n\tgetGeoData: function (locality, province1, province2, permissionDenied) {\n\t\treturn ajaxSend({ url: \"/selectregion/getgeodata\", data: { locality: locality, province1: province1, province2: province2 } }).then(data => {\n\t\t\tif (data.result) {\n\t\t\t\treturn this.showLocationPopover(data, permissionDenied);\n\t\t\t}\n\t\t\treturn Promise.resolve();\n\t\t});\n\t},\n\tgetCurrentUrlWithoutRegion: function () {\n\t\tvar url = new URL(location.href);\n\n\t\tvar params = {};\n\t\turl.searchParams.forEach(function (value, key) {\n\t\t\tif (key == \"cityID\" || key == \"subDomain\" || key == \"isNear\") return;\n\t\t\tparams[key] = value;\n\t\t});\n\n\t\tif (url.hostname.split(\".\").length > 2 && url.hostname.indexOf(\"dev.\") != 0) url.hostname = url.hostname.substring(url.hostname.indexOf(\".\") + 1);\n\n\t\tif (params) { url.search = Object.entries(params).map(e => e[0] + \"=\" + e[1]).join(\"&\"); }\n\n\t\treturn url.toString();\n\t},\n\tshowLocationPopover: function (geoModel, permissionDenied) {\n\t\tif (tumarket.disablePopups) return Promise.resolve();\n\n\t\tif (!geoModel.citiesByLetter.length && !geoModel.regions.length) {\n\t\t\treturn this.getGeoData(\"Благовещенск\");\n\t\t}\n\n\t\tvar elem = tumGlobal.isMob() ? \".location-popover-mob\" : \".location-popover\";\n\n\t\tvar pageTypes = ['product', 'firm'];\n\n\t\tif (location.href.indexOf(pageTypes[0]) != -1) {\n\t\t\tif (this.options.urlReferrer == '') {\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t} else if (location.href.indexOf(pageTypes[1]) != -1) {\n\t\t\tif (this.options.urlReferrer == '') {\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t}\n\n\t\treturn new Promise(resolve => {\n\t\t\t$(elem).popover({\n\t\t\t\tcontainer: \"body\",\n\t\t\t\thtml: true,\n\t\t\t\tplacement: \"bottom\",\n\t\t\t\ttrigger: \"manual\",\n\t\t\t\tcontent: this.renderLocationPopover(geoModel, permissionDenied),\n\t\t\t\tsanitize: false\n\t\t\t}).on(\"shown.bs.popover\", function () {\n\t\t\t\tlet popover = document.querySelector(\".locationDetectPopover\").closest(\".popover\");\n\t\t\t\ttoggleClass(popover, 'locationDetectPopoverCont', true);\n\t\t\t}).on(\"hidden.bs.popover\", function () {\n\t\t\t\tresolve({ status: 'popover-closed' });\n\t\t\t});\n\t\n\t\t\t$(elem).popover(\"show\");\n\t\n\t\t\tsetTimeout(() => { \n\t\t\t\t$(elem).popover(\"hide\");\n\t\t\t\tajaxSend({ url: '/selectregion/getlocationinfo' }).then(geolocation => {\n\t\t\t\t\tif (!geolocation) return;\n\t\t\t\t\tsetCookie(\"geo_cityID\", geolocation.cityID, 30);\n\t\t\t\t\tsetCookie(\"geo_isNear\", geolocation.isNear ? 1 : 0, 30);\n\t\t\t\t\tsetCookie(\"geo_subDomain\", geolocation.subDomain, 30);\n\t\t\t\t\tsetCookie(\"geo_IsNeedYandexRequest\", 1, 30);\n\t\n\t\t\t\t\tif (this.invalidLocation) {\n\t\t\t\t\t\tlet correctUrl = this.getCorrectUrl(); \n\t\t\t\t\t\tif (location.href != correctUrl) {\n\t\t\t\t\t\t\tlocation.href = correctUrl;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, 5000);\n\t\t});\n\t},\n\trenderLocationPopover: function (geoModel) {\n\t\tvar isCity = false;\n\t\tvar cities = [];\n\t\tvar mainCities = [];\n\n\t\tif (geoModel.citiesByLetter.length) {\n\t\t\tisCity = true;\n\t\t\tcities = [].concat.apply([], geoModel.citiesByLetter.map(e => e.cities));\n\t\t\tmainCities = cities.filter(e => e.id == e.parentCityID);\n\t\t}\n\n\t\tlet city = null;\n\t\tlet cityRegion = null;\n\t\tlet region = null;\n\n\t\tif (isCity) {\n\t\t\tcity = cities[0];\n\t\t\tcityRegion = geoModel.regions.filter(e => e.id == city.regionInCouID);\n\t\t\tif (cityRegion.length) cityRegion = cityRegion[0];\n\t\t\tif (city.pool.length) city = city.pool[0];\n\t\t\tcity.url = this.getCityUrl(city, mainCities, geoModel.regions, true);\n\t\t}\n\t\telse {\n\t\t\tregion = geoModel.regions[0];\n\t\t\tregion.url = this.getRegionUrl(region);\n\t\t}\n\n\t\tthis.updateHeader(isCity ? city.name : region.name);\n\n\t\tlet oldLocation = getCookie('old_location');\n\t\tif (oldLocation) oldLocation = JSON.parse(oldLocation);\n\n\t\treturn getPrecompiledTemplate('location-popup')({\n\t\t\tcity, cityRegion, region, isCity, isNear: !!getCookie('geo_isNear'), \n\t\t\toldLocation: (isCity ? city.name : region.name) == oldLocation?.name ? null : oldLocation?.name,\n\t\t\toldSubdomain: oldLocation?.citySubDomain || oldLocation.subDomain,\n\t\t\toldCityID: oldLocation?.cityID\n\t\t});\n\t},\n\tupdateHeader: function (cityName) {\n\t\tsetHtml(\".tum-header-cityName\", cityName);\n\t\tempty(\".tum-header-citiesNearby\");\n\t\tsetProperty(\".city-check input, .tum-head-ellipses input\", \"checked\", true);\n\t},\n\tgetCityUrl: function (city, cities, regions, includePool) {\n\t\tvar url = new URL(location.href);\n\t\tvar isDev = url.hostname.indexOf(\"dev.\") == 0 || url.hostname == \"localhost\";\n\t\tvar mainCity = cities.filter(e => e.id == city.id || e.id == city.parentCityID);\n\t\tif (mainCity.length) mainCity = mainCity[0];\n\n\t\tvar isMainCityWithoutPool = !city.pool.length && city.id == city.parentCityID;\n\n\t\tvar params = {};\n\t\turl.searchParams.forEach(function (value, key) {\n\t\t\tif (key == \"cityID\" || key == \"subDomain\" || key == \"isNear\") return;\n\t\t\tparams[key] = value;\n\t\t});\n\n\t\tif (mainCity.domainName) {\n\t\t\tif (!isDev) {\n\t\t\t\tif (url.hostname.split(\".\").length > 2) url.hostname = url.hostname.substring(url.hostname.indexOf(\".\") + 1);\n\t\t\t\turl.hostname = mainCity.domainName + \".\" + url.hostname;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparams.subDomain = mainCity.domainName;\n\t\t\t}\n\n\t\t\tif (!includePool) {\n\t\t\t\tparams.cityID = city.сityID;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tvar region = regions.filter(e => e.id == city.regionInCouID);\n\t\t\tif (region.length) region = region[0];\n\t\t\tif (!isDev) {\n\t\t\t\tif (url.hostname.split(\".\").length > 2) url.hostname = url.hostname.substring(url.hostname.indexOf(\".\") + 1);\n\t\t\t\tif (city.id != 3 && city.parentCityID != 3) url.hostname = region.domainName + \".\" + url.hostname;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (city.id != 3 && city.parentCityID != 3) params.subDomain = region.domainName;\n\t\t\t}\n\n\t\t\tif (includePool) {\n\t\t\t\tif (city.parentCityID != 3) params.cityID = city.parentCityID;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparams.cityID = city.id;\n\t\t\t\tif (city.id != 3 && city.parentCityID != 3 && !isMainCityWithoutPool) params.isNear = \"0\";\n\t\t\t}\n\t\t}\n\n\t\tif (params) { url.search = Object.entries(params).map(e => e[0] + \"=\" + e[1]).join(\"&\"); }\n\n\t\treturn url.toString();\n\t},\n\tgetRegionUrl: function (region) {\n\t\tvar url = new URL(location.href);\n\t\tvar isDev = url.hostname.indexOf(\"dev.\") == 0 || url.hostname == \"localhost\";\n\n\t\tvar params = {};\n\t\turl.searchParams.forEach(function (value, key) {\n\t\t\tif (key == \"cityID\" || key == \"subDomain\" || key == \"isNear\") return;\n\t\t\tparams[key] = value;\n\t\t});\n\n\t\tif (!isDev) {\n\t\t\tif (url.hostname.split(\".\").length > 2) url.hostname = url.hostname.substring(url.hostname.indexOf(\".\") + 1);\n\t\t\turl.hostname = region.domainName + \".\" + url.hostname;\n\t\t}\n\t\telse {\n\t\t\tparams.subDomain = region.domainName;\n\t\t}\n\n\t\tif (params) { url.search = Object.entries(params).map(e => e[0] + \"=\" + e[1]).join(\"&\"); }\n\n\t\treturn url.toString();\n\t},\n\tcheckUrl: function () {\n\t\tvar urls = [\"/search-\", \"/category\", \"/catalog\"];\n\n\t\tif (urls.filter(e => location.href.toString().indexOf(e) > -1).length == 0) return;\n\n\t\tvar cookieCityID = getCookie(\"geo_cityID\");\n\t\tvar cookieSubDomain = getCookie(\"geo_subDomain\");\n\t\tvar cookieIsNear = getCookie(\"geo_isNear\");\n\n\t\tvar currentUrl = new URL(location.href);\n\t\tvar hasSubDomain = currentUrl.hostname.split('.').length > 2 || getUrlParameter(\"subDomain\");\n\n\t\tvar cityIDCheck = ((!cookieCityID || cookieCityID == \"3\") && !getUrlParameter(\"cityID\")) || (cookieCityID && getUrlParameter(\"cityID\") == cookieCityID);\n\t\tvar subDomainCheck = (!cookieSubDomain && !hasSubDomain) || (cookieSubDomain && (currentUrl.hostname.split(\".\")[0] == cookieSubDomain || getUrlParameter(\"subDomain\") == cookieSubDomain));\n\t\tvar isNearCheck = (!cookieIsNear && !getUrlParameter(\"isNear\")) || (cookieIsNear && getUrlParameter(\"isNear\") == cookieIsNear);\n\n\t\tif (!(cityIDCheck && subDomainCheck && isNearCheck)) {\n\t\t\tlet correctUrl = this.getCorrectUrl();\n\t\t\tif (location.href != correctUrl) history.replaceState({}, null, correctUrl);\n\t\t}\n\t},\n\tgetCorrectUrl: function(){\n\t\tvar citySubDomain = document.querySelector(\".city-check input\")?.dataset.citysubdomain;\n\n\t\tvar cookieCityID = getCookie(\"geo_cityID\");\n\t\tvar cookieSubDomain = getCookie(\"geo_subDomain\");\n\t\tvar cookieIsNear = getCookie(\"geo_isNear\");\n\n\t\tvar url = new URL(location.href);\n\t\tvar isDev = url.hostname.indexOf(\"dev.\") == 0 || url.hostname == \"localhost\";\n\n\t\tvar params = {};\n\t\turl.searchParams.forEach(function (value, key) {\n\t\t\tif (key == \"cityID\" || key == \"subDomain\" || key == \"isNear\") return;\n\t\t\tparams[key] = value;\n\t\t});\n\n\t\tif (cookieSubDomain) {\n\t\t\tif (!isDev) {\n\t\t\t\t// hostname бесполезно исправлять, т.к. браузер не даст\n\n\t\t\t\t//if (url.hostname.split(\".\").length > 2) url.hostname = url.hostname.substring(url.hostname.indexOf(\".\") + 1);\n\t\t\t\t//url.hostname = cookieSubDomain + \".\" + url.hostname;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparams.subDomain = cookieSubDomain;\n\t\t\t}\n\t\t}\n\n\t\tvar includePool = cookieIsNear == \"1\";\n\n\t\tif (cookieCityID && cookieCityID != \"0\") {\n\t\t\tif (includePool) {\n\t\t\t\tif (!citySubDomain && cookieCityID != \"3\") {\n\t\t\t\t\tparams.cityID = cookieCityID;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparams.cityID = cookieCityID;\n\t\t\t\tif (cookieCityID != \"3\" && !citySubDomain && cookieIsNear) params.isNear = cookieIsNear;\n\t\t\t}\n\t\t}\n\n\t\turl.search = Object.entries(params).map(e => e[0] + \"=\" + e[1]).join(\"&\");\n\n\t\treturn url.toString();\n\t}\n};\n\nexport default locationDetect;","import * as $ from \"jquery\";\nimport \"../css/modules/tu.m/CookiesNotice.css\";\nimport { getCookie, setCookie } from \"./global/cookie\";\nimport { addEventDelegate } from \"./global/dom\";\n\nvar cookNot = {\n\toptions: {\n\t\tcookiePrefix: 'agreement-cookies-accepted',\n\t},\n\tinit: function (options) {\n\t\tcookNot.options = $.extend(cookNot.options, options);\n\n\t\tvar cookData = getCookie(cookNot.options.cookiePrefix);\n\n\t\tif (cookData && cookData != 'true') {\n\t\t\t$('.tum-agreement-cookies-window').removeClass('d-none');\n\t\t}\n\n\t\taddEventDelegate(document, 'click', '.tum-agreement-cookie-ok', () => {\n\t\t\tsetCookie(cookNot.options.cookiePrefix, \"true\", 90);\n\t\t\t$('.tum-agreement-cookies-window').addClass('d-none');\n\t\t});\n\t}\n};\n\nexport default cookNot;","import * as $ from \"jquery\";\n\nimport { addEventDelegate } from \"../global/dom\";\n\nvar contentMistakes = {\n\tinit: function () {\n\t\t$(document).on('mouseup touchend', 'body', function(e) {\n\t\t\tif ($(e.target).hasClass(\"mistakeRef\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ($(e.target).hasClass('hideErrorObject')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ($(e.target).hasClass('tum-sendErrorIcon')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcontentMistakes.showErrorObject();\n\t\t});\n\n\t\taddEventDelegate(document, 'click', 'body', (element, e) => {\n\t\t\tvar el = $(e.target).parent();\n\t\t\tif (!contentMistakes.getSelectionText() && !$(el).hasClass('tum-errorObject')) {\n\t\t\t\tcontentMistakes.removePopovers();\n\t\t\t\t$('.tum-error-container').find('.msg').addClass('d-none');\n\t\t\t}\n\t\t});\n\t\t\n\t\taddEventDelegate(document, 'click', '.hideErrorObject, .hideTumErrorObject', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$(element).closest(\".tum-errorObject\").attr(\"hidden\", \"\");\n\t\t\t$(element).closest('.msg').addClass('d-none');\n\t\t\tcontentMistakes.unselectAll();\n\t\t});\n\t\t\n\t\taddEventDelegate(document, 'click', '.tum-sendErrorIcon', (element, e) => {\n\t\t\te.preventDefault();\n\t\t\t$(element).closest('.tum-error-container').find('.msg').removeClass('d-none');\n\t\t\t//contentMistakes.removePopovers();\n\t\t});\n\t},\n\tunselectAll: function () {\n\t\tif (document.selection && document.selection.empty) {\n\t\t\tdocument.selection.empty();\n\t\t}\n\t\telse if (window.getSelection) {\n\t\t\tvar sel = window.getSelection();\n\t\t\tif (sel && sel.removeAllRanges)\n\t\t\t\tsel.removeAllRanges();\n\t\t}\n\t},\n\tgetSelectionParentElement: function () {\n\t\tvar parentEl = null, sel;\n\t\tif (window.getSelection) {\n\t\t\tsel = window.getSelection();\n\t\t\tif (sel.rangeCount) {\n\t\t\t\tparentEl = sel.getRangeAt(0).commonAncestorContainer;\n\t\t\t\tif (parentEl.nodeType != 1) {\n\t\t\t\t\tparentEl = parentEl.parentNode;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ((sel = document.selection) && sel.type != \"Control\") {\n\t\t\tparentEl = sel.createRange().parentElement();\n\t\t}\n\t\treturn parentEl;\n\t},\n\tgetSelectionText: function () {\n\t\tvar text = \"\";\n\t\tvar activeEl = document.activeElement;\n\t\tvar activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null;\n\t\tif (\n\t\t\t(activeElTagName == \"button\") ||(activeElTagName == \"textarea\") || (activeElTagName == \"input\" &&\n\t\t\t\t/^(?:text|search|password|tel|url)$/i.test(activeEl.type)) &&\n\t\t\t(typeof activeEl.selectionStart == \"number\")\n\t\t) {\n\t\t\ttext = '';//activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);\n\t\t} else if (window.getSelection) {\n\t\t\ttext = window.getSelection().toString();\n\t\t}\n\t\treturn text;\n\t},\n\t_getItemID: function($elem){\n\t\tvar res = $elem.attr('data-error-itemid');\n\t\tif (!res && $elem.hasClass('b-product')) {\n\t\t\tres = $elem.attr('data-stat-productid') || $elem.attr('data-stat-firmid');\n\t\t}\n\t\treturn res;\n\t},\n\tshowErrorObject: function () { //x,y\n\t\tif (contentMistakes.getSelectionText()) {\n\t\t\tvar selectionElement = contentMistakes.getSelectionParentElement();\n\t\t\tif ($(selectionElement).is(\"input, textarea\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (selectionElement) {\n\t\t\t\tvar mainParent = $(selectionElement).closest('[data-error-object]');\n\t\t\t\tvar itemID = this._getItemID(mainParent);\n\t\t\t\tvar errorObject = mainParent;\n\t\t\t\tif (errorObject) {\n\t\t\t\t\tvar s = `
выделено:
${contentMistakes.getSelectionText()}
`;\n\t\t\t\t\tvar params = '?text=' + contentMistakes.getSelectionText() + '&errorObject=' + mainParent.attr('data-error-object') + '&returnUrl=' + location.href + (itemID ? \"&itemID=\" + itemID : '');\n\t\t\t\t\ts += `
Ошибка или Предложение?
Сообщите нам|Закрыть
`;\n\t\t\t\t\t$('.tum-errorObject .msg').html(s);\n\t\t\t\t\t$('.tum-errorObject').removeAttr('hidden');\n\t\t\t\t}\n\t\t\t}\n\t\t} \n\t},\n\tremovePopovers: function () {\n\t\tif ($('.tum-errorObject').length > 0) {\n\t\t\t$('.tum-errorObject').each(function () {\n\t\t\t\t$(this).attr(\"hidden\", \"\");\n\t\t\t});\n\t\t}\n\t\t\n\t}\n};\n\nexport default contentMistakes;","import * as $ from \"jquery\";\nimport tumGlobal from \"./global\";\nimport { addEventDelegate } from \"./global/dom\";\n\nvar backToTop = {\n\tinit: function () {\n\t\tbackToTop.PageUp($(\".tum-to-bottom\"));\n\n\t\taddEventDelegate(document, 'click', '.tum-to-bottom', () => {\n\t\t\tbackToTop.hideActionModal(false);\n\t\t\treturn false;\n\t\t});\n\n\t\taddEventDelegate(document, 'click', '.tum-to-top', () => {\n\t\t\tbackToTop.hideActionModal(true);\n\t\t\t$('body,html').animate({\n\t\t\t\tscrollTop: 0\n\t\t\t}, 1000);\n\t\t\treturn false;\n\t\t});\n\n\t\taddEventDelegate(document, 'click', 'body', () => {\n\t\t\tif (!$('.tum-action-container .modal-actions').hasClass('d-none')) {\n\t\t\t\tbackToTop.hideActionModal(true);\n\t\t\t}\n\t\t});\n\t},\n\tPageUp: function (btn) {\n\t\tvar limit = $(window).height();\n\n\t\t$(window).on('scroll', function () {\n\t\t\tif ($(this).scrollTop() > limit) {\n\t\t\t\tif (tumGlobal.isMob() && $('.header-floating.show').length) {\n\t\t\t\t\t$(btn).addClass('mob-floating-header-shown')\n\t\t\t\t}\n\n\t\t\t\t$(btn).fadeIn();\n\t\t\t} else {\n\t\t\t\t$(btn).fadeOut();\n\t\t\t}\n\t\t\tif (!$('.tum-action-container .modal-actions').hasClass('d-none')) {\n\t\t\t\tbackToTop.hideActionModal(true);\n\t\t\t}\n\t\t});\n\t},\n\thideActionModal: function (hide) {\n\t\t$('.tum-action-container .modal-actions').toggleClass('d-none', hide);\n\t}\n};\n\nexport { backToTop };","/* global tumarket */\n\nimport { getCookie, setCookie } from \"./global/cookie\";\nimport { closeDialog, showDialog } from \"./global/dialog\";\nimport { show } from \"./global/dom\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"./global/templates\";\nimport { isMob } from \"./global/util\";\n\nfunction showWelcomeDialog(force, data, timerContext){\n if (!data) data = {};\n if (!timerContext) timerContext = 'default';\n\n let timerContextKey = `lastBannerShown_${timerContext}`;\n\n data.city = tumarket.general.location.name;\n let interval = null;\n\n let key = `disableBanner2_${data.id}`;\n let bannerCloseInterval = tumarket.bannerCloseInterval;\n\n let _lastBannerShown = localStorage.getItem(timerContextKey);\n let lastBannerShown = null;\n if (_lastBannerShown) lastBannerShown = new Date(Number(_lastBannerShown));\n if (lastBannerShown && (new Date() - lastBannerShown) <= 60000) {\n show('[data-show-if-no-popup]');\n return;\n }\n\n let disable = getCookie(key);\n\n if (!force && disable) {\n show('[data-show-if-no-popup]');\n return;\n }\n\n return loadPrecompiledTemplates(['welcome-dialog']).then(() => {\n showDialog({\n content: getPrecompiledTemplate('welcome-dialog')(data),\n modal: 'welcome-dialog',\n pinToBottom: isMob(),\n onClosed: () => {\n setCookie(key, 1, bannerCloseInterval/24);\n clearInterval(interval);\n },\n onShown: () => {\n let disableButton = document.querySelector('#welcome-dialog [data-welcome-disable]');\n disableButton?.addEventListener('click', () => {\n setCookie(key, 1, bannerCloseInterval/24);\n closeDialog('#welcome-dialog');\n });\n\n let timerElement = document.querySelector('[data-welcome-timer]');\n let secondsLeft = 30;\n if (timerElement) {\n timerElement.innerHTML = secondsLeft;\n \n interval = setInterval(() => {\n secondsLeft--;\n timerElement.innerHTML = secondsLeft;\n\n if (!secondsLeft) {\n clearInterval(interval);\n closeDialog('#welcome-dialog');\n }\n }, 1000);\n }\n\n localStorage.setItem(timerContextKey, Number(new Date()));\n },\n showHeader: false,\n showFooter: false,\n size: 'sm',\n noBackdrop: true\n })\n });\n}\n\nexport { showWelcomeDialog };","import { getCookie } from \"./global/cookie\";\nimport { addEventDelegate, appendHtml, show } from \"./global/dom\";\nimport { ajaxSend } from \"./global/fetch\";\nimport { initTuPopover } from \"./global/popover\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"./global/templates\";\nimport { initIntersectionObserver } from \"./intersectionObserver\";\nimport tu_slider from \"./slider\";\nimport { tumStats } from \"./statistics\";\nimport { showWelcomeDialog } from \"./welcome-dialog\";\n\nfunction getBanners(bannerIds, contextCode) {\n return ajaxSend({ url: '/requests/getBanners', data: { bannerIds, contextCode } });\n}\n\nfunction initBannerSliders() {\n for (let slider of document.querySelectorAll('.banners-slider')) {\n let initialSize = Number(slider.getAttribute('data-initial-size'));\n let totalIds = slider.getAttribute('data-ids').split(',');\n\n tu_slider.create({\n container: slider,\n totalCount: totalIds.length,\n getItems: callback => {\n let bannerIds = totalIds.slice(initialSize);\n loadPrecompiledTemplates(['banners-slider-item']).then(() => {\n return getBanners(bannerIds);\n }).then(data => {\n if (data.result) {\n let template = getPrecompiledTemplate('banners-slider-item');\n let newItems = data.value?.banners?.map(e => template(e)).join(\"\");\n\n if (!newItems) return;\n\n appendHtml(slider.querySelector('.slider-list'), newItems);\n callback();\n initTuPopover();\n initIntersectionObserver();\n }\n });\n },\n mobLoadMoreChevronDirection: 'right',\n autoCycling: true\n });\n }\n\n addEventDelegate(document, 'click', '.banner-expand', element => {\n let id = Number(element.closest('.banner-slide').getAttribute('data-bannerid'));\n\n getBanners([id], \"for_popup\").then(data => {\n showWelcomeDialog(true, data.value.banners[0]);\n });\n });\n}\n\nfunction showRandomBannerAsPopup(timerContext){\n let popupIds = [];\n for (let slider of document.querySelectorAll('.banners-slider')) {\n popupIds = popupIds.concat(slider.getAttribute('data-popup-ids').split(',').filter(e => e).map(Number));\n }\n\n let availablePopup = popupIds.find(e => !getCookie(`disableBanner2_${e}`));\n if (!availablePopup) {\n show('[data-show-if-no-popup]');\n return;\n } \n\n getBanners([availablePopup], \"for_popup\").then(data => {\n let banner = data.value.banners[0];\n showWelcomeDialog(false, banner, timerContext);\n\n tumStats.logEvent({\n productID: banner.stat_product_id,\n firmID: banner.stat_firm_id,\n ctuID: banner.stat_ctu_id,\n objectType: \"popupBanner\",\n eventType: \"popup\",\n objectID: banner.id\n });\n });\n}\n\nexport { initBannerSliders, showRandomBannerAsPopup };","/* global tumarket */\n\nimport * as $ from \"jquery\";\nimport \"bootstrap/js/dist/tab\";\nimport \"bootstrap/js/dist/collapse\";\nimport \"bootstrap/js/dist/carousel\";\nimport * as htmx from \"htmx.org\";\n\n$.event.special.touchstart = {\n\tsetup: function (_, ns, handle) {\n\t\tthis.addEventListener(\"touchstart\", handle, { passive: !ns.includes(\"noPreventDefault\") });\n\t}\n};\n$.event.special.touchmove = {\n\tsetup: function (_, ns, handle) {\n\t\tthis.addEventListener(\"touchmove\", handle, { passive: !ns.includes(\"noPreventDefault\") });\n\t}\n};\n$.event.special.wheel = {\n\tsetup: function (_, ns, handle) {\n\t\tthis.addEventListener(\"wheel\", handle, { passive: true });\n\t}\n};\n$.event.special.mousewheel = {\n\tsetup: function (_, ns, handle) {\n\t\tthis.addEventListener(\"mousewheel\", handle, { passive: true });\n\t}\n};\n\nimport notifications from \"../notifications.js\";\nimport tumPwa from \"../pwa.js\";\nimport hints from \"../hints/hints.js\";\nimport locationDetect from \"../location.js\";\nimport { tumStats } from \"../statistics.js\";\nimport cookNot from \"../CookiesNotice.js\";\nimport searchSuggestions from \"../search/searchSuggestions.js\";\nimport tumGlobal from \"../global.js\";\nimport tumCommon from \"../common.js\";\nimport contentMistakes from \"../userContentMistakes/reportErrorWidget.js\";\nimport { initSearchWidget } from \"../navbar/searchSelect.js\";\nimport { initCookies, setCookie } from \"../global/cookie\";\nimport { handleError, initErrorHandling } from \"../global/debug\";\nimport { initLazyModules, refreshLazyModules } from \"../global/lazyHub\";\nimport { backToTop } from \"../backToTop.js\";\nimport { editMode } from \"../editmode.js\";\nimport { initReadmore } from \"../global/readmore\";\n\n//css\nimport \"../../css/lib/bootstrap.scss\";\n\nimport \"../../fonts/inter/inter.css\";\n\nimport \"../../css/modules/tu.m/base.css\";\nimport \"../../css/modules/tu.m/navbar/search.css\";\nimport \"../../css/modules/search/bottomActions.css\";\n\nimport \"../../css/new-catalog-template/css/style.css\";\nimport \"../../css/new-catalog-template/css/responsive.css\";\n\nimport \"../../css/global/global.css\";\nimport \"../../css/modules/banners/banners.css\";\n\nimport \"../../js/util/switchFrames/switchFrames.css\";\n\nimport { addEvent, addEventDelegate, toggleClass } from \"../global/dom\";\nimport { initDialogs, initTuModal, showAlert, showDialog } from \"../global/dialog\";\nimport { openProgressbar } from \"../global/progressbar\";\nimport { initConsoleHandler } from \"../browserConsole.js\";\nimport { initBannerSliders, showRandomBannerAsPopup } from \"../banners.js\";\nimport { initTooltips, initTuPopover } from \"../global/popover.js\";\nimport { getSessionLength, initSessionTimer } from \"../global/sessionTimer.js\";\nimport { getCurrentTimeForInput, goBack, isIos } from \"../global/util.js\";\n\ninitConsoleHandler();\ninitSessionTimer();\n\nfunction initHtmx() {\n\thtmx.onLoad(e => {\n\t\tinitTuPopover(e);\n\t\trefreshLazyModules();\n\t\tdocument.body.dispatchEvent(new Event(\"tum.component.loaded\"));\n\n\t\tlet popover = e.closest('.popover');\n\t\tif (popover) {\n\t\t\tlet popoverElement = $(popover).data(\"bs.popover\").element;\n\t\t\t$(popoverElement).popover('update');\n\t\t}\n\t});\n\n\t//иногда почему-то сразу не отрабатывает htmx при загрузке страницы\n\thtmx.process(document.body);\n}\n\nfunction showBanner(){\n\tlet timerContext = tumarket.general.pageType == 'home' ? 'home' : 'default';\n\tlet sessionLength = getSessionLength();\n\tif (sessionLength > 5) {\n\t\tshowRandomBannerAsPopup(timerContext);\n\t} else {\n\t\tsetTimeout(() => showRandomBannerAsPopup(timerContext), 15000);\n\t}\n}\n\nwindow.addEventListener('load', () => {\n\tinitErrorHandling();\n\tinitCookies({ version: tumarket.cookieVersion, domain: tumarket.cookieDomain });\n\tinitLazyModules();\n\tinitDialogs();\n\tinitTuModal();\n\tinitReadmore();\n\tinitTooltips();\n\tinitSearchWidget();\n\t\n\tif (tumarket.isAuthenticated) {\n\t\tnotifications.init();\n\t}\n\n\ttumCommon.init();\n\n\ttumPwa.init({\n\t\tisEmployee: tumarket.isEmployee\n\t});\n\n\thints.init();\n\n\tbackToTop.init();\n\n\tlocationDetect.init({\n\t\turlReferrer: tumarket.urlReferrer\n\t}).then(data => {\n\t\t//баннеры показываются только если не было поповера геолокации\n\t\tif (data?.status == 'popover-closed') {\n\t\t\treturn;\n\t\t}\n\n\t\tshowBanner();\n\t});\n\n\tcookNot.init();\n\n\ttumStats.init({\n\t\turlReferrer: tumarket.urlReferrer\n\t});\n\n\tsearchSuggestions.init();\n\n\taddEventDelegate(document, 'click', '.tum-shared', (element, e) => {\n\t\te.preventDefault();\n\t\tif ('share' in navigator) {\n\t\t\tvar data = {\n\t\t\t\ttitle: window.document.title,\n\t\t\t\ttext: window.document.title,\n\t\t\t\turl: location.href\n\t\t\t};\n\n\t\t\tnavigator.share(data).catch(() => {});\n\t\t}\n\t\telse {\n\t\t\ttumGlobal.copyToClipboard(location.href);\n\t\t\tshowAlert('Ссылка скопирована в буфер обмена', { type: 'info' });\n\t\t}\n\t});\n\n\taddEventDelegate(document, 'click', '.resize-textarea-down', element => {\n\t\tvar textarea = element.previousElementSibling.previousElementSibling;\n\t\ttextarea.style.height = `${textarea.offsetHeight + 20}px`;\n\t});\n\n\taddEventDelegate(document, 'click', '.resize-textarea-up', element => {\n\t\tvar textarea = element.previousElementSibling;\n\t\tvar height = textarea.offsetHeight;\n\t\tif ((height - 20) > 50) {\n\t\t\ttextarea.style.height = `${height - 20}px`;\n\t\t}\n\t});\n\n\tif (tumarket.searchWidget.searchSelectOption) {\n\t\ttumarket.searchWidget.searchSelectOptionsList.find(e => e.code == tumarket.searchWidget.searchSelectOption.code).selected = true;\n\t} else {\n\t\tlet isOffers = ['offers', 'offers-edit'].includes(tumarket.pageType);\n\t\ttumarket.searchWidget.searchSelectOptionsList.find(e => !e.pageType || (isOffers && e.pageType == 'offers')).selected = true;\n\t}\n\n\tcontentMistakes.init();\n\teditMode.init();\n\n\tif (tumarket.isCourier && tumGlobal.isMob()) {\n\t\timport(\"../delivery/courierLocation.js\").then(({ courierLocation }) => {\n\t\t\tcourierLocation.init();\n\t\t});\n\t}\n\n\tinitBannerSliders();\n\n\t\n\n\tif (tumarket.error) {\n showAlert(tumarket.error, { type: 'danger2' });\n }\n\n\tif (isIos()) {\n\t\tdocument.body.classList.add('ios');\n\t}\n\n\tinitHtmx();\n\n\taddEventDelegate(document, 'click', '[data-history-back]', goBack);\n\n\twindow.$ = $;\n\twindow.setCookie = setCookie;\n\twindow.showDialog = showDialog;\n\twindow.showAlert = showAlert;\n\twindow.handleError = handleError;\n\twindow.addEvent = addEvent;\n\twindow.openProgressbar = openProgressbar;\n\twindow.toggleClass = toggleClass;\n\twindow.getDate = getCurrentTimeForInput;\n\twindow.addEventDelegate = addEventDelegate;\n\twindow.htmx = htmx;\n});\n","/* global tumarket */\n\nimport * as $ from \"jquery\";\nimport \"bootstrap/js/dist/modal\";\nimport { getCookie, setCookie } from \"../global/cookie\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"../global/templates\";\n\n//из-за того, что код18+ может вызываться из разных мест и иногда одновременно, нужно проверять, чтобы не запустить лишний раз\n//и не было конфликтов в логике\n\n//запущена ли сейчас проверка на наличие взрослых товаров\nlet checkRunning = false;\n\n//показывается ли сейчас модалка с предупреждением\nlet modalShown = false;\n\nfunction isCtuIgnoredAdulthood(ctuIDs) {\n let ignoreCheck = false;\n let url = location.pathname;\n if (url.indexOf('/category/') != -1 || url.indexOf('/offers') != -1) {\n if (url.indexOf('/category/') != -1) {\n $('._adult-product').parent().show();\n return true;\n }\n\n tumarket.adulthoodIDs = tumarket.adulthoodIDs || [];\n //собираем кту, которые в разоре и по аяксу\n var initCtuIDs = $('.b-firm-block-header.open, .b-firm-block-header.panelClose').map(function () {\n return Number($(this).attr('data-itemid'));\n });\n\n ctuIDs = ctuIDs || []; //кту по аяксу\n $.each(initCtuIDs, function (i, el) {\n if (ctuIDs.indexOf(el) == -1)\n ctuIDs.push(el);\n });\n\n //кту со страницы, которые относятся к запрету\n let ktuAdultCount = ctuIDs.filter(el => tumarket.adulthoodIDs.indexOf(el) > -1).length;\n\n //кту со страницы, которые без запрета\n let ktuNotAdult = [];\n $.each(ctuIDs, function (i, el) {\n if (ktuNotAdult.indexOf(el) == -1 && tumarket.adulthoodIDs.indexOf(el) == -1) {\n ktuNotAdult.push(el);\n }\n });\n\n /*\n * Если в компании 2 категории и они 18+, чекбокс так же не берется во внимание. \n * А вот если у компании 3 категории(2 - 18 +, а одна разрешенная,)\n * то тогда чекбокс берем во внимание и карточки скрываются.\n */\n ignoreCheck = (ktuAdultCount == ktuNotAdult.length)\t|| !ktuNotAdult.length;\n //показываем ТУ в КТУ которые выведены без аякса\n if (ignoreCheck) $('._adult-product').parent().show();\n }\n \n return ignoreCheck;\n}\n\nfunction toggleAdultProducts(hide, ignoreCheck) {\n if (ignoreCheck) return;\n\n if (hide) {\n $('._adult-product:not(.tu-adult-product)').parent().hide();\n //для большой карточки ТУ запрещаем добавить в корзину и заказать\n if ($('.addToCartBlock').length) {\n $('.addToCartBlock').addClass('adult-product-tu');\n }\n $('.restrict-msg').remove();\n } else {\n $('._adult-product').parent().show();\n $('.restrict-msg').remove();\n }\n\n let icon = `\n \n \n \n +\n `;\n\n let msg = `\n
\n ${icon} Ограничение по возрасту\n
`;\n\n $('.b-footer-menu').prepend(msg);\n}\n\nfunction renderAdultWarning(data){\n $('.adulthood-modal').remove();\n\n return loadPrecompiledTemplates(['adultContentWarning']).then(() => {\n var html = getPrecompiledTemplate('adultContentWarning')(data);\n $('body').append(html);\n });\n}\n\nfunction showAdultWarning(important, ignoreCheck) {\n if (modalShown || checkRunning) return;\n\n let pageHasAdultProducts = !!$('._adult-product, ._adult-product_shown').length;\n if (!pageHasAdultProducts) return;\n\n checkRunning = true;\n\n let cookiesExist = getCookie('adult-hideAdult') !== '' && getCookie('adult-confirmedOver18') !== '';\n let hideAdultProducts = getCookie('adult-hideAdult') == \"true\";\n let userConfirmedAdult = getCookie('adult-confirmedOver18') == \"true\";\n \n if (cookiesExist && !important) {\n if (userConfirmedAdult) {\n $('._adult-product').removeClass('_adult-product').addClass('_adult-product_shown');\n $('.addToCartBlock').removeClass('adult-product-tu').addClass('adult-product-tu_shown');\n }\n\n toggleAdultProducts(hideAdultProducts, ignoreCheck);\n checkRunning = false;\n return;\n }\n\n if (!important) {\n if (cookiesExist) {\n checkRunning = false;\n return;\n } \n\n var adultProductsExist = $('._adult-product').not('#visitedBlock ._adult_product').length > 0;\n if (!adultProductsExist) { \n checkRunning = false;\n return;\n }\n }\n\n modalShown = true;\n renderAdultWarning({ hideAdult: hideAdultProducts, userIsAdult: (cookiesExist && userConfirmedAdult) || false, cookiesExist }).then(() => {\n let $modal = $('.adulthood-modal');\n\n $('.adultWarning-confirmOver18').on('click', () => {\n setCookie('adult-confirmedOver18', true);\n setCookie('adult-hideAdult', false);\n \n $modal.modal('hide');\n toggleAdultProducts(false, ignoreCheck);\n\n $('._adult-product').removeClass('_adult-product').addClass('_adult-product_shown');\n $('.addToCartBlock').removeClass('adult-product-tu').addClass('adult-product-tu_shown');\n });\n\n $('.adultWarning-close').on('click', () => {\n let hideAdult = $('.adultWarning-hideAdult').prop('checked');\n setCookie('adult-confirmedOver18', false);\n setCookie('adult-hideAdult', hideAdult);\n \n let isIgnore = isCtuIgnoredAdulthood();\n toggleAdultProducts(hideAdult, isIgnore);\n\n $('._adult-product_shown').removeClass('_adult-product_shown').addClass('_adult-product');\n $('.addToCartBlock_shown').removeClass('adult-product-tu_shown').addClass('adult-product-tu');\n });\n\n $modal.on('hidden.bs.modal', () => modalShown = false);\n\n $modal.modal('show');\n });\n\n checkRunning = false;\n}\n\nexport { showAdultWarning, isCtuIgnoredAdulthood };\n","/* global tumarket */\n\nimport * as $ from \"jquery\";\nimport \"bootstrap/js/dist/collapse\";\nimport tumGlobal from \"../global.js\";\nimport { ajaxSend } from \"../global/fetch\";\nimport searchHistory from \"../searchHistory.js\";\nimport { closeProgressbar, openProgressbar } from \"../global/progressbar\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"../global/templates\";\nimport { addEventDelegate, hide, setHtml, toggleClass } from \"../global/dom\";\n\nimport \"../../css/global/searchMenu.css\";\nimport { searchWidgets } from \"../navbar/searchSelect.js\";\nimport { refreshLazyModules } from \"../global/lazyHub.js\";\nimport { setCookie } from \"../global/cookie.js\";\n\nvar searchSuggestions = {\n\toptions: {\n\t\turl: {\n\t\t\tgetSearchSuggestions: \"/search/getSearchSuggestions\",\n\t\t},\n\t\tcontainer: \".searchWidget .suggestions\",\n\t\tsearchField: \".searchWidget input\"\n\t},\n\tdelayMs: 500,\n\tdelayTimeoutId: null,\n\t/** @type {HTMLElement} */\n\tcontainer: null,\n\ttemplate: null,\n\tinit: function(options){\n\t\tObject.assign(this.options, options);\n\t\tthis.initCallbacks();\n\t},\n\tgetQuery: function(){\n\t\treturn document.querySelector(this.options.searchField).value;\n\t},\n\tstate: {\n\t\tlastQuery: \"\",\n\t\tcatalogItems: [],\n\t\tpreviousCatalogItems: [],\n\t\tcurrentCatalogId: 0,\n\t\tpreviousCatalogName: \"\",\n\t\tcurrentCatalogName: \"\"\n\t},\n\tinitCallbacks: function(){\n\t\tvar self = this;\n\n\t\tif (!self.options.searchField) return;\n\n\t\tthis.container = document.querySelector(this.options.container);\n\n\t\taddEventDelegate(document, 'click input', self.options.searchField, element => {\n\t\t\tthis._showSuggestions(element.value);\n\t\t});\n\n\t\ttumGlobal.onClickOutside(`${this.options.container}, ${this.options.searchField}`, () => this.close());\n\n\t\taddEventDelegate(document, 'click', '.searchSuggestionLink', element => {\n\t\t\tsearchHistory.add(element.dataset.query, element.dataset.type);\n\t\t\topenProgressbar()\n\t\t\tsetTimeout(() => closeProgressbar(), 2000);\n\t\t});\n\n\t\taddEventDelegate(document, 'keydown', self.options.searchField, (element, e) => {\n\t\t\tif (e.key == \"ArrowDown\" && this.container) {\n\t\t\t\te.preventDefault();\n\t\t\t\tdocument.querySelector(\".searchSuggestionItem a\").focus();\n\t\t\t}\n\t\t});\n\n\t\taddEventDelegate(document, 'keydown', '.searchSuggestionItem', (element, e) => {\n\t\t\tlet items = [...this.container.querySelectorAll('.searchSuggestionItem')];\n\t\t\tlet itemIndex = items.indexOf(element);\n\n\t\t\tif (e.key == 'ArrowDown') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (items.length == itemIndex + 1) return;\n\t\t\t\tlet item = items[itemIndex + 1];\n\t\t\t\titem.querySelector('a').focus();\n\t\t\t}\n\n\t\t\tif (e.key == \"ArrowUp\") {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (itemIndex == 0){\n\t\t\t\t\tdocument.querySelector(this.options.searchField).focus();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet item = items[itemIndex - 1];\n\t\t\t\titem.querySelector('a').focus();\n\t\t\t}\n\t\t});\n\n\t\t$(document).on('show.bs.dropdown', () => this.close());\n\n\t\taddEventDelegate(this.container, 'click', '.catalog-showMore', element => {\n\t\t\t$('.moreCatalogItems', this.container).collapse('show');\n\t\t\ttoggleClass(element, 'd-none d-flex');\n\t\t});\n\n\t\taddEventDelegate(this.container, 'click', '.catalog-expand', element => {\n\t\t\tlet id = element.closest('.tu-catalog-items').dataset.id;\n\t\t\tthis.toggleCatalogChildren(id);\n\t\t});\n\n\t\taddEventDelegate(this.container, 'click', '.searchHistory-clear', () => {\n\t\t\tsearchHistory.clear();\n\t\t\thide(this.container.querySelector('.searchMenu-history'));\n\t\t});\n\n\t\taddEventDelegate(this.container, 'click', '.searchButton', () => searchWidgets.main.sendQuery());\n\n\t\taddEventDelegate(this.container, 'click', '.searchHistory-item', element => {\n\t\t\tlet query = element.dataset.query;\n\t\t\tlet type = element.dataset.type;\n\t\t\tsearchWidgets.main.search(query, type);\n\t\t});\n\n\t\taddEventDelegate(this.container, 'change', '[data-use-catalog-grid]', element => {\n\t\t\tthis.state.useCatalogGrid = element.checked;\n\t\t\tsetCookie(\"useMobCatalogGrid\", element.checked, 30);\n\n\t\t\tthis.state.currentCatalogId = 0;\n\t\t\tthis.state.currentCatalogName = \"\";\n\t\t\tthis.state.previousCatalogId = 0;\n\t\t\tthis.state.previousCatalogName = \"\";\n\t\t\tif (this.state.previousCatalogItems.length) {\n\t\t\t\tthis.state.catalogItems = this.state.previousCatalogItems[0].items;\n\t\t\t\tthis.state.previousCatalogItems = [];\n\t\t\t}\n\n\t\t\tthis.update();\n\t\t});\n\n\t\taddEventDelegate(this.container, 'click', '[data-catalog-load]', element => {\n\t\t\tlet id = Number(element.dataset.catalogLoad);\n\t\t\t\n\t\t\treturn import(\"../catalogItems.js\")\n\t\t\t.then(({catItems}) => catItems.getCatalog(id))\n\t\t\t.then(items => {\n\t\t\t\tlet currentItem = this.state.catalogItems.find(e => e.id == id);\n\t\t\t\tthis.state.previousCatalogItems.push({ items: this.state.catalogItems, id: this.state.currentCatalogId, name: this.state.currentCatalogName});\n\t\t\t\tthis.state.previousCatalogName = this.state.currentCatalogName;\n\t\t\t\tthis.state.currentCatalogId = id;\n\t\t\t\tthis.state.currentCatalogName = currentItem.Name;\n\t\t\t\tthis.state.catalogItems = items;\n\t\t\t\tthis.update();\n\t\t\t});\n\t\t});\n\n\t\taddEventDelegate(this.container, 'click', '[data-catalog-back]', () => {\n\t\t\tlet lastCatalog = this.state.previousCatalogItems.pop();\n\t\t\tthis.state.catalogItems = lastCatalog.items;\n\t\t\tthis.state.currentCatalogId = lastCatalog.id;\n\t\t\tthis.state.currentCatalogName = lastCatalog.name;\n\t\t\tthis.state.previousCatalogName = this.state.previousCatalogItems.slice(-1)[0]?.name;\n\t\t\tthis.update();\n\t\t});\n\t},\n\t_showSuggestions: function(){\n\t\tif (this.delayTimeoutId) {\n\t\t\tclearTimeout(this.delayTimeoutId);\n\t\t}\n\n\t\tthis.delayTimeoutId = setTimeout(() => {\n\t\t\treturn loadPrecompiledTemplates(['search-dropdown', 'search-catalog-children'])\n\t\t\t.then(() => this.getSearchSuggestions(this.getQuery()))\n\t\t\t.then(() => this.loadCatalogItems())\n\t\t\t.catch(() => {})\n\t\t\t.then(data => this.show(data));\n\t\t}, this.delayMs);\n\t},\n\tupdateState: function() {\n\t\tthis.state.isMob = tumGlobal.isMob();\n\t\tthis.state.searchHistory = searchHistory.get();\n\t\tthis.state.hasSearchHistory = this.searchHistory?.length;\n\t\tthis.state.searchQuery = this.getQuery();\n\t\tthis.state.firmId = tumarket.firmId;\n\t\tthis.state.firmName = tumarket.firmName;\n\t\tthis.state.currentQuery = tumarket.search?.text;\n\t},\n\tupdate: function() {\n\t\tsetHtml(this.container, this.template(this.state));\n\t\trefreshLazyModules();\n\t},\n\tgetSearchSuggestions: function(query, type){\n\t\tvar self = this;\n\n\t\tif (searchWidgets.main.getSearchType().code == \"byFirmOffers\") return Promise.resolve(null);\n\n\t\tif (query.length < 2) {\n\t\t\t//при клике на пустую строку показываем просто историю поиска, если она есть\n\t\t\tif (!query && searchHistory.get().length) {\n\t\t\t\treturn Promise.resolve({});\t\n\t\t\t}\n\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tajaxSend({ url: self.options.url.getSearchSuggestions, data: { search: query } }).then(data => {\n\t\t\t\tif (data.result){\n\t\t\t\t\tdata.query = query;\n\t\t\t\t\tdata.searchType = type || searchWidgets.main.getSearchType().code;\n\t\t\t\t\tlet result = self.updateSearchSuggestionsModel(data);\n\t\t\t\t\tthis.state.searchSuggestions = result;\n\t\t\t\t\tresolve(result);\n\t\t\t\t} else {\n\t\t\t\t\treject('getSearchSuggestions error');\n\t\t\t\t}\n\t\t\t});\n\t\t})\n\t},\n\tupdateSearchSuggestionsModel: function(data){\n\t\tif (!data) return null;\n\t\tlet query = data.query.toLowerCase();\n\t\tlet items = data.items;\n\n\t\titems.forEach(e => {\n\t\t\te.htmlText = e.text.replace(query, `${query}`);\n\t\t\te.tuCount = e.info?.count\n\t\t});\n\n\t\tlet ctusItem = data.items.find(e => e.info && e.info.ctus && e.info.ctus.length);\n\t\tlet ctus = [];\n\t\tif (ctusItem) {\n\t\t\tctus = ctusItem.info.ctus;\n\t\t\tctus.forEach(e => { \n\t\t\t\te.text = ctusItem.text; \n\t\t\t\te.htmlText = ctusItem.htmlText \n\t\t\t});\n\t\t}\n\t\t\n\t\tlet firms = data.items.find(e => e.info && e.info.firms && e.info.firms.length)?.info.firms || [];\n\t\tfirms.forEach(e => {\n\t\t\tlet regex = new RegExp(`(${query})`, 'gi');\n\t\t\te.htmlName = e.name.replace(regex, '$1');\n\t\t\te.htmlType = e.firmType?.replace(regex, '$1');\n\t\t\te.contacts.sort((a, b) => Number(b.isMain) - Number(a.isMain));\n\t\t\te.phone = e.contacts.find(e => e.code = \"contact-phone\");\n\t\t\te.whatsapp = e.contacts.find(e => e.isWhatsapp);\n\t\t});\n\n\t\tlet result = { \n\t\t\titems: items, \n\t\t\tctus: ctus, \n\t\t\tfirms: firms, \n\t\t\tquery: query,\n\t\t\tshowFirmsFirst: data.searchType != \"byGoods\",\n\t\t\tnoResults: !items.length && !ctus.length && !firms.length\n\t\t};\n\n\t\treturn result;\n\t},\n\tloadCatalogItems: function(){\n\t\tif (this.state.catalogItems.length) return Promise.resolve();\n\n\t\treturn import(\"../catalogItems.js\")\n\t\t.then(({catItems}) => catItems.getCatalogItems())\n\t\t.then(result => {\n\t\t\tthis.state.catalogItems = result;\n\t\t});\n\t},\n\tshow: function(){\n\t\tthis.template = this.template || getPrecompiledTemplate('search-dropdown');\n\t\tthis.updateState();\n\t\tthis.update();\n\t\t$(this.container).collapse('show');\n\t},\n\tclose: function(){\n\t\t$(this.container).collapse('hide');\n\t},\n\tloadCatalogChildren: function(id){\n\t\tlet container = this.container.querySelector(`.tu-catalog-items[data-id=\"${id}\"] .tum-catalog-children`);\n\t\tif (container.classList.contains('loaded')) return Promise.resolve();\n\n\t\tcontainer.classList.add('loaded');\n\n\t\treturn import(\"../searchMenu.js\").then(({tum_searchMenu}) => {\n\t\t\treturn import(\"../catalogItems.js\")\n\t\t\t.then(({catItems}) => catItems.getCatalog(id))\n\t\t\t.then(items => {\n\t\t\t\tsetHtml(container, tum_searchMenu.renderCatalogChildren(items, container.matches('.l2') ? 2 : 1))\n\t\t\t});\n\t\t});\n\t\t\n\t},\n\ttoggleCatalogChildren: function(id) {\n\t\tlet item = this.container.querySelector(`.tu-catalog-items[data-id=\"${id}\"]`);\n\t\tlet children = item.querySelector('.tum-catalog-children');\n\t\tlet icon = item.querySelector('.catalog-expand i');\n\n\t\tthis.loadCatalogChildren(id)\n\t\t.then(() => {\n\t\t\t$(children).collapse('toggle');\n\t\t\ttoggleClass(icon, 'fa-chevron-down fa-chevron-up');\n\t\t});\n\t},\n};\n\nexport default searchSuggestions;","import \"../css/modules/tu.m/tu_slider.css\";\nimport { isCtuIgnoredAdulthood, showAdultWarning } from \"./product/restrictAdult\";\nimport { addEventDelegate, appendHtml, insertHtmlAfter, insertHtmlBefore, toggleClass } from \"./global/dom\";\nimport { isMob } from \"./global/util\";\n\n/**\n * @typedef {Object} SliderOptions\n * @property {HTMLElement} container\n * @property {(callback: () => void) => void} getItems\n * @property {number} itemWidth\n * @property {boolean} addButtons\n * @property {number} totalCount\n * @property {string} customControls\n * @property {string} mobLoadMoreChevronDirection\n * @property {boolean} autoCycling\n * @property {string} controlsPosition\n */\n\nlet tu_slider = {\n\t/**\n\t * \n\t * @param { SliderOptions } options \n\t * @returns \n\t */\n\tcreate: function (options) {\n\t\tif (options.container.classList.contains('slider-initialized')) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet slider = {\n\t\t\t/** @type { SliderOptions } */\n\t\t\toptions: {\n\t\t\t\tcontainer: null,\n\t\t\t\tgetItems: null,\n\t\t\t\titemWidth: 265,\n\t\t\t\taddButtons: true,\n\t\t\t\ttotalCount: 0,\n\t\t\t\tcustomControls: '',\n\t\t\t\tmobLoadMoreChevronDirection: 'down',\n\t\t\t\tautoCycling: false,\n\t\t\t\tcontrolsPosition: 'top'\n\t\t\t},\n\t\t\tisLoading: false,\n\t\t\tlistContainer: null,\n\t\t\tisLoaded: false,\n\t\t\titemWidth: 0,\n\t\t\tsize: 0,\n\t\t\tpage: 1,\n\t\t\ttotalPages: 1,\n\t\t\t_isMob: () => window.innerWidth < 768,\n\t\t\tinit: function (options) {\n\t\t\t\tthis.options = Object.assign({}, this.options, options);\n\n\t\t\t\tif (!this.options.container) return;\n\t\t\t\tthis.listContainer = this.options.container.querySelector('.slider-list');\n\t\t\t\t\n\t\t\t\tthis.size = this._getSize();\n\t\t\t\tif (!this.options.getItems || this.count() >= this.options.totalCount) this.isLoaded = true;\n\t\t\t\tthis.itemWidth = this.options.itemWidth || this._getItemWidth();\n\n\t\t\t\tthis._initEvents();\n\n\t\t\t\tthis.updatePages();\n\n\t\t\t\tif (this.options.addButtons && this.totalPages > 1) this.renderButtons();\n\t\t\t\tthis._updateMobButtons();\n\t\t\t\tthis._updateMobCloser();\n\t\t\t\tthis.renderPages();\n\n\t\t\t\tif (this.options.autoCycling) {\n\t\t\t\t\tthis.initAutoCycling();\n\t\t\t\t}\n\n\t\t\t\ttoggleClass(this.options.container, 'slider-initialized', true);\n\t\t\t},\n\t\t\t_initEvents: function () {\n\t\t\t\tlet cont = this.options.container;\n\n\t\t\t\taddEventDelegate(cont, 'click', '.slider-next', () => this.go('>'));\n\t\t\t\taddEventDelegate(cont, 'click', '.slider-prev', () => this.go('<'));\n\t\t\t\taddEventDelegate(cont, 'click', '.slider-goToStart', () => this.go('<<'));\n\t\t\t\taddEventDelegate(cont, 'click', '.slider-goToEnd', () => this.go('>>'));\n\t\t\t\taddEventDelegate(cont, 'click', '[data-load-more]', () => this.loadMore());\n\t\t\t\taddEventDelegate(cont, 'click', '.slider-page', element => {\n\t\t\t\t\tlet page = Number(element.getAttribute('data-page'));\n\t\t\t\t\tthis._moveToPage(page);\n\t\t\t\t});\n\n\t\t\t\tif (this._isMob()) this.listContainer.addEventListener('scroll', () => this._updateMobButtons(), { passive: true });\n\t\t\t},\n\t\t\t_getSize: function () {\n\t\t\t\tlet width = window.innerWidth;\n\t\t\t\tswitch (true) {\n\t\t\t\t\tcase (width >= 1280):\n\t\t\t\t\t\treturn 4;\n\t\t\t\t\tcase (width >= 1024):\n\t\t\t\t\t\treturn 3;\n\t\t\t\t\tcase (width >= 768):\n\t\t\t\t\t\treturn 2;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t_getItemWidth: function () {\n\t\t\t\treturn this.width() / this._getSize();\n\t\t\t},\n\t\t\tmoveTo: function (position) {\n\t\t\t\tthis.listContainer.scrollTo({ left: position, behavior: 'smooth' });\n\t\t\t\tthis.updatePages();\n\t\t\t},\n\t\t\t_getItemsCallback: function (page) {\n\t\t\t\tthis.isLoaded = true;\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthis.updatePages();\n\t\t\t\tthis._updateMobCloser();\n\t\t\t\tthis.options.container.querySelector('.slider-loadMoreCont')?.remove();\n\n\t\t\t\tif (!this._isMob()) {\n\t\t\t\t\tif (!page) this.go('>');\n\t\t\t\t\telse this._moveToPage(page);\n\t\t\t\t}\n\n\t\t\t\tshowAdultWarning(false, isCtuIgnoredAdulthood());\n\t\t\t},\n\t\t\tloadMore: function(page) {\n\t\t\t\tif (this.isLoaded) return;\n\t\t\t\t\n\t\t\t\tif (!page) {\n\t\t\t\t\tthis.page = this.totalPages - 1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.options.getItems(() => this._getItemsCallback(page));\n\t\t\t},\n\t\t\t_moveToPage: function (page, noLazyLoad) {\n\t\t\t\tif (page == this.page) return;\n\t\t\t\t\n\t\t\t\tif ((page == this.totalPages || this.count() != this.options.totalCount) && !this.isLoaded && !noLazyLoad) {\n\t\t\t\t\tthis.loadMore(page);\n\t\t\t\t}\n\t\t\t\telse if (page <= this.totalPages && page > 0) {\n\t\t\t\t\tthis.page = page;\n\t\t\t\t\tthis.moveTo((this.page - 1) * this.itemWidth * this.size);\n\t\t\t\t}\n\t\t\t},\n\t\t\ttotalWidth: function () {\n\t\t\t\treturn this.listContainer.scrollWidth;\n\t\t\t},\n\t\t\tcount: function(){\n\t\t\t\treturn this.listContainer.childElementCount;\n\t\t\t},\n\t\t\ttotalContentWidth: function(){\n\t\t\t\treturn this.itemWidth * this.count();\n\t\t\t},\n\t\t\twidth: function () {\n\t\t\t\treturn this.listContainer.offsetWidth;\n\t\t\t},\n\t\t\tgo: function(value) {\n\t\t\t\tswitch(value) {\n\t\t\t\t\tcase '>':\n\t\t\t\t\t\tthis._moveToPage(this.page + 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '<':\n\t\t\t\t\t\tthis._moveToPage(this.page - 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '<<':\n\t\t\t\t\t\tthis._moveToPage(1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '>>':\n\t\t\t\t\t\tif (this.isAtEnd()) this.loadMore();\n\t\t\t\t\t\telse this._moveToPage(this.totalPages, true);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tupdatePages: function() {\n\t\t\t\tif (this.options.totalCount) {\n\t\t\t\t\tthis.totalPages = Math.ceil(this.options.totalCount / this.size);\n\t\t\t\t} else {\n\t\t\t\t\tthis.totalPages = Math.ceil(this.totalContentWidth() / (this.itemWidth*this.size));\n\t\t\t\t}\n\t\t\t},\n\t\t\trenderPages: function(){\n\t\t\t\tlet renderPage = number => {\n\t\t\t\t\treturn `${number}`;\n\t\t\t\t}\n\n\t\t\t\tlet pageNumbers = [];\n\t\t\t\tfor (let i = 0; i < this.totalPages; i++) pageNumbers.push(i);\n\n\t\t\t\tlet pages = pageNumbers.map(i => renderPage(i+1));\n\n\t\t\t\tlet cont = this.options.container;\n\t\t\t\tlet $pages = cont.querySelector('.slider-pages');\n\t\t\t\tif ($pages) $pages.innerHTML = pages.join('');\n\n\t\t\t\t//toggleClass(cont.querySelector('.slider-next'), 'disabled', this.page == this.totalPages);\n\t\t\t\t//toggleClass(cont.querySelector('.slider-prev'), 'disabled', this.page == 1);\n\t\t\t\ttoggleClass(cont.querySelector('.slider-controls'), 'd-none', !this._isMob() && this.totalPages == 1);\n\t\t\t},\n\t\t\t_updateMobButtons: function(){\n\t\t\t\tlet cont = this.options.container;\n\t\t\t\ttoggleClass(cont.querySelector('.slider-goToEnd'), 'disabled', this.isAtEnd() && this.isLoaded);\n\t\t\t\ttoggleClass(cont.querySelector('.slider-goToStart'), 'disabled', this.isAtStart());\n\n\t\t\t\tif (this.isAtStart()) this.page = 1;\n\t\t\t\telse if (this.isAtEnd()) { \n\t\t\t\t\tthis.page = this.totalPages;\n\n\t\t\t\t\tif (!this.isLoading) {\n\t\t\t\t\t\tthis.loadMore();\n\t\t\t\t\t}\n\t\t\t\t\tthis.isLoading = true;\n\t\t\t\t}\n\t\t\t\telse this.page = 2;\n\t\t\t},\n\t\t\t_updateMobCloser: function(){\n\t\t\t\ttoggleClass(this.listContainer.querySelector('.slider-closer'), 'd-none', this._isMob() && !this.isLoaded);\n\t\t\t},\n\t\t\tisAtStart: function(){\n\t\t\t\tlet position = this.listContainer.scrollLeft;\n\t\t\t\treturn position < 50;\n\t\t\t},\n\t\t\tisAtEnd: function(){\n\t\t\t\tlet position = this.listContainer.scrollLeft;\n\t\t\t\treturn position > this.totalWidth() - this.width() - 50;\n\t\t\t},\n\t\t\trenderButtons: function(){\n\t\t\t\tlet html = \"\";\n\t\t\t\tif (this._isMob()){\n\t\t\t\t\t// html = `
\n\t\t\t\t\t// \t\t\t
${this.options.customControls}
\n\t\t\t\t\t// \t\t\t
\n\t\t\t\t\t// \t\t\t\t\n\t\t\t\t\t// \t\t\t\t\n\t\t\t\t\t// \t\t\t
\n\t\t\t\t\t// \t\t
`;\n\t\t\t\t} else {\n\t\t\t\t\thtml = `
\n\t\t\t\t\t\t\t\t
${this.options.customControls}
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
`;\n\t\t\t\t}\n\n\t\t\t\tif (this.options.controlsPosition == 'top') {\n\t\t\t\t\tinsertHtmlBefore(this.listContainer, html);\n\t\t\t\t} else if (this.options.controlsPosition == 'bottom') {\n\t\t\t\t\tinsertHtmlAfter(this.listContainer, html);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (this._isMob() && !this.isLoaded) this.renderLoadMoreButton();\n\t\t\t},\n\t\t\trenderLoadMoreButton: function(){\n\t\t\t\tlet html = isMob() ?\n\t\t\t\t\t\t\t`
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
` : \n\t\t\t\t\t\t\t`
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
`;\n\t\t\t\tappendHtml(this.listContainer, html);\n\t\t\t},\n\t\t\tinitAutoCycling: function(){\n\t\t\t\tthis.cycleInterval = setInterval(() => {\n\t\t\t\t\tif (this.isAtEnd()) {\n\t\t\t\t\t\tthis.moveTo(0);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.moveTo(this.listContainer.scrollLeft + (isMob() ? window.innerWidth : 340));\n\t\t\t\t}, 8000);\n\t\t\t}\n\t\t};\n\n\t\tslider.init(options);\n\n\t\treturn slider;\n\t}\n};\n\nexport default tu_slider;","import * as $ from \"jquery\";\nimport { ajaxSend } from \"./global/fetch\";\nimport { addEventDelegate } from \"./global/dom\";\n\nvar tumStats = {\n\toptions: {\n\t\turl: {\n\t\t\tlogEvent: \"/statistics/logEvent\"\n\t\t},\n\t\turlReferrer: \"\"\n\t},\n\tinit: function(options){\n\t\ttumStats.options = $.extend({}, tumStats.options, options);\n\n\t\taddEventDelegate(document, 'tu.shown', '[data-stat-log-on-shown]', element => {\n\t\t\tvar event = {\n\t\t\t\tproductID: element.getAttribute(\"data-stat-productid\"),\n\t\t\t\tfirmID: element.getAttribute(\"data-stat-firmid\"),\n\t\t\t\tctuID: element.getAttribute(\"data-stat-ctuid\"),\n\t\t\t\tobjectType: element.getAttribute(\"data-stat-objecttype\"),\n\t\t\t\teventType: element.getAttribute(\"data-stat-eventtype-shown\"),\n\t\t\t\tobjectID: element.getAttribute(\"data-stat-objectid\"),\n\t\t\t\tadditionalInfoJson: element.getAttribute(\"data-stat-json\")\n\t\t\t};\n\n\t\t\ttumStats.logEvent(event);\n\t\t});\n\n\t\t$(document).on(\"click auxclick\", \".tu-stat-logEvent\", function(e) {\n\t\t\tlet element = this;\n\t\t\t//auxclick ловит клики средней и правой кнопками мыши. Правый игнорируем\n\t\t\tif (e.which == 3) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar href = \"\";\n\t\t\tif (e.which == 1 && $(element).is(\"a:not([target=_blank])\")) {\n\t\t\t\tvar _href = $(element).attr(\"href\");\n\t\t\t\tif (_href && _href.indexOf(\"/\") > -1) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\thref = _href;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar event = {\n\t\t\t\tproductID: $(element).attr(\"data-stat-productid\"),\n\t\t\t\tfirmID: $(element).attr(\"data-stat-firmid\"),\n\t\t\t\tctuID: $(element).attr(\"data-stat-ctuid\"),\n\t\t\t\tobjectType: $(element).attr(\"data-stat-objecttype\"),\n\t\t\t\teventType: $(element).attr(\"data-stat-eventtype\"),\n\t\t\t\tobjectID: $(element).attr(\"data-stat-objectid\"),\n\t\t\t\tadditionalInfoJson: $(element).attr(\"data-stat-json\")\n\t\t\t};\n\n\t\t\t$(element).removeClass(\"tu-stat-logEvent\");\n\n\t\t\ttumStats.logEvent(event, href);\n\t\t});\n\t},\n\t/** \n\t * Лог события в статистику\n\t * @event объект с полями:\n\t * @productID\n\t * @firmID\n\t * @ctuID\n\t * @objectType объект статистики\n\t * @eventType событие\n\t * @additionalInfoJson json с доп. инфо\n\t * @objectID id связанного объекта, например обзора\n\t * @\n\t * @redirectUrl если нужен редирект после отправки\n\t */\n\tlogEvent: function(event, redirectUrl) {\n\t\tevent.urlReferrer = tumStats.options.urlReferrer;\n\t\tevent.url = location.href;\n\t\tevent.isAjax = true;\n\t\tajaxSend({ url: tumStats.options.url.logEvent, data: event }).then(data => {\n\t\t\tif (!data.result) {\n\t\t\t\tconsole.log(\"statistics: logEvent error\");\n\t\t\t}\n\n\t\t\tif (redirectUrl) {\n\t\t\t\tlocation.href = redirectUrl;\n\t\t\t}\n\t\t});\n\t},\n\t// initYoutubeEvents: function(){\n\t// \twindow.onYouTubeIframeAPIReady = this._initYoutubeEvents.bind(this);\n\n\t// \tloadLib({\n\t// \t\tjsLink: 'https://www.youtube.com/iframe_api',\n\t// \t\tconditionObject: window.YT,\n\t// \t\tisCacheable: true\n\t// \t});\n\t// },\n\t// _initYoutubeEvents: function(){\n\t// \tlet YT = window.YT;\n\t// \tlet self = this;\n\n\t// \t$(\".tu-youTubeFrame.tu-stat-logEvent\").each(function(){\n\t// \t\tlet video = new YT.Player(this);\n\t// \t\tlet logged = false;\n\n\t// \t\tlet event = {\n\t// \t\t\tobjectType: $(this).attr('data-stat-objecttype'),\n\t// \t\t\teventType: $(this).attr('data-stat-eventtype'),\n\t// \t\t\tfirmID: $(this).attr('data-stat-firmid'),\n\t// \t\t\tobjectID: $(this).attr('data-stat-objectid')\n\t// \t\t};\n\n\t// \t\tvideo.addEventListener('onStateChange', function(e){\n\t// \t\t\tif (e.data == YT.PlayerState.PLAYING && !logged) {\n\t// \t\t\t\tlogged = true;\n\t// \t\t\t\tself.logEvent(event);\n\t// \t\t\t}\n\t// \t\t});\n\t// \t});\n\t// }\n};\n\nexport { tumStats };"],"names":["logToConsoleDump","text","element","document","createElement","innerHTML","dump","getElementById","appendChild","logElement","scrollTop","scrollHeight","showConsoleDialog","content","title","showFooter","onShown","history","localStorage","getItem","JSON","parse","historyPosition","length","log","querySelector","addEventListener","eval","value","e","console","push","setItem","stringify","removeItem","pinToBottom","initConsoleHandler","id","classList","add","body","oldCons","window","info","warn","error","debug","editMode","options","cookieKey","interval","idleTimer","idleState","idleWait","editLimitationsMsg","init","this","html","on","clearTimeout","addClass","lenght","setTimeout","removeClass","remove","header","onSubmit","empty","append","onClosed","countDown","preventDefault","enable","hasClass","redirectUrl","attr","showRolesModal","toggleEditView","location","reload","redirect","$msg","txt","submitButtonText","href","enabled","date","Date","Day","getDate","Year","getFullYear","Month","getMonth","Hours","getHours","Minutes","getMinutes","Seconds","getSeconds","Milliseconds","getMilliseconds","countDownDate","getTime","countDownInterval","dateTime","setInterval","time","timeLeft","minutes","Math","floor","toString","seconds","milisecons","tmrStr","getLocationFromYandex","lat","long","params","geocode","lang","apikey","format","url","then","response","statusCode","Promise","reject","getYandexApiLocation","model","GeoObjectCollection","featureMember","GeoObject","metaDataProperty","addressComponents","GeocoderMetaData","Address","Components","localityItem","filter","kind","locality","name","provinces","map","province1","province2","initLazyModules","tum_searchMenu","toggleMenu","scrollToCatalog","dataset","searchType","setSearchType","event","idFirm","firmid","idProd","productid","management","getModalData","tum_mainMenu","highlight","showReadmore","editTopListDate","productId","itemid","previewId","previewid","cartWidget","showCartWidget","disabled","catItems","showCatalog","firmStt","editFirmStatus","tu_tasks","updateButtonHandler","firmId","ctuId","ctuid","previewConnectionEditor","open","refreshLazyModules","crud","querySelectorAll","initCrud","initFormModals","initSelects","timer","initTimer","initFormUtils","item","initHighlightSearch","module","default","create","container","mobLoadMoreChevronDirection","autoCycling","initRangeSliders","initIntersectionObserver","initInputMasks","initSwitchFrames","elem","initFileUploaders","intersectionHandler","entries","entry","target","visibilityObserverTarget","classesShown","classesWhenShown","split","classesVisible","classesWhenVisible","cookieName","setCookieOnShown","cookieValue","cookieDuration","Number","isIntersecting","hasAttribute","dispatchEvent","Event","bubbles","setAttribute","removeAttribute","observeElement","threshold","intersectionObserver","get","disconnect","IntersectionObserver","put","observe","el","searchWidgets","createSearchWidget","instance","arrru","Array","arren","concllatchars","Object","assign","searchTypes","searchTypesList","charCode","sendQuery","code","toggleSearchTypes","collapse","input","_input","setQuery","tumarket","state","searchMenuLoaded","setSearchQuery","getQuery","clear","focus","updateClearButton","action","isInternal","oldType","getSearchType","_searchTypes","newType","find","type","selected","updateSearchTypes","isOffers","toggleClass","firm","firmName","region","general","parentCityID","nameIN","regionName","placeholder","replace","icon","focusSearch","searchText","Error","search","query","URL","searchParams","set","hasLatinChars","test","toLowerCase","hasConclLatin","isConclLatinContains","hasCapitalLetter","hasSpecialChars","cyrill_to_latin","i","reg","RegExp","result","indexOf","trim","exists","searchWidget","searchSelectOptionsList","isFocused","matches","scrollTo","initSearchWidget","floating","main","custom","hubName","hubInitialized","hub","toggleNotifications","initHub","askForPermission","registerCallback","callback","self","withUrl","build","resolve","startHubCallback","invoke","showNotification","onclose","start","checked","navigator","Notification","permission","serviceWorker","getRegistrations","registrations","data","requestPermission","showDisabledWarning","readCookie","catch","notificationsEnabled","ask","updateButtonOnly","checkbox","storageKey","getSessionLength","sessionStartDate","currentTimer","arrayBufferToBase64","buffer","binary","bytes","Uint8Array","len","byteLength","String","fromCharCode","btoa","tumPwa","prompt","firstEvent","isPwa","alreadyInstalled","isEmployee","register","scope","pushManager","getSubscription","sub","subscribe","userVisibleOnly","applicationServerKey","vapidPublicKey","endpoint","p256dh","getKey","auth","matchMedia","getInstalledRelatedApps","initEvents","showIosPwaPrompt","screen","width","showInstallPwaModal","install","pathname","startsWith","top","behavior","tumStats","logEvent","objectType","eventType","userChoice","outcome","force","disablePopups","isDev","template","ios","pwaSupported","hints","closest","showHint","close","hintBlock","obj","ownProps","keys","resArray","locationDetect","urlReferrer","invalidLocation","cookiesAreEmpty","IsNeedYandexRequest","forceLocationPopover","_location","invalid","items","short","getAttribute","popover","isNear","parentcityid","citySubDomain","citysubdomain","changeIsNear","getLocation","getGeoData","locationData","cityID","checkUrl","cookieSubDomain","hostname","forEach","key","subDomain","substring","join","yandexLocationSuccess","browserLocationFail","geolocation","getCurrentPosition","coords","latitude","longitude","permissionDenied","showLocationPopover","getCurrentUrlWithoutRegion","geoModel","citiesByLetter","regions","isMob","pageTypes","placement","trigger","renderLocationPopover","sanitize","status","correctUrl","getCorrectUrl","isCity","cities","mainCities","concat","apply","city","cityRegion","regionInCouID","pool","getCityUrl","getRegionUrl","updateHeader","oldLocation","oldSubdomain","oldCityID","cityName","includePool","mainCity","isMainCityWithoutPool","domainName","cookieCityID","cookieIsNear","currentUrl","hasSubDomain","cityIDCheck","subDomainCheck","isNearCheck","replaceState","cookNot","cookiePrefix","cookData","contentMistakes","showErrorObject","parent","getSelectionText","removePopovers","unselectAll","selection","getSelection","sel","removeAllRanges","getSelectionParentElement","parentEl","rangeCount","getRangeAt","commonAncestorContainer","nodeType","parentNode","createRange","parentElement","activeEl","activeElement","activeElTagName","tagName","selectionStart","_getItemID","$elem","res","selectionElement","is","mainParent","itemID","s","removeAttr","each","backToTop","PageUp","hideActionModal","animate","btn","limit","height","fadeIn","fadeOut","hide","showWelcomeDialog","timerContext","timerContextKey","bannerCloseInterval","_lastBannerShown","lastBannerShown","disable","modal","clearInterval","disableButton","timerElement","secondsLeft","showHeader","size","noBackdrop","getBanners","bannerIds","contextCode","showRandomBannerAsPopup","popupIds","slider","availablePopup","banner","banners","productID","stat_product_id","firmID","stat_firm_id","ctuID","stat_ctu_id","objectID","special","touchstart","setup","_","ns","handle","passive","includes","touchmove","wheel","mousewheel","initSessionTimer","version","cookieVersion","domain","cookieDomain","isAuthenticated","notifications","pageType","showBanner","searchSuggestions","share","copyToClipboard","textarea","previousElementSibling","style","offsetHeight","searchSelectOption","isCourier","courierLocation","initialSize","totalIds","totalCount","getItems","slice","newItems","initBannerSliders","popoverElement","$","setCookie","showDialog","showAlert","handleError","addEvent","openProgressbar","addEventDelegate","htmx","checkRunning","modalShown","isCtuIgnoredAdulthood","ctuIDs","ignoreCheck","show","adulthoodIDs","initCtuIDs","ktuAdultCount","ktuNotAdult","toggleAdultProducts","prepend","showAdultWarning","important","cookiesExist","hideAdultProducts","userConfirmedAdult","not","hideAdult","userIsAdult","$modal","prop","getSearchSuggestions","searchField","delayMs","delayTimeoutId","initCallbacks","lastQuery","catalogItems","previousCatalogItems","currentCatalogId","previousCatalogName","currentCatalogName","_showSuggestions","onClickOutside","itemIndex","toggleCatalogChildren","useCatalogGrid","previousCatalogId","update","catalogLoad","getCatalog","currentItem","Name","lastCatalog","pop","loadCatalogItems","updateState","searchHistory","hasSearchHistory","searchQuery","currentQuery","updateSearchSuggestionsModel","htmlText","tuCount","count","ctusItem","ctus","firms","regex","htmlName","htmlType","firmType","contacts","sort","a","b","isMain","phone","whatsapp","isWhatsapp","showFirmsFirst","noResults","getCatalogItems","loadCatalogChildren","contains","renderCatalogChildren","children","itemWidth","addButtons","customControls","controlsPosition","isLoading","listContainer","isLoaded","page","totalPages","_isMob","innerWidth","_getSize","_getItemWidth","_initEvents","updatePages","renderButtons","_updateMobButtons","_updateMobCloser","renderPages","initAutoCycling","cont","go","loadMore","_moveToPage","moveTo","position","left","_getItemsCallback","noLazyLoad","totalWidth","scrollWidth","childElementCount","totalContentWidth","offsetWidth","isAtEnd","ceil","renderPage","number","pageNumbers","pages","$pages","isAtStart","scrollLeft","renderLoadMoreButton","cycleInterval","additionalInfoJson","which","_href","isAjax"],"sourceRoot":""}