{"version":3,"file":"main.bundle.js","mappings":"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","sources":["webpack://4tochki/./webpack/src/modules/sliders/sliderArticles/index.js","webpack://4tochki/./webpack/src/modules/sliders/sliderGoods/index.js","webpack://4tochki/./webpack/src/modules/sliders/sliderVideo/index.js","webpack://4tochki/./webpack/bundles/main/index.js","webpack://4tochki/./webpack/src/modules/collapseSideFilter/index.js","webpack://4tochki/./webpack/src/modules/compare-head/templateCompareHead.js","webpack://4tochki/./webpack/src/modules/compare-head/index.js","webpack://4tochki/./webpack/src/modules/fitMapPodbor/baloonTemplate.js","webpack://4tochki/./webpack/src/modules/fitMapPodbor/datepicker/bootstrap-datepicker.js","webpack://4tochki/./webpack/src/modules/fitMapPodbor/templateList.js","webpack://4tochki/./webpack/src/modules/fitMapPodbor/templateListItem.js","webpack://4tochki/./webpack/src/modules/fitMapPodbor/fitMapList.js","webpack://4tochki/./webpack/src/modules/hideLayout/index.js","webpack://4tochki/./webpack/src/modules/fitMapPodbor/index.js","webpack://4tochki/./webpack/src/modules/getAvailableInfo/index.js","webpack://4tochki/./webpack/src/modules/getBadgetInfo/index.js","webpack://4tochki/./webpack/src/modules/mainSearchbar/collectForm.js","webpack://4tochki/./webpack/src/modules/mainSearchbar/avtoStorage.js","webpack://4tochki/./webpack/src/modules/mainSearchbar/syncFilters.js","webpack://4tochki/./webpack/src/modules/mainSearchbar/selectionByCar.js","webpack://4tochki/./webpack/src/modules/mainSearchbar/formFoundError.js","webpack://4tochki/./webpack/src/modules/mainSearchbar/index.js","webpack://4tochki/./webpack/src/modules/mainSearchbar/search.js","webpack://4tochki/./webpack/src/modules/modalAfterAddToCart/index.js","webpack://4tochki/./webpack/src/modules/productItem/index.js","webpack://4tochki/./webpack/src/modules/restListPopovers/index.js","webpack://4tochki/./webpack/src/modules/sideFilter/index.js","webpack://4tochki/./node_modules/js-base64/base64.mjs","webpack://4tochki/./webpack/src/modules/base64Decode/index.js","webpack://4tochki/./webpack/src/modules/sliders/widgetSlider/index.js","webpack://4tochki/./node_modules/bootstrap/js/dist/carousel.js","webpack://4tochki/./node_modules/bootstrap/js/dist/collapse.js","webpack://4tochki/./node_modules/bootstrap/js/dist/popover.js","webpack://4tochki/./node_modules/bootstrap/js/dist/tooltip.js","webpack://4tochki/./node_modules/bootstrap/js/dist/util/sanitizer.js","webpack://4tochki/./node_modules/bootstrap/js/dist/util/swipe.js","webpack://4tochki/./node_modules/bootstrap/js/dist/util/template-factory.js","webpack://4tochki/./node_modules/swiper/modules/keyboard.mjs","webpack://4tochki/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://4tochki/./node_modules/swiper/modules/navigation.mjs","webpack://4tochki/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://4tochki/./node_modules/swiper/modules/pagination.mjs","webpack://4tochki/./node_modules/swiper/modules/zoom.mjs","webpack://4tochki/./node_modules/swiper/modules/thumbs.mjs","webpack://4tochki/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://4tochki/./node_modules/swiper/shared/utils.mjs","webpack://4tochki/./node_modules/swiper/shared/swiper-core.mjs"],"sourcesContent":["/* NO JQUERY */\nimport './index.scss';\nimport {config} from 'core/config';\nimport Swiper from 'swiper';\nimport {Navigation} from 'swiper/modules';\nimport 'swiper/scss/navigation';\n// import Glider from 'glider-js';\n// import 'glider-js/glider-compat.min.js';\n\nexport const sliderArticles = {\n init: function() {\n new Swiper('.SwiperArticles', {\n slidesPerView: 4,\n spaceBetween: 0,\n modules: [Navigation],\n navigation: {\n nextEl: '.glider-next',\n prevEl: '.glider-prev',\n },\n breakpoints: {\n 0: {\n slidesPerView: 1.5,\n spaceBetween: 7,\n },\n 1010: {\n slidesPerView: 2,\n spaceBetween: 14,\n },\n 1310: {\n slidesPerView: 4,\n spaceBetween: 7,\n },\n },\n });\n },\n};\n// const SELECT = {\n// 'container': '.sliderArticles',\n// 'sliderSelector': '.sliderArticles__glider',\n// 'sliderPrevSelector': '.sliderArticles__glider-prev',\n// 'sliderNextSelector': '.sliderArticles__glider-next',\n// };\n\n// const CLASS_CONTAINER_VISIBLE = SELECT.container.replace('.', '') + '--visible';\n// const SLIDER = document.querySelector(SELECT.sliderSelector);\n\n// export const sliderArticles = {\n// init: function() {\n// if (document.querySelector(SELECT.container) != null) {\n// SLIDER.addEventListener('glider-slide-visible', function() {\n// const containerClass = CLASS_CONTAINER_VISIBLE;\n// document.querySelector(SELECT.container).classList.add(containerClass);\n// });\n// new Glider(SLIDER, {\n// slidesToShow: 1,\n// slidesToScroll: 1,\n// draggable: false,\n// duration: 1.5,\n// arrows: {\n// prev: SELECT.sliderPrevSelector,\n// next: SELECT.sliderNextSelector,\n// },\n// responsive: [{\n// // screens greater than >= XL\n// breakpoint: config.breakpoints.xl,\n// settings: {\n// slidesToShow: 4,\n// slidesToScroll: 1,\n// },\n// }, {\n// breakpoint: config.breakpoints.lg,\n// settings: {\n// slidesToShow: 3,\n// slidesToScroll: 1,\n// },\n// }, {\n// breakpoint: config.breakpoints.md,\n// settings: {\n// slidesToShow: 2,\n// slidesToScroll: 1,\n// },\n// }, {\n// breakpoint: config.breakpoints.sm,\n// settings: {\n// slidesToShow: 1,\n// slidesToScroll: 1,\n// },\n// }],\n// });\n// } else {\n// console.warn(`${SELECT.container} not found!`);\n// }\n// },\n// };\n","/* NO JQUERY */\nimport './index.scss';\nimport { config } from 'core/config';\nimport Swiper from 'swiper';\nimport {Navigation} from 'swiper/modules';\nimport 'swiper/scss/navigation';\n\nexport const sliderGoods = {\n init: function() {\n new Swiper('.SwiperGoods', {\n slidesPerView: 5,\n spaceBetween: 7,\n modules: [Navigation],\n navigation: {\n nextEl: '.sliderGoods-next',\n prevEl: '.sliderGoods-prev',\n },\n on: {\n sliderMove: function(e) {\n galleryEdgeGradient(e);\n },\n slideChange: function(e) {\n galleryEdgeGradient(e);\n },\n },\n breakpoints: {\n 0: {\n slidesPerView: 1,\n spaceBetween: 0,\n },\n 375: {\n slidesPerView: 1.5,\n spaceBetween: 14,\n },\n 550: {\n slidesPerView: 2,\n spaceBetween: 7,\n },\n 1010: {\n slidesPerView: 3,\n spaceBetween: 7,\n },\n 1310: {\n slidesPerView: 4,\n spaceBetween: 7,\n },\n 1450: {\n slidesPerView: 5,\n spaceBetween: 7,\n },\n },\n });\n },\n};\n\nfunction galleryEdgeGradient(element) {\n if (element.isBeginning) {\n element.el.classList.add('SwiperGoods--begin');\n element.el.classList.remove('SwiperGoods--end');\n } else if (element.isEnd) {\n element.el.classList.add('SwiperGoods--end');\n element.el.classList.remove('SwiperGoods--begin');\n } else {\n element.el.classList.remove('SwiperGoods--begin');\n element.el.classList.remove('SwiperGoods--end');\n }\n}\n\n","/* NO JQUERY */\nimport './index.scss';\nimport {config} from 'core/config';\nimport Swiper from 'swiper';\nimport {Navigation} from 'swiper/modules';\nimport 'swiper/scss/navigation';\n\nexport const sliderVideo = {\n init: function() {\n new Swiper('.SwiperVideo', {\n slidesPerView: 4,\n spaceBetween: 7,\n modules: [Navigation],\n navigation: {\n nextEl: '.sliderVideo-next',\n prevEl: '.sliderVideo-prev',\n },\n on: {\n sliderMove: function(e) {\n galleryEdgeGradient(e);\n },\n slideChange: function(e) {\n galleryEdgeGradient(e);\n },\n },\n breakpoints: {\n 0: {\n slidesPerView: 1.5,\n spaceBetween: 7,\n },\n 1010: {\n slidesPerView: 2,\n spaceBetween: 14,\n },\n 1310: {\n slidesPerView: 4,\n spaceBetween: 7,\n },\n },\n });\n },\n};\n\nfunction galleryEdgeGradient(element) {\n if (element.isBeginning) {\n element.el.classList.add('SwiperVideo--begin');\n element.el.classList.remove('SwiperVideo--end');\n } else if (element.isEnd) {\n element.el.classList.add('SwiperVideo--end');\n element.el.classList.remove('SwiperVideo--begin');\n } else {\n element.el.classList.remove('SwiperVideo--begin');\n element.el.classList.remove('SwiperVideo--end');\n }\n}\n","import './index.scss';\nimport 'nouislider/distribute/nouislider.css';\n\nimport {mainSearchbar} from 'modules/mainSearchbar'; // done!\nimport {sliderArticles} from 'modules/sliders/sliderArticles'; // done!\nimport {sliderGoods} from 'modules/sliders/sliderGoods'; // done!\nimport {sliderVideo} from 'modules/sliders/sliderVideo'; // done!\nimport {sideFilter} from 'modules/sideFilter'; // done!\nexport {sideFilter} from 'modules/sideFilter';\n\nmainSearchbar.init();\nsliderArticles.init();\nsliderGoods.init();\nsliderVideo.init();\nsideFilter.init();\n","import {config} from 'core/config';\nimport Collapse from 'bootstrap/js/dist/collapse';\n\nexport function collapseSideFilter() {\n const $sideFilter = document.querySelector('#collapseSideFilter');\n if ($sideFilter !== null) {\n const sideFilterInstance = Collapse.getOrCreateInstance($sideFilter, {toggle: false});\n\n if (window.innerWidth < config.breakpoints.md) {\n sideFilterInstance.hide();\n } else {\n sideFilterInstance.show();\n }\n }\n};\n","export const templateCompareHead = (data) =>\n `
\n
\n
\n
\n \n Товар ${data.name}\n \n ${data.action == 'add' ? 'добавлен в избранное' : 'удалён из избранного'}\n \n \n \n Всего в списке \n \n \n \n \n
\n
\n
\n \n В избранное\n \n
\n \n
\n
\n
\n
`;\n","import './index.scss';\n\nimport {config} from 'core/config';\nimport {templateCompareHead} from './templateCompareHead';\n\nconst SELECT = {\n 'good': '.js-compare-good',\n 'addedToCompare': 'js-added-to-compare',\n 'head': '.js-compare-head',\n 'headName': '.js-compare-name',\n 'headClose': '.js-compare-head-close',\n 'headCount': '.js-compare-count',\n 'headAction': '.js-compare-action-text',\n 'headDontShowBtn': '.js-compare-dontShow',\n 'jsonUrlAdd': '/compare/add',\n 'jsonUrlRemove': '/compare/remove',\n};\n\nexport const compareHead = {\n bindEvents: function() {\n const $addTofavorites = document.querySelector('.js-add-to-favorites');\n if ($addTofavorites !== null) {\n $addTofavorites.addEventListener('click', function() {\n if (this.classList.contains('added')) {\n this.querySelector('.link').textContent = 'Добавить в избранное';\n this.classList.remove('added');\n compareHead.removeGoodFromCompare(this.dataset.goodId);\n } else {\n this.classList.add('added');\n this.querySelector('.link').textContent = 'Удалить из избранного';\n compareHead.addGoodToCompare(this.dataset.goodId);\n }\n });\n }\n compareHead.setCompareStatus();\n },\n update: function(data) {\n const $compareHead = document.querySelector(SELECT.head);\n const $comparHeadName = document.querySelector(SELECT.headName);\n const $comparHeadCount = document.querySelector(SELECT.headCount);\n const $comparHeadAction = document.querySelector(SELECT.headAction);\n if ($compareHead !== null) {\n $compareHead.style.display = 'block';\n $comparHeadName.textContent = data.name;\n $comparHeadCount.innerHTML = '';\n if (data.action == 'add') {\n $comparHeadAction.innerHTML = 'добавлен в избранное';\n compareHead.addGoodToCompare(data.id);\n } else {\n $comparHeadAction.innerHTML = 'удалён из избранного';\n compareHead.removeGoodFromCompare(data.id);\n }\n } else {\n // $('#page').prepend(templateCompareHead(data));\n document.getElementById('page').insertAdjacentHTML('beforebegin', templateCompareHead(data));\n document.querySelector(SELECT.headClose).addEventListener('click', function() {\n document.querySelector(SELECT.head).style.display = 'none';\n });\n document.querySelector(SELECT.headDontShowBtn).addEventListener('click', function() {\n document.querySelector(SELECT.head).style.display = 'none';\n document.cookie = 'compareDontShow=true; max-age=86400; path=/;';\n });\n if (data.action == 'add') {\n compareHead.addGoodToCompare(data.id);\n } else {\n compareHead.removeGoodFromCompare(data.id);\n }\n };\n },\n addGoodToCompare: function(goodId) {\n config.get(SELECT.jsonUrlAdd, {gogoods_id: goodId}).then((response) => {\n compareHead.updateInHead();\n });\n document.cookie = 'compareDontShow=false; max-age=86400; path=/;';\n },\n removeGoodFromCompare: function(goodId) {\n config.get(SELECT.jsonUrlRemove, {gogoods_id: goodId}).then((response) => {\n compareHead.updateInHead();\n });\n },\n updateInHead: function() {\n const $headCount = document.querySelector(SELECT.headCount);\n config.get('/compare/list').then((response) => {\n if ($headCount !== null) $headCount.innerHTML = response.count_goods;\n const data = Object.values(response.goods);\n if (data.length > 0) {\n document.querySelector('.header-favorites .link').textContent = `Избранное (${data.length})`;\n } else {\n document.querySelector('.header-favorites .link').textContent = 'Избранное';\n }\n\n if (window.innerWidth <= config.breakpoints.lg) {\n const mobileCompare = document.querySelector('.compare-mobile');\n\n if (mobileCompare !== null && data.length > 0) {\n mobileCompare.classList.remove('d-none');\n let mobileLinkCompareVal = mobileCompare.querySelector('.compare-mobile-val');\n\n if (mobileLinkCompareVal === null) {\n mobileLinkCompareVal = document.createElement('span');\n mobileLinkCompareVal.classList.add('compare-mobile-val');\n mobileCompare.appendChild(mobileLinkCompareVal);\n }\n mobileLinkCompareVal.textContent = data.length;\n } else {\n mobileCompare.classList.add('d-none');\n }\n }\n });\n },\n setCompareStatus: function() {\n config.get('/compare/list').then((response) => {\n const data = Object.values(response.goods);\n if (data.length > 0) {\n document.querySelector('.header-favorites .link').textContent = `Избранное (${data.length})`;\n data.forEach((goodId) => {\n const $goodLink = document.querySelector(`.js-add-to-favorites[data-good-id=\"${goodId}\"]`);\n const $goodItem = document.querySelector(`.js-added-to-compare-${goodId}`);\n if ($goodLink) {\n $goodLink.classList.add('added');\n $goodLink.querySelector('.link').textContent = 'Удалить из избранного';\n }\n if ($goodItem) {\n $goodItem.classList.add('js-added-to-compare');\n $goodItem.title = 'Убрать из избранного';\n $goodItem.dataset.action = 'remove';\n }\n });\n }\n if (window.innerWidth <= config.breakpoints.lg) {\n const mobileCompare = document.querySelector('.compare-mobile');\n\n if (mobileCompare !== null && data.length > 0) {\n mobileCompare.classList.remove('d-none');\n let mobileLinkCompareVal = mobileCompare.querySelector('.compare-mobile-val');\n\n if (mobileLinkCompareVal === null) {\n mobileLinkCompareVal = document.createElement('span');\n mobileLinkCompareVal.classList.add('compare-mobile-val');\n mobileCompare.appendChild(mobileLinkCompareVal);\n }\n mobileLinkCompareVal.textContent = data.length;\n } else {\n mobileCompare.classList.add('d-none');\n }\n }\n });\n },\n};\n","export const baloonTemplate = (data) => {\n let bln = `${data.name}`;\n if (data.icon) {\n bln += `\n
\n
\n \n
\n
`;\n }\n if (data.actual_address) {\n bln += `${data.actual_address}`;\n\n if (data.phone) {\n bln += `тел: ${data.phone}`;\n }\n }\n if (data.workgrafic) {\n bln += `\n
\n
\n ${data.workgrafic}\n
\n
`;\n }\n\n if (data.paymentsInfo) {\n bln += `
\n Способы оплаты:\n `;\n for (const pointInfo in data.paymentsInfo) {\n bln += `
\n \n
`;\n }\n bln += `
`;\n }\n\n if (data.shm) {\n bln += `\n Выбрать\n `;\n }\n\n // ТОВАРИЩ, не забудь проверить карточку ШМ, Ñ‚.к. шаблон балуна общий для самовывоза и ШМ\n return bln;\n};\n","/*!\n * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n}(function($, undefined){\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n // Use date arithmetic to allow dates with different times to match\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!$.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\t\tthis.isInline = !this.component && this.element.is('div');\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!$.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = (o.weekStart + 6) % 7;\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!$.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this),\n paste: $.proxy(this.paste, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n // component: input + button\n else if (this.component && this.inputField.length) {\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.inputField, events],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\n\t\t\t\t\t}, this)\n\t\t\t\t}]);\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length ||\n\t\t\t\t\t\t\tthis.isInline\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t} else if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis.update();\n\t\t\tthis._trigger('changeDate');\n\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.inputField.val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += ' ';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '';\n\t\t\t}\n\t\t\thtml += '';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n }\n\t\t},\n\n\t\tfillMonths: function(){\n var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '' + dates[this.o.language].monthsShort[i] + '';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t\tif (date.valueOf() === this.range[0]){\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length-1]){\n cls.push('range-end');\n }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t classes.push('focused');\n }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '' + currVal + '';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n todayDate = UTCToday(),\n titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push(''+ calWeek +'');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif ($.isFunction($.uniqueSort)) {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + content + '');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push('');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false && !$(month).hasClass('disabled'))\n\t\t\t\t\t $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif ((!which && this.o.updateViewDate) || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n \t\t\t\t\tif (e.ctrlKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n \t\t\t\t\t} else if (e.shiftKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n \t\t\t\t\t}\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n\t\t\t\t\tif (newViewDate){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, 'datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j]){\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k]){\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '«',\n\t\t\trightArrow: '»'\n\t\t},\n showWeekDays: true\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\",\n\t\t\ttitleFormat: \"MM yyyy\"\n\t\t},\n\t\tru: {\n\t\t\tdays: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\n\t\t\tdaysShort: [\"Вск\", \"Пнд\", \"Ð’Ñ‚Ñ€\", \"Срд\", \"Чтв\", \"Птн\", \"Суб\"],\n\t\t\tdaysMin: [\"Вс\", \"Пн\", \"Ð’Ñ‚\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n\t\t\tmonths: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Май\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Октябрь\", \"Ноябрь\", \"Декабрь\"],\n\t\t\tmonthsShort: [\"Янв\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Июн\", \"Июл\", \"Авг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\n\t\t\ttoday: \"Сегодня\",\n\t\t\tclear: \"Очистить\",\n\t\t\tformat: \"dd.mm.yyyy\",\n\t\t\tweekStart: 1,\n\t\t\tmonthsTitle: \"Месяцы\"\n\t\t},\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, assumeNearby){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['yy'] = setters_map['yyyy'];\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCToday();\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toDisplay)\n return format.toDisplay(date, format, language);\n var val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.leftArrow+''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.rightArrow+''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t'',\n\t\tcontTemplate: '',\n\t\tfootTemplate: ''+\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\t\t\t''\n\t};\n\tDPGlobal.template = '
'+\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\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\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\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\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\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\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\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\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\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.9.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n","export const templateList = (data) =>\n ``;\n","export const templateListItem = (data) =>\n `
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
`;\n","import {config} from 'core/config';\nimport * as jQuery from 'jquery';\nwindow.$ = jQuery;\nimport {spinner} from 'modules/spinner';\nimport {templateListItem} from './templateListItem';\nimport {datepicker} from './datepicker/bootstrap-datepicker';\n// import './datepicker/bootstrap-datepicker.ru.min.js';\n\nlet selectDateSto;\n\nexport const fitMapList = {\n config: {\n 'list': '.fitMap__list',\n 'listItem': '.fitMap__list-item',\n 'listItemInner': '.fitMap__list-item-inner',\n 'listItemActive': 'fitMap__list-item--active',\n 'formGroupTime': '.js-form-group-time',\n 'formGroupMark': '.js-form-group-mark',\n 'formGroupModel': '.js-form-group-model',\n },\n init: function(html) {\n // $(fitMapList.config.list).html(html);\n $(fitMapList.config.list).html(`\n
\n \n
\n \n
\n \n
\n
\n \n
\n
\n
\n `);\n this.bindEvents();\n fitMapList.initCalendar($('#address').find(':selected').val());\n $('.fitMap__address').text($('#address').find(':selected').attr('data-fitmapaddress'));\n const amount = $('.fitMapSelect #address').find('option:selected').attr('data-fitMapAmount');\n $('.fitMap__amount').html(amount + ' ₽');\n },\n bindEvents: function() {\n $(document).on('click', '.js-fitMapItem', function() {\n $(fitMapList.config.listItem).removeClass(fitMapList.config.listItemActive);\n $(fitMapList.config.listItemInner).remove();\n $(this).parents(fitMapList.config.listItem).addClass(fitMapList.config.listItemActive);\n const pointId = $(this).parents(fitMapList.config.listItem).attr('data-fitmapid');\n fitMapList.appendForm(pointId);\n });\n\n $(document).on('change', 'select#address', function() {\n const id = $(this).find(':selected').val();\n const address = $(this).find(':selected').attr('data-fitmapaddress');\n const amount = $('.fitMapSelect #address').find('option:selected').attr('data-fitMapAmount');\n // fitMapList.initCalendar(id);\n $('.fitMap__address').text(address);\n $('.fitMap__amount').html(amount + ' ₽');\n\n const selectedVal = selectDateSto;\n spinner.show($('.fitMap__time'));\n const selectedId = $('#address').find(':selected').attr('data-fitmapid');\n const timeBlock = $('.fitMap__time');\n $.when(config.doRequest('/orders/stotimeslist/', {'id': selectedId, 'date': selectedVal, 'needDelivery': 'false'})).done(function(answer) {\n timeBlock.html('');\n // ToDo: допилить, т.к. апи пока выдает неадкватный ответ. Добавить проверку на есть свободные часы в этом дне или нет.\n $.each(answer.scheduleItems[0].availableTime, function() {\n timeBlock.append(`\n `);\n });\n spinner.hide($('.fitMap__time'));\n });\n });\n\n $(document).on('change', 'select#date', function() {\n const selectedVal = $(this).find(':selected').val();\n if (!selectedVal || selectedVal === 'Дата') return;\n spinner.show($(this).parents(fitMapList.config.listItem));\n const selectedId = $(this).parents('.fitMap__list-item').attr('data-fitmapid');\n const dropdown = $('select#time');\n $.when(config.doRequest('/orders/stotimeslist/', {'id': selectedId, 'date': selectedVal, 'needDelivery': 'false'})).done(function(answer) {\n dropdown.prop('disabled', false);\n dropdown.find('option:not(:first)').remove();\n let counter = 1;\n // ToDo: допилить, т.к. апи пока выдает неадкватный ответ. Добавить проверку на есть свободные часы в этом дне или нет.\n $.each(answer.scheduleItems[0].availableTime, function() {\n dropdown.append(``);\n counter++;\n });\n spinner.hide();\n $('select#date').prop('disabled', false);\n });\n });\n\n $(document).on('change', 'select#time', function() {\n const selected = $(this).find(':selected');\n if (!selected) return;\n $('.js-form-row-fio').show();\n\n const maskPhone = document.querySelector('.input-phone');\n const maskCarNumber = document.querySelector('.input-carnumber');\n if (maskPhone) {\n require(['imask'], function() {\n IMask(maskPhone, {\n mask: '+{7} (000) 000-00-00',\n lazy: false,\n });\n });\n }\n if (maskCarNumber) {\n require(['imask'], function() {\n IMask(maskCarNumber, {\n mask: /^[\\da-zа-я]+$/,\n lazy: true,\n });\n });\n }\n });\n\n $(document).on('submit', 'form#form-signup', function() {\n $('.fdatetime').html('');\n $('.fcarnumber').html('');\n const stoid = $('.fitMapSelect #address').find('option:selected').attr('data-fitmapid');\n const stoaddress = $('.fitMapSelect #address').find('option:selected').attr('data-fitmapaddress');\n const data = $(this).serialize();\n spinner.show($(this).parents(fitMapList.config.listItem));\n $.when(config.doRequest('/orders/registrationinsto', {'stoid': stoid, 'data': data})).done(function(answer) {\n if (answer.result) {\n const date = new Date(answer.tireFittingTime);\n const day = date.getDate().toString().padStart(2, '0');\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n const h = date.getHours();\n const m = date.getMinutes().toString().padStart(2, '0');\n const formatDatetime = day + '.' + month + '.' + year + ' ' + h + ':' + m;\n $('#tableStepShm').css('padding', '15px').html('Выбранная точка: '+stoaddress+'
Выбранное время: ' + formatDatetime + '
Стоимость услуг: ' + answer.serviceInfo.price + ' руб.
Отменить запись');\n } else {\n switch (answer.error) {\n case 'Время на запись занято. Попробуйте выбрать другое время':\n $('.fdatetime').html('Это время уже занято');\n break;\n case 'Неправильный гос. номер автомобиля':\n $('.fcarnumber').html('Неправильный номер автомобиля');\n break;\n default:\n $('.fdatetime').html('Произошла ошибка записи');\n }\n }\n spinner.hide();\n });\n return false;\n });\n\n $('.bsDatepicker').on('changeDate', function(e) {\n const selectedVal = e.format();\n selectDateSto = e.format();\n spinner.show($('.fitMap__time'));\n const selectedId = $('#address').find(':selected').attr('data-fitmapid');\n const timeBlock = $('.fitMap__time');\n $.when(config.doRequest('/orders/stotimeslist/', { 'id': selectedId, 'date': selectedVal, 'needDelivery': 'false'})).done(function (answer) {\n timeBlock.html('');\n // ToDo: допилить, т.к. апи пока выдает неадкватный ответ. Добавить проверку на есть свободные часы в этом дне или нет.\n $.each(answer.scheduleItems[0].availableTime, function() {\n timeBlock.append(`\n `);\n });\n });\n });\n },\n appendForm: function(id) {\n if (id) {\n $(fitMapList.config.listItem).removeClass(fitMapList.config.listItemActive);\n $(fitMapList.config.listItemInner).remove();\n const item = document.querySelector(`.fitMap__list-item[data-fitmapid=\"${id}\"]`);\n item.classList.add(fitMapList.config.listItemActive);\n const topPos = item.offsetTop;\n document.querySelector('.fitMap__list').scrollTop = topPos;\n }\n if ($(`.${fitMapList.config.listItemActive} .fitMap__list-item-inner`).length == 0) {\n $(`.${fitMapList.config.listItemActive}`).append(templateListItem);\n }\n spinner.show($(this).parents(fitMapList.config.listItem));\n let shopListUrl = '/Orders/deliveryPoints/maxdays.php';\n if ($('.changeRegionId').length) {\n shopListUrl += '?region_id='+$('.changeRegionId').attr('newRegionId');\n }\n $.getJSON(shopListUrl, {'id': id, 'needDelivery': 'false'}, function(json) {\n const dates = [];\n const date = new Date();\n for (let i = 0; i < 14; i++) {\n const tempDate = new Date();\n tempDate.setDate(date.getDate()+(i+json));\n const dd = tempDate.getDate().toString().padStart(2, '0');\n let mm = tempDate.getMonth() + 1;\n mm = mm.toString().padStart(2, '0');\n const yyyy = tempDate.getFullYear();\n const fRest = yyyy + '-' + mm + '-' + dd;\n const fChpu = dd + '.' + mm + '.' + yyyy;\n dates[i] = [fRest, fChpu];\n }\n const dropdown = $('select#date');\n dropdown.html('');\n $.each(dates, function(a, b) {\n dropdown.append('');\n });\n spinner.hide();\n });\n $('select#date').prop('disabled', false);\n },\n selectAddress: function(id) {\n const currentId = $('select#address').find(':selected').val();\n if (currentId != id) {\n $('select#address').val(id).trigger('change');\n }\n },\n initCalendar: function(id = 0, selector = '.bsDatepicker') {\n // SANDBOX - https://uxsolutions.github.io/bootstrap-datepicker/\n spinner.show($(selector));\n $(selector).datepicker('destroy');\n const iconArrowLeft = ``;\n const iconArrowRight = ``;\n\n let shopListUrl = '/Orders/deliveryPoints/maxdays.php';\n if ($('.changeRegionId').length) {\n shopListUrl += '?region_id=' + $('.changeRegionId').attr('newRegionId');\n }\n $.getJSON(shopListUrl, {'id': id, 'needDelivery': 'false'}, function(json) {\n const dates = [];\n const enableDays = [];\n const date = new Date();\n const firstDate = new Date();\n for (let i = 0; i < 14; i++) {\n const tempDate = new Date();\n tempDate.setDate(date.getDate() + (i + json));\n const dd = tempDate.getDate().toString().padStart(2, '0');\n let mm = tempDate.getMonth() + 1;\n mm = mm.toString().padStart(2, '0');\n const yyyy = tempDate.getFullYear();\n const fRest = yyyy + '-' + mm + '-' + dd;\n const fChpu = dd + '.' + mm + '.' + yyyy;\n dates[i] = [fRest, fChpu];\n enableDays[i] = yyyy + '-' + mm + '-' + dd;\n }\n $('.fitMap__time').html('');\n $(selector).datepicker({\n maxViewMode: 1,\n weekStart: 1,\n startDate: '+0d',\n templates: {\n leftArrow: iconArrowLeft,\n rightArrow: iconArrowRight,\n },\n beforeShowDay: function(d) {\n // console.log(enableDays[0]);\n if (enableDays.length > 0) {\n if (enableDays.indexOf(fitMapList.formatDate(d)) < 0) {\n $('.fitMap__clearTime').show();\n return {enabled: false};\n } else {\n return {enabled: true};\n }\n }\n },\n // todayHighlight: true,\n format: 'yyyy-mm-dd',\n language: 'ru',\n });\n\n // выставляем первую возможную дату\n $(selector).datepicker('setDate', enableDays[0]);\n\n spinner.hide($(selector));\n });\n },\n formatDate: function(d) {\n let day = String(d.getDate());\n if (day.length == 1) {\n day = '0' + day;\n };\n let month = String((d.getMonth() + 1));\n if (month.length == 1) {\n month = '0' + month;\n };\n return d.getFullYear() + '-' + month + '-' + day;\n },\n};\n","import './index.scss';\n\nexport const hideLayout = {\n show: function(text = '', element = document.body, icon = '') {\n if (element !== null) {\n if (element.jquery) element = $(element)[0];\n element.classList.add('hideLayout-box-parent');\n element.insertAdjacentHTML('beforeend', getLayoutTemplate(element, text, icon));\n }\n },\n hide: function(element = document.body) {\n if (element !== null) {\n if (element.jquery) element = $(element)[0];\n element.classList.remove('hideLayout-box-parent');\n element.querySelector('.hideLayout-box').remove();\n }\n },\n};\n\nconst getLayoutTemplate = function(element, text, icon) {\n const hideLayoutClass = element === document.body ? 'hideLayout-box--viewport' : '';\n let content = `\n \n
`;\n if (icon) {\n content += `\"\"`;\n }\n content += `

${text}

\n
\n
`;\n return content;\n};\n","// import './bootstrap-datepicker.scss';\nimport './index.scss';\nimport * as jQuery from 'jquery';\nwindow.$ = jQuery;\n\nimport Tab from 'bootstrap/js/dist/tab';\n\nimport { config } from 'core/config';\nimport { spinner } from 'modules/spinner';\nimport { templateList } from './templateList';\nimport { fitMapList } from './fitMapList';\nimport { collectForm } from \"modules/mainSearchbar/collectForm\";\nimport { modalAfterAddToCart } from \"modules/modalAfterAddToCart\";\nimport { metricaModule } from \"modules/metrica\";\nimport { baloonTemplate } from 'modules/fitMapPodbor/baloonTemplate';\nimport { hideLayout } from \"modules/hideLayout\";\n\nlet activePlacemark;\n\nexport const fitMapPodbor = {\n config: {\n 'container': '#tableStepShm',\n 'container0': '#tableStepShm0',\n 'postfactPayment': '.or-payment-btn-div:not([data-payformafiz=\"Предоплачено\"])',\n 'listItem': '.fitMap__list',\n 'block': '.fitMap__block',\n },\n podbor: false,\n init: function (podbor = false) {\n this.bindEvents();\n this.podbor = podbor;\n },\n bindEvents: function () {\n $(document).on('click', '.js-delete-shm', function () {\n $('#tableStepShm').css('padding', '0px').html('
');\n spinner.show($(fitMapPodbor.config.container));\n $.when(config.doRequest('/orders/deleteregistrationinsto')).done(function () {\n fitMapPodbor.initYandexMap();\n });\n });\n document.querySelector('.goServicePageCartWidget__add-to-cart').addEventListener('click', function (e) {\n e.preventDefault();\n const select = $('.fitMapSelect #address').find('option:selected');\n const date = $('.datepicker-days .active.day').attr('data-dateFormat');\n const time = $('.fitMap__time .btn.active span').html();\n const paramsMainSearch = collectForm('.mainSearchForm');\n const data = {};\n for (const pair of paramsMainSearch.entries()) {\n data[pair[0]] = pair[1];\n }\n $.when(config.doRequest('/Orders/addtocartservice/', {\n data: data,\n stoid: select.attr('data-fitmapid'),\n serviceCode: $('#serviceCode').val(),\n amount: select.attr('data-fitmapamount'),\n address: select.attr('data-fitmapaddress'),\n carNumber: $('#carnumber').val(),\n date: date,\n time: time,\n })).done(function (answer) {\n if (answer.result === 'true') {\n document.location.href = '/Orders/start.php';\n } else {\n alert(answer.comment);\n }\n });\n return false;\n });\n\n const fitMapButton = $(`button[href=\"${fitMapPodbor.config.container}\"]`);\n if ($(fitMapPodbor.config.container).hasClass('map-initialized')) {\n return;\n }\n spinner.show($(fitMapPodbor.config.container));\n if (typeof ymaps == 'undefined') {\n $.getScript('https://api-maps.yandex.ru/2.1/?apikey=607007ed-0904-4368-8445-809187c8313d&load=package.standard&lang=ru-RU', function () {\n if (typeof ymaps !== 'undefined') {\n fitMapPodbor.initYandexMap();\n }\n });\n } else {\n fitMapPodbor.initYandexMap();\n }\n $(fitMapPodbor.config.container).addClass('map-initialized');\n\n const maskCarNumber = document.querySelector('.input-carnumber');\n if (maskCarNumber) {\n require(['imask'], function () {\n IMask(maskCarNumber, {\n mask: /^[\\dAaBbEeKkMmHhOoPpCcTtXxYyАаВвЕеКкМмНнОоРрСсТтХхУу]+$/,\n lazy: true,\n });\n });\n }\n },\n initYandexMap: function () {\n ymaps.ready(function () {\n const paramsMainSearch = collectForm('.mainSearchForm');\n const data = {};\n for (const pair of paramsMainSearch.entries()) {\n data[pair[0]] = pair[1];\n }\n let d = data;\n $.when(config.doRequest('/orders/stolistwithoutgoods/', { data })).done(function (data) {\n const points = data.searchResult;\n $('#serviceCode').val(data.searchResult[0].serviceCode);\n const myMap = new ymaps.Map('fitMap', {\n center: [55.751574, 37.573856],\n zoom: 9,\n }, {\n searchControlProvider: 'yandex#search',\n });\n\n const MyIconContentLayout = ymaps.templateLayoutFactory.createClass(\n `
\n
от 0 ₽
\n
{{ properties.geoObjects.length }}
\n
`);\n const clusterer = new ymaps.Clusterer({\n clusterIcons: [\n {\n href: '',\n size: [100, 32],\n offset: [-50, -16],\n }],\n hasBalloon: false,\n clusterIconContent: null,\n clusterIconContentLayout: MyIconContentLayout,\n });\n\n clusterer.options.set({\n groupByCoordinates: false, // Специальный режим работы кластеризатора при котором кластеры образуются только из геобъектов с одинаковыми координатами.\n clusterDisableClickZoom: false, // запрещение масштабирования карты при щелчке по кластеру\n clusterBalloonMinHeight: 260,\n gridSize: 128, // Размер ячейки кластеризации в пикселях. Значение должно быть равно 2^n (в область 256 на 256 пикселей должно умещаться ровное количество ячеек).\n });\n\n $(document).on('change', 'select#address', function () {\n const id = $(this).find(':selected').val();\n const geoObjs = clusterer.getGeoObjects();\n geoObjs.forEach(function (elem) {\n if (elem.id == id) {\n if (activePlacemark) {\n if (activePlacemark === elem) {\n activePlacemark.options.unset('preset');\n } else {\n activePlacemark.options.set('iconColor', '#446DD7');\n activePlacemark = elem;\n }\n } else {\n activePlacemark = elem;\n }\n elem.options.set('iconColor', 'red');\n }\n });\n });\n\n const geoObjects = [];\n let listHtml = '';\n\n let counter = 0;\n let coords = {};\n for (let i = 0; i < points.length; i++) {\n let priceWithDiscount = points[i].amount - points[i].discount;\n let txtPriceWithDiscount = '';\n if (priceWithDiscount < 0) priceWithDiscount = 0;\n coords = points[i].geoData.coordinates;\n if (priceWithDiscount == 0) {\n txtPriceWithDiscount = points[i].name;\n } else {\n txtPriceWithDiscount = priceWithDiscount + ' ₽';\n }\n // reverse т.к. с рестаера приходит д,ш\n geoObjects[counter] = new ymaps.Placemark(coords.reverse(), {\n iconCaption: txtPriceWithDiscount,\n price: priceWithDiscount,\n }, {\n iconColor: '#446DD7',\n });\n geoObjects[counter].id = points[i].stoId;\n const pointsData = {\n name: points[i].name,\n address: points[i].address,\n id: points[i].stoId,\n amount: points[i].amount,\n discount: points[i].discount,\n };\n listHtml += templateList(pointsData);\n counter += 1;\n }\n spinner.hide($(fitMapPodbor.config.container));\n fitMapList.init(listHtml);\n\n clusterer.add(geoObjects);\n clusterer.events.add('click', function (e) {\n const obj = e.get('target');\n if (!obj.properties.get('balloonContent')) {\n $.when(config.doRequest('/orders/pontInfo/', { 'stoid': obj.id, 'formating': true })).done(function (data) {\n const content = baloonTemplate(data);\n obj.properties.set('balloonContent', content);\n obj.balloon.open();\n });\n }\n if (activePlacemark) {\n if (activePlacemark === obj) {\n activePlacemark.options.unset('preset');\n } else {\n activePlacemark.options.set('iconColor', '#446DD7');\n activePlacemark = obj;\n }\n } else {\n activePlacemark = obj;\n }\n obj.options.set('iconColor', 'red');\n if (obj.id !== undefined) {\n fitMapList.selectAddress(obj.id);\n }\n });\n\n myMap.events.add(['actionend'], function (e) {\n const clusters = clusterer.getClusters();\n window.test = clusters;\n clusters.forEach((element) => {\n const points = element.properties.get('geoObjects');\n const priceArray = [];\n points.forEach((e) => {\n priceArray.push(e.properties.get('price'));\n });\n const MyIconContentLayout2 = ymaps.templateLayoutFactory.createClass(\n `
\n
от ${Math.min(...priceArray)} ₽
\n
{{ properties.geoObjects.length }}
\n
`);\n element.options.set('clusterIconContentLayout', MyIconContentLayout2);\n });\n });\n myMap.geoObjects.add(clusterer);\n\n myMap.setBounds(clusterer.getBounds(), {\n checkZoomRange: true,\n }).then(function () {\n if (myMap.getZoom() > 15) myMap.setZoom(15);\n });\n\n // Блокировка \"зума\" при скроле поверх карты\n myMap.behaviors.disable('scrollZoom');\n if ((d.searchType === 'param' && !d.Std && !d.Stprof && !d.Stsh) || (d.searchType === 'auto' && !d.TypeSize)) {\n hideLayout.show('Для записи на шиномонтаж укажите параметры автомобиля.', document.querySelector('.hideWithoutType'), '/static/public/images/arrow-to-top.png');\n hideLayout.show('Для записи на шиномонтаж укажите параметры автомобиля.', document.querySelector('.hideWithoutType2'));\n }\n });\n });\n },\n hidePostfactPayments: function () {\n $(fitMapPodbor.config.postfactPayment).hide();\n $('#pills-infact-tab').hide();\n const onlineInstance = Tab.getOrCreateInstance(document.querySelector('#pills-online-tab'));\n onlineInstance.show();\n // $('#pills-online-tab').tab('show');\n $('label[data-id=\"5\"]').hide();\n $('#pills-online label').first().trigger('click');\n },\n showPostfactPayments: function () {\n $(fitMapPodbor.config.postfactPayment).show();\n\n $('#pills-infact-tab').show();\n $('#pills-infact-tab').addClass('active');\n $('#pills-infact').addClass('active');\n $('#pills-infact').addClass('show');\n const infactInstance = Tab.getOrCreateInstance(document.querySelector('#pills-infact-tab'));\n infactInstance.show();\n // $('#pills-infact-tab').tab('show');\n $('#pills-online-tab').removeClass('active');\n $('#pills-online').removeClass('active').removeClass('show');\n $('.paymentInfo__content').hide();\n $('label[data-id=\"5\"]').show();\n $('#pills-infact label').first().trigger('click');\n },\n};\n","import {config} from 'core/config';\nimport Dropdown from 'bootstrap/js/dist/dropdown';\n\nexport function getAvailableInfo(goodAvailableObj) {\n if (goodAvailableObj.jquery !== undefined) goodAvailableObj = $(goodAvailableObj)[0];\n const availableType = goodAvailableObj.dataset.available_type;\n if (availableType === undefined) {\n return false;\n }\n const param = {\n availableType: availableType,\n goodId: goodAvailableObj.dataset.item,\n };\n if (!goodAvailableObj.classList.contains(`was-loaded-${availableType}`) && param.goodId > 0) {\n config.get('/catalog/availableinfo/', param, 'html').then((response) => {\n const dropdown = goodAvailableObj.nextElementSibling;\n goodAvailableObj.classList.add(`was-loaded-${availableType}`);\n dropdown.innerHTML = response;\n\n const $dropdownMenu = goodAvailableObj.nextElementSibling;\n if ($dropdownMenu.querySelector('.btn-close') !== null) {\n const dropdownInstance = Dropdown.getOrCreateInstance(goodAvailableObj);\n const $dropdownIframe = $dropdownMenu.querySelector('iframe');\n $dropdownMenu.querySelector('.btn-close').addEventListener('click', () => {\n dropdownInstance.hide();\n if ($dropdownIframe !== null) {\n $dropdownIframe.remove();\n goodAvailableObj.classList.remove(`was-loaded-${availableType}`);\n }\n });\n }\n });\n }\n goodAvailableObj.addEventListener('hide.bs.dropdown', function(e) {\n goodAvailableObj.classList.remove(`was-loaded-${availableType}`);\n });\n};\n\nfunction initVideoBudget() {\n const $$smallVideoLoad = document.querySelectorAll('.js-smallVideoLoad');\n if ($$smallVideoLoad.length > 0) {\n $$smallVideoLoad.forEach((element) => {\n element.addEventListener('click', () => {\n const $badgeVideoContainer = document.querySelector('.dropdown-menu.show .js-videoContainer');\n const videoLink = element.dataset.smallVideoLink;\n const tpl = `
\n \n
\n `;\n $badgeVideoContainer.classList.add('videoContainer--open');\n $badgeVideoContainer.insertAdjacentHTML('beforeend', tpl);\n const videoContainerHeight = $badgeVideoContainer.offsetHeight+'px';\n document.querySelector('.dropdown-menu--video').style.height = videoContainerHeight;\n\n document.querySelector('.videoContainer__close').addEventListener('click', () => {\n $badgeVideoContainer.classList.remove('videoContainer--open');\n $badgeVideoContainer.innerHTML = '';\n document.querySelector('.dropdown-menu--video').style.height = 'auto';\n });\n });\n });\n }\n}\n","import {config} from 'core/config';\nimport Dropdown from 'bootstrap/js/dist/dropdown';\n\nexport function getBadgetInfo(badgetObj) {\n if (badgetObj.jquery !== undefined) badgetObj = $(badgetObj)[0];\n const badgetType = badgetObj.dataset.badget_type;\n if (badgetType === undefined) {\n return false;\n }\n const param = {\n badgetType: badgetType,\n goodId: badgetObj.dataset.item,\n type: badgetObj.dataset.object_type ? badgetObj.dataset.object_type : 'goGood',\n };\n if (!badgetObj.classList.contains(`was-loaded-${badgetType}`) && param.goodId > 0) {\n config.get('/catalog/badgetinfo/', param, 'html').then((response) => {\n const dropdown = badgetObj.nextElementSibling;\n badgetObj.classList.add(`was-loaded-${badgetType}`);\n dropdown.innerHTML = response;\n if (badgetObj.dataset.badget_type === 'video') {\n initVideoBudget();\n const videoDiv = dropdown.querySelectorAll('[data-video-id]');\n if (videoDiv.length > 0 && dropdown.classList.contains('show')) {\n videoDiv.forEach((element) => {\n const videoLink = element.dataset.videoLink;\n element.innerHTML = `\n
\n \n
\n `;\n });\n }\n }\n const $dropdownMenu = badgetObj.nextElementSibling;\n if ($dropdownMenu.querySelector('.btn-close') !== null) {\n const dropdownInstance = Dropdown.getOrCreateInstance(badgetObj);\n const $dropdownIframe = $dropdownMenu.querySelector('iframe');\n $dropdownMenu.querySelector('.btn-close').addEventListener('click', () => {\n dropdownInstance.hide();\n if ($dropdownIframe !== null) {\n $dropdownIframe.remove();\n badgetObj.classList.remove(`was-loaded-${badgetType}`);\n }\n });\n }\n });\n }\n badgetObj.addEventListener('hide.bs.dropdown', function(e) {\n badgetObj.classList.remove(`was-loaded-${badgetType}`);\n });\n};\n\nfunction initVideoBudget() {\n const $$smallVideoLoad = document.querySelectorAll('.js-smallVideoLoad');\n if ($$smallVideoLoad.length > 0) {\n $$smallVideoLoad.forEach((element) => {\n element.addEventListener('click', () => {\n const $badgeVideoContainer = document.querySelector('.dropdown-menu.show .js-videoContainer');\n const videoLink = element.dataset.smallVideoLink;\n const tpl = `
\n \n
\n `;\n $badgeVideoContainer.classList.add('videoContainer--open');\n $badgeVideoContainer.insertAdjacentHTML('beforeend', tpl);\n const videoContainerHeight = $badgeVideoContainer.offsetHeight+'px';\n document.querySelector('.dropdown-menu--video').style.height = videoContainerHeight;\n\n document.querySelector('.videoContainer__close').addEventListener('click', () => {\n $badgeVideoContainer.classList.remove('videoContainer--open');\n $badgeVideoContainer.innerHTML = '';\n document.querySelector('.dropdown-menu--video').style.height = 'auto';\n });\n });\n });\n }\n}\n","import {config} from 'core/config';\n\nconst SELECT = {\n 'searchForm': 'form.searchForm',\n};\n\nexport const collectForm = (selector) => {\n const $$elements = document.querySelectorAll(selector);\n if ($$elements.length > 0) {\n let formHtml;\n if ($$elements.length === 1) {\n formHtml = document.querySelector(selector);\n } else {\n formHtml = config.getFirstVisibleElement($$elements);\n }\n if (formHtml.tagName !== 'FORM') {\n formHtml = formHtml.querySelector('form');\n }\n\n const formData = new FormData();\n\n for (const el of formHtml.elements) {\n if ((el.type === 'hidden' || el.checkVisibility()) && (el.type !== 'checkbox' && el.type !== 'radio' || el.checked)) {\n if (el.value) {\n formData.set(el.name, el.value);\n }\n }\n }\n\n const $tabSwitch = document.querySelector('.tab-pane.active [data-switch].active');\n if ($tabSwitch !== null) {\n let dataSwitch = $tabSwitch.dataset.switch;\n if (dataSwitch === 'avto') dataSwitch = 'auto'; // этот костыль заслуживает приз\n formData.set('searchType', dataSwitch);\n }\n\n const searchFormType = document.querySelector(SELECT.searchForm).dataset.type;\n const $searchParamsAction = document.querySelector('#searchParamsAction');\n const $searchParamsThread = document.querySelector('#searchParamsThread');\n if ($searchParamsAction) {\n document.querySelector('#searchParamsAction').value = `search/${searchFormType}`;\n }\n if ($searchParamsThread) {\n document.querySelector('#searchParamsThread').value = `search/${searchFormType}`;\n }\n\n return formData;\n } else {\n return new FormData();\n }\n};\n","const SELECT = {\n 'markSelector': '.tabSearchParams.active .tab-pane.active .mark-selector',\n 'modelSelector': '.tabSearchParams.active .tab-pane.active .model-selector',\n 'yearSelector': '.tabSearchParams.active .tab-pane.active .year-selector',\n 'modificationSelector': '.tabSearchParams.active .tab-pane.active .modification-selector',\n};\n\nexport const avtoStorage = {\n set: () => {\n const markSelector = document.querySelector(SELECT.markSelector);\n const modelSelector = document.querySelector(SELECT.modelSelector);\n const yearSelector = document.querySelector(SELECT.yearSelector);\n const modificationSelector = document.querySelector(SELECT.modificationSelector);\n\n localStorage.setItem('car', JSON.stringify({\n mark: markSelector.value,\n model: modelSelector.options[modelSelector.selectedIndex].outerHTML,\n year: yearSelector.options[yearSelector.selectedIndex].outerHTML,\n mod: modificationSelector.options[modificationSelector.selectedIndex].outerHTML,\n }));\n },\n get: (callback) => {\n const markSelector = document.querySelector('.searchForm .mark-selector');\n const modelSelector = document.querySelector('.searchForm .model-selector');\n const yearSelector = document.querySelector('.searchForm .year-selector');\n const modificationSelector = document.querySelector('.searchForm .modification-selector');\n\n if (localStorage.hasOwnProperty('car') && markSelector !== null) {\n const car = JSON.parse(localStorage.getItem('car'));\n markSelector.value = car.mark;\n modelSelector.innerHTML = car.model;\n yearSelector.innerHTML = car.year;\n modificationSelector.innerHTML = car.mod;\n callback();\n }\n },\n remove: () => {\n localStorage.removeItem('car');\n },\n};\n","\nimport Collapse from 'bootstrap/js/dist/collapse';\n\nconst SELECT = {\n 'sideFilterSeason': '#collapseSideFilter #sideFilter__season',\n 'collapseWinter': '#collapseWinter',\n};\n\nfunction syncFilters(element) {\n const name = element.dataset.name;\n const val = element.value;\n const isChecked = element.checked;\n\n const $studAll = document.querySelector('[data-sync=\"allSpikes\"]');\n const $studWith = document.querySelector('[data-sync=\"withSpikes\"]');\n const $studWithout = document.querySelector('[data-sync=\"withoutSpikes\"]');\n\n document.querySelectorAll(`.syncFilters[data-name=\"${name}\"]`).forEach((element) => {\n element.checked = false;\n });\n const filtersArray = document.querySelectorAll(`.syncFilters[data-name=\"${name}\"][value=\"${val}\"]`);\n filtersArray.forEach((input) => {\n input.checked = isChecked;\n });\n\n if (element.dataset.sync !== undefined) {\n document.querySelectorAll(`.syncFilters[data-sync=${element.dataset.sync}]`).forEach((element) => {\n element.checked = isChecked;\n });\n }\n if (element.id === 'summer' || element.dataset.name === 'stud' && element.checked === false) {\n if ($studAll !== null) $studAll.checked = true;\n if ($studWith !== null) $studWith.checked = false;\n if ($studWithout !== null) $studWithout.checked = false;\n }\n if (element.classList.contains('seasonchange')) {\n const $myCollapse = document.querySelector(SELECT.sideFilterSeason);\n if ($myCollapse) {\n const bsCollapse = Collapse.getOrCreateInstance($myCollapse);\n bsCollapse.show();\n }\n }\n if (element.dataset.name === 'season' && element.value === '1') {\n if (element.checked === true) {\n collapseWinterShow();\n } else {\n collapseWinterShow(false);\n document.querySelectorAll('.syncFilters[data-name=\"stud\"]').forEach((element) => {\n element.checked = false;\n });\n if ($studAll !== null) $studAll.checked = true;\n if ($studWith !== null) $studWith.checked = false;\n if ($studWithout !== null) $studWithout.checked = false;\n }\n }\n if (name === 'season' && val === '2' && isChecked) {\n if (document.querySelector(SELECT.collapseWinter).classList.contains('show')) {\n collapseWinterShow(false);\n }\n document.querySelectorAll('.syncFilters[data-name=\"stud\"]').forEach((element) => {\n element.checked = false;\n });\n }\n if ((element.id === 'sn1' || element.id === 'sn2') && element.checked) {\n document.querySelectorAll('input[data-name=season]').forEach((element) => {\n element.checked = false;\n });\n document.querySelectorAll('#winter').forEach((element) => {\n element.checked = true;\n });\n if (document.querySelector('#dopseason1') !== null) {\n document.querySelector('#dopseason1').checked = true;\n }\n collapseWinterShow();\n }\n};\n\nfunction collapseWinterShow(show = true) {\n document.querySelectorAll(SELECT.collapseWinter).forEach(($collapse) => {\n const bsCollapse = Collapse.getOrCreateInstance($collapse);\n show ? bsCollapse.show() : bsCollapse.hide();\n });\n}\n\nexport {syncFilters};\n","import { config } from 'core/config';\nimport { avtoStorage } from './avtoStorage';\nimport { syncFilters } from './syncFilters';\nimport { mainSearchbar } from 'modules/mainSearchbar/index';\n\nconst SELECT = {\n 'advDatas': '#advancedTpl',\n 'newAvtoSearch': '.new_search',\n 'searchForm': 'form.searchForm',\n 'searchButton': '.mainSearchbar__button-submit',\n 'newSearchButon': '.mainSearchbar__button-close',\n 'markSelector': 'form.searchForm .mark-selector',\n 'modelSelector': 'form.searchForm .model-selector',\n 'yearSelector': 'form.searchForm .year-selector',\n 'modificationSelector': 'form.searchForm .modification-selector',\n 'activeButtonSubmit': '.tab-pane.active .tab-pane.active .mainSearchbar__button-submit',\n 'activeButtonClose': '.tab-pane.active .tab-pane.active .mainSearchbar__button-close',\n};\n\nexport const selectionByCar = {\n init: () => {\n selectionByCar.bindEvents();\n avtoStorage.get(() => selectionByCar.searchByCar());\n },\n bindEvents: () => {\n const $$syncFilters = document.querySelectorAll('.syncFilters');\n $$syncFilters.forEach((element) => {\n element.addEventListener('click', () => {\n syncFilters(element);\n });\n });\n\n // подбор авто\n document.querySelectorAll('.selectionByCar select').forEach((element) => {\n element.addEventListener('change', (event) => selectionByCar.selection(event.target));\n });\n\n // сброс подобранного авто\n document.querySelectorAll(SELECT.newAvtoSearch).forEach((element) => {\n element.addEventListener('click', () => selectionByCar.selectionReset());\n });\n },\n selection: function (element) {\n const $$selectModel = document.querySelectorAll(SELECT.modelSelector);\n const $$selectYear = document.querySelectorAll(SELECT.yearSelector);\n const $$selectMod = document.querySelectorAll(SELECT.modificationSelector);\n const $$selectCurrent = document.querySelectorAll(`select[name=${element.name}]`);\n const selectName = element.name;\n const currentValue = element.value;\n let requestUrl = '/index/callback/adaptiveGetModels.php';\n\n selectionByCar.resetButtonVisible();\n\n const params = {\n '_id': currentValue,\n 'thread': document.querySelector(SELECT.searchForm).dataset.type,\n };\n\n // дублируем value всем таким-же селектам\n $$selectCurrent.forEach((element) => element.value = currentValue);\n\n if (selectName === 'search_mark') {\n config.setDropdown({}, document.querySelectorAll(SELECT.modelSelector));\n config.setDropdown({}, document.querySelectorAll(SELECT.yearSelector));\n config.setDropdown({}, document.querySelectorAll(SELECT.modificationSelector));\n $$selectModel.forEach((element) => element.disabled = true);\n $$selectYear.forEach((element) => element.disabled = true);\n $$selectMod.forEach((element) => element.disabled = true);\n }\n if (selectName === 'search_model') {\n requestUrl = '/index/callback/adaptiveGetYears.php';\n config.setDropdown({}, document.querySelectorAll(SELECT.yearSelector));\n config.setDropdown({}, document.querySelectorAll(SELECT.modificationSelector));\n $$selectYear.forEach((element) => element.disabled = true);\n $$selectMod.forEach((element) => element.disabled = true);\n }\n if (selectName === 'search_year') {\n requestUrl = '/index/callback/adaptiveGetModifications.php';\n params['_id'] = document.querySelector(SELECT.modelSelector).value;\n params['year'] = currentValue;\n config.setDropdown({}, document.querySelectorAll(SELECT.modificationSelector));\n $$selectMod.forEach((element) => element.disabled = true);\n }\n if (selectName === 'search_modification') {\n avtoStorage.set();\n selectionByCar.searchByCar();\n return;\n }\n\n if (currentValue == 0) return;\n\n config.get(requestUrl, params).then(function (response) {\n if (selectName === 'search_mark') {\n config.setDropdown(response, document.querySelectorAll(SELECT.modelSelector), true);\n $$selectModel.forEach((element) => element.disabled = false);\n }\n if (selectName === 'search_model') {\n if (document.querySelector(SELECT.searchForm).dataset.type === 'sensors') {\n config.setDropdown(response, document.querySelectorAll(SELECT.yearSelector), false, true, false);\n } else {\n config.setDropdown(response, document.querySelectorAll(SELECT.yearSelector), true, true, true);\n }\n $$selectYear.forEach((element) => element.disabled = false);\n }\n if (selectName === 'search_year') {\n config.setDropdown(response, document.querySelectorAll(SELECT.modificationSelector), true);\n $$selectMod.forEach((element) => element.disabled = false);\n }\n });\n },\n selectionReset: function () {\n const $$selectModel = document.querySelectorAll(SELECT.modelSelector);\n const $$selectYear = document.querySelectorAll(SELECT.yearSelector);\n const $$selectMod = document.querySelectorAll(SELECT.modificationSelector);\n avtoStorage.remove();\n document.querySelector('.complectationId').value = '';\n const $buttonSubmit = document.querySelector(SELECT.activeButtonSubmit);\n const $activeButtonClose = document.querySelector(SELECT.$activeButtonClose);\n if ($buttonSubmit !== null) {\n $buttonSubmit.style.display = 'block';\n }\n if ($activeButtonClose !== null) {\n $activeButtonClose.style.display = 'block';\n }\n document.querySelectorAll(SELECT.markSelector).forEach((element) => {\n element.value = 0;\n });\n config.setDropdown({}, document.querySelectorAll(SELECT.modelSelector));\n config.setDropdown({}, document.querySelectorAll(SELECT.yearSelector));\n config.setDropdown({}, document.querySelectorAll(SELECT.modificationSelector));\n $$selectModel.forEach((element) => element.innerHTML = '');\n $$selectYear.forEach((element) => element.innerHTML = '');\n $$selectMod.forEach((element) => element.innerHTML = '');\n\n window.SIZES_WAS_LOADED = false;\n const $$firstStage = document.querySelectorAll('.first-stage');\n const $$secondStage = document.querySelectorAll('.second-stage');\n const $$searchbar = document.querySelectorAll('.searchbar__search-by-car');\n if ($$firstStage.length > 0) {\n $$firstStage.forEach((element) => {\n element.classList.add('d-flex');\n element.classList.remove('d-none');\n });\n }\n if ($$secondStage.length > 0) {\n $$secondStage.forEach((element) => {\n element.classList.add('d-none');\n element.classList.remove('d-flex');\n });\n }\n if ($$searchbar.length > 0) {\n $$searchbar.forEach((element) => {\n element.style.display = 'none';\n });\n }\n const $searchForm = document.querySelector(SELECT.searchForm);\n if ($searchForm.dataset.type !== 'sensors') {\n selectionByCar.searchButtonVisible();\n }\n },\n searchByCar: function () {\n selectionByCar.resetButtonVisible();\n const $buttonSubmit = document.querySelector(SELECT.activeButtonSubmit);\n if ($buttonSubmit !== null) {\n $buttonSubmit.style.display = 'block';\n }\n const year = document.querySelector(SELECT.yearSelector).value;\n const modification = document.querySelector(SELECT.modificationSelector).value;\n const params = {\n 'year': year,\n 'modificationId': modification,\n 'thread': document.querySelector(SELECT.searchForm).dataset.type,\n };\n config.get('/autosearch/indexresults', params).then((response) => {\n const $$firstStage = document.querySelectorAll('.first-stage');\n const $$secondStage = document.querySelectorAll('.second-stage');\n selectionByCar.loadDiskResults(response);\n selectionByCar.loadTyresResult(response);\n selectionByCar.loadServicesResult(response);\n document.querySelectorAll('.search_result').forEach((element) => {\n element.innerHTML = response.fullName;\n const $$checkboxes = document.querySelectorAll('.shtat input');\n if ($$checkboxes) {\n $$checkboxes.forEach(($checkbox) => {\n $checkbox.checked = true;\n });\n }\n });\n if (document.querySelector('.sverlovka') !== null) {\n document.querySelector('.sverlovka').innerHTML = response.sverlovka;\n }\n document.querySelector('.complectationId').value = response.ComplectationAutos_id;\n if ($$firstStage.length > 0) {\n $$firstStage.forEach((element) => {\n element.classList.add('d-none');\n element.classList.remove('d-flex');\n });\n }\n if ($$secondStage.length > 0) {\n $$secondStage.forEach((element) => {\n element.classList.add('d-flex');\n element.classList.remove('d-none');\n });\n }\n window.SIZES_WAS_LOADED = true;\n selectionByCar.showAutoResults();\n mainSearchbar.bindNotSparkaInputs();\n mainSearchbar.bindSparkaInputs();\n });\n },\n loadSizes: function () {\n if (document.querySelector(SELECT.advDatas) !== null) {\n let answer = document.querySelector(SELECT.advDatas).value;\n answer = answer.replace('', '');\n if (answer) {\n answer = JSON.parse(answer);\n selectionByCar.loadDiskResults(answer);\n selectionByCar.loadTyresResult(answer);\n SIZES_WAS_LOADED = true;\n selectionByCar.showAutoResults();\n }\n } else {\n if (document.querySelectorAll('.sizes_was_loaded').length) {\n SIZES_WAS_LOADED = true;\n }\n }\n },\n searchButtonVisible: () => {\n setTimeout(function () {\n const searchType = selectionByCar.getSearchType();\n let show = false;\n if (searchType === 'auto') {\n if (document.querySelector('.complectationId').value > 0) {\n show = true;\n }\n } else {\n show = true;\n }\n if (show === true) {\n document.querySelector(SELECT.searchButton).hidden = false;\n } else {\n document.querySelector(SELECT.searchButton).hidden = true;\n }\n selectionByCar.resetButtonVisible();\n }, 1);\n },\n resetButtonVisible: () => {\n setTimeout(function () {\n const searchType = selectionByCar.getSearchType();\n let show = false;\n if (searchType === 'auto') {\n show = document.querySelector(SELECT.markSelector).value > 0;\n }\n if (show === true) {\n document.querySelector(SELECT.newSearchButon).hidden = false;\n } else {\n document.querySelector(SELECT.newSearchButon).hidden = true;\n }\n }, 1);\n },\n loadDiskResults: (callback) => {\n let diskParams = '';\n const $sizesTuningDisk = document.querySelector('.sizes_tuning_disk');\n const $sizesStockDisk = document.querySelector('.sizes_tuning_disk');\n if ($sizesTuningDisk !== null) $sizesTuningDisk.innerHTML = '';\n if ($sizesStockDisk !== null) $sizesStockDisk.innerHTML = '';\n\n if (callback.pcd) {\n diskParams += `сверловка ${callback.pcd}`;\n }\n if (callback.Fv) {\n if (callback.Ft == 0) diskParams += ' болт ';\n if (callback.Ft == 1) diskParams += ' гайка ';\n diskParams += callback.Fv;\n }\n if (callback.dia) {\n const $asDiai = document.querySelector('input[name=\"as_diai\"]');\n diskParams += ' DIA ' + callback.dia;\n if ($asDiai !== null) {\n document.querySelector('input[name=\"as_diai\"]').value = callback.dia;\n }\n }\n\n const $diskParams = document.querySelector('span.disk_params');\n if ($diskParams !== null) $diskParams.innerHTML = diskParams;\n\n if (callback.disks) {\n const $disksSearchResult = document.querySelector('.disksSearchResult .podborMain');\n const $autoSearchSizesDisks = document.querySelector('.autoSearchSizesDisks');\n const $complectationAutosId = document.querySelector('.ComplectationAutos_id');\n if ($disksSearchResult !== null) {\n $disksSearchResult.classList.remove('d-none');\n }\n if ($autoSearchSizesDisks !== null) {\n $autoSearchSizesDisks.innerHTML = callback.diskVariants;\n }\n if ($complectationAutosId !== null) {\n $complectationAutosId.value = callback.ComplectationAutos_id;\n }\n }\n },\n loadTyresResult: function (callback) {\n const $tyresSearchResult = document.querySelector('.tyresSearchResult .podborMain');\n const $autoSearchSizesTyres = document.querySelector('.autoSearchSizesTyres');\n const $complectationAutosId = document.querySelector('.ComplectationAutos_id');\n\n if ($tyresSearchResult !== null) {\n $tyresSearchResult.classList.add('d-none');\n if (callback.tyres) {\n $tyresSearchResult.classList.remove('d-none');\n if ($autoSearchSizesTyres !== null) {\n $autoSearchSizesTyres.innerHTML = callback.tyresVariants;\n }\n if ($complectationAutosId !== null) {\n $complectationAutosId.value = callback.ComplectationAutos_id;\n }\n }\n }\n },\n loadServicesResult: function (callback) {\n const $tyresSearchResult = document.querySelector('.servicesSearchResult .podborMain');\n const $autoSearchSizesTyres = document.querySelector('.autoSearchSizesTyresService');\n const $complectationAutosId = document.querySelector('.ComplectationAutos_id');\n\n if ($tyresSearchResult !== null) {\n $tyresSearchResult.classList.add('d-none');\n if (callback.tyres) {\n $tyresSearchResult.classList.remove('d-none');\n if ($autoSearchSizesTyres !== null) {\n $autoSearchSizesTyres.innerHTML = callback.servicesVariants;\n }\n if ($complectationAutosId !== null) {\n $complectationAutosId.value = callback.ComplectationAutos_id;\n }\n }\n }\n },\n showAutoResults: () => {\n const $searchForm = document.querySelector(SELECT.searchForm);\n if (window.SIZES_WAS_LOADED && $searchForm.dataset.type !== 'sensors') {\n document.querySelectorAll('.searchbar__search-by-car').forEach((element) => {\n element.style.display = 'none';\n });\n if (selectionByCar.getSearchType() === 'auto') {\n document.querySelector(`.${$searchForm.dataset.type}SearchResult`).style.display = 'block';\n }\n selectionByCar.searchButtonVisible();\n } else {\n document.querySelectorAll('.searchbar__search-by-car').forEach((element) => {\n element.style.display = 'none';\n });\n }\n },\n getSearchType: function () {\n const $activeNavLink = document.querySelector('.tab-pane.active .mainSearchbar__content-nav-link.active');\n let dataSwitch = 'param';\n if ($activeNavLink) {\n dataSwitch = $activeNavLink.dataset.switch;\n }\n return dataSwitch === 'param' ? 'param' : 'auto';\n },\n};\n","import {config} from 'core/config';\nimport Modal from 'bootstrap/js/dist/modal';\n\nexport const formFoundError = {\n updateCaptcha: function() {\n const date = new Date();\n const captchaImg = document.querySelector('.js-foundError-captcha');\n captchaImg.setAttribute('src', `/kcaptcha/imgc.php?d=${date.getTime()}`);\n },\n init: () => {\n // обновление капчи в форме \"Нашли ошибку?\"\n const $linkCaptchaUpdate = document.querySelector('.js-foundError-captcha-update');\n if ($linkCaptchaUpdate !== null) {\n $linkCaptchaUpdate.addEventListener('click', () => {\n formFoundError.updateCaptcha();\n });\n }\n\n // отправка формы \"Нашли ошибку?\"\n const buttonSendError = document.querySelector('.sendFoundError');\n if (buttonSendError !== null) {\n const formFoundError = document.querySelector('#autoSearchFeedback');\n buttonSendError.addEventListener('click', function(event) {\n event.preventDefault();\n document.querySelectorAll('#autoSearchFeedback .is-invalid').forEach(function(input) {\n input.classList.remove('is-invalid');\n });\n if (Nette.validateForm(formFoundError)) {\n const formData = new FormData(formFoundError);\n config.post('/AutoSearchCategorys/actionAutoSearchFeedback.php', formData).then((response) => {\n if (response.result) {\n alert('Ваше сообщение об ошибке отправлено. Спасибо за Ваше внимание.');\n const $modal = document.querySelector('.substrateFoundErrorDialog');\n const modalInstance = Modal.getOrCreateInstance($modal);\n modalInstance.hide();\n return false;\n } else {\n if (response.containers.length > 0) {\n response.containers.forEach(function(container) {\n document.querySelector('#autoSearchFeedback [name=\"' + container + '\"]').classList.add('is-invalid');\n });\n }\n }\n });\n }\n });\n }\n },\n};\n","import './index.scss';\nimport Tab from 'bootstrap/js/dist/tab';\n\nimport { config } from 'core/config';\nimport { sideFilter } from 'modules/sideFilter';\nimport { productItem } from 'modules/productItem';\nimport { search } from './search';\nimport { selectionByCar } from './selectionByCar';\nimport { formFoundError } from './formFoundError';\nimport { fitMapPodbor } from 'modules/fitMapPodbor';\n\nconst SELECT = {\n 'searchButton': '.mainSearchbar__tab-content .mainSearchbar__button-submit',\n 'switchLinkSelector': '.js-car-switch__link',\n 'tabToggleSelector': '#mainSearchbarTabs a[data-bs-toggle=\"tab\"]',\n 'navLinkSelector': '.active .mainSearchbar__content-nav-link',\n 'searchForm': 'form.searchForm',\n 'searchParamsSort': '#searchParamsSort',\n 'searchParamsSortOrder': '#searchParamsSortOrder',\n 'searchContainer': '.items__items',\n 'sortItem': '.items-sort__item',\n 'sparka': '.sparka',\n 'tooltip': '#collapseSideFilter .tooltip.show',\n 'activeSearchType': '.tabSearchParams.active a.active[data-bs-toggle=\"tab\"][data-switch]',\n};\n\nwindow.SIZES_WAS_LOADED = false;\n\nexport const mainSearchbar = {\n init: function () {\n mainSearchbar.bindEvents();\n search.bindEvents();\n search.initBarajaSliders();\n selectionByCar.bindEvents();\n productItem.init();\n selectionByCar.loadSizes();\n mainSearchbar.bindSparkaInputs();\n mainSearchbar.bindNotSparkaInputs();\n formFoundError.init();\n this.processHash();\n\n let tabName = '';\n const activeTab = document.querySelector(`${SELECT.tabToggleSelector}.active`);\n if (activeTab !== null) {\n tabName = activeTab.getAttribute('id');\n }\n if (tabName === 'tab-services') {\n const $sliderArticles = document.querySelector('.sliderArticles');\n if ($sliderArticles !== null) {\n $sliderArticles.style.display = 'none';\n }\n fitMapPodbor.init();\n }\n const sparkaCheckbox = document.querySelector('.sparka-checkbox input[checked]');\n const filterTab = document.querySelector('.sideFilter__' + tabName);\n\n if (sideFilter.wasInited.indexOf(filterTab) < 0) {\n sideFilter.initSlider(`.sideFilter__${tabName}`);\n }\n if (sparkaCheckbox !== null) {\n sparkaCheckbox.closest('.sparka-checkbox').classList.add('sparka-checkbox--all');\n }\n },\n bindEvents: function () {\n Array.from(document.querySelectorAll('#mainSearchbarTabs a[data-bs-toggle=\"tab\"]'))\n .forEach((element) => element.addEventListener('shown.bs.tab', function (event) {\n event.preventDefault();\n history.pushState({}, '', '#' + event.target.getAttribute('data-id'));\n }));\n\n // подбор / шины / диски / датчики давления\n const tabToggleSelector = document.querySelectorAll(SELECT.tabToggleSelector);\n tabToggleSelector.forEach((tab) => {\n tab.addEventListener('shown.bs.tab', function () {\n sideFilter.hideAllTooltips();\n const tabName = this.id;\n const searchForm = document.querySelector(SELECT.searchForm);\n const $sideFilterCurrent = document.querySelector(`.sideFilter__${tabName}`);\n const $$sideFilter = document.querySelectorAll('.sideFilter');\n $$sideFilter.forEach((element) => {\n element.style.display = 'none';\n });\n if (tabName === 'tab-services') {\n document.getElementById('rightBarPodbor').style.display = 'none';\n } else {\n document.getElementById('rightBarPodbor').style.display = 'block';\n }\n $sideFilterCurrent.style.display = '';\n\n const filterTab = document.querySelector('.sideFilter__' + tabName);\n if (sideFilter.wasInited.indexOf(filterTab) < 0) {\n sideFilter.initSlider(`.sideFilter__${tabName}`);\n }\n const searchType = document.querySelector('.tabSearchParams.active').dataset.type;\n const dataSearch = document.querySelector(SELECT.activeSearchType)?.dataset.switch || 'param';\n searchForm.dataset.type = searchType;\n searchForm.dataset.search = dataSearch;\n if (dataSearch === 'param') {\n document.querySelector(SELECT.searchButton).hidden = false;\n }\n selectionByCar.showAutoResults();\n });\n });\n\n // авто / параметры\n const $$switchLinkSelector = document.querySelectorAll(SELECT.switchLinkSelector);\n $$switchLinkSelector.forEach((element) => {\n element.addEventListener('click', () => {\n const dataSwitch = element.dataset.switch;\n document.querySelector(SELECT.searchForm).dataset.search = dataSwitch;\n const $navLink = document.querySelector(SELECT.navLinkSelector + '[data-switch=' + dataSwitch + ']');\n if ($navLink !== null) {\n const navLinkInstance = Tab.getOrCreateInstance($navLink);\n navLinkInstance.show();\n $$switchLinkSelector.forEach((element) => {\n element.style.display = (element.style.display == 'none') ? '' : 'none';\n });\n selectionByCar.searchButtonVisible();\n }\n });\n });\n\n const $$switchLinks = document.querySelectorAll('a[data-bs-toggle=\"tab\"][data-switch]');\n $$switchLinks.forEach((element) => {\n element.addEventListener('click', () => {\n const dataSwitch = element.dataset.switch;\n document.querySelector(SELECT.searchForm).dataset.search = dataSwitch;\n\n // const showTab = document.querySelector(SELECT.navLinkSelector + '[data-switch=' + dataSwitch + ']');\n // const tab = new bootstrap.Tab(showTab);\n // tab.show();\n // $(SELECT.navLinkSelector + '[data-switch=' + dataSwitch + ']').tab('show'); // bootstrap\n $$switchLinkSelector.forEach((element) => {\n element.style.display = (element.style.display == 'none') ? '' : 'none';\n });\n const $$switchImages = document.querySelectorAll(SELECT.switchLinkSelector);\n const dataSwitchLink = config.getFirstVisibleElement($$switchImages).dataset.switch;\n const activeTab = document.querySelector('.tabSearchParams.active').dataset.type;\n const $activeSearchResult = document.querySelector(`.${activeTab}SearchResult`);\n const $$searchBarByCar = document.querySelectorAll('.searchbar__search-by-car');\n if (dataSwitch == 'param') {\n $$searchBarByCar.forEach((element) => {\n element.style.display = 'none';\n });\n } else {\n if (SIZES_WAS_LOADED == true) {\n if ($activeSearchResult) {\n $activeSearchResult.style.display = '';\n }\n }\n }\n if (dataSwitch == dataSwitchLink) {\n $$switchLinkSelector.forEach((element) => {\n element.style.display = (element.style.display == 'none') ? '' : 'none';\n });\n }\n selectionByCar.searchButtonVisible();\n });\n });\n\n // сортировка выдачи поиска\n const sortItem = document.querySelectorAll(SELECT.sortItem);\n const searchContainer = document.querySelector(SELECT.searchContainer);\n if (sortItem !== null) {\n sortItem.forEach((element) => {\n element.addEventListener('click', () => {\n let sort = element.dataset.sort;\n const sortType = element.dataset.sorttype;\n if (element.classList.contains('active')) {\n sort = parseInt(sort) * -1;\n } else {\n sort = element.dataset.defsort;\n sortItem.forEach((element) => {\n element.classList.remove('active');\n });\n element.classList.add('active');\n searchContainer.dataset.sorttype = sortType;\n }\n element.dataset.sort = sort;\n searchContainer.dataset.sort = sort;\n document.querySelector(SELECT.searchParamsSort).value = sortType;\n document.querySelector(SELECT.searchParamsSortOrder).value = sort > 0 ? 'asc' : 'desc';\n });\n });\n }\n\n const $$diffTyres = document.querySelectorAll('.js-diffTyres');\n const $$removeDiffTyres = document.querySelectorAll('.js-removeDiffTyres');\n\n if ($$diffTyres.length > 0) {\n $$diffTyres.forEach(($diffTyres) => {\n if ($diffTyres !== null) {\n $diffTyres.addEventListener('click', function () {\n document.querySelectorAll('.js-wideTyres select').forEach((el) => {\n el.disabled = false;\n });\n document.querySelectorAll('.js-removeDiffTyres').forEach((el) => {\n el.style.display = '';\n });\n document.querySelector('.js-wideTyres').style.display = '';\n document.querySelector('.js-diffTyres').style.display = 'none';\n document.querySelector('.js-diffTyres2').style.display = '';\n });\n }\n });\n }\n\n if ($$removeDiffTyres.length > 0) {\n $$removeDiffTyres.forEach(($removeDiffTyres) => {\n if ($removeDiffTyres !== null) {\n $removeDiffTyres.addEventListener('click', function () {\n document.querySelectorAll('.js-wideTyres select').forEach((el) => {\n el.disabled = true;\n });\n document.querySelectorAll('.js-removeDiffTyres').forEach((el) => {\n el.style.display = 'none';\n });\n document.querySelector('.js-wideTyres').style.display = 'none';\n document.querySelector('.js-diffTyres').style.display = '';\n const diffTyres = document.querySelector('.js-diffTyres2');\n if (diffTyres) {\n diffTyres.style.display = 'none';\n }\n });\n }\n });\n }\n\n },\n processHash: function() {\n if (window.location.hash.length > 0) {\n const tabId = window.location.hash;\n this.openTab(tabId);\n }\n },\n openTab: function(id) {\n if (Array.from(id)[0] === '#') {\n id = id.substring(1);\n }\n id = id.replace(/[^a-zA-Z0-9-_#]/g, '');\n const tabInstanse = document.querySelector(`.mainSearchbar__nav-link[data-id=${id}]`);\n if (tabInstanse !== null) {\n const tab = Tab.getOrCreateInstance(tabInstanse);\n tab.show();\n }\n },\n bindSparkaInputs: function () {\n const sparkaInputs = document.querySelectorAll(SELECT.sparka);\n if (sparkaInputs.length > 0) {\n sparkaInputs.forEach((el) => {\n el.addEventListener('click', () => {\n const pair = el.getAttribute('pair_id');\n const checkedInputs = document.querySelectorAll('.sparka-checkbox');\n const sparkasPair = document.querySelectorAll('.sparka' + pair);\n const mainSparkasPair = document.querySelectorAll('.main_sparka' + pair);\n sparkasPair.forEach((elementSp) => {\n elementSp.checked = el.checked;\n });\n mainSparkasPair.forEach((elementMsp) => {\n elementMsp.checked = el.checked;\n });\n checkedInputs.forEach((element) => {\n if (element.querySelector('.sparka').checked) {\n document.querySelectorAll('.podbor_block .notSpark').forEach(($notSpark) => {\n const $notSparkCheckbox = $notSpark.querySelector('input[type=\"checkbox\"]');\n if ($notSparkCheckbox) {\n $notSparkCheckbox.checked = false;\n }\n });\n element.classList.add('sparka-checkbox--all');\n } else {\n element.classList.remove('sparka-checkbox--all');\n }\n });\n });\n });\n }\n },\n bindNotSparkaInputs: function () {\n const $$checkboxes = document.querySelectorAll('.podbor_block .notSpark');\n $$checkboxes.forEach(($checkbox) => {\n $checkbox.addEventListener('click', function () {\n document.querySelectorAll('.podbor_block .sparka').forEach(($sparka) => {\n if ($sparka) {\n $sparka.checked = false;\n }\n });\n document.querySelectorAll('.podbor_block .sparka-checkbox--all').forEach(($sparkaAll) => {\n if ($sparkaAll) {\n $sparkaAll.classList.remove('sparka-checkbox--all');\n }\n });\n });\n });\n },\n};","import { config } from 'core/config';\nimport { collectForm } from './collectForm';\nimport { spinner } from 'modules/spinner';\nimport { widgetSlider } from 'modules/sliders/widgetSlider';\nimport Tooltip from 'bootstrap/js/dist/tooltip';\nimport Popover from 'bootstrap/js/dist/popover';\nimport { productItem } from 'modules/productItem';\nimport { fitMapPodbor } from 'modules/fitMapPodbor';\nimport { restListPopover } from 'modules/restListPopovers';\n\n\nconst SELECT = {\n 'searchForm': 'form.searchForm',\n 'searchResult': '#searchResult',\n 'countStr': '.count-of-found',\n 'tooltip': '#collapseSideFilter .tooltip.show',\n 'tooltipInner': '.tooltip.show .tooltip-inner',\n 'sortItem': '.items-sort__item',\n};\n\nlet CURRENT_PAGE = 1;\nconst SEARCH_RESULT = document.querySelector(SELECT.searchResult);\n\nexport const search = {\n init: () => {\n let paramsCurrentForm;\n if (document.querySelector('.searchPriority') !== null) {\n paramsCurrentForm = collectForm('.searchPriority');\n } else {\n paramsCurrentForm = collectForm('.sideFilter');\n }\n const paramsMainSearch = collectForm('.mainSearchForm');\n for (const pair of paramsCurrentForm.entries()) {\n paramsMainSearch.set(pair[0], pair[1]);\n }\n paramsMainSearch.set('page', CURRENT_PAGE);\n\n const $itemsSortRow = document.querySelector('.items-sort-row');\n const $h1Results = document.querySelector('.h1-results');\n const $sliderArticles = document.querySelector('.sliderArticles');\n if ($itemsSortRow && paramsMainSearch.get('thread') !== 'services') {\n $itemsSortRow.style.display = 'flex';\n } else {\n if ($itemsSortRow) $itemsSortRow.style.display = 'none';\n SEARCH_RESULT.innerHTML = '';\n if ($h1Results) {\n $h1Results.style.display = 'none';\n }\n }\n if ($sliderArticles !== null && paramsMainSearch.get('thread') !== 'services') {\n $sliderArticles.style.display = 'none';\n }\n const nextButton = document.querySelector('.doSearch_next');\n const spinnerPlace = document.querySelector('.spinner-place');\n const $pagination = document.querySelector('.hasPagination');\n if (nextButton !== null) {\n nextButton.disabled = true;\n spinner.show(spinnerPlace, 28);\n }\n if (paramsMainSearch.get('page') && paramsMainSearch.get('thread') !== 'services') {\n SEARCH_RESULT.innerHTML = '';\n spinner.show(SEARCH_RESULT, 50);\n } else {\n if ($pagination !== null) {\n spinner.show(SEARCH_RESULT, 50);\n } else {\n spinner.show(spinnerPlace, 28);\n }\n }\n\n if (paramsMainSearch.get('url') === null) paramsMainSearch.set('url', '/catalog/search/');\n search.mobileLoader();\n\n config.get(paramsMainSearch.get('url'), paramsMainSearch).then((result) => {\n if (paramsMainSearch.get('thread') === 'services') {\n const invalids = document.querySelectorAll('#navServicesContentParam .is-invalid');\n invalids.forEach(function (el) {\n el.classList.remove('is-invalid');\n });\n if (result.res === 'false') {\n result.errors.forEach(function (el) {\n document.querySelector('#navServicesContentParam select[name=\"' + el + '\"]').classList.add('is-invalid');\n });\n return false;\n }\n if ($sliderArticles !== null) {\n $sliderArticles.style.display = 'none';\n }\n }\n if (result.template) {\n if (result.meta) {\n const $h1 = document.querySelector('.h1-results h1');\n if ($h1) {\n $h1.textContent = result.meta;\n }\n }\n const $$bItems = document.querySelectorAll('.b-item__container:not(.b-item--loaded)');\n if ($$bItems.length > 0) {\n $$bItems.forEach((el) => {\n el.classList.add('b-item--loaded');\n });\n }\n if (CURRENT_PAGE > 1) {\n SEARCH_RESULT.insertAdjacentHTML('beforeend', result.template);\n } else {\n SEARCH_RESULT.innerHTML = result.template;\n }\n const $countStr = document.querySelector(SELECT.countStr);\n if ($countStr) {\n document.querySelector(SELECT.countStr).innerHTML = result.count;\n }\n if (document.querySelector('.dontchangeurl') == null || document.querySelector('.adaptivePagination')) {\n history.pushState({}, document.title, result.url);\n }\n if (paramsMainSearch.get('page') !== '1') {\n spinner.hide(SEARCH_RESULT);\n }\n console.log('results was loaded');\n restListPopover.initPopoverListener();\n widgetSlider.init();\n const linkShowAllModels = document.querySelector('.showAllModelsButton');\n if (linkShowAllModels !== null) {\n linkShowAllModels.remove();\n }\n window.lazyload();\n if (paramsMainSearch.get('page') !== '1') {\n const nextButton = document.querySelector('.doSearch_next');\n if (nextButton !== null) {\n spinner.hide(spinnerPlace);\n nextButton.closest('.items__showmore').remove();\n }\n }\n search.mobileLoader(true);\n productItem.setCompareStatus();\n restListPopover.loadRests();\n if (paramsMainSearch.get('thread') === 'services') {\n fitMapPodbor.init();\n }\n }\n });\n },\n bindEvents: () => {\n const sortButtons = document.querySelectorAll(SELECT.sortItem);\n sortButtons.forEach((form) => {\n form.addEventListener('click', (event) => {\n CURRENT_PAGE = 1;\n search.init();\n return false;\n });\n });\n const searchForm = document.querySelectorAll(SELECT.searchForm);\n searchForm.forEach((form) => {\n form.addEventListener('submit', (event) => {\n event.preventDefault();\n CURRENT_PAGE = 1;\n search.init();\n return false;\n });\n });\n document.addEventListener('click', (event) => {\n if (event.target.classList.contains('doSearch_next')) {\n CURRENT_PAGE++;\n search.init();\n search.hideAllPopovers();\n }\n if (event.target.classList.contains('js-page-link')) {\n document.getElementById('searchResult').innerHTML = '';\n CURRENT_PAGE = event.target.dataset.page;\n document.querySelector('.items-sort-row').scrollIntoView({\n block: 'center',\n behavior: 'smooth',\n });\n search.init();\n search.hideAllPopovers();\n }\n if (event.target.classList.contains('tooltip-inner')) {\n search.hideAllTooltips();\n CURRENT_PAGE = 1;\n search.init();\n }\n });\n },\n getCount: () => {\n const byFormArray = document.querySelectorAll(SELECT.searchForm);\n const byForm = config.getFirstVisibleElement(byFormArray);\n const paramsMainSearch = collectForm('.mainSearchForm');\n const paramsCurrentForm = collectForm('.sideFilter');\n const $buttonSubmit = document.querySelector(`.sideFilter__tab-${byForm.dataset.type} .js-mobile-btn-tooltip`);\n\n for (const pair of paramsCurrentForm.entries()) {\n paramsMainSearch.set(pair[0], pair[1]);\n }\n paramsMainSearch.set('count', true);\n if (byForm.type === 'sensors' && !paramsMainSearch.has('search_modification')) {\n return false; // ???\n }\n console.log('--getting count--');\n if (window.innerWidth <= config.breakpoints.md) {\n $buttonSubmit.innerHTML = `Ищем...
`;\n }\n config.get('/catalog/search/', paramsMainSearch, 'html').then((answer) => {\n if (window.innerWidth <= config.breakpoints.md) {\n $buttonSubmit.innerHTML = answer;\n } else {\n document.querySelector(SELECT.tooltipInner).innerHTML = answer;\n search.updateTooltips();\n }\n }).catch((error) => {\n if (window.innerWidth <= config.breakpoints.sm) {\n $buttonSubmit.innerHTML = error.message;\n } else {\n document.querySelector(SELECT.tooltipInner).innerHTML = error.message;\n search.updateTooltips();\n }\n });\n document.querySelectorAll('.filterReset').forEach((element) => {\n element.addEventListener('click', () => {\n if (window.innerWidth <= config.breakpoints.md) {\n $buttonSubmit.innerHTML = 'Показать';\n }\n });\n });\n },\n initBarajaSliders: () => {\n widgetSlider.init();\n },\n updateTooltips: function () {\n const $$tooltips = document.querySelectorAll('.sideFilter input');\n $$tooltips.forEach((tooltip) => {\n const instance = Tooltip.getOrCreateInstance(tooltip, { trigger: 'manual' });\n instance.update();\n });\n },\n hideAllTooltips: function () {\n const $$tooltips = document.querySelectorAll('.sideFilter input');\n $$tooltips.forEach((tooltip) => {\n const instance = Tooltip.getOrCreateInstance(tooltip, { trigger: 'manual' });\n instance.hide();\n });\n },\n hideAllPopovers: function () {\n const $$popovers = document.querySelectorAll('[data-bs-toggle=\"popover\"]');\n $$popovers.forEach((popover) => {\n const instance = Popover.getOrCreateInstance(popover, { trigger: 'manual' });\n instance.hide();\n });\n },\n mobileLoader: (isLoad = false) => {\n const $$btnSearch = document.querySelectorAll('.mainSearchbar__button-submit');\n const $countOfFound = document.querySelector('.count-of-found');\n\n if (window.innerWidth < config.breakpoints.md) {\n if (isLoad) {\n $$btnSearch.forEach((element) => {\n element.innerHTML = 'Найти';\n });\n if ($countOfFound !== null && CURRENT_PAGE === 1) {\n $countOfFound.scrollIntoView({\n block: 'start',\n behavior: 'smooth',\n });\n }\n } else {\n $$btnSearch.forEach((element) => {\n element.innerHTML = '
';\n });\n }\n } else {\n if ($countOfFound !== null && CURRENT_PAGE === 1) {\n $countOfFound.scrollIntoView({\n block: 'center',\n behavior: 'smooth',\n });\n }\n }\n },\n};\n","import {config} from 'core/config';\nimport Modal from 'bootstrap/js/dist/modal';\n\nexport const modalAfterAddToCart = {\n config: {\n modalId: 'modalAfterAddToCart',\n },\n get: function() {\n let modal = document.querySelector('#'+ modalAfterAddToCart.config.modalId);\n if (modal === null) {\n const modalTemplate = `\n
\n
\n
\n
\n
\n `;\n document.body.insertAdjacentHTML('beforeend', modalTemplate);\n modal = document.querySelector('#'+ modalAfterAddToCart.config.modalId);\n }\n return modal;\n },\n setContent: function(content) {\n const modal = modalAfterAddToCart.get();\n modal.querySelector('.modal-content').innerHTML = content;\n },\n show: function() {\n const modalNode = Modal.getOrCreateInstance(this.get());\n modalNode.show();\n // this.get().modal('show');\n\n config.moveHeaderWhenModal(true);\n // document.querySelector(`#${this.config.modalId}`).on('hidden.bs.modal', function() {\n // config.moveHeaderWhenModal(false);\n // });\n },\n yaMetrika: function(){\n window.dataLayer = window.dataLayer || [];\n var products = [];\n document.querySelectorAll('meta.addToCartMeta').forEach((element) => {\n products.push({\n \"id\": element.getAttribute('data-id'),\n \"name\": element.getAttribute('data-name'),\n \"price\": element.getAttribute('data-price'),\n \"brand\": element.getAttribute('data-brand'),\n \"category\": element.getAttribute('data-category'),\n \"variant\": element.getAttribute('data-variant'),\n \"quantity\": element.getAttribute('data-quantity')\n })\n });\n window.dataLayer.push({\n \"ecommerce\": {\n \"currencyCode\": \"RUB\",\n \"add\": {\n \"products\": products\n }\n }\n });\n ym(32042756,'reachGoal','ORDER');\n }\n};\n","import './index.scss';\nimport {metricaModule} from 'modules/metrica';\nimport {compareHead} from 'modules/compare-head';\nimport {config} from 'core/config';\nimport {modalAfterAddToCart} from 'modules/modalAfterAddToCart';\nimport {getBadgetInfo} from 'modules/getBadgetInfo';\nimport {getAvailableInfo} from 'modules/getAvailableInfo';\nimport {restListPopover} from 'modules/restListPopovers';\nimport Dropdown from 'bootstrap/js/dist/dropdown';\n\nconst SELECT = {\n 'icon': '.icon-badget',\n 'available': '.b-item__avail-text',\n 'addedToCompare': 'js-added-to-compare',\n 'changeCount': '.js__decrementer, .js__incrementer',\n 'addToCart': '.b-item__wrap .btn-order',\n 'modalDialogData': '#modalDialogData',\n 'modalButtonlShow': '#modalShowButton',\n 'badgeVideoContainer': '.dropdown-menu.show .js-videoContainer',\n};\n\nexport const productItem = {\n init: function() {\n this.bindEvent();\n compareHead.setCompareStatus();\n restListPopover.loadRests();\n restListPopover.initPopoverListener();\n productItem.removePopoversFromStorage();\n },\n bindEvent: function() {\n const searchResult = document.getElementById('searchResult');\n if (searchResult) {\n searchResult.onclick = function(event) {\n let target = event.target;\n\n if (target.classList.contains('b-item__avail-text')) {\n getAvailableInfo(target);\n }\n if (\n target.tagName == 'svg' ||\n target.tagName == 'use' ||\n target.tagName == 'path'\n ) target = target.closest('div');\n\n if (target.classList.contains('js-compare-good')) {\n compareHead.update(target.dataset);\n if (target.dataset.action == 'remove') {\n target.dataset.action = 'add';\n target.classList.remove(SELECT.addedToCompare);\n } else {\n target.dataset.action = 'remove';\n target.classList.add(SELECT.addedToCompare);\n }\n }\n\n if (target.classList.contains('btn-order')) {\n const goodId = target.getAttribute('orderAddGoodId');\n const orderAddCount = target.parentNode.querySelector('.orderAddCount').value;\n const param = {goGoodId: goodId, count: orderAddCount};\n const url = '/Orders/addtocart/';\n config.get(url, param, 'html').then((answer) => {\n console.log('answer getted');\n modalAfterAddToCart.setContent(answer);\n modalAfterAddToCart.show();\n modalAfterAddToCart.yaMetrika();\n common.cartHead.reloadCarts({\n 'reason': 'add',\n 'good_id': goodId,\n });\n metricaModule.sendEvent(metricaModule.getMetricaRegionId(), 'ORDER');\n return false;\n });\n restListPopover.hideActivePopovers();\n }\n\n if (target.classList.contains('icon-badget')) {\n if (target.dataset.badget_type === 'leader') {\n return;\n }\n getBadgetInfo(target);\n }\n\n if (target.classList.contains('js__decrementer') || target.classList.contains('js__incrementer')) {\n productItem.changeCount(target);\n }\n\n if (target.classList.contains('videoContainer__close')) {\n document.querySelector(SELECT.badgeVideoContainer).classList.remove('videoContainer--open');\n document.querySelector(SELECT.badgeVideoContainer).innerHTML = '';\n document.querySelector('.dropdown-menu--video').style.height = 'auto';\n }\n };\n }else{\n const sizePrices = document.getElementById('sizePrices');\n if (sizePrices) {\n sizePrices.onclick = function(event) {\n let target = event.target;\n if (target.classList.contains('b-item__avail-text')) {\n getAvailableInfo(target);\n }\n }\n }\n }\n\n const selection = document.querySelector('.moreTextButton') !== null;\n if (selection) {\n document.querySelector('.moreTextButton').addEventListener('click', function() {\n this.classList.add('d-none');\n const txtBlock = document.querySelector('.moreText-container');\n txtBlock.style.height = 'max-content';\n txtBlock.classList.add('show');\n txtBlock.classList.add('show');\n });\n }\n\n window.addEventListener('show.bs.modal', function() {\n restListPopover.hideActivePopovers();\n });\n },\n changeCount: function(element) {\n const $container = element.closest('.b-item__container');\n const countMin = 0;\n const $input = $container.querySelector('.b-item__quantity');\n const inputValue = parseInt($input.value);\n let dataRest = $input.dataset.rest;\n let count = inputValue == '' ? 0 : inputValue;\n\n if (dataRest === 12) dataRest = 99;\n if (count === countMin) return;\n\n if (element.classList.contains('js__incrementer')) {\n if (inputValue < dataRest) {\n $input.value = ++count;\n }\n } else {\n if (inputValue > 1) {\n $input.value = --count;\n }\n }\n },\n setCompareStatus: function() {\n compareHead.setCompareStatus();\n },\n removePopoversFromStorage: () => {\n Object.keys(localStorage).forEach((key) => {\n if (key.startsWith('popup')) {\n localStorage.removeItem(key);\n }\n });\n },\n};\n","import './index.scss';\nimport {config} from 'core/config';\nimport Popover from 'bootstrap/js/dist/popover';\n\nexport const restListPopover = {\n init: function() {\n restListPopover.loadRests();\n restListPopover.initPopoverListener();\n },\n initPopoverListener: (target) => {\n let popoverOptions = {};\n\n if (window.innerWidth < config.breakpoints.md) {\n popoverOptions = {\n 'html': true,\n 'trigger': 'click',\n 'placement': 'auto',\n };\n } else {\n popoverOptions = {\n 'html': true,\n 'trigger': 'click',\n 'placement': 'right',\n 'fallbackPlacements': ['left', 'right'],\n };\n }\n\n const popoverTriggerList = document.querySelectorAll('.js-rest-list-popovers:not(.b-item--loaded) [data-bs-toggle=\"popover\"]');\n const popoverList = [...popoverTriggerList].map((popoverTriggerEl) => {\n new Popover(popoverTriggerEl, popoverOptions);\n\n popoverTriggerEl.addEventListener('show.bs.popover', (e) => {\n restListPopover.hideActivePopovers();\n });\n popoverTriggerEl.addEventListener('shown.bs.popover', (e) => {\n const $popoverBtn = e.target;\n $popoverBtn.classList.add('active');\n config.moveHeaderWhenModal(true);\n if (window.innerWidth > config.breakpoints.md) {\n document.body.classList.add('body-locked');\n }\n setTimeout(function () {\n const targetData = e.target.dataset;\n const localValue = 'popup-' + targetData.available_type + targetData.item;\n const $popoverHeader = document.querySelector('.available-popover .popover-header');\n const $popoverContent = document.querySelector('.available-popover .popover-body');\n\n if ($popoverHeader) {\n $popoverHeader.addEventListener('click', function (e) {\n document.body.classList.remove('body-locked');\n Popover.getInstance($popoverBtn).hide();\n config.moveHeaderWhenModal(false);\n });\n }\n\n if (localStorage.getItem(localValue) === null) {\n const param = {\n availableType: popoverTriggerEl.dataset.available_type,\n goodId: popoverTriggerEl.dataset.item,\n };\n config.get('/catalog/availableinfo/', param, 'html').then((response) => {\n $popoverContent.innerHTML = response;\n localStorage.setItem(localValue, response);\n Popover.getOrCreateInstance(e.target).update();\n });\n } else {\n $popoverContent.innerHTML = localStorage.getItem(localValue);\n }\n }, 200);\n });\n popoverTriggerEl.addEventListener('hide.bs.popover', (e) => {\n if (window.innerWidth > config.breakpoints.md) {\n document.body.classList.remove('body-locked');\n }\n });\n });\n },\n hideActivePopovers: () => {\n const popoverSelector = '.js-rest-list-popovers [data-bs-toggle=\"popover\"]';\n const $$popoverBtnActive = document.querySelectorAll(`${popoverSelector}.active`);\n if ($$popoverBtnActive.length > 0) {\n $$popoverBtnActive.forEach((el) => {\n Popover.getInstance(el).hide();\n el.classList.remove('active');\n });\n };\n },\n loadRests: () => {\n const ids = {};\n document.querySelectorAll('.js-rest-list-popovers.needrests').forEach((el) => {\n const id = el.getAttribute('itemId');\n ids[id] = id;\n });\n config.get('/catalog/availablesbygoods/', { 'goodIds': JSON.stringify(ids) }).then((response) => {\n if (response.length > 0) {\n response.forEach((goodInfo) => {\n const $$goodBlocks = document.querySelectorAll(`.js-rest-list-popovers[itemId=\"${goodInfo.good_id}\"]`);\n $$goodBlocks.forEach(($goodBlock) => {\n $goodBlock.classList.remove('needrests');\n if (goodInfo.stock) {\n $goodBlock.querySelector('.availabilityBlock.stockAvailability').setAttribute('data-available', goodInfo.maxStock);\n $goodBlock.querySelector('.availabilityBlock.stockAvailability .stockShopsCount').innerHTML = goodInfo.stock;\n $goodBlock.querySelector('.availabilityBlock.stockAvailability .stockShopsNames').innerHTML = goodInfo.pointNameStock;\n } else {\n $goodBlock.querySelector('.availabilityBlock.stockAvailability').classList.add('d-none');\n }\n if (goodInfo.delivery) {\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability').setAttribute('data-available', goodInfo.maxDelivery);\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability .deliveryShopsCount').innerHTML = goodInfo.delivery;\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability .deliveryLength').innerHTML = goodInfo.minDeliveryLogist;\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability .deliveryShopsNames').innerHTML = goodInfo.pointNameDelivery;\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability .deliveryLengthNames').innerHTML = goodInfo.daysNameDelivery;\n } else {\n $goodBlock.querySelector('.availabilityBlock.deliveryAvailability').classList.add('d-none');\n }\n if (goodInfo.tk) {\n $goodBlock.querySelector('.availabilityBlock.tkAvailability').setAttribute('data-available', goodInfo.maxTk);\n $goodBlock.querySelector('.availabilityBlock.tkAvailability .tkShopsCount').innerHTML = goodInfo.tk;\n $goodBlock.querySelector('.availabilityBlock.tkAvailability .tkLength').innerHTML = goodInfo.minTkLogist;\n $goodBlock.querySelector('.availabilityBlock.tkAvailability .tkShopsNames').innerHTML = goodInfo.pointNameTK;\n $goodBlock.querySelector('.availabilityBlock.tkAvailability .tkLengthNames').innerHTML = goodInfo.daysNameTK;\n } else {\n $goodBlock.querySelector('.availabilityBlock.tkAvailability').classList.add('d-none');\n }\n });\n });\n }\n });\n },\n};\n","/* NO JQUERY */\nimport './index.scss';\n\nimport {config} from 'core/config';\nimport Tooltip from 'bootstrap/js/dist/tooltip';\nimport {search} from 'modules/mainSearchbar/search';\nimport {collapseSideFilter} from 'modules/collapseSideFilter';\nimport Popover from 'bootstrap/js/dist/popover';\n\nconst SELECT = {\n 'sliderTyres': '.sideFilter__tab-tyres',\n 'sliderDisks': '.sideFilter__tab-disks',\n 'priceSlider': '.sideFilter__price-slider',\n 'priceInput': '.js-sideFilter__price-input',\n 'priceFrom': '#sideFilter__price-from',\n 'priceTo': '#sideFilter__price-to',\n 'tooltip': '.tooltip.show',\n 'filterReset': '.filterReset',\n};\n\nexport const sideFilter = {\n wasInited: [],\n init: function() {\n const obj = this;\n collapseSideFilter();\n obj.bindEvents();\n obj.initSlider();\n obj.initPopovers();\n },\n initPopovers: () => {\n const popoverTriggerList = document.querySelectorAll('[data-bs-toggle=\"popover\"][data-bs-trigger=\"hover focus\"]');\n const popoverList = [...popoverTriggerList].map((popoverTriggerEl) => new Popover(popoverTriggerEl));\n },\n setCompareStatus: function () {\n compareHead.setCompareStatus();\n productItem.initPopovers();\n },\n bindEvents: function() {\n document.querySelectorAll('.sideFilter input').forEach(element => {\n element.addEventListener('change', () => {\n if (element.type === 'checkbox' && [460, 1084544].includes(+element.value)) {\n const secondPartner = document.querySelector(`.sideFilter input#qb${element.value === '460' ? '1084544' : '460'}`);\n if (secondPartner !== null) {\n secondPartner.checked = element.checked;\n }\n }\n let $container = element.closest('.searchForm');\n if ($container === null) $container = false;\n sideFilter.hideAllTooltips();\n const tooltip = new Tooltip(element, {\n trigger: 'manual',\n placement: 'left',\n html: true,\n container: $container,\n title: `Ищем..
`, boundary: document.body // or document.querySelector('#boundary')\n });\n tooltip.show();\n search.getCount(element);\n })\n });\n // reset filter\n if (document.querySelector(SELECT.filterReset) !== null) {\n document.querySelector(SELECT.filterReset).addEventListener('click', function(event) {\n const form = this.closest('form');\n const arrayInputs = form.querySelectorAll('input');\n \n arrayInputs.forEach(element => {\n if(element.type === 'checkbox' && element.checked) {\n element.checked = false;\n } else if (element.type === 'radio') {\n if (element.classList.contains('defaultValue')) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n } else {\n if(element.name !== 'thread') {\n element.value = '';\n }\n }\n });\n sideFilter.hideAllTooltips();\n });\n }\n const searchbarSizes = document.querySelector('.searchbar-sizes');\n if (searchbarSizes) {\n searchbarSizes.addEventListener('submit', function(e) {\n e.preventDefault();\n const formData = new FormData(this);\n for (var pair of formData.entries()) {\n const sideBarHiddenInput = document.querySelector(`.doSearchForm_additionalParams input[name=\"${pair[0]}\"]`);\n if (sideBarHiddenInput) {\n sideBarHiddenInput.value = pair[1];\n };\n };\n search.init();\n });\n };\n },\n initSlider: function(sliderParent = SELECT.sliderTyres) {\n const sliderPrice = document.querySelector(sliderParent + ' ' + SELECT.priceSlider) || 0;\n const priceFrom = document.querySelector(sliderParent + ' ' + SELECT.priceFrom);\n const priceTo = document.querySelector(sliderParent + ' ' + SELECT.priceTo);\n const minDiskCost = controllerConfigHead.get('minDiskCost');\n const maxDiskCost = controllerConfigHead.get('maxDiskCost');\n const minTyreCost = controllerConfigHead.get('minTyreCost');\n const maxTyreCost = controllerConfigHead.get('maxTyreCost');\n\n if (sliderPrice) {\n let minCost = parseInt(minTyreCost);\n let maxCost = parseInt(maxTyreCost);\n\n if (sliderParent == SELECT.sliderDisks) {\n minCost = parseInt(minDiskCost);\n maxCost = parseInt(maxDiskCost);\n }\n\n let isSliderInit = false;\n if (sliderPrice.length > 0) {\n isSliderInit = sliderPrice.classList.contains('noUi-target');\n } else {\n isSliderInit = true;\n }\n\n import('nouislider')\n .then(noUiSlider => {\n if (isSliderInit) {\n noUiSlider.create(sliderPrice, {\n start: [minCost, maxCost],\n connect: true,\n range: {\n 'min': minCost,\n 'max': maxCost,\n },\n pips: {\n mode: 'count',\n values: 5,\n density: 4,\n },\n });\n\n sliderPrice.noUiSlider.on('update', function (values, handle) {\n const value = Math.round(values[handle]);\n\n if (handle) {\n priceTo.value = value;\n } else {\n priceFrom.value = value;\n }\n });\n sliderPrice.noUiSlider.on('change', function () {\n let $container = sliderPrice.closest('.searchForm');\n if ($container === null) $container = false;\n sideFilter.hideAllTooltips();\n const tooltip = new Tooltip(sliderPrice, {\n trigger: 'manual',\n placement: 'left',\n html: true,\n container: $container,\n title: `Ищем..
`,\n });\n sideFilter.hideAllTooltips();\n tooltip.show();\n search.getCount();\n });\n\n priceFrom.addEventListener('change', function () {\n sliderPrice.noUiSlider.set([this.value, null]);\n });\n priceTo.addEventListener('change', function () {\n sliderPrice.noUiSlider.set([null, this.value]);\n });\n }\n })\n .catch(err => {\n main.textContent = err.message;\n });\n }\n // sideFilter.hideAllTooltips();\n sideFilter.wasInited.push(sliderParent);\n },\n hideAllTooltips: function() {\n const $$tooltips = document.querySelectorAll(`.sideFilter input, ${SELECT.priceSlider}`);\n $$tooltips.forEach((tooltip) => {\n const instance = Tooltip.getOrCreateInstance(tooltip, {trigger: 'manual'});\n instance.hide();\n });\n },\n};\n","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.2';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it, fn = (x) => x) => new Uint8Array(Array.prototype.slice.call(it, 0).map(fn));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a), c => c.charCodeAt(0));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins,\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","import './index.scss';\nimport {Base64} from 'js-base64';\n\nexport const base64Decode = {\n init: function() {\n const $$base64Element = document.querySelectorAll('.base64_decode');\n if ($$base64Element.length > 0) {\n $$base64Element.forEach((element) => {\n if (element.classList.contains('base64--decoded')) return;\n\n const base64Text = Base64.decode(element.innerHTML);\n element.innerHTML = base64Text;\n element.classList.add('base64--decoded');\n });\n }\n },\n};\n","import './index.scss';\nimport {base64Decode} from 'modules/base64Decode';\nimport Carousel from 'bootstrap/js/dist/carousel';\n\nconst SLIDER_SELECTOR = '.widgetSlider';\nconst SLIDER_PREV = '.widgetSlider-control[data-type=\"prev\"]';\nconst SLIDER_NEXT = '.widgetSlider-control[data-type=\"next\"]';\nconst SLIDER_PAUSE = '.widgetSlider-control[data-type=pause]';\nconst SLIDER_INTERVAL = 4000;\n\nexport const widgetSlider = {\n init: function() {\n base64Decode.init();\n widgetSlider.bindEvents();\n },\n bindEvents: function() {\n document.querySelectorAll(SLIDER_SELECTOR).forEach((slider) => {\n const carousel = Carousel.getOrCreateInstance(slider, {interval: SLIDER_INTERVAL, pause: false});\n\n if (slider.querySelectorAll('.carousel-indicators li').length > 1) {\n slider.querySelectorAll('.js-sliderNav').forEach((el) => el.style.display = 'flex');\n };\n\n slider.querySelector(SLIDER_PAUSE).onclick = function() {\n this.classList.toggle('paused');\n this.classList.contains('paused') ? carousel.pause() : carousel.cycle();\n };\n\n function mouseEvent(state) {\n if (slider.querySelector(SLIDER_PAUSE).classList.contains('paused')) return;\n state === 'leave' ? carousel.cycle() : carousel.pause();\n };\n\n slider.querySelector(SLIDER_PREV).onclick = () => carousel.prev();\n slider.querySelector(SLIDER_NEXT).onclick = () => carousel.next();\n slider.onmouseenter = () => mouseEvent('enter');\n slider.onmouseleave = () => mouseEvent('leave');\n });\n },\n};\n","/*!\n * Bootstrap carousel.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./util/index.js'), require('./util/swipe.js')) :\n typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './util/index', './util/swipe'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.BaseComponent, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Index, global.Swipe));\n})(this, (function (BaseComponent, EventHandler, Manipulator, SelectorEngine, index_js, Swipe) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'carousel';\n const DATA_KEY = 'bs.carousel';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const ARROW_LEFT_KEY = 'ArrowLeft';\n const ARROW_RIGHT_KEY = 'ArrowRight';\n const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n const ORDER_NEXT = 'next';\n const ORDER_PREV = 'prev';\n const DIRECTION_LEFT = 'left';\n const DIRECTION_RIGHT = 'right';\n const EVENT_SLIDE = `slide${EVENT_KEY}`;\n const EVENT_SLID = `slid${EVENT_KEY}`;\n const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;\n const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;\n const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;\n const EVENT_DRAG_START = `dragstart${EVENT_KEY}`;\n const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_CAROUSEL = 'carousel';\n const CLASS_NAME_ACTIVE = 'active';\n const CLASS_NAME_SLIDE = 'slide';\n const CLASS_NAME_END = 'carousel-item-end';\n const CLASS_NAME_START = 'carousel-item-start';\n const CLASS_NAME_NEXT = 'carousel-item-next';\n const CLASS_NAME_PREV = 'carousel-item-prev';\n const SELECTOR_ACTIVE = '.active';\n const SELECTOR_ITEM = '.carousel-item';\n const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\n const SELECTOR_ITEM_IMG = '.carousel-item img';\n const SELECTOR_INDICATORS = '.carousel-indicators';\n const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\n const SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\n const KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n };\n const Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n };\n const DefaultType = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n };\n\n /**\n * Class definition\n */\n\n class Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && index_js.isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n index_js.triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || index_js.getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n index_js.reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE);\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (index_js.isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (index_js.isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n }\n\n /**\n * Data API implementation\n */\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n });\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n });\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Carousel);\n\n return Carousel;\n\n}));\n//# sourceMappingURL=carousel.js.map\n","/*!\n * Bootstrap collapse.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./util/index.js')) :\n typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/selector-engine', './util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Index));\n})(this, (function (BaseComponent, EventHandler, SelectorEngine, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'collapse';\n const DATA_KEY = 'bs.collapse';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const EVENT_SHOW = `show${EVENT_KEY}`;\n const EVENT_SHOWN = `shown${EVENT_KEY}`;\n const EVENT_HIDE = `hide${EVENT_KEY}`;\n const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_SHOW = 'show';\n const CLASS_NAME_COLLAPSE = 'collapse';\n const CLASS_NAME_COLLAPSING = 'collapsing';\n const CLASS_NAME_COLLAPSED = 'collapsed';\n const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\n const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\n const WIDTH = 'width';\n const HEIGHT = 'height';\n const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\n const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]';\n const Default = {\n parent: null,\n toggle: true\n };\n const DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n };\n\n /**\n * Class definition\n */\n\n class Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n index_js.reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = index_js.getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n }\n\n /**\n * Data API implementation\n */\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n });\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Collapse);\n\n return Collapse;\n\n}));\n//# sourceMappingURL=collapse.js.map\n","/*!\n * Bootstrap popover.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./tooltip.js'), require('./util/index.js')) :\n typeof define === 'function' && define.amd ? define(['./tooltip', './util/index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.Tooltip, global.Index));\n})(this, (function (Tooltip, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'popover';\n const SELECTOR_TITLE = '.popover-header';\n const SELECTOR_CONTENT = '.popover-body';\n const Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' + '
' + '

' + '
' + '
',\n trigger: 'click'\n };\n const DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n };\n\n /**\n * Class definition\n */\n\n class Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n }\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Popover);\n\n return Popover;\n\n}));\n//# sourceMappingURL=popover.js.map\n","/*!\n * Bootstrap tooltip.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./util/index.js'), require('./util/sanitizer.js'), require('./util/template-factory.js')) :\n typeof define === 'function' && define.amd ? define(['@popperjs/core', './base-component', './dom/event-handler', './dom/manipulator', './util/index', './util/sanitizer', './util/template-factory'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global[\"@popperjs/core\"], global.BaseComponent, global.EventHandler, global.Manipulator, global.Index, global.Sanitizer, global.TemplateFactory));\n})(this, (function (Popper, BaseComponent, EventHandler, Manipulator, index_js, sanitizer_js, TemplateFactory) { 'use strict';\n\n function _interopNamespaceDefault(e) {\n const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });\n if (e) {\n for (const k in e) {\n if (k !== 'default') {\n const d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: () => e[k]\n });\n }\n }\n }\n n.default = e;\n return Object.freeze(n);\n }\n\n const Popper__namespace = /*#__PURE__*/_interopNamespaceDefault(Popper);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'tooltip';\n const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\n const CLASS_NAME_FADE = 'fade';\n const CLASS_NAME_MODAL = 'modal';\n const CLASS_NAME_SHOW = 'show';\n const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\n const EVENT_MODAL_HIDE = 'hide.bs.modal';\n const TRIGGER_HOVER = 'hover';\n const TRIGGER_FOCUS = 'focus';\n const TRIGGER_CLICK = 'click';\n const TRIGGER_MANUAL = 'manual';\n const EVENT_HIDE = 'hide';\n const EVENT_HIDDEN = 'hidden';\n const EVENT_SHOW = 'show';\n const EVENT_SHOWN = 'shown';\n const EVENT_INSERTED = 'inserted';\n const EVENT_CLICK = 'click';\n const EVENT_FOCUSIN = 'focusin';\n const EVENT_FOCUSOUT = 'focusout';\n const EVENT_MOUSEENTER = 'mouseenter';\n const EVENT_MOUSELEAVE = 'mouseleave';\n const AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: index_js.isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: index_js.isRTL() ? 'right' : 'left'\n };\n const Default = {\n allowList: sanitizer_js.DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' + '
' + '
' + '
',\n title: '',\n trigger: 'hover focus'\n };\n const DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n };\n\n /**\n * Class definition\n */\n\n class Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper__namespace === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW));\n const shadowRoot = index_js.findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', index_js.noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', index_js.noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = index_js.getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW);\n }\n _createPopper(tip) {\n const placement = index_js.execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return index_js.execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...index_js.execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : index_js.getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n }\n\n /**\n * jQuery\n */\n\n index_js.defineJQueryPlugin(Tooltip);\n\n return Tooltip;\n\n}));\n//# sourceMappingURL=tooltip.js.map\n","/*!\n * Bootstrap sanitizer.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Sanitizer = {}));\n})(this, (function (exports) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n // js-docs-start allow-list\n const ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n // js-docs-end allow-list\n\n const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n /**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n // eslint-disable-next-line unicorn/better-regex\n const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\n const allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n };\n function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n }\n\n exports.DefaultAllowlist = DefaultAllowlist;\n exports.sanitizeHtml = sanitizeHtml;\n\n Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\n}));\n//# sourceMappingURL=sanitizer.js.map\n","/*!\n * Bootstrap swipe.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/event-handler.js'), require('./config.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/event-handler', './config', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Swipe = factory(global.EventHandler, global.Config, global.Index));\n})(this, (function (EventHandler, Config, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'swipe';\n const EVENT_KEY = '.bs.swipe';\n const EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`;\n const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`;\n const EVENT_TOUCHEND = `touchend${EVENT_KEY}`;\n const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`;\n const EVENT_POINTERUP = `pointerup${EVENT_KEY}`;\n const POINTER_TYPE_TOUCH = 'touch';\n const POINTER_TYPE_PEN = 'pen';\n const CLASS_NAME_POINTER_EVENT = 'pointer-event';\n const SWIPE_THRESHOLD = 40;\n const Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n };\n const DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n };\n\n /**\n * Class definition\n */\n\n class Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n index_js.execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n index_js.execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n }\n\n return Swipe;\n\n}));\n//# sourceMappingURL=swipe.js.map\n","/*!\n * Bootstrap template-factory.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/selector-engine.js'), require('./config.js'), require('./sanitizer.js'), require('./index.js')) :\n typeof define === 'function' && define.amd ? define(['../dom/selector-engine', './config', './sanitizer', './index'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.TemplateFactory = factory(global.SelectorEngine, global.Config, global.Sanitizer, global.Index));\n})(this, (function (SelectorEngine, Config, sanitizer_js, index_js) { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n /**\n * Constants\n */\n\n const NAME = 'TemplateFactory';\n const Default = {\n allowList: sanitizer_js.DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n };\n const DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n };\n const DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n };\n\n /**\n * Class definition\n */\n\n class TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (index_js.isElement(content)) {\n this._putElementInTemplate(index_js.getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizer_js.sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return index_js.execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n }\n\n return TemplateFactory;\n\n}));\n//# sourceMappingURL=template-factory.js.map\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const realIndex = swiper.realIndex;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n const indexBeforeLoopFix = swiper.activeIndex;\n swiper.loopFix({\n direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n const indexAfterFix = swiper.activeIndex;\n if (indexBeforeLoopFix === indexAfterFix) {\n swiper.slideToLoop(realIndex, 0, false, true);\n }\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n if (!data.isMoved) {\n if (isLoop) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n"],"names":["sliderArticles","Swiper","slidesPerView","spaceBetween","modules","Navigation","navigation","nextEl","prevEl","breakpoints","sliderGoods","on","sliderMove","e","galleryEdgeGradient","slideChange","element","isBeginning","el","classList","add","remove","isEnd","sliderVideo","mainSearchbar","sideFilter","collapseSideFilter","$sideFilter","document","querySelector","sideFilterInstance","Collapse","toggle","window","innerWidth","config","hide","show","SELECT","compareHead","bindEvents","$addTofavorites","addEventListener","this","contains","textContent","removeGoodFromCompare","dataset","goodId","addGoodToCompare","setCompareStatus","update","data","$compareHead","$comparHeadName","$comparHeadCount","$comparHeadAction","style","display","name","innerHTML","action","id","getElementById","insertAdjacentHTML","templateCompareHead","cookie","gogoods_id","then","response","updateInHead","$headCount","count_goods","Object","values","goods","length","mobileCompare","mobileLinkCompareVal","createElement","appendChild","forEach","$goodLink","$goodItem","title","baloonTemplate","bln","icon","actual_address","phone","workgrafic","paymentsInfo","payments","pointInfo","iconUrl","shm","define","$","undefined","UTCDate","Date","UTC","apply","arguments","UTCToday","today","getFullYear","getMonth","getDate","isUTCEquals","date1","date2","getUTCFullYear","getUTCMonth","getUTCDate","alias","method","deprecationMsg","fn","datepicker","deprecated","isValidDate","d","isNaN","getTime","extras","DateArray","get","i","slice","val","valueOf","l","splice","replace","new_array","isArray","clear","push","copy","a","extend","Datepicker","options","_events","_secondaryEvents","_process_options","dates","viewDate","o","defaultViewDate","focusDate","isInput","is","inputField","find","component","hasClass","isInline","picker","DPGlobal","template","_check_template","templates","leftArrow","html","rightArrow","_buildEvents","_attachEvents","addClass","appendTo","rtl","calendarWeeks","attr","Number","startDate","_o","endDate","daysOfWeekDisabled","daysOfWeekHighlighted","datesDisabled","_allow_update","setViewMode","startView","fillDow","fillMonths","prototype","constructor","_resolveViewName","view","each","viewModes","viewMode","inArray","names","_resolveDaysOfWeek","daysOfWeek","split","map","tmp","match","ex","opts","lang","language","defaults","minViewMode","maxViewMode","Math","max","min","multidate","multidateSeparator","String","weekStart","weekEnd","format","parseFormat","_local_to_utc","_zero_time","parseDate","assumeNearbyYear","Infinity","plc","orientation","toLowerCase","_plc","grep","word","test","x","y","year","month","day","_applyEvents","evs","ch","ev","_unapplyEvents","off","events","keyup","proxy","keyCode","keydown","paste","showOnFocus","focus","click","blur","_focused_from","target","immediateUpdates","date","navArrowsClick","dayCellClick","resize","place","_detachEvents","_attachSecondaryEvents","_detachSecondaryEvents","_trigger","event","altdate","local_date","_utc_to_local","trigger","type","ix","formatDate","prop","enableOnReadonly","container","navigator","msMaxTouchPoints","disableTouchKeyboard","detach","forceParse","setValue","destroy","dateString","originalEvent","clipboardData","types","getData","setDate","preventDefault","utc","local","getTimezoneOffset","_zero_utc_time","getDates","getUTCDates","selected_date","clearDates","autoclose","setDates","args","setUTCDates","setUTCDate","formatted","getFormattedDate","join","getStartDate","setStartDate","updateNavArrows","getEndDate","setEndDate","setDaysOfWeekDisabled","setDaysOfWeekHighlighted","setDatesDisabled","calendarWidth","outerWidth","calendarHeight","outerHeight","visualPadding","windowWidth","width","scrollTop","appendOffset","offset","parentsZindex","parents","itemZIndex","css","zIndex","zIndexOffset","parent","height","left","top","removeClass","yorient","parseInt","right","oldDates","fromArgs","dateWithinRange","updateViewDate","change","fill","showWeekDays","dowCnt","daysMin","append","localDate","monthsShort","setRange","range","getClassNames","cls","todayHighlight","dateIsDisabled","getUTCDay","_fill_yearsView","selector","cssClass","factor","startYear","endYear","beforeFn","classes","tooltip","before","step","startVal","floor","endVal","focusedVal","selected","currVal","noop","enabled","concat","text","startMonth","endMonth","todaytxt","cleartxt","titleFormat","todayDate","titleBtnVisible","todayBtn","weekOfDateIsDisabled","clearBtn","prevMonth","nextMonth","setUTCFullYear","weekDay","clsName","ws","th","yth","calWeek","content","beforeShowDay","isFunction","uniqueSort","unique","toString","monthsTitle","months","end","eq","beforeShowMonth","that","moDate","beforeShowYear","beforeShowDecade","beforeShowCentury","prevIsDisabled","nextIsDisabled","toggleClass","stopPropagation","_setDate","index","setUTCMonth","timestamp","currentTarget","dir","navStep","moveMonth","_toggle_multidate","toggleActive","which","moveDay","newDate","moveWeek","new_month","new_date","mag","abs","moveYear","moveAvailableDate","newViewDate","dateChanged","keyboardNavigation","ctrlKey","shiftKey","children","filter","DateRangePicker","inputs","jquery","keepEmptyValues","datepickerPlugin","call","dateUpdated","pickers","updateDates","opts_from_el","prefix","out","RegExp","re_lower","_","key","opts_from_locale","locale_opts","k","updateRanges","p","updating","dp","keep_empty_values","j","old","option","internal_return","Array","shift","$this","elopts","locopts","toArray","Error","Constructor","en","days","daysShort","ru","validParts","nonpunctuation","toValue","toDisplay","separators","parts","assumeNearby","part","fn_map","m","w","dateAliases","yesterday","tomorrow","applyNearbyYear","threshold","filtered","parsed","setters_order","setters_map","yyyy","v","fparts","match_part","cnt","_date","s","D","DD","M","MM","yy","substring","dd","mm","seps","headTemplate","contTemplate","footTemplate","noConflict","version","msg","console","warn","templateList","amount","discount","address","templateListItem","selectDateSto","jQuery","fitMapList","init","list","initCalendar","listItem","listItemActive","listItemInner","pointId","appendForm","selectedVal","spinner","selectedId","timeBlock","when","done","answer","scheduleItems","availableTime","dropdown","maskPhone","maskCarNumber","require","IMask","mask","lazy","stoid","stoaddress","serialize","result","tireFittingTime","formatDatetime","padStart","getHours","getMinutes","serviceInfo","price","error","item","topPos","offsetTop","shopListUrl","getJSON","json","tempDate","fRest","fChpu","b","selectAddress","iconArrowLeft","iconArrowRight","enableDays","indexOf","hideLayout","body","getLayoutTemplate","hideLayoutClass","activePlacemark","fitMapPodbor","podbor","initYandexMap","select","time","paramsMainSearch","collectForm","pair","entries","serviceCode","carNumber","location","href","alert","comment","ymaps","getScript","ready","points","searchResult","myMap","Map","center","zoom","searchControlProvider","MyIconContentLayout","templateLayoutFactory","createClass","clusterer","Clusterer","clusterIcons","size","hasBalloon","clusterIconContent","clusterIconContentLayout","set","groupByCoordinates","clusterDisableClickZoom","clusterBalloonMinHeight","gridSize","getGeoObjects","elem","unset","geoObjects","listHtml","counter","coords","priceWithDiscount","txtPriceWithDiscount","geoData","coordinates","Placemark","reverse","iconCaption","iconColor","stoId","pointsData","obj","properties","balloon","open","clusters","getClusters","priceArray","MyIconContentLayout2","setBounds","getBounds","checkZoomRange","getZoom","setZoom","behaviors","disable","searchType","Std","Stprof","Stsh","TypeSize","hidePostfactPayments","postfactPayment","Tab","first","showPostfactPayments","getAvailableInfo","goodAvailableObj","availableType","available_type","param","nextElementSibling","$dropdownMenu","dropdownInstance","Dropdown","$dropdownIframe","getBadgetInfo","badgetObj","badgetType","badget_type","object_type","$$smallVideoLoad","querySelectorAll","$badgeVideoContainer","videoLink","smallVideoLink","tpl","videoContainerHeight","offsetHeight","initVideoBudget","videoDiv","$$elements","formHtml","tagName","formData","FormData","elements","checkVisibility","checked","value","$tabSwitch","dataSwitch","switch","searchFormType","$searchParamsAction","$searchParamsThread","avtoStorage","markSelector","modelSelector","yearSelector","modificationSelector","localStorage","setItem","JSON","stringify","mark","model","selectedIndex","outerHTML","mod","callback","hasOwnProperty","car","parse","getItem","removeItem","collapseWinterShow","$collapse","bsCollapse","selectionByCar","searchByCar","isChecked","$studAll","$studWith","$studWithout","input","sync","$myCollapse","syncFilters","selection","newAvtoSearch","selectionReset","$$selectModel","$$selectYear","$$selectMod","$$selectCurrent","selectName","currentValue","requestUrl","resetButtonVisible","params","searchForm","disabled","$buttonSubmit","activeButtonSubmit","$activeButtonClose","SIZES_WAS_LOADED","$$firstStage","$$secondStage","$$searchbar","searchButtonVisible","loadDiskResults","loadTyresResult","loadServicesResult","fullName","$$checkboxes","$checkbox","sverlovka","ComplectationAutos_id","showAutoResults","bindNotSparkaInputs","bindSparkaInputs","loadSizes","advDatas","setTimeout","getSearchType","searchButton","hidden","newSearchButon","diskParams","$sizesTuningDisk","$sizesStockDisk","pcd","Fv","Ft","dia","$asDiai","$diskParams","disks","$disksSearchResult","$autoSearchSizesDisks","$complectationAutosId","diskVariants","$tyresSearchResult","$autoSearchSizesTyres","tyres","tyresVariants","servicesVariants","$searchForm","$activeNavLink","formFoundError","updateCaptcha","setAttribute","$linkCaptchaUpdate","buttonSendError","Nette","validateForm","$modal","Modal","containers","search","productItem","processHash","tabName","activeTab","getAttribute","$sliderArticles","sparkaCheckbox","filterTab","closest","from","history","pushState","tab","$sideFilterCurrent","dataSearch","$$switchLinkSelector","$navLink","$$switchImages","dataSwitchLink","$activeSearchResult","$$searchBarByCar","sortItem","searchContainer","sort","sortType","sorttype","defsort","$$diffTyres","$$removeDiffTyres","$diffTyres","$removeDiffTyres","diffTyres","hash","tabId","openTab","tabInstanse","sparkaInputs","checkedInputs","sparkasPair","mainSparkasPair","elementSp","elementMsp","$notSpark","$notSparkCheckbox","$sparka","$sparkaAll","CURRENT_PAGE","SEARCH_RESULT","paramsCurrentForm","$itemsSortRow","$h1Results","nextButton","spinnerPlace","$pagination","mobileLoader","res","errors","meta","$h1","$$bItems","count","url","log","restListPopover","widgetSlider","linkShowAllModels","lazyload","form","hideAllPopovers","page","scrollIntoView","block","behavior","hideAllTooltips","getCount","byFormArray","byForm","has","updateTooltips","catch","message","initBarajaSliders","Tooltip","popover","Popover","isLoad","$$btnSearch","$countOfFound","modalAfterAddToCart","modalId","modal","modalTemplate","setContent","yaMetrika","dataLayer","products","ym","bindEvent","removePopoversFromStorage","onclick","orderAddCount","parentNode","goGoodId","common","cartHead","reloadCarts","metricaModule","changeCount","sizePrices","txtBlock","$input","inputValue","dataRest","rest","keys","startsWith","loadRests","initPopoverListener","popoverOptions","popoverTriggerEl","hideActivePopovers","$popoverBtn","targetData","localValue","$popoverHeader","$popoverContent","$$popoverBtnActive","ids","goodInfo","good_id","$goodBlock","stock","maxStock","pointNameStock","delivery","maxDelivery","minDeliveryLogist","pointNameDelivery","daysNameDelivery","tk","maxTk","minTkLogist","pointNameTK","daysNameTK","wasInited","initSlider","initPopovers","includes","secondPartner","$container","placement","boundary","searchbarSizes","sideBarHiddenInput","sliderParent","sliderPrice","priceFrom","priceTo","minDiskCost","controllerConfigHead","maxDiskCost","minTyreCost","maxTyreCost","minCost","maxCost","isSliderInit","noUiSlider","create","start","connect","pips","mode","density","handle","round","err","main","_hasatob","atob","_hasBuffer","Buffer","_TD","TextDecoder","b64chs","TextEncoder","b64tab","c","b64re","_fromCC","fromCharCode","bind","_U8Afrom","Uint8Array","it","_tidyB64","re_btou","cb_btou","cccc","charCodeAt","btou","atobPolyfill","asc","TypeError","u24","r1","r2","bin","charAt","_atob","_toUint8Array","_decode","decode","_unURI","m0","src","gBase64","base64Decode","$$base64Element","base64Text","Base64","SLIDER_PAUSE","slider","carousel","Carousel","interval","pause","mouseEvent","state","cycle","prev","next","onmouseenter","onmouseleave","module","exports","BaseComponent","EventHandler","Manipulator","SelectorEngine","index_js","Swipe","NAME","EVENT_KEY","DATA_API_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","Default","keyboard","ride","touch","wrap","DefaultType","super","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","findOne","_element","_addEventListeners","_config","_slide","nextWhenVisible","isVisible","triggerTransitionEnd","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","one","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","dispose","_configAfterMerge","defaultInterval","_keydown","isSupported","_addTouchEventListeners","img","swipeConfig","leftCallback","_directionToOrder","rightCallback","endCallback","clearTimeout","direction","_setActiveIndicatorElement","activeIndicator","removeAttribute","newActiveIndicator","elementInterval","activeElement","isNext","nextElement","getNextActiveElement","nextElementIndex","triggerEvent","eventName","relatedTarget","_orderToDirection","defaultPrevented","isCycling","Boolean","directionalClassName","orderClassName","reflow","completeCallBack","_queueCallback","_isAnimated","clearInterval","isRTL","static","getOrCreateInstance","getElementFromSelector","slideIndex","getDataAttribute","carousels","defineJQueryPlugin","factory","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE","_isTransitioning","_triggerArray","toggleList","getSelectorFromElement","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","complete","scrollSize","toUpperCase","getBoundingClientRect","getElement","triggerArray","isOpen","delegateTarget","getMultipleElementsFromSelector","SELECTOR_TITLE","SELECTOR_CONTENT","_isWithContent","_getTitle","_getContent","_getContentForTemplate","_resolvePossibleFunction","Popper","sanitizer_js","TemplateFactory","_interopNamespaceDefault","n","Symbol","toStringTag","getOwnPropertyDescriptor","defineProperty","enumerable","default","freeze","Popper__namespace","DISALLOWED_ATTRIBUTES","Set","CLASS_NAME_FADE","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","allowList","DefaultAllowlist","animation","customClass","delay","fallbackPlacements","popperConfig","sanitize","sanitizeFn","_isEnabled","_timeout","_isHovered","_activeTrigger","_popper","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","toggleEnabled","_leave","_enter","_hideModalHandler","_disposePopper","showEvent","isInTheDom","findShadowRoot","ownerDocument","documentElement","_getTipElement","_createPopper","_isWithActiveTrigger","_createTipElement","_getTemplateFactory","toHtml","tipId","getUID","changeContent","extraClass","_initializeOnDelegatedTarget","_getDelegateConfig","execute","attachment","createPopper","_getPopperConfig","_getOffset","popperData","arg","defaultBsPopperConfig","modifiers","phase","triggers","eventIn","eventOut","context","trim","_setTimeout","handler","timeout","_getConfig","dataAttributes","getDataAttributes","dataAttribute","_mergeConfigObj","_typeCheckConfig","area","br","col","code","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","attributes","allowedAttributes","Config","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","pointerType","maxTouchPoints","DefaultContentType","entry","getContent","hasContent","_checkContent","templateWrapper","_maybeSanitize","_setContent","templateElement","isElement","_putElementInTemplate","Keyboard","_ref","swiper","extendParams","emit","g","rtlTranslate","kc","charCode","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","altKey","metaKey","onlyInViewport","inView","slideClass","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowHeight","innerHeight","swiperOffset","scrollLeft","swiperCoord","point","returnValue","slideNext","slidePrev","removeEventListener","assign","originalParams","checkProps","createElements","auto","className","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","uniqueNavElements","toggleEl","subEl","watchOverflow","isLocked","loop","rewind","onPrevClick","onNextClick","initButton","destroyButton","_s","targetEl","pagination","clickable","isHidden","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","slidesPerGroup","realIndex","newSlideIndex","getSlideIndexByData","currentSlideIndex","slides","loopedSlides","indexBeforeLoopFix","loopFix","activeSlideIndex","slideTo","slideToLoop","current","previousIndex","slidesLength","virtual","total","ceil","snapGrid","previousRealIndex","snapIndex","previousSnapIndex","firstIndex","lastIndex","midIndex","classesToRemove","suffix","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","render","paginationHTML","numberOfBullets","freeMode","Zoom","maxRatio","minRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideEl","slideWidth","slideHeight","imageEl","imageWrapEl","image","isTouched","isMoved","currentX","currentY","minX","minY","maxX","maxY","startX","startY","touchesStart","touchesCurrent","velocity","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","pageX","y1","pageY","x2","y2","sqrt","eventWithinSlide","slideSelector","matches","onGestureStart","scaleStart","box","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","pointerId","scaleMove","onGestureEnd","onTouchMove","hostEl","containerEl","eventWithinZoomContainer","offsetWidth","scaledWidth","scaledHeight","allowClick","cancelable","scaleRatio","now","onTransitionEnd","zoomIn","slidesEl","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","cssMode","wrapperEl","overflow","touchAction","forceZoomRatio","scrollX","scrollY","zoomOut","zoomToggle","getListeners","passiveListener","passiveListeners","passive","capture","activeListenerWithCapture","device","android","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","animating","in","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","destroyed","clickedIndex","clickedSlide","slideToIndex","thumbsParams","SwiperClass","watchSlidesProgress","slideToClickedSlide","thumbsSwiperParams","initial","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","visibleSlidesIndexes","HTMLElement","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","detail","watchForThumbsToAppear","requestAnimationFrame","duration","setTransition","isObject","ssrDocument","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","host","hostname","origin","pathname","protocol","getDocument","doc","ssrWindow","userAgent","replaceState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","matchMedia","cancelAnimationFrame","getWindow","win","deleteProps","object","nextTick","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","parseFloat","m42","isNode","node","nodeType","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","targetPosition","side","startPosition","translate","startTime","scrollSnapType","cssModeFrameID","isOutOfBound","animate","progress","easeProgress","cos","PI","currentPosition","scrollTo","elementChildren","tag","elementOffset","clientTop","clientLeft","elementPrevAll","prevEls","previousElementSibling","elementNextAll","nextEls","elementStyle","elementIndex","child","previousSibling","elementParents","parentElement","elementOuterSize","includeMargins","support","deviceCached","browser","getSupport","smoothScroll","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","ios","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","major","minor","num","isWebView","calcBrowser","eventsEmitter","priority","self","eventsListeners","once","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","_len2","_key2","unshift","processLazyPreloader","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","preload","lazyPreloadPrevNext","grid","rows","activeColumn","preloadColumns","column","slideIndexLastInView","updateSize","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","addToSnapGrid","addToSlidesGrid","checkOverflow","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","minusOffset","offsetLeft","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","slideNextClass","slidePrevClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","runCallbacksOnInit","updateClickedSlide","slideFound","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","preventInteractionOnTransition","newTranslate","isH","onTranslateToWrapperTransitionEnd","transitionEmit","normalizedTranslate","normalizedGrid","normalizedGridNext","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","newIndex","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","getSlideIndex","loopCreate","slideRealIndex","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","prepend","recalcSlides","currentSlideTranslate","diff","touchEventsData","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","simulateTouch","touchEventsTarget","button","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","swipeHandler","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","targetTouches","touchAngle","atan2","touchMoveStopPropagation","nested","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopFixed","disableParentSwiper","resistanceRatio","resistance","followFinger","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","updateOnWindowResize","isGridEnabled","resizeObserver","breakpointsBase","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","transition","transitionDelay","moving","__preventObserver__","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","currentHeight","substr","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","resultClasses","prepareClasses","removeClasses","extendedDefaults","swipers","newParams","__modules__","swiperParams","passedParams","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","getSlideClasses","updates","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","slideSlots","lazyElements","deleteInstance","cleanStyles","newDefaults","installModule","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect"],"sourceRoot":""}