{"version":3,"file":"2536_dcca53258403fe64fd79.bundle.js","mappings":"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","sources":["webpack://tumarket/./js/global/popover.js","webpack://tumarket/./js/global/readmore.js","webpack://tumarket/./js/search/OtherCitiesSearch.js"],"sourcesContent":["import * as $ from \"jquery\";\nimport * as htmx from \"htmx.org\";\nimport \"bootstrap/js/dist/popover\";\nimport { addEventDelegate } from \"./dom\";\nimport { isMob } from \"./util\";\nimport { showDialog } from \"./dialog\";\n\nlet bottomModalInitialized = false;\n\nlet popoverSelectors = [\n '[data-toggle=\"popover\"]',\n '.tu-popover',\n '.poptitle',\n '.tum-unauthorized-hint',\n '.map-link-tum-popover'\n]\n\n/**\n * \n * @param {HTMLElement} element \n */\nfunction closeAllPopoversExcept(element) {\n let popovers = [...document.querySelectorAll(popoverSelectors.join(', '))].filter(e => e != element);\n for (let popover of popovers) {\n $(popover).popover('hide');\n }\n}\n\nfunction initPopovers(){\n addEventDelegate(document, 'click', '[data-dismiss=popover]', element => {\n $('.modal.show.opened-as-popover').modal('hide');\n\n var $popover = $(element).closest('.popover');\n if (!$popover.length) return;\n var $elem = $($popover.data('bs.popover').element);\n $elem.popover('hide');\n });\n\n $(document).on('shown.bs.popover', function(e){\n let closeBtn = '';\n let $elem = $(e.target);\n let $popover = $($elem.data('bs.popover').tip);\n let $header = $popover.find('.popover-header');\n let $body = $popover.find('.popover-body');\n \n htmx?.process($popover[0]);\n \n if ($elem.hasClass('popover-noArrow')) {\n $popover.addClass('noarrow');\n }\n\n if ($elem.hasClass('popover-addCloseBtn')) {\n let $closeBtnContainer = $header.html() ? $header : $body;\n\n if ($('.tu-popover-close', $closeBtnContainer).length) return;\n $closeBtnContainer.prepend(closeBtn);\n }\n });\n\n initTuPopover();\n $('[data-toggle=\"popover\"]').popover({\n sanitize: false\n });\n\n $(document).on('show.bs.popover', e => {\n if (e.currentTarget?.activeElement) {\n closeAllPopoversExcept(e.currentTarget.activeElement);\n }\n else if (e.target) {\n closeAllPopoversExcept(e.target);\n }\n\n if (document.querySelector('.dropdown.show')) {\n $('.dropdown.show').dropdown('hide');\n }\n\n let exceptions = ['.tum-readmore-toggle'];\n if (isMob()) {\n exceptions = exceptions.concat(['.tu-popover', '.tum-unauthorized-hint', '.map-link-tum-popover']);\n } \n let except = exceptions.join(', ');\n\n if (e.currentTarget?.activeElement?.matches(except) || e.target?.matches(except)) {\n return false;\n }\n });\n\n $(document).on('show.bs.dropdown', () => {\n closeAllPopoversExcept(null);\n });\n}\n\n/**\n * \n * @param {HTMLElement | Document | DocumentFragment} [container]\n * @returns \n */\nfunction _initTuPopover(container = null) {\n if (!container) container = document;\n for (let element of container.querySelectorAll('.poptitle:not([data-original-title])')) {\n $(element).popover({\n html: true,\n trigger: element.classList.contains('hover') ? 'hover' : 'click',\n placement: 'top',\n content: element.title,\n sanitize: false,\n template: '
'\n });\n }\n\n if (isMob()) {\n if (!bottomModalInitialized) {\n bottomModalInitialized = true;\n\n addEventDelegate(document, 'click', \".tum-unauthorized-hint, .map-link-tum-popover, .tu-popover\", element => {\n let contentTarget = element.dataset.contenttarget;\n let content = contentTarget ? document.querySelector(contentTarget).innerHTML : element.dataset.content;\n let title = element.title || element.dataset.originalTitle;\n let container = element.dataset.container;\n \n showDialog({\n content: `
${content}
`,\n title,\n pinToBottom: true,\n classes: \"opened-as-popover\",\n container,\n modal: element.dataset.modalId\n });\n });\n }\n\n return;\n }\n\n for (let element of container.querySelectorAll(\".tum-unauthorized-hint, .map-link-tum-popover, .tu-popover\")) {\n if ($(element).data('bs.popover')) continue;\n let trigger = element.dataset.trigger;\n\n let popover = $(element).popover({\n content: function(){\n let target = this.dataset.contenttarget;\n if (target) {\n let html = document.querySelector(target).innerHTML;\n return html;\n }\n\n return this.dataset.content;\n },\n html: true,\n sanitize: false\n });\n\n if (trigger && trigger != 'hover') continue;\n\n popover.on('mouseenter', function () {\n var _this = this;\n $(this).popover('show');\n $('.popover').on('mouseleave', function () {\n $(_this).popover('hide');\n });\n }).on('mouseleave', function () {\n var _this = this;\n setTimeout(function () {\n if (!$('.popover:hover').length) {\n $(_this).popover('hide');\n }\n }, 150);\n });\n }\n}\n\n/**\n * \n * @param {HTMLElement | Document | DocumentFragment | JQuery} [container]\n * @returns \n */\nfunction initTuPopover(container = null){\n if (!container) {\n _initTuPopover();\n return;\n }\n\n if (container instanceof HTMLElement || container instanceof Document || container instanceof DocumentFragment) {\n _initTuPopover(container);\n return;\n }\n\n if (typeof(container) == 'string') {\n container = $(container);\n }\n\n for (let element of container.toArray().filter(e => e instanceof HTMLElement)){\n _initTuPopover(element);\n }\n}\n\n/**\n * \n * @param {HTMLElement} button \n * @param {() => void} callback \n */\nfunction onPopoverShown(button, callback){\n $(button).on('shown.bs.popover', callback);\n}\n\n/**\n * \n * @param {HTMLElement} button \n * @returns {HTMLElement}\n */\nfunction getPopoverElement(button) {\n return $(button).data('bs.popover').tip;\n}\n\nfunction initTooltips(container){\n let except = ['.poptitle', '.notooltip', 'iframe', '.tu-popover', '[data-toggle=popover]'];\n if (isMob()) except.push('.tum-disableMobTitle');\n $('[title]', container || document).not(except.join(', ')).tooltip({\n placement: 'auto',\n boundary: 'window',\n html: true,\n trigger: 'hover'\n });\n\n addEventDelegate(document, 'mouseover', '[title]:not([data-original-title])', function(element){\n $(element).not(except.join(', ')).tooltip({\n placement: 'auto',\n boundary: 'window',\n html: true,\n trigger: 'hover'\n });\n\n $(element).trigger('mouseover');\n });\n\n addEventDelegate(document, 'click', '[title]', function(element){\n $(element).tooltip('hide');\n });\n}\n\nexport { initPopovers, initTuPopover, onPopoverShown, getPopoverElement, closeAllPopoversExcept, initTooltips };\n","import * as $ from \"jquery\";\nimport { initTuPopover } from \"./popover\";\n\nlet tumarket = window.tumarket;\n\n/** @type {Object.} */\nlet readmoreState = tumarket.readmoreState;\n\n/** @type {Object.) => void>} */\nlet callbacks = tumarket.callbacks;\n\n/**\n * \n * @param {JQuery} el \n * @param {boolean} [value]\n * @param {boolean} [skipCallback]\n */\nfunction toggleReadmore(el, value = null, skipCallback = null){\n let $wrap = $(el).closest(\".tum-readmore-wrap\");\n let $toggle = $(el);\n let $target = $(el).attr(\"data-target\");\n let $texts = null;\n let $otherToggles = null;\n let id = $wrap.attr('data-readmoreid');\n let groupContainer = $(el)[0].dataset.groupContainer;\n\n if (groupContainer && !skipCallback) {\n [...document.querySelector(groupContainer).querySelectorAll(\".tum-readmore-toggle\")]\n .filter(e => e != this)\n .forEach(e => toggleReadmore(e, false, true));\n }\n\n if ($target) {\n $texts = $($target);\n $otherToggles = $('.tum-readmore-toggle[data-target=\"' + $target + '\"]').not($(el));\n } else {\n $texts = $(\".tum-readmore-0, .tum-readmore-1, .tum-readmore-2, .tum-readmore-inline, .tum-readmore-custom\", $wrap);\n $otherToggles = $(\".tum-readmore-toggle\", $wrap).not($(el));\n }\n\n function swapToggleHtml($toggle, show){\n let showHtml = $toggle.attr('data-showhtmltarget') ? $($toggle.attr('data-showhtmltarget')).html() : $toggle.attr('data-showhtml');\n let hideHtml = $toggle.attr('data-hidehtmltarget') ? $($toggle.attr('data-hidehtmltarget')).html() : $toggle.attr('data-hidehtml');\n\n let html = show ? hideHtml : showHtml;\n if (html != \"_\") {\n $toggle.html(html);\n }\n }\n\n $texts.each(function(){\n let $text = $(this);\n let _wrap = $(this).closest(\".tum-readmore-wrap\");\n\n if (_wrap.length && !_wrap.is($wrap)) {\n return;\n }\n\n $text.toggleClass(\"show\", value);\n let show = $text.hasClass(\"show\");\n swapToggleHtml($toggle, show);\n $otherToggles.each(function(){\n let _toggleWrap = $(this).closest(\".tum-readmore-wrap\");\n if (_toggleWrap.is($wrap) || !_toggleWrap.length) swapToggleHtml($(this), show); \n });\n\n let ajaxCode = $text.attr('data-ajaxcode');\n let ajaxOptions = $text.attr('data-ajaxoptions');\n let ajaxLoaded = $text.data('ajaxloaded') == 1;\n if (ajaxCode && !ajaxLoaded) {\n import(\"./ajaxComponent\").then(({ renderComponent }) => {\n renderComponent(ajaxCode, ajaxOptions)\n .then(html => { \n $text.html(html)\n $text.data('ajaxloaded', 1);\n initTuPopover($text);\n document.body.dispatchEvent(new Event(\"tum.component.loaded\"));\n });\n });\n }\n\n if (id) {\n readmoreState[id] = show;\n }\n });\n\n let callback = $(el).attr('data-callback');\n if (!skipCallback && callback && callbacks && callbacks[callback]) {\n callbacks[callback](el);\n }\n}\n\nfunction initReadmore(){\n $(document).on(\"click\", \".tum-readmore-toggle\", function (e) {\n //если кликнуть на toggle, который находится внутри другого toggle, будет двойной вызов и в итоге ничего не отработает\n //но stopPropagation может вызвать проблемы в другом функционале, например сборе статистики при кликах\n //поэтому вместо этого явно проверяем, что ридмор уже обработан\n if (e.result?.readmore_processed) return;\n\n if (!this.matches('[data-dont-prevent-default]')) {\n e.preventDefault();\n }\n \n let readmoreState = null;\n if (this.dataset.readmoreState) {\n readmoreState = this.dataset.readmoreState == 'show';\n }\n\n toggleReadmore($(this), readmoreState);\n \n return { readmore_processed: true };\n });\n\n $(document).on('shown.bs.collapse', function(e){\n let id = $(e.target).attr('data-readmoreid');\n readmoreState[id] = true;\n });\n\n $(document).on('hidden.bs.collapse', function(e){\n let id = $(e.target).attr('data-readmoreid');\n readmoreState[id] = false;\n });\n}\n\n/**\n * простой ручной toggle для collapse без анимации. Можно использовать для сохранения состояния коллапсов при ререндере\n * @param {JQuery} element \n * @param {boolean} [value] \n * @param {JQuery} [container] \n */\nfunction toggleCollapse(element, value = null, container = null){\n let $collapseToggle = $(container || document).find(element);\n let $collapse = $($collapseToggle.attr('data-target'), container || document);\n\n let showIcons = [ '.fa-arrow-down', '.fa-chevron-down' ];\n let hideIcons = [ '.fa-arrow-up', '.fa-chevron-up' ];\n let $icon = $([showIcons, hideIcons].flatMap(e => e).join(', '), $collapseToggle);\n $icon.toggleClass(showIcons.join(', '), !value).toggleClass(hideIcons.join(', '), value);\n\n $collapseToggle.toggleClass('collapsed', !value);\n $collapse.toggleClass('show', value);\n\n let id = $collapse.attr('data-readmoreid');\n if (id && value !== null) readmoreState[id] = value;\n}\n\n/**\n * \n * @param {JQuery} container \n */\nfunction restoreReadmoreState(container) {\n for (let id in readmoreState){\n let $readmoreToggle = $(`.tum-readmore-wrap[data-readmoreid=${id}] .tum-readmore-toggle`, container).first();\n if ($readmoreToggle.length)\ttoggleReadmore($readmoreToggle, readmoreState[id]);\n\n let $collapse = $(`[data-toggle=\"collapse\"][data-readmoreid=\"${id}\"]`, container);\n if ($collapse.length) toggleCollapse($collapse, readmoreState[id], container);\n }\n}\n\n/**\n * \n * @param {string} id \n * @param {boolean} [value] \n * @returns \n */\nfunction toggleReadmoreById(id, value = null) {\n let $element = $(`[data-readmoreid=\"${id}\"]`);\n if ($element.hasClass('tum-readmore-wrap')) {\n let $toggle = $('.tum-readmore-toggle', $element).first();\n toggleReadmore($toggle, value);\n \n return;\n }\n\n if ($element.is('[data-toggle=collapse]')) {\n toggleCollapse($element, value);\n }\n}\n\nwindow.toggleReadmore = toggleReadmore;\n\nexport { initReadmore, toggleReadmore, restoreReadmoreState, toggleReadmoreById };","/* global tumarket */\n\nimport * as $ from \"jquery\";\nimport tu_slider from \"../slider.js\";\nimport { ajaxSend } from \"../global/fetch\";\nimport { setCookie } from \"../global/cookie\";\nimport \"../../css/modules/tu.m/catalog/otherCities.css\";\nimport \"readmore-js\";\nimport { getPrecompiledTemplate, loadPrecompiledTemplates } from \"../global/templates\";\nimport { initTuPopover } from \"../global/popover\";\nimport { addEventDelegate, insertHtmlAfter, insertHtmlBefore, prependHtml, toggleClass } from \"../global/dom\";\nimport tumGlobal from \"../global.js\";\nimport { isMob } from \"../global/util\";\n\nvar otherCitiesSearch = {\n\toptions: {\n\t\turl: {\n\t\t\tgetProductMiniatures: \"/search/getproductminiatures\"\n\t\t},\n\t\tfirstCity: {},\n\t\totherCities: []\n\t},\n\tinit: function (options) {\n\t\tObject.assign(this.options, options);\n\n\t\tif (!document.querySelector('.tum-search-otherCitiesCont')) return;\n\n\t\taddEventDelegate(document, 'click', '.tum-search-showOtherCitySlider', (element, event) => {\n\t\t\tevent.preventDefault();\n\t\t\ttoggleClass(\".tum-search-otherCity\", \"d-none\", false);\n\n\t\t\tvar city = element.closest(\".tum-search-otherCity\");\n\t\t\tvar productIds = city.getAttribute(\"data-productids\").split(\",\").map(e => Number(e));\n\t\t\tvar linksAfter = city.getAttribute(\"data-linksafter\");\n\t\t\tvar name = city.getAttribute(\"data-name\");\n\t\t\ttoggleClass(city, 'd-none', true);\n\t\t\tthis.getOtherCitySlider(productIds, linksAfter, name);\n\t\t});\n\n\t\taddEventDelegate(document, 'click', \".tum-search-hideOtherCitySlider\", () => {\n\t\t\ttumGlobal.highlight($('.tum-search-otherCities'), 1000);\n\t\t});\n\n\t\taddEventDelegate(document, \"click\", \".tum-search-changeRegion a, a.tum-search-changeRegion\", (element, e) => {\n\t\t\te.preventDefault();\n\t\t\tvar url = element.getAttribute(\"href\");\n\t\t\tif (url == \"#\" || url == \"javascript:void(0)\") return;\n\n\t\t\tsetCookie(\"geo_resetLocation\", \"1\", 1);\n\t\t\tlocation.href = url;\n\t\t});\n\n\t\tif (this.options.otherCities) {\n\t\t\tthis.renderOtherCities().then(() => {\n\t\t\t\tif (this.options.firstCity) {\n\t\t\t\t\tthis.initSliderProducts(this.options.firstCity.slider, this.options.firstCity.linksAfter, this.options.firstCity.hrefToMarketCity);\n\t\t\t\t\tthis.renderProductSlider().then(() => {\n\t\t\t\t\t\tprependHtml(\n\t\t\t\t\t\t\t\".tum-search-otherCitySlider .visibility-sliders\", \n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t${this.options.firstCity.anyCityName}:\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t);\n\t\t\t\n\t\t\t\t\t\tinsertHtmlAfter(\".tum-search-otherCitySlider .visibility-sliders\", this.options.firstCity.linksAfter);\n\t\t\t\t\t\tthis.initProductSlider();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\tgetOtherCitySlider: function (productIds, linksAfter, name) {\n\t\tif (!productIds) {\n\t\t\treturn;\n\t\t}\n\n\t\tajaxSend({ url: this.options.url.getProductMiniatures, data: { productIDs: productIds, disableShowCity: true } }).then(data => {\n\t\t\tif (data.result) {\n\t\t\t\tthis.initSliderProducts(data.Items, linksAfter);\n\t\t\t\tthis.renderProductSlider().then(() => {\n\t\t\t\t\tlet container = document.querySelector(\".tum-search-otherCitySlider .visibility-sliders\");\n\t\t\t\t\tprependHtml(container, `${name}:`)\n\t\t\t\t\tcontainer.nextElementSibling.remove();\n\t\t\t\t\tinsertHtmlAfter(container, linksAfter);\n\t\t\t\t\tthis.initProductSlider();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t},\n\tinitSliderProducts: function (miniatures, linksAfter) {\n\t\tif (miniatures) {\n\t\t\tfor (let item of miniatures) {\n\t\t\t\titem.contextType = 'otherCities';\n\t\t\t}\n\t\t}\n\n\t\tvar products = {\n\t\t\tItems: miniatures,\n\t\t\tMoreItemsLink: linksAfter\n\t\t};\n\t\t\n\t\tthis.options.sliderProducts = products;\n\t},\n\trenderProductSlider: function () {\n\t\treturn loadPrecompiledTemplates(['product-slider']).then(() => {\n\t\t\tvar template = getPrecompiledTemplate('product-slider');\n\t\t\tthis.options.sliderProducts.isSlider = true;\n\t\t\tthis.options.sliderProducts.isMob = isMob();\n\t\t\tthis.options.sliderProducts.mobGrid = true;\n\t\t\tvar htmlOut = template(this.options.sliderProducts);\n\t\t\t\n\t\t\tdocument.querySelector(\".tum-search-otherCitySlider .visibility-sliders\").innerHTML = htmlOut;\n\t\t\ttoggleClass(\".tum-search-otherCitySlider\", 'd-none', false);\n\t\t\t\n\t\t\tinitTuPopover();\n\t\t});\n\t},\n\tinitProductSlider: function () {\n\t\tlet sliderContainer = document.querySelector('.tum-search-otherCitySlider .tu-slider');\n\t\tlet totalProductIds = sliderContainer.previousElementSibling.getAttribute('data-productids').split(',')\n\n\t\tthis.slider = tu_slider.create({ \n\t\t\tcontainer: sliderContainer,\n\t\t\tgetItems: (callback) => {\n\t\t\t\tlet productIDs = totalProductIds.slice(tumarket.defaultSliderSize);\n\t\t\t\tloadPrecompiledTemplates(['product-mini-wrapper']).then(() => {\n\t\t\t\t\treturn ajaxSend({ url: '/search/GetProductMiniatures', data: { productIDs: productIDs, isNeedLinkUnder: true, disableShowCity: true } });\n\t\t\t\t}).then(data => {\n\t\t\t\t\tif (data.result) {\n\t\t\t\t\t\tlet template = getPrecompiledTemplate('product-mini-wrapper');\n\t\t\t\t\t\tfor (let item of data.Items) {\n\t\t\t\t\t\t\titem.isSlider = true;\n\t\t\t\t\t\t\titem.isMob = isMob();\n\t\t\t\t\t\t\titem.contextType = \"otherCities\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet newItems = data.Items.map(e => template(e)).join(\"\");\n\n\t\t\t\t\t\tinsertHtmlBefore(sliderContainer.querySelector('.slider-list .slider-additional-slide'), newItems);\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t\tinitTuPopover();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\ttotalCount: totalProductIds.length + 1\n\t\t});\n\n\t\t$('.b-firm-annotation').readmore({\n\t\t\tmoreLink: ' Ещё',\n\t\t\tlessLink: '',\n\t\t\tspeed: 100,\n\t\t\tcollapsedHeight: 97\n\t\t});\n\t\t\n\t\taddEventDelegate(document, 'click', \".b-firm-annotation\", element => {\n\t\t\t$(element).readmore(\"toggle\");\n\t\t});\n\t},\n\trenderOtherCities: function() {\n\t\treturn loadPrecompiledTemplates(['other-cities']).then(() => {\n\t\t\tvar template = getPrecompiledTemplate('other-cities');\n\t\t\tvar htmlOut = template({ OtherCities: this.options.otherCities});\n\t\t\tdocument.querySelector(\".tum-search-otherCitiesCont\").innerHTML = htmlOut;\n\t\t});\n\t}\n};\n\nwindow.otherCitiesSearch = otherCitiesSearch;\nexport default otherCitiesSearch;"],"names":["bottomModalInitialized","popoverSelectors","closeAllPopoversExcept","element","popovers","document","querySelectorAll","join","filter","e","popover","initPopovers","modal","$popover","closest","length","data","on","$elem","target","tip","$header","find","$body","process","hasClass","addClass","$closeBtnContainer","html","prepend","initTuPopover","sanitize","currentTarget","activeElement","querySelector","dropdown","exceptions","concat","except","matches","_initTuPopover","container","trigger","classList","contains","placement","content","title","template","contentTarget","dataset","contenttarget","innerHTML","originalTitle","pinToBottom","classes","modalId","this","_this","setTimeout","HTMLElement","Document","DocumentFragment","toArray","onPopoverShown","button","callback","getPopoverElement","initTooltips","push","not","tooltip","boundary","tumarket","window","readmoreState","callbacks","toggleReadmore","el","value","skipCallback","$wrap","$toggle","$target","attr","$texts","$otherToggles","id","groupContainer","swapToggleHtml","show","showHtml","hideHtml","forEach","each","$text","_wrap","is","toggleClass","_toggleWrap","ajaxCode","ajaxOptions","ajaxLoaded","then","renderComponent","body","dispatchEvent","Event","initReadmore","result","readmore_processed","preventDefault","otherCitiesSearch","options","url","getProductMiniatures","firstCity","otherCities","init","Object","assign","event","city","productIds","getAttribute","split","map","Number","linksAfter","name","getOtherCitySlider","highlight","location","href","renderOtherCities","initSliderProducts","slider","hrefToMarketCity","renderProductSlider","anyCityName","initProductSlider","productIDs","disableShowCity","Items","nextElementSibling","remove","miniatures","item","contextType","products","MoreItemsLink","sliderProducts","isSlider","isMob","mobGrid","htmlOut","sliderContainer","totalProductIds","previousElementSibling","create","getItems","slice","defaultSliderSize","isNeedLinkUnder","newItems","totalCount","readmore","moreLink","lessLink","speed","collapsedHeight","OtherCities"],"sourceRoot":""}