{"version":3,"file":"main.js","mappings":"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","sources":["webpack://flow.EduSigmaSchoolLanding/./wwwroot/src/modules/metrics.js","webpack://flow.EduSigmaSchoolLanding/./wwwroot/src/modules/form.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/ssr-window/ssr-window.esm.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/dom7/dom7.esm.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/shared/dom.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/shared/utils.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/shared/get-support.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/shared/get-device.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/shared/get-browser.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/events-emitter.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/updateSize.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/updateSlides.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/updateProgress.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/transition/transitionEmit.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/slide/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/slide/slideTo.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/slide/slideToLoop.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/slide/slideNext.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/slide/slidePrev.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/slide/slideReset.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/slide/slideToClosest.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/loop/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/loop/loopCreate.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/loop/loopFix.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/loop/loopDestroy.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/events/onTouchStart.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/events/onTouchMove.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/events/onTouchEnd.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/events/onResize.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/events/onClick.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/events/onScroll.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/events/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/breakpoints/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/classes/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/classes/addClasses.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/classes/removeClasses.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/defaults.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/moduleExtendParams.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/core.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/translate/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/translate/getTranslate.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/translate/setTranslate.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/translate/minTranslate.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/translate/maxTranslate.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/translate/translateTo.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/transition/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/transition/setTransition.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/transition/transitionStart.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/transition/transitionEnd.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/grab-cursor/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/check-overflow/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/images/index.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/images/loadImage.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/images/preloadImages.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/modules/resize/resize.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/core/modules/observer/observer.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/shared/classes-to-selector.js","webpack://flow.EduSigmaSchoolLanding/./wwwroot/src/modules/init-partners-slider.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/modules/pagination/pagination.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/modules/navigation/navigation.js","webpack://flow.EduSigmaSchoolLanding/./node_modules/swiper/modules/lazy/lazy.js","webpack://flow.EduSigmaSchoolLanding/./wwwroot/src/modules/getPageName.js","webpack://flow.EduSigmaSchoolLanding/./wwwroot/src/modules/teachers.js","webpack://flow.EduSigmaSchoolLanding/./wwwroot/src/index.js","webpack://flow.EduSigmaSchoolLanding/./wwwroot/src/modules/UtmTags.js","webpack://flow.EduSigmaSchoolLanding/./wwwroot/src/modules/site.js","webpack://flow.EduSigmaSchoolLanding/./wwwroot/src/modules/programs.js"],"sourcesContent":["const metrics = () => {\r\n /* Установка метрики по клику на кнопку телеграмма */\r\n (() => {\r\n const buttonsTelegram = document.querySelectorAll('.TelegramClickKB');\r\n \r\n buttonsTelegram.forEach(button => {\r\n button.addEventListener('click', () => {\r\n ym(90894624,'reachGoal','TelegramClickKB');\r\n })\r\n })\r\n })(); \r\n};\r\n\r\nexport default metrics;\r\n","import metrics from \"./metrics\";\r\n\r\nconst form = () => {\r\n //const citizenRequest = 'https://localhost:44328/CitizenRequest/InternalNewRequest'; // debug\r\n const citizenRequest = 'https://flowrequests.code.flow-crm.study/citizenrequest/InternalNewRequest';\r\n const crmRequest = 'https://sigmaedu.ru/handler.php';\r\n \r\n const manual = '/files/Instructia__Gosuslugi.pdf',\r\n telegram = 'http://t.me/education_school_bot';\r\n\r\n const redirectList = {\r\n 'Python: разработка игр с Pygame и GUI':\r\n 'https://www.gosuslugi.ru/futurecode/27546?region=45000000000&view=online',\r\n 'Анализ данных на Python (базовый уровень)':\r\n 'https://www.gosuslugi.ru/futurecode/27553?view=online',\r\n 'Анализ данных на Python (начальный уровень)':\r\n 'https://www.gosuslugi.ru/futurecode/27553?view=online',\r\n 'Программирование БПЛА на Python: от основ до автономных полетов':\r\n 'https://www.gosuslugi.ru/futurecode/27543?region=45000000000&view=online',\r\n 'Программирование БПЛА на Python: от теории к практике':\r\n 'https://www.gosuslugi.ru/futurecode/27546?region=45000000000&view=online',\r\n 'Программирование БПЛА на Python: паттерны, API и библиотеки эффективных решений':\r\n 'https://www.gosuslugi.ru/futurecode/27543?region=45000000000&view=online',\r\n 'Разработчик на Python: с нуля до junior':\r\n 'https://www.gosuslugi.ru/futurecode/27361?view=online',\r\n 'Data-science: программирование нейросетей (Machine Learning)':\r\n 'https://www.gosuslugi.ru/futurecode/27361?view=online',\r\n 'Разработка игр и чат-ботов на Python':\r\n 'https://www.gosuslugi.ru/futurecode/27457?view=online',\r\n 'Python Essentials: концепции и технологии разработки':\r\n 'https://www.gosuslugi.ru/futurecode/27438?view=online',\r\n 'Python: разработка web-приложений на Flask':\r\n 'https://www.gosuslugi.ru/futurecode/27457?view=online',\r\n 'Разработка игр и приложений на Unity 3D и C#':\r\n 'https://www.gosuslugi.ru/futurecode/27546?region=45000000000&view=online',\r\n 'Unreal Engine: от программирования на С++ до дизайна уровней в Blueprints':\r\n 'https://www.gosuslugi.ru/futurecode/27544?region=45000000000&view=online',\r\n 'Интернет вещей и AI: программирование умных устройств':\r\n 'https://www.gosuslugi.ru/futurecode/27544?region=45000000000&view=online',\r\n 'Разработчик игр на С#: с нуля до PRO':\r\n 'https://www.gosuslugi.ru/futurecode/27438?view=online',\r\n 'Основы разработки виртуальной реальности (VR) и дополненной реальности (AR)':\r\n 'https://www.gosuslugi.ru/futurecode/27449?view=online',\r\n 'Java-разработчик: с нуля до PRO':\r\n 'https://www.gosuslugi.ru/futurecode/27554?region=45000000000&view=online',\r\n 'Программирование БПЛА на JavaScript: от основ до первого полета':\r\n 'https://www.gosuslugi.ru/futurecode/27542?region=45000000000&view=online',\r\n 'Web-программирование: с нуля до первых проектов':\r\n 'https://www.gosuslugi.ru/futurecode/27434?view=online',\r\n 'Разработчик мобильных приложений на Android':\r\n 'https://www.gosuslugi.ru/futurecode/27445?view=online',\r\n 'Тестировщик программного обеспечения':\r\n 'https://www.gosuslugi.ru/futurecode/27470?view=online',\r\n 'Разработка игры в Roblox Studio: с нуля до создания игрового мира':\r\n 'https://www.gosuslugi.ru/futurecode/27539?region=45000000000&view=online',\r\n };\r\n\r\n const DIRECTIONS = {\r\n Games: [\r\n //\"Разработка игр и приложений на Unity 3D и C#\",\r\n //\"Python: разработка игр с Pygame и GUI\",\r\n //\"Unreal Engine: от программирования на С++ до дизайна уровней в Blueprints\",\r\n //\"Разработка игры в Roblox Studio: с нуля до создания игрового мира\",\r\n 'Разработка игр и чат-ботов на Python',\r\n 'Разработчик игр на С#: с нуля до PRO',\r\n ],\r\n Web: [\r\n 'Разработчик на Python: с нуля до junior',\r\n 'Разработчик мобильных приложений на Android',\r\n 'Web-программирование: с нуля до первых проектов',\r\n 'Python: разработка web-приложений на Flask',\r\n 'Python Essentials: концепции и технологии разработки',\r\n \"Код Будущего: уверенный старт\",\r\n ],\r\n AI: [\r\n 'Основы разработки виртуальной реальности (VR) и дополненной реальности (AR)',\r\n //\"Интернет вещей и AI: программирование умных устройств\",\r\n 'Data-science: программирование нейросетей (Machine Learning)',\r\n ],\r\n Data: [\r\n //\"Анализ данных на Python (базовый уровень)\",\r\n //\"Анализ данных на Python (начальный уровень)\",\r\n ],\r\n Testing: ['Тестировщик программного обеспечения'],\r\n Bpla: [\r\n //\"Программирование БПЛА на Python: от основ до автономных полетов\",\r\n //\"Программирование БПЛА на JavaScript: от основ до первого полета\",\r\n //\"Программирование БПЛА на Python: от теории к практике\",\r\n //\"Программирование БПЛА на Python: паттерны, API и библиотеки эффективных решений\",\r\n ],\r\n };\r\n\r\n let isChange = false; // Проверка заполнял ли форму уже пользователь в текущий момент\r\n function setVkTarget() {\r\n if (!isChange) {\r\n isChange = true;\r\n VK.Retargeting.Event('initiate_checkout');\r\n VK.Goal('initiate_checkout');\r\n }\r\n }\r\n\r\n //Select2\r\n $(document).ready(function () {\r\n $('#Direction')\r\n .select2({\r\n placeholder: 'Направление',\r\n })\r\n .change(() => {\r\n setVkTarget();\r\n });\r\n\r\n $('#Program')\r\n .select2({\r\n placeholder: 'Курс',\r\n })\r\n .change(() => {\r\n setVkTarget();\r\n });\r\n\r\n setTimeout(() => {\r\n VK.Retargeting.Event('PageView30sec');\r\n }, 30000);\r\n });\r\n\r\n /**\r\n * Получение cookie\r\n */\r\n function getCookie(cname) {\r\n let name = cname + '=';\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n // Добавление disabled кнопки отправки формы\r\n function setFormCheckbox(cbx, btn) {\r\n if (!cbx) {\r\n return;\r\n }\r\n\r\n cbx.addEventListener('change', function (e) {\r\n if (e.target.checked) {\r\n btn.removeAttribute('disabled');\r\n } else {\r\n btn.setAttribute('disabled', 'disabled');\r\n }\r\n });\r\n }\r\n\r\n var validators = {\r\n requried: function (value, error) {\r\n if (!value || value.length === 0) {\r\n error.message = 'Это поле необходимо заполнить';\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n birthday: function (value, error) {\r\n var parts = value.split('.');\r\n if (\r\n parts.length != 3 ||\r\n parts[0].length != 2 ||\r\n parts[1].length != 2 ||\r\n parts[2].length != 4\r\n ) {\r\n error.message = 'Некорректная дата рождения';\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n email: function (value, error) {\r\n if (/.+@.+\\..+/.test(value)) {\r\n return true;\r\n } else {\r\n error.message = 'Некорректный email';\r\n return false;\r\n }\r\n },\r\n };\r\n\r\n // Показ ошибок при заполнении формы\r\n function showError(error, field) {\r\n if (error.message) {\r\n var errorContainer = document.createElement('div');\r\n errorContainer.textContent = error.message;\r\n errorContainer.classList.add('form__error-container');\r\n field.appendChild(errorContainer);\r\n }\r\n }\r\n\r\n // Валидация формы\r\n function validate(form) {\r\n var result = true;\r\n Array.from(form.querySelectorAll('.form__field')).forEach(function (\r\n formField\r\n ) {\r\n var error = {};\r\n var control = formField.querySelector('select, input, textarea');\r\n if (formField.querySelector('.form__required')) {\r\n if (!validators.requried(control.value, error)) {\r\n showError(error, formField);\r\n control.classList.add('form__field--invalid');\r\n result = false;\r\n return;\r\n }\r\n }\r\n if (control.id === 'email') {\r\n if (!validators.email(control.value, error)) {\r\n showError(error, formField);\r\n control.classList.add('form__field--invalid');\r\n result = false;\r\n }\r\n }\r\n if (control.id === 'birthday') {\r\n if (!validators.birthday(control.value, error)) {\r\n showError(error, formField);\r\n control.classList.add('form__field--invalid');\r\n result = false;\r\n }\r\n }\r\n });\r\n\r\n let invalidField = document.querySelector('.form__field--invalid');\r\n if (invalidField) {\r\n invalidField.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n // Удаление ошибок с формы\r\n function deleteErrors(form) {\r\n form.querySelectorAll('.form__error-container').forEach(function (el) {\r\n el.remove();\r\n });\r\n form.querySelectorAll('.form__field--invalid').forEach(function (el) {\r\n el.classList.remove('form__field--invalid');\r\n });\r\n }\r\n\r\n // Установка формы\r\n function setForm(selector) {\r\n var form = document.querySelector(selector);\r\n\r\n if (!form) {\r\n return;\r\n }\r\n\r\n form.addEventListener('submit', function (e) {\r\n sendForm(form, e);\r\n });\r\n\r\n onFormFilling(form, () => {\r\n // ВК\r\n VK.Retargeting.Event('initiate_checkout');\r\n VK.Goal('initiate_checkout');\r\n\r\n // Top.Mail.Ru\r\n var _tmr = window._tmr || (window._tmr = []);\r\n _tmr.push({ id: '3269480', type: 'reachGoal', goal: 'initiatecheckout' });\r\n });\r\n }\r\n\r\n // Отправка формы\r\n let firstFormData = {};\r\n\r\n function sendForm(form, e) {\r\n var sendBtn = form.querySelector(\r\n 'button[type=\"submit\"], input[type=\"submit\"]'\r\n );\r\n e.preventDefault();\r\n deleteErrors(form);\r\n var data = {};\r\n\r\n if (!validate(form)) {\r\n return;\r\n }\r\n\r\n sendBtn.disabled = true;\r\n Array.from(new FormData(form)).forEach(function (formElement) {\r\n var key = formElement[0];\r\n var value = formElement[1];\r\n\r\n if (key == 'BirthDate') {\r\n data[key] = value.split('.').reverse().join('-');\r\n } else {\r\n data[key] = value;\r\n }\r\n });\r\n\r\n var url = document.location.href;\r\n\r\n data['Landing'] = url.split('?')[0] || url;\r\n\r\n var paramsStartIndex = url.indexOf('?');\r\n if (paramsStartIndex > -1) {\r\n url\r\n .slice(paramsStartIndex + 1, url.length)\r\n .split('&')\r\n .map(function (utmString) {\r\n return utmString.split('=');\r\n })\r\n .forEach(function (utmMark) {\r\n var key = utmMark[0];\r\n key = key[0].toUpperCase() + key.slice(1, key.length);\r\n var value = utmMark[1];\r\n value =\r\n value.indexOf('#') > -1\r\n ? value.slice(0, value.indexOf('#'))\r\n : value;\r\n\r\n data[key] = value;\r\n });\r\n }\r\n\r\n let roistatCookie = getCookie('roistat_visit');\r\n\r\n if (!!roistatCookie) {\r\n data['RoistatCookie'] = roistatCookie;\r\n }\r\n\r\n if (form.id == 'form-first') {\r\n firstFormData = { ...data };\r\n document.querySelector('.form__steps').classList.add('first');\r\n document\r\n .querySelector('.form__right')\r\n .classList.remove('form__right--decor');\r\n document.getElementById('form-first').style.display = 'none';\r\n document.getElementById('form-second').style.display = 'block';\r\n\r\n document\r\n .querySelector('#form-second .form__btn--alt')\r\n .addEventListener('click', () => {\r\n document.getElementById('form-first').style.display = 'block';\r\n document.getElementById('form-second').style.display = 'none';\r\n document.querySelector('.form__steps').classList.remove('first');\r\n document\r\n .querySelector('.form__right')\r\n .classList.add('form__right--decor');\r\n });\r\n sendBtn.disabled = false;\r\n return;\r\n }\r\n\r\n if (form.id == 'form-second') {\r\n data['FirstName'] = firstFormData.FirstName;\r\n data['Email'] = firstFormData.Email;\r\n data['Phone'] = firstFormData.Phone;\r\n }\r\n\r\n if (form.id == 'form-app') {\r\n if (!data.Program) {\r\n if (programName) {\r\n data['Program'] = programName;\r\n } else {\r\n const title = document.querySelector(\r\n '.home .home-block__title'\r\n ).textContent,\r\n program = title.slice(title.indexOf('«') + 1, title.indexOf('»'));\r\n\r\n data['Program'] = program;\r\n }\r\n }\r\n }\r\n\r\n toastr.options.progressBar = true;\r\n $.ajax({\r\n url: citizenRequest,\r\n method: 'POST',\r\n contentType: 'application/json;charset=utf-8',\r\n data: JSON.stringify(data),\r\n success: function () {\r\n sendBtn.disabled = false;\r\n\r\n if (form.id == 'form-second') {\r\n if (window.yaCounter90894624) {\r\n ym(90894624, 'reachGoal', 'submit_form');\r\n }\r\n formSubmitCRM(data);\r\n toastr.success('Ваша анкета успешно отправлена', 'Поздравляем!');\r\n onSuccess(data);\r\n document.querySelector('.form__steps').classList.remove('first');\r\n document.querySelector('.form__steps').classList.add('second');\r\n }\r\n\r\n if (form.id == 'form-app') {\r\n if (window.yaCounter90894624) {\r\n ym(90894624, 'reachGoal', 'submit_form');\r\n }\r\n formSubmitCRM(data);\r\n toastr.success('Ваша анкета успешно отправлена', 'Поздравляем!');\r\n onSuccess(data);\r\n }\r\n // Статистика для ВК\r\n VK.Goal('lead');\r\n VK.Retargeting.Event('lead');\r\n\r\n // bge\r\n bge('event', 'form', { configId: '903804802199326720' });\r\n\r\n // Facebook\r\n fbq('track', 'Lead');\r\n\r\n // Top.Mail.Ru\r\n var _tmr = window._tmr || (window._tmr = []);\r\n _tmr.push({ id: '3269480', type: 'reachGoal', goal: 'lead' });\r\n\r\n form.reset();\r\n },\r\n error: function () {\r\n sendBtn.disabled = false;\r\n toastr.error(\r\n 'Пожалуйста, проверьте ваше соединение с сетью или повторите попытку позже',\r\n 'Произошла ошибка!'\r\n );\r\n },\r\n });\r\n }\r\n\r\n // Отправка формы на АМО CRM\r\n function formSubmitCRM(data) {\r\n $.ajax({\r\n url: crmRequest,\r\n method: 'POST',\r\n contentType: 'application/json;charset=utf-8',\r\n data: JSON.stringify(data),\r\n success: function () {},\r\n error: function () {},\r\n });\r\n }\r\n\r\n // Установка масок\r\n function setMasks() {\r\n $('#phone').mask('+7 (999) 999-99-99', { autoclear: false });\r\n }\r\n\r\n // Начало заполнения формы\r\n function onFormFilling(form, callback) {\r\n const controls = form.querySelectorAll('input, select, textarea');\r\n let changed = false;\r\n controls.forEach((control) => {\r\n $(control).one('blur', (e) => {\r\n if (!changed) {\r\n callback(e);\r\n changed = true;\r\n }\r\n });\r\n });\r\n }\r\n\r\n $(function () {\r\n setMasks();\r\n setForm('#form-app');\r\n setForm('#form-first');\r\n setForm('#form-second');\r\n setFormCheckbox(\r\n document.querySelector('#personal-data'),\r\n document.querySelector('.form__btn')\r\n );\r\n });\r\n\r\n // Модальное окно успешно отправленной формы\r\n function successModal() {\r\n let modal = document.querySelector('#quiz-success');\r\n if (!modal) {\r\n modal = document.createElement('div');\r\n ['modal', 'quiz'].forEach((additionalClass) => {\r\n modal.classList.add(additionalClass);\r\n });\r\n modal.id = 'quiz-success';\r\n modal.innerHTML = '
';\r\n\r\n document.body.append(modal);\r\n }\r\n\r\n const a = document.createElement('a');\r\n a.href = '#quiz-success';\r\n a.rel = 'modal:open';\r\n a.style.display = 'none';\r\n document.body.append(a);\r\n\r\n window.openRedirectSuccessModal = () => {\r\n // const downloadInstruction = document.createElement('a');\r\n // downloadInstruction.href = manual;\r\n // downloadInstruction.setAttribute('download', '');\r\n // downloadInstruction.style.display = 'none';\r\n // document.body.append(downloadInstruction);\r\n\r\n // downloadInstruction.click();\r\n\r\n modal.classList.add('rvr-modal', 'rvr-modal__style');\r\n setStyles(modal, {\r\n position: 'relative',\r\n maxWidth: '800px',\r\n });\r\n modal.querySelector('.quiz__content').innerHTML = /*html*/ `\r\n

Набор на обучение в 2025 году.

\r\n

Вы зачислены в список приоритетных кандидатов на обучение!

\r\n

Чтобы не пропустить старт обучения и получить дальнейшие инструкции о следующих шагах, подпишитесь на нашего Telegram-бота и вступите в чат программы.

\r\n

Подписаться

\r\n `;\r\n a.click();\r\n metrics();\r\n };\r\n\r\n window.openNoRedirectSuccessModal = () => {\r\n modal.classList.add('rvr-modal');\r\n setStyles(modal, {\r\n position: 'relative',\r\n paddingBottom: '2rem',\r\n });\r\n const formModal = document.createElement('div');\r\n formModal.classList.add('beat');\r\n formModal.innerHTML = `\r\n
\r\n
\r\n
\r\n

Поздравляем! Ваша заявка принята!

\r\n

Ваш следующий шаг — в течение 3х дней получить и загрузить справку об обучении в 8-11 классе, колледже или техникуме. После этого вы сможете перейти к следующим этапам — подтверждению заявки на портале «Госуслуги» и тестированию.

\r\n

Перейдите по кнопке ниже в наш Telegram-бот, чтобы узнать требования к справке и загрузить скан.

\r\n

ВАЖНО:

\r\n
    \r\n
  • • В ближайшее время с вами свяжется наш менеджер. Пожалуйста, ответьте на звонок с номера +7-495-152-39-55
  • \r\n
  • • На вашу почту будут приходить письма с инструкциями — обязательно проверяйте почту и папку «Спам»
  • \r\n
  • • Подпишитесь на соцсети проекта, чтобы быть в курсе новостей и стать участником розыгрыша Playstation и MacBook: ВКонтакте, Telegram, YouTube, Одноклассники
  • \r\n
\r\n Перейти в Telegram-бот\r\n
\r\n \r\n
\r\n
\r\n `;\r\n\r\n document.body.append(formModal);\r\n document.body.classList.add('scroll-lock');\r\n const beatClose = formModal.querySelector('.beat__close');\r\n metrics();\r\n\r\n beatClose.addEventListener('click', () => {\r\n document.body.classList.remove('scroll-lock');\r\n document.body.removeChild(formModal);\r\n });\r\n };\r\n }\r\n\r\n // Функция для определения вывода модальных окон после успешной отправки формы\r\n function onSuccess(data = null) {\r\n // let redirectLink;\r\n\r\n // for (let item in redirectList) {\r\n // if (data.Program == item) {\r\n // redirectLink = redirectList[item];\r\n // }\r\n // }\r\n\r\n // if (redirectLink != undefined) {\r\n openRedirectSuccessModal();\r\n // setTimeout(() => {\r\n // const newTab = window.open(redirectLink, '_blank');\r\n // if (newTab) {\r\n // newTab.focus();\r\n // } else {\r\n // window.location.assign(redirectLink);\r\n // }\r\n // }, 15000);\r\n // } else {\r\n // openNoRedirectSuccessModal();\r\n // }\r\n }\r\n\r\n // Добавление стилей\r\n function setStyles(el, stylesObject) {\r\n if (!el) {\r\n return;\r\n }\r\n Object.keys(stylesObject).forEach((key) => {\r\n el.style[key] = stylesObject[key];\r\n });\r\n }\r\n\r\n successModal();\r\n\r\n // Таймер редиректа\r\n function setTimerRedirect(el) {\r\n if (!el) {\r\n console.error('Не передан элемент');\r\n return;\r\n }\r\n const interval = setInterval(() => {\r\n if (el.textContent === '0' || Number(el.textContent) < 1) {\r\n clearInterval(interval);\r\n return;\r\n }\r\n el.textContent = Number(el.textContent) - 1;\r\n }, 1000);\r\n }\r\n\r\n // Вывод поля Курс\r\n $('.form__select_direction').change(function () {\r\n let value = $(this).val(),\r\n field_program = document.getElementById('Program'),\r\n direction = document.getElementById('Direction').value;\r\n field_program\r\n .querySelectorAll('option')\r\n .forEach((option) => option.remove());\r\n renderPrograms(direction, value, field_program);\r\n });\r\n\r\n const renderPrograms = (direction) => {\r\n let Program = $('#Program');\r\n document.querySelector('#Program').removeAttribute('disabled');\r\n DIRECTIONS[direction].forEach(function (el) {\r\n let option = new Option(el, el, false, false);\r\n Program.append(option);\r\n });\r\n\r\n DIRECTIONS[direction].length > 1 && Program.val(null);\r\n };\r\n\r\n /* Инициализация datepicker */\r\n const datepicker = document.getElementById('birthday');\r\n if (datepicker) {\r\n IMask(datepicker, {\r\n mask: Date,\r\n min: new Date(1900, 0, 1),\r\n max: new Date(2100, 0, 1),\r\n });\r\n $('#birthday').datepicker();\r\n }\r\n};\r\n\r\nexport default form;\r\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 &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\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}\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 { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\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 }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\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\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\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\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\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\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\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\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\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\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\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\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\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\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\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'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\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 } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\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\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\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\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\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\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\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\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\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};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\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\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\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 = $wrapperEl.children(`.${swiper.params.slideClass}`);\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\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\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\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\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\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\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\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\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\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.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\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\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\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.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\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}","export default function 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\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(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 } // Find new height from highest slide in view\n\n\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 } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\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; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.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\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\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\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\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\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('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\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\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\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\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\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\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\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 } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = 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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\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\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\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\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\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\n if (params.rewind && swiper.isBeginning) {\n return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\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\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\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\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\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}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\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 = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\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 return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // 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\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\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\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function 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 let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && 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\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\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\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\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\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\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\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\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\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\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\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\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\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 } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 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 swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function 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\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\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\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\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\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\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\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\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\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function 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}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\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 }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","export default {\n init: true,\n direction: 'horizontal',\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 // 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: 0,\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 // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: 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 // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\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\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\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\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\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 }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\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\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\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\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\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: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\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'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\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\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\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(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\n slidesPerViewDynamic(view = 'current', exact = false) {\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\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\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\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\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\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\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\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(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\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\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'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\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]);\nexport default Swiper;","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\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; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\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\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\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}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\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\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\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\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\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\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\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\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\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}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\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 (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\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\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import Swiper, {Navigation, Pagination, Lazy} from \"swiper\";\r\nSwiper.use([Pagination, Navigation, Lazy]);\r\n\r\nconst initPartnersSlider = () => {\r\n const slider = document.querySelector(\".partners__slider\");\r\n\r\n slider && new Swiper(slider, {\r\n lazy: true,\r\n watchOverflow: true,\r\n breakpoints: {\r\n 768: {\r\n slidesPerView: 5,\r\n spaceBetween: 16,\r\n },\r\n 0: {\r\n slidesPerView: 2,\r\n spaceBetween: 15,\r\n },\r\n },\r\n navigation: {\r\n nextEl: '.partners .slider-navigation__button--next',\r\n prevEl: '.partners .slider-navigation__button--prev',\r\n },\r\n pagination: {\r\n el: '.partners .swiper-pagination',\r\n clickable: true,\r\n },\r\n });\r\n};\r\n\r\nexport default initPartnersSlider;\r\n","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\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 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\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\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\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\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](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 const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\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 paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\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 $el.html(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 $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\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 = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](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 {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\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 const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\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\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","const getPageName = () => {\r\n const segments = new URL(window.location.href).pathname.split(\"/\");\r\n const last = segments.pop() || segments.pop();\r\n return last.toLocaleLowerCase();\r\n};\r\n\r\nexport default getPageName;\r\n","import getPageName from './getPageName';\r\n\r\nconst teachers = () => {\r\n const teachers__wrap = document.querySelector('.teachers__swiper-wrapper'),\r\n teachers__modals = document.querySelector('.teachers__modals'),\r\n isNeedFullSlider = Boolean(\r\n document.querySelector('.teachers__blocks--full')\r\n );\r\n\r\n function parseTeachers() {\r\n $.ajax({\r\n type: 'GET',\r\n url: '/files/teachers.json',\r\n }).then(function (testimonials) {\r\n testimonials.forEach(function (el) {\r\n if (el.url == getPageName()) {\r\n createTeachersCard(el.data);\r\n }\r\n });\r\n });\r\n }\r\n\r\n function createTeachersCard(data) {\r\n data.forEach((item) => {\r\n teachers__wrap.innerHTML += `\r\n \r\n
\r\n \"${\r\n \r\n
\r\n

${item.name}

\r\n

${item.description}

\r\n
Подробнее
\r\n
`;\r\n\r\n teachers__modals.innerHTML += `\r\n
\r\n
\r\n
\r\n \"${item.name}\"\r\n
\r\n
\r\n

${item.name}

\r\n

\r\n ${item.programModal}\r\n

\r\n

Образование: ${\r\n item.education\r\n }

\r\n ${generContent(item.p)}\r\n ${\r\n item.job\r\n ? `

Место работы: ${item.job}

`\r\n : ``\r\n }\r\n ${\r\n item.experience\r\n ? `

Опыт работы: ${item.experience}

`\r\n : ``\r\n }\r\n ${\r\n item.certificates\r\n ? `

Сертификаты и курсы:

\r\n
    ${generContent(\r\n item.certificates\r\n )}
`\r\n : ''\r\n }\r\n ${\r\n item.training\r\n ? `

Повышение квалификации:

\r\n
    ${generContent(\r\n item.training\r\n )}
`\r\n : ''\r\n }\r\n ${\r\n item.lectures\r\n ? `

Лекции и практики:

\r\n
    ${generContent(\r\n item.lectures\r\n )}
`\r\n : ''\r\n }\r\n ${\r\n item.awards\r\n ? `

Награды и достижения:

\r\n
    ${generContent(\r\n item.awards\r\n )}
`\r\n : ''\r\n }\r\n ${\r\n item.skills\r\n ? `

Компьютерные навыки: ${item.skills}

`\r\n : ``\r\n }\r\n ${\r\n item.projects2D\r\n ? `

Выполненные 2D проекты:

\r\n
    ${generContent(\r\n item.projects2D\r\n )}
`\r\n : ``\r\n }\r\n ${\r\n item.projects3D\r\n ? `

Выполненные 2D проекты:

\r\n
    ${generContent(\r\n item.projects3D\r\n )}
`\r\n : ``\r\n }\r\n ${\r\n item.additional\r\n ? `

Дополнительная информация:

\r\n
    ${generContent(\r\n item.additional\r\n )}
`\r\n : ''\r\n } \r\n ${\r\n item.author\r\n ? `

Автор курсов:

\r\n
    ${generContent(\r\n item.author\r\n )}
`\r\n : ''\r\n }\r\n ${\r\n item.li\r\n ? `
    ${generContent(\r\n item.li\r\n )}
`\r\n : ''\r\n }\r\n ${\r\n item.url\r\n ? `Перейти`\r\n : ''\r\n }\r\n
\r\n
\r\n \r\n
\r\n `;\r\n });\r\n\r\n function generContent(arr) {\r\n let result = '';\r\n\r\n if (arr) {\r\n for (let el of arr.slice(1)) {\r\n if (arr.includes('li')) {\r\n result += `
  • ${el}
  • `;\r\n } else {\r\n result += `

    ${el}

    `;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n setTimeout(() => {\r\n setSwiper('.teachers__blocks--full');\r\n }, 50);\r\n }\r\n\r\n isNeedFullSlider && parseTeachers();\r\n\r\n //Swiper\r\n function setSwiper(selector) {\r\n new Swiper(selector, {\r\n autoHeight: false,\r\n loop: true,\r\n\r\n breakpoints: {\r\n 1441: {\r\n slidesPerView: 4,\r\n spaceBetween: 63,\r\n },\r\n 660: {\r\n slidesPerView: 2.5,\r\n spaceBetween: 40,\r\n },\r\n 320: {\r\n slidesPerView: 1.5,\r\n spaceBetween: 40,\r\n },\r\n },\r\n navigation: {\r\n nextEl: '.teachersNavigation__next',\r\n prevEl: '.teachersNavigation__prev',\r\n disabledClass: 'last',\r\n },\r\n });\r\n }\r\n};\r\n\r\nexport default teachers;\r\n","'use strict';\r\n\r\n/* Стили */\r\nimport '../css/site.scss';\r\n\r\n/* Скрипты */\r\nimport form from './modules/form';\r\nimport initPartnersSlider from './modules/init-partners-slider';\r\nimport metrics from './modules/metrics';\r\nimport programs from './modules/programs';\r\nimport site from './modules/site';\r\nimport teachers from './modules/teachers'; \r\nimport UtmTags from './modules/UtmTags';\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n UtmTags();\r\n metrics();\r\n initPartnersSlider();\r\n site();\r\n form();\r\n programs();\r\n teachers();\r\n});\r\n","const UtmTags = () => {\r\n // Функция добавления UTM меток в url сайта\r\n const updateQueryStringParam = function (value) {\r\n let baseUrl = [\r\n location.protocol,\r\n \"//\",\r\n location.host,\r\n location.pathname,\r\n ].join(\"\"),\r\n params = \"?\" + value;\r\n\r\n params = params == \"?\" ? \"\" : params;\r\n window.history.replaceState({}, \"\", baseUrl + params);\r\n };\r\n \r\n const url = document.location.href,\r\n paramsStartIndex = url.indexOf(\"?\"),\r\n hostname = window.location.hostname;\r\n\r\n if (paramsStartIndex > -1) {\r\n // Добавление UTM меток в session storage\r\n sessionStorage.setItem(\r\n \"utm_tags\",\r\n url.slice(paramsStartIndex + 1, url.length)\r\n );\r\n sessionStorage.setItem(\r\n \"hostname\",\r\n hostname\r\n );\r\n } else {\r\n // При переходе по страницам если сохранены метки в session\r\n // storage, то выполняем функцию по их добавлению в url \r\n if (sessionStorage.getItem(\"utm_tags\") && hostname == sessionStorage.getItem(\"hostname\")) {\r\n updateQueryStringParam(sessionStorage.getItem(\"utm_tags\"));\r\n }\r\n }\r\n};\r\n\r\nexport default UtmTags;\r\n","import getPageName from \"./getPageName\";\r\nimport metrics from \"./metrics\";\r\n\r\nconst site = () => {\r\n //Переменные по смене дат\r\n const settingDate = '1';\r\n const settingMonth = 'марта';\r\n\r\n // Для использования API ВК\r\n VK.Retargeting.Init('VK-RTRG-1577285-8IJ2I');\r\n VK.Retargeting.Init('VK-RTRG-1782483-aqGRV');\r\n\r\n if (document.querySelector('.banner')) {\r\n banner();\r\n }\r\n setSwiper('.testimonials-swiper', 'paginationNum');\r\n setSwiper('.diplom-swiper', 'diplom');\r\n setSwiper('.confirmSkills__swiper', 'confirm');\r\n setSwiper('.portfolio-swiper', 'portfolio');\r\n setSwiper('.actually__slider', 'actually');\r\n setSwiper('.careerCenter__slider', 'career');\r\n setSwiper('.teachers__blocks--mob', 'teachers--mob');\r\n changeDates();\r\n switchTabs();\r\n seeAllFaq();\r\n programTabs(\r\n '.programCollapse__blocks',\r\n '.faqBlock__top',\r\n '.faqBlock__collapse',\r\n '.faqBlock__icon'\r\n );\r\n\r\n if (window.innerWidth <= 660) {\r\n setSwiper('.prospects-swiper', 'prospects');\r\n setSwiper('.howIsTraining-swiper', 'howIsTraining');\r\n setSwiper('.skills__blocks', 'skills');\r\n setSwiper('.faq__slider', 'faqCards');\r\n timerСountdown(2, 2025, nameConversMonth(), settingDate - 1, 23, 59, 0);\r\n } else {\r\n timerСountdown(1, 2025, nameConversMonth(), settingDate - 1, 23, 59, 0);\r\n }\r\n\r\n const select = new CustomSelect();\r\n select.init();\r\n\r\n seeAllProgramm();\r\n document.querySelector('.portfolio-swiper') && castomizeGallery();\r\n\r\n /* Сортировка программ на главной странице блока каталога */\r\n sortProgramsCatalog();\r\n\r\n /* Модальное окно, появляющееся через минуту */\r\n //setTimeout(() => initAppearingModal(), 60000);\r\n\r\n //Swiper\r\n function setSwiper(selector, type) {\r\n if (type === 'career') {\r\n const BREAKPOINT = 660;\r\n let careerSlider = null;\r\n\r\n const careerSliderInit = () => {\r\n if (!careerSlider) {\r\n careerSlider = new Swiper(selector, {\r\n slidesPerView: 1,\r\n loop: true,\r\n pagination: {\r\n el: '.careerCenter__slider .swiper-pagination',\r\n clickable: true,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const careerSliderDestroy = () => {\r\n if (careerSlider) {\r\n careerSlider.pagination.destroy();\r\n careerSlider.destroy();\r\n careerSlider = null;\r\n }\r\n };\r\n\r\n window.innerWidth <= BREAKPOINT\r\n ? careerSliderInit()\r\n : careerSliderDestroy();\r\n\r\n window.addEventListener('resize', () => {\r\n window.innerWidth <= BREAKPOINT\r\n ? careerSliderInit()\r\n : careerSliderDestroy();\r\n });\r\n }\r\n\r\n if (type === 'paginationNum') {\r\n new Swiper(selector, {\r\n autoHeight: false,\r\n loop: true,\r\n\r\n breakpoints: {\r\n 1441: {\r\n slidesPerView: 4,\r\n spaceBetween: 20,\r\n },\r\n 1280: {\r\n slidesPerView: 3,\r\n spaceBetween: 20,\r\n },\r\n 997: {\r\n slidesPerView: 3,\r\n spaceBetween: 20,\r\n },\r\n 801: {\r\n slidesPerView: 2,\r\n spaceBetween: 20,\r\n },\r\n 768: {\r\n slidesPerView: 2,\r\n spaceBetween: 20,\r\n },\r\n 320: {\r\n slidesOffsetBefore: -5,\r\n slidesPerView: 1,\r\n spaceBetween: 20,\r\n width: 280,\r\n },\r\n },\r\n navigation: {\r\n nextEl: '.testimonials__next',\r\n prevEl: '.testimonials__prev',\r\n disabledClass: 'last',\r\n },\r\n pagination: {\r\n el: '.testimonials .swiper-pagination',\r\n type: 'fraction',\r\n },\r\n });\r\n }\r\n\r\n if (type === 'itkids') {\r\n new Swiper(selector, {\r\n autoHeight: false,\r\n loop: true,\r\n\r\n breakpoints: {\r\n 1441: {\r\n slidesPerView: 2,\r\n spaceBetween: 20,\r\n },\r\n 1280: {\r\n slidesPerView: 3,\r\n spaceBetween: 20,\r\n },\r\n 1131: {\r\n slidesPerView: 3,\r\n spaceBetween: 20,\r\n },\r\n 801: {\r\n slidesPerView: 2,\r\n spaceBetween: 20,\r\n },\r\n 768: {\r\n slidesPerView: 2,\r\n spaceBetween: 20,\r\n },\r\n 350: {\r\n slidesPerView: 1,\r\n spaceBetween: 18,\r\n width: 280,\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 18,\r\n width: 274,\r\n },\r\n },\r\n navigation: {\r\n nextEl: '.itKids__next',\r\n prevEl: '.itKids__prev',\r\n },\r\n pagination: {\r\n el: '.itKids__number',\r\n type: 'fraction',\r\n },\r\n });\r\n }\r\n\r\n if (type === 'paginationDotts') {\r\n new Swiper(selector, {\r\n autoHeight: false,\r\n loop: true,\r\n\r\n breakpoints: {\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 20,\r\n width: 280,\r\n },\r\n },\r\n pagination: {\r\n el: '.learn-pagination',\r\n clickable: true,\r\n currentClass: 'active',\r\n },\r\n });\r\n }\r\n\r\n if (type === 'prospects') {\r\n new Swiper(selector, {\r\n autoHeight: false,\r\n loop: true,\r\n\r\n breakpoints: {\r\n 630: {\r\n spaceBetween: 38,\r\n width: 360,\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 24,\r\n width: 280,\r\n },\r\n },\r\n pagination: {\r\n el: '.prospects-pagination',\r\n clickable: true,\r\n currentClass: 'active',\r\n },\r\n });\r\n }\r\n\r\n if (type === 'howIsTraining') {\r\n new Swiper(selector, {\r\n autoHeight: false,\r\n loop: true,\r\n\r\n breakpoints: {\r\n 630: {\r\n spaceBetween: 38,\r\n width: 360,\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 24,\r\n width: 280,\r\n },\r\n },\r\n pagination: {\r\n el: '.howIsTraining-pagination',\r\n clickable: true,\r\n currentClass: 'active',\r\n },\r\n });\r\n }\r\n\r\n if (type === 'diplom') {\r\n new Swiper(selector, {\r\n loop: true,\r\n navigation: {\r\n nextEl: '.diplom-swiper-next',\r\n prevEl: '.diplom-swiper-prev',\r\n },\r\n pagination: {\r\n el: '.diplom-swiper-pagination',\r\n clickable: true,\r\n currentClass: 'active',\r\n },\r\n });\r\n }\r\n\r\n if (type === 'skills') {\r\n new Swiper(selector, {\r\n autoHeight: false,\r\n\r\n breakpoints: {\r\n 630: {\r\n spaceBetween: 38,\r\n width: 360,\r\n },\r\n 370: {\r\n slidesPerView: 1,\r\n spaceBetween: 18,\r\n width: 326,\r\n },\r\n 350: {\r\n slidesPerView: 1,\r\n spaceBetween: 18,\r\n width: 310,\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 18,\r\n width: 270,\r\n slidesOffsetBefore: 0,\r\n },\r\n },\r\n pagination: {\r\n el: '.skills__pagination',\r\n clickable: true,\r\n bulletActiveClass: 'active',\r\n },\r\n });\r\n }\r\n if (type === 'teachers--full') {\r\n new Swiper(selector, {\r\n autoHeight: false,\r\n loop: true,\r\n\r\n breakpoints: {\r\n 1441: {\r\n slidesPerView: 4,\r\n spaceBetween: 63,\r\n },\r\n 660: {\r\n slidesPerView: 2.5,\r\n spaceBetween: 40,\r\n },\r\n 320: {\r\n slidesPerView: 1.5,\r\n spaceBetween: 40,\r\n },\r\n },\r\n navigation: {\r\n nextEl: '.teachersNavigation__next',\r\n prevEl: '.teachersNavigation__prev',\r\n disabledClass: 'last',\r\n },\r\n });\r\n }\r\n\r\n if (type === 'teachers--mob') {\r\n if (!document.querySelector('.teachers--mob')) return;\r\n const BREAKPOINT = 767;\r\n let teachersSlider = null;\r\n\r\n const initTeachersSlider = () => {\r\n if (!teachersSlider) {\r\n teachersSlider = new Swiper(selector, {\r\n autoHeight: false,\r\n loop: true,\r\n\r\n breakpoints: {\r\n 0: {\r\n spaceBetween: 50,\r\n slidesPerView: 1.5,\r\n },\r\n },\r\n navigation: {\r\n nextEl: '.teachers--mob .teachersNavigation__next',\r\n prevEl: '.teachers--mob .teachersNavigation__prev',\r\n disabledClass: 'last',\r\n },\r\n });\r\n }\r\n };\r\n\r\n const destroyTeachersSlider = () => {\r\n if (teachersSlider) {\r\n teachersSlider.destroy();\r\n teachersSlider = null;\r\n }\r\n };\r\n\r\n window.innerWidth <= BREAKPOINT\r\n ? initTeachersSlider()\r\n : destroyTeachersSlider();\r\n\r\n window.addEventListener('resize', () => {\r\n window.innerWidth <= BREAKPOINT\r\n ? initTeachersSlider()\r\n : destroyTeachersSlider();\r\n });\r\n }\r\n\r\n if (type === 'confirm') {\r\n new Swiper(selector, {\r\n navigation: {\r\n nextEl: '.confirmNavigation__next',\r\n prevEl: '.confirmNavigation__prev',\r\n disabledClass: 'last',\r\n },\r\n pagination: {\r\n el: '.confirmSkills__pagination',\r\n clickable: true,\r\n bulletActiveClass: 'active',\r\n },\r\n });\r\n }\r\n\r\n if (type === 'faqCards') {\r\n new Swiper(selector, {\r\n spaceBetween: 10,\r\n width: 280,\r\n breakpoints: {\r\n 375: {\r\n width: 280,\r\n },\r\n 320: {\r\n width: 218,\r\n },\r\n },\r\n });\r\n }\r\n\r\n if (type === 'portfolio') {\r\n new Swiper(selector, {\r\n loop: true,\r\n centeredSlides: true,\r\n slidesPerView: 1.8,\r\n spaceBetween: 80,\r\n breakpoints: {\r\n 1131: {\r\n slidesPerView: 1.8,\r\n },\r\n 997: {\r\n slidesPerView: 2.2,\r\n },\r\n 661: {\r\n centeredSlides: true,\r\n },\r\n 361: {\r\n slidesPerView: 1.2,\r\n spaceBetween: 30,\r\n centeredSlides: false,\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 20,\r\n centeredSlides: false,\r\n },\r\n },\r\n pagination: {\r\n el: '.portfolio-pagination',\r\n type: 'fraction',\r\n },\r\n speed: 1000,\r\n navigation: {\r\n nextEl: '.portfolio-next',\r\n prevEl: '.portfolio-prev',\r\n },\r\n });\r\n }\r\n\r\n if (type === 'actually') {\r\n new Swiper(selector, {\r\n loop: true,\r\n spaceBetween: 20,\r\n breakpoints: {\r\n 661: {\r\n slidesPerView: 2,\r\n slidesPerGroup: 2,\r\n },\r\n 0: {\r\n slidesPerView: 1,\r\n },\r\n },\r\n pagination: {\r\n el: '.actually .swiper-pagination',\r\n type: 'fraction',\r\n },\r\n navigation: {\r\n nextEl: '.actually .slider-navigation__button--next',\r\n prevEl: '.actually .slider-navigation__button--prev',\r\n },\r\n });\r\n }\r\n }\r\n\r\n //Кнопки смотреть все\r\n function seeAllProgramm() {\r\n let btn_viewAll = document.querySelector('.program__button');\r\n let blocks = document.querySelectorAll('.program__block');\r\n\r\n blocks.forEach((item, index) => {\r\n blocks[index].style.display = 'none';\r\n blocks[0].removeAttribute('style');\r\n\r\n btn_viewAll.addEventListener('click', function () {\r\n if (blocks[index].hasAttribute('style')) {\r\n blocks[index].removeAttribute('style');\r\n btn_viewAll.textContent = 'Свернуть все';\r\n btn_viewAll.classList.add('active');\r\n } else {\r\n blocks[index].style.display = 'none';\r\n blocks[0].removeAttribute('style');\r\n blocks[0].scrollIntoView();\r\n btn_viewAll.textContent = 'Развернуть всю программу';\r\n btn_viewAll.classList.remove('active');\r\n }\r\n });\r\n });\r\n }\r\n\r\n function seeAllFaq() {\r\n let btn_viewAll = document.querySelector('.faqBlock__button'),\r\n topSection = document.querySelector('.faq__blocks'),\r\n hiddenBlocks = Array.from(\r\n document.querySelectorAll('.faq__block_hidden')\r\n );\r\n\r\n hiddenBlocks.forEach((item) => {\r\n btn_viewAll.addEventListener('click', function () {\r\n if (!item.classList.contains('show')) {\r\n item.classList.add('show');\r\n btn_viewAll.textContent = 'Свернуть все';\r\n btn_viewAll.classList.add('active');\r\n } else {\r\n item.classList.remove('show');\r\n topSection.scrollIntoView({\r\n behavior: 'smooth',\r\n });\r\n btn_viewAll.textContent = 'Развернуть все вопросы';\r\n btn_viewAll.classList.remove('active');\r\n }\r\n });\r\n });\r\n }\r\n\r\n //Переключение табов faq\r\n function switchTabs() {\r\n let cardsDesk = Array.from(document.querySelectorAll('.faq__card--desk')),\r\n cardsMob = Array.from(document.querySelectorAll('.faq__card--mob')),\r\n faqSection = Array.from(document.querySelectorAll('.faq__section')),\r\n targetBlock;\r\n\r\n targetBlock = faqSection.find((item) => {\r\n return item ? item.classList.contains('visible') : '';\r\n });\r\n\r\n if (document.querySelector('.faq')) {\r\n faqTabs(\r\n targetBlock,\r\n '.faqBlock__top',\r\n '.faqBlock__collapse',\r\n '.faqBlock__icon'\r\n );\r\n }\r\n\r\n cardsDesk.forEach((item) => {\r\n item.addEventListener('click', function (e) {\r\n cardsDesk.forEach((i) => {\r\n i.classList.remove('active-faq');\r\n });\r\n item.classList.toggle('active-faq');\r\n faqSection.forEach((it) => {\r\n it.classList.remove('visible');\r\n });\r\n targetBlock = faqSection[cardsDesk.indexOf(item)];\r\n targetBlock.classList.toggle('visible');\r\n\r\n faqTabs(\r\n targetBlock,\r\n '.faqBlock__top',\r\n '.faqBlock__collapse',\r\n '.faqBlock__icon'\r\n );\r\n });\r\n });\r\n\r\n cardsMob.forEach((item) => {\r\n item.addEventListener('click', function (e) {\r\n cardsMob.forEach((i) => {\r\n i.classList.remove('active-faq');\r\n });\r\n item.classList.toggle('active-faq');\r\n faqSection.forEach((it) => {\r\n it.classList.remove('visible');\r\n });\r\n targetBlock = faqSection[cardsMob.indexOf(item)];\r\n targetBlock.classList.toggle('visible');\r\n\r\n faqTabs(\r\n targetBlock,\r\n '.faqBlock__top',\r\n '.faqBlock__collapse',\r\n '.faqBlock__icon'\r\n );\r\n });\r\n });\r\n }\r\n\r\n //Timer\r\n function timerСountdown(index, cYear, cMonth, cDay, cHour, cMinute, cSecond) {\r\n const utcDateT = new Date(\r\n Date.UTC(cYear, cMonth, cDay, cHour - 3, cMinute, cSecond)\r\n );\r\n let countDownDate = new Date(utcDateT).getTime();\r\n\r\n function setTimer() {\r\n let now = new Date().getTime(),\r\n distance = countDownDate - now,\r\n days = Math.floor(distance / (1000 * 60 * 60 * 24)),\r\n hours = Math.floor(\r\n (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)\r\n ),\r\n minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)),\r\n seconds = Math.floor((distance % (1000 * 60)) / 1000);\r\n\r\n const getMinutesWord = (minutes) => {\r\n let result = ' минут';\r\n if (minutes > 10 && minutes < 20) {\r\n return result;\r\n }\r\n const lastDigit = Number(String(minutes).slice(-1));\r\n if (lastDigit === 0 || lastDigit >= 5) {\r\n return result;\r\n }\r\n if (lastDigit === 1) {\r\n return result + 'а';\r\n }\r\n return result + 'ы';\r\n };\r\n\r\n const getHoursWord = (hours) => {\r\n let result = ' часов ';\r\n if (hours > 10 && hours < 20) {\r\n return result;\r\n }\r\n const lastDigit = Number(String(hours).slice(-1));\r\n if (lastDigit === 0 || lastDigit >= 5) {\r\n return result;\r\n }\r\n if (lastDigit === 1) {\r\n return ' час ';\r\n }\r\n return ' часа ';\r\n };\r\n\r\n const getDaysWord = (days) => {\r\n let result = ' дней ';\r\n\r\n if (days > 10 && days < 20) {\r\n return result;\r\n }\r\n const lastDigit = Number(String(days).slice(-1));\r\n\r\n if (lastDigit === 0 || lastDigit >= 5) {\r\n return result;\r\n }\r\n\r\n if (lastDigit === 1) {\r\n return ' день ';\r\n }\r\n\r\n return ' дня ';\r\n };\r\n\r\n const getSecondsWord = (seconds) => {\r\n let result = ' секунд ';\r\n if (seconds > 10 && seconds < 20) {\r\n return result;\r\n }\r\n const lastDigit = Number(String(seconds).slice(-1));\r\n if (lastDigit === 0 || lastDigit >= 5) {\r\n return result;\r\n }\r\n if (lastDigit === 1) {\r\n return ' секунда ';\r\n }\r\n return ' секунды ';\r\n };\r\n\r\n const getBitNumber = (data, selector) => {\r\n if (data.toString().length < 2) {\r\n if (window.innerWidth <= 660 && selector == '.onCountDay-2') {\r\n if (document.querySelector(selector)) {\r\n document.querySelector(selector).innerHTML = data;\r\n }\r\n } else {\r\n if (document.querySelector(selector)) {\r\n document.querySelector(selector).innerHTML = '0' + data;\r\n }\r\n }\r\n } else {\r\n if (document.querySelector(selector)) {\r\n document.querySelector(selector).innerHTML = data;\r\n }\r\n }\r\n };\r\n\r\n getBitNumber(days, '.onCountDay-' + index);\r\n if (document.querySelector('.onCountDays-' + index)) {\r\n document.querySelector('.onCountDays-' + index).innerHTML =\r\n getDaysWord(days);\r\n }\r\n\r\n getBitNumber(hours, '.onCountHour-' + index);\r\n if (document.querySelector('.onCountHours-' + index)) {\r\n document.querySelector('.onCountHours-' + index).innerHTML =\r\n getHoursWord(hours);\r\n }\r\n\r\n getBitNumber(minutes, '.onCountMinute-' + index);\r\n if (document.querySelector('.onCountMinutes-' + index)) {\r\n document.querySelector('.onCountMinutes-' + index).innerHTML =\r\n getMinutesWord(minutes);\r\n }\r\n\r\n getBitNumber(seconds, '.onCountSecond-' + index);\r\n if (document.querySelector('.onCountSeconds-' + index)) {\r\n document.querySelector('.onCountSeconds-' + index).innerHTML =\r\n getSecondsWord(seconds);\r\n }\r\n\r\n if (distance < 1000 || Math.sign(distance) == '-1') {\r\n clearInterval(x);\r\n document.querySelector('.onCountDay-' + index).innerHTML = '00';\r\n document.querySelector('.onCountHour-' + index).innerHTML = '00';\r\n document.querySelector('.onCountMinute-' + index).innerHTML = '00';\r\n document.querySelector('.onCountSecond-' + index).innerHTML = '00';\r\n }\r\n }\r\n\r\n let x = setInterval(setTimer, 300);\r\n }\r\n\r\n // Плавный скролл\r\n function setNavigation() {\r\n $(\"a[href^='#']:not(.employment-formats__btn):not([rel='modal:open'])\").on(\r\n 'click',\r\n function (e) {\r\n e.preventDefault();\r\n $('html,body')\r\n .stop()\r\n .animate(\r\n {\r\n scrollTop: $(`#${this.href.split('#').pop()}`).offset().top - 100,\r\n },\r\n 700\r\n );\r\n }\r\n );\r\n }\r\n\r\n $(function () {\r\n setNavigation();\r\n //programTabs('.programCollapse__blocks','.faqBlock__top', '.faqBlock__collapse', '.faqBlock__icon');\r\n });\r\n\r\n //Массовая смена дат\r\n function changeDates() {\r\n let changeDate = document.querySelectorAll('.target_changeDate'),\r\n changeMonth = document.querySelectorAll('.target_changeMonth');\r\n\r\n if (changeDate && changeMonth) {\r\n for (let item of changeDate) {\r\n item.textContent = settingDate;\r\n }\r\n for (let item of changeMonth) {\r\n item.textContent = settingMonth;\r\n }\r\n }\r\n }\r\n\r\n //Преобразование названия месяца в цифру для таймера\r\n function nameConversMonth() {\r\n if (settingMonth.includes('янв')) {\r\n return 0;\r\n } else if (settingMonth.includes('фев')) {\r\n return 1;\r\n } else if (settingMonth.includes('мар')) {\r\n return 2;\r\n } else if (settingMonth.includes('апре')) {\r\n return 3;\r\n } else if (settingMonth.includes('мая')) {\r\n return 4;\r\n } else if (settingMonth.includes('июн')) {\r\n return 5;\r\n } else if (settingMonth.includes('июл')) {\r\n return 6;\r\n } else if (settingMonth.includes('авгу')) {\r\n return 7;\r\n } else if (settingMonth.includes('сентя')) {\r\n return 8;\r\n } else if (settingMonth.includes('октя')) {\r\n return 9;\r\n } else if (settingMonth.includes('ноябр')) {\r\n return 10;\r\n } else if (settingMonth.includes('дека')) {\r\n return 11;\r\n }\r\n }\r\n\r\n //Табы для Faq блока\r\n function faqTabs(target, button, block, icon) {\r\n if (target) {\r\n let buttonsClick = target.querySelectorAll(button);\r\n let blockCollapseHeights = [];\r\n let collapseBlock = target.querySelectorAll(block);\r\n\r\n buttonsClick.forEach((item, i) => {\r\n blockCollapseHeights.push(collapseBlock[i].clientHeight);\r\n collapseBlock[i].style.height = 0;\r\n\r\n item.addEventListener('click', (e) => {\r\n e.stopImmediatePropagation();\r\n\r\n if (collapseBlock[i].style.height == 0 + 'px') {\r\n collapseBlock[i].style.height = blockCollapseHeights[i] + 'px';\r\n item.querySelector(icon).classList.add('rotate');\r\n } else {\r\n collapseBlock[i].style.height = 0;\r\n item.querySelector(icon).classList.remove('rotate');\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n //Табы для Program блока\r\n function programTabs(target, button, block, icon) {\r\n let targetBlock = document.querySelector(target);\r\n\r\n if (targetBlock) {\r\n let buttonsClick = targetBlock.querySelectorAll(button),\r\n blockCollapseHeights = [],\r\n collapseBlock = targetBlock?.querySelectorAll(block);\r\n\r\n buttonsClick.forEach((item, i) => {\r\n blockCollapseHeights.push(collapseBlock[i].clientHeight);\r\n collapseBlock[i].style.height = 0;\r\n\r\n item.addEventListener('click', (e) => {\r\n e.stopImmediatePropagation();\r\n\r\n if (collapseBlock[i].style.height == 0 + 'px') {\r\n collapseBlock[i].style.height = blockCollapseHeights[i] + 'px';\r\n item.querySelector(icon).classList.add('rotate');\r\n } else {\r\n collapseBlock[i].style.height = 0;\r\n item.querySelector(icon).classList.remove('rotate');\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n // Добавление отзывов на страницу\r\n setTimeout(() => {\r\n $('body').on('mouseover', '.testimonialBlock', function () {\r\n this.querySelector('video').play();\r\n });\r\n $('body').on('mouseleave', '.testimonialBlock', function () {\r\n this.querySelector('video').pause();\r\n });\r\n }, 100);\r\n\r\n const testimonials__wrap = document.querySelector('.testimonials__blocks'),\r\n mainTestiBlock = document.querySelector('.testimonials'),\r\n testimonials__modals = document.querySelector('.testimonials__modals');\r\n\r\n function parseTestimonials() {\r\n $.ajax({\r\n type: 'GET',\r\n url: '/files/testimonials.json',\r\n }).then(function (testimonials) {\r\n testimonials.forEach(function (el) {\r\n if (testimonials__wrap) {\r\n if (el.url == getPageName()) {\r\n mainTestiBlock.style.display = 'block';\r\n createTestimonialsCard(el.data);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n function createTestimonialsCard(data) {\r\n data.forEach((item) => {\r\n if (item.video) {\r\n testimonials__wrap.innerHTML += `\r\n \r\n \r\n
    ${item.name}
    \r\n
    \r\n

    \r\n

    Смотреть отзыв

    \r\n
    \r\n
    \r\n
    \r\n `;\r\n\r\n testimonials__modals.innerHTML += `\r\n
    \r\n \r\n
    \r\n `;\r\n } else {\r\n testimonials__wrap.innerHTML += `\r\n
    \r\n
    \r\n
    \r\n ${\r\n item.img\r\n ? `\"\"`\r\n : ''\r\n }\r\n

    ${\r\n item.name\r\n }

    \r\n
    \r\n

    ${\r\n item.text\r\n }

    \r\n

    ${item.program}

    \r\n
    \r\n
    \r\n `;\r\n }\r\n });\r\n\r\n setTimeout(() => {\r\n setSwiper('.testimonials-swiper', 'paginationNum');\r\n }, 50);\r\n }\r\n\r\n parseTestimonials();\r\n\r\n //Banner\r\n function banner() {\r\n let banner = document.querySelector('.banner'),\r\n heightBanner = banner.clientHeight,\r\n toppointlock = document.querySelector('.home'),\r\n bottomPointBlock = document.querySelector('.form'),\r\n browseHeight = document.documentElement.clientHeight;\r\n\r\n banner.style.bottom = '0';\r\n\r\n function trackScroll() {\r\n if (\r\n toppointlock.getBoundingClientRect().bottom + heightBanner <=\r\n browseHeight\r\n ) {\r\n banner.classList.add('activeBanner');\r\n banner.style.bottom = '0';\r\n } else {\r\n banner.classList.remove('activeBanner');\r\n }\r\n if (bottomPointBlock.getBoundingClientRect().top <= browseHeight) {\r\n banner.classList.add('bott');\r\n banner.style.bottom = `-${heightBanner + 40}px`;\r\n }\r\n }\r\n\r\n window.addEventListener('scroll', trackScroll);\r\n }\r\n\r\n //Уменьшение количество участников на 62 каждый день\r\n function decreaseQuantity() {\r\n // Возвращает пробелы в числах\r\n function format(value) {\r\n return new Intl.NumberFormat().format(value);\r\n }\r\n\r\n const totalMembers = 2000,\r\n ratio = 54,\r\n formatText = document.querySelector('.application-block__count-text');\r\n\r\n let currentDate = new Date().getDate(),\r\n number = Math.floor(totalMembers - ratio * (currentDate - 1)),\r\n formatNumber = format(number);\r\n\r\n // Склонение окончания\r\n function declination(number, txt) {\r\n var cases = [2, 0, 1, 1, 1, 2];\r\n return txt[\r\n number % 100 > 4 && number % 100 < 20\r\n ? 2\r\n : cases[number % 10 < 5 ? number % 10 : 5]\r\n ];\r\n }\r\n\r\n if (formatText) {\r\n formatText.innerHTML = declination(number, ['место', 'места', 'мест']);\r\n }\r\n\r\n return formatNumber;\r\n }\r\n\r\n //Вставляем остаток мест в баннере\r\n function insertNumbers() {\r\n const target = document.querySelectorAll('.targetNum'),\r\n formatNumber = decreaseQuantity();\r\n\r\n for (let item of target) {\r\n item.innerHTML = formatNumber;\r\n }\r\n }\r\n\r\n insertNumbers();\r\n\r\n // Удаление контента на странице\r\n function removeContent(removeObject) {\r\n if (typeof removeObject !== 'object') {\r\n return;\r\n }\r\n\r\n for (let item in removeObject) {\r\n for (i of removeObject[item]) {\r\n i.remove();\r\n }\r\n }\r\n }\r\n\r\n // Кастомизация галереи для работ студентов\r\n function castomizeGallery(){\r\n refreshFsLightbox();\r\n\r\n if (fsLightboxInstances['works']) {\r\n fsLightboxInstances['works'].props.onOpen = function () {\r\n document\r\n .querySelector('.fslightbox-container .fslightbox-nav')\r\n ?.remove();\r\n document\r\n .querySelector('.fslightbox-container')\r\n .classList.add('custom-gallery');\r\n document\r\n .querySelector('.fslightbox-container > div')\r\n .classList.add('custom-gallery__wrapper');\r\n const sourceContainers = document.querySelectorAll(\r\n '.fslightbox-container .fslightbox-absoluted.fslightbox-full-dimension.fslightbox-flex-centered div'\r\n );\r\n sourceContainers.forEach((container) =>\r\n container.classList.add('custom-gallery__work')\r\n );\r\n };\r\n }\r\n };\r\n\r\n // Модальное окно, появляющееся через минуту\r\n const initAppearingModal = () => {\r\n const formModal = document.createElement('div');\r\n formModal.classList.add('beat');\r\n formModal.classList.add('beat--appear');\r\n formModal.innerHTML = `\r\n
    \r\n
    \r\n
    \r\n

    Бесплатно получи IT-профессию
    и помощь со стартом карьеры

    \r\n

    ✅ Топовые направления: Python, Java, C#, С++, Web, Mobile и Game Dev, Data‑Science, AR/VR

    \r\n

    ✅ До +8 баллов к ЕГЭ при поступлении в НИ ТГУ, в вуз с одной из лучших IT-школ РФ

    \r\n

    ✅ Возможность стать фрилансером и работать удаленно из любой точки мира

    \r\n

    ✅ Реальный шанс работать в IT‑гигантах: Яндекс, Ростех, Сбер, VK, Ozon

    \r\n

    Ведется набор на обучение в 2025 году.
    Оставьте заявку, чтобы попасть в список приоритетных кандидатов на обучение.

    \r\n

    Не пропустите старт следующего набора и подписывайтесь на нас в Telegram

    \r\n Подписаться на нас\r\n
    \r\n \r\n
    \r\n
    \r\n `;\r\n\r\n document.body.append(formModal);\r\n document.body.classList.add('scroll-lock');\r\n const beatClose = formModal.querySelector('.beat__close');\r\n const buttonToForm = formModal.querySelector('.beat__button');\r\n\r\n beatClose.addEventListener('click', () => {\r\n document.body.classList.remove('scroll-lock');\r\n document.body.removeChild(formModal);\r\n });\r\n\r\n buttonToForm.addEventListener('click', () => {\r\n document.body.classList.remove('scroll-lock');\r\n document.body.removeChild(formModal);\r\n /*if (getPageName() == \"directionlua\" || getPageName() == \"directionjava\" || getPageName() == \"directionpython\" || getPageName() == \"directionsharp\") {\r\n window.location.href = '/#form';\r\n } else {\r\n document.querySelector(\"#form\").scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"start\"\r\n });\r\n }*/\r\n });\r\n\r\n metrics();\r\n };\r\n\r\n /* Сортировка программ на главной странице блока каталога */\r\n function sortProgramsCatalog() {\r\n const points = document.querySelectorAll('[data-point]'),\r\n programs = document.querySelectorAll('[data-card]');\r\n\r\n let active = document.querySelector('.active[data-point]');\r\n\r\n if (!points && !programs) {\r\n return;\r\n }\r\n\r\n points.forEach((point) => {\r\n point.addEventListener('click', () => {\r\n let direction = point.getAttribute('data-direction');\r\n\r\n point.classList.add('active');\r\n active.classList.remove('active');\r\n active = point;\r\n\r\n for (let i = 0; i < programs.length; i++) {\r\n if (direction === 'all') {\r\n programs[i].style.display = 'flex';\r\n } else if (programs[i].getAttribute('data-direction') === direction) {\r\n programs[i].style.display = 'flex';\r\n } else {\r\n programs[i].style.display = 'none';\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Удаление со страницы кнопки из баннера\r\n (() => {\r\n const buttons = document.querySelectorAll('.banner__button_two');\r\n buttons.length &&\r\n getPageName() == '' &&\r\n buttons.forEach((button) => button.remove());\r\n })();\r\n};\r\n\r\nexport default site;\r\n","const programs = () => {\r\n parsePrograms();\r\n \r\n const programsCards = document.querySelector('[data-cards]');\r\n\r\n const levelData = {\r\n basic: 'Basic',\r\n start: 'Junior',\r\n pro: 'PRO',\r\n };\r\n\r\n function parsePrograms() {\r\n let arrPrograms = [];\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: '/files/programs.json',\r\n }).then(function (programs) {\r\n programs.forEach(function (el) {\r\n if (programsCards) {\r\n arrPrograms.push(el);\r\n }\r\n });\r\n\r\n if (arrPrograms.length > 0) {\r\n createProgramCard(arrPrograms);\r\n }\r\n });\r\n }\r\n\r\n function createProgramCard(data) {\r\n data.forEach((item, i) => {\r\n let level;\r\n\r\n for (let element in levelData) {\r\n if (element === item.level) {\r\n level = item.level;\r\n }\r\n }\r\n\r\n programsCards.innerHTML += `\r\n 9 ? 'disabled' : ''\r\n }\">\r\n
    \r\n

    144 часа

    \r\n

    ${levelData[level]}

    \r\n
    \r\n

    ${item.title}

    \r\n
    Узнать подробнее
    \r\n
    \r\n `;\r\n });\r\n }\r\n\r\n // Функционал фильтров в каталоге\r\n const initDirectionFilter = () => {\r\n const body = document.querySelector('body');\r\n const filter = document.querySelector('.direction__filter');\r\n if (!filter) return;\r\n const directionsFilters = filter.querySelectorAll('input');\r\n const directionsFiltersLabels = filter.querySelectorAll('label');\r\n const programs = document.querySelectorAll('.programs-item');\r\n const filterButton = document.querySelector('.direction__level-button');\r\n const filterCloseButton = filter.querySelector('.direction__filter-close');\r\n\r\n directionsFilters.forEach((directionsFilter) => {\r\n directionsFilter.addEventListener('change', () => {\r\n programs.forEach((program) => {\r\n program.classList.add('disabled');\r\n if (\r\n program.getAttribute('data-level') === directionsFilter.value ||\r\n directionsFilter.value === 'any'\r\n ) {\r\n program.classList.remove('disabled');\r\n }\r\n });\r\n });\r\n });\r\n\r\n filterButton.addEventListener('click', () => {\r\n filter.classList.add('open');\r\n body.classList.add('scroll-lock');\r\n\r\n directionsFiltersLabels.forEach((directionsFiltersLabel) => {\r\n directionsFiltersLabel.addEventListener('click', (evt) => {\r\n filter.classList.remove('open');\r\n body.classList.remove('scroll-lock');\r\n filterButton.textContent = directionsFiltersLabel.textContent;\r\n });\r\n });\r\n\r\n filterCloseButton.addEventListener('click', () => {\r\n filter.classList.remove('open');\r\n body.classList.remove('scroll-lock');\r\n });\r\n });\r\n\r\n let currentInnerWidth = window.innerWidth;\r\n window.addEventListener('resize', () => {\r\n if (window.innerWidth === currentInnerWidth) return;\r\n currentInnerWidth = window.innerWidth;\r\n\r\n if (window.innerWidth > 660) {\r\n filter.classList.remove('open');\r\n body.classList.remove('scroll-lock');\r\n }\r\n });\r\n };\r\n\r\n initDirectionFilter();\r\n};\r\n\r\nexport default programs;\r\n"],"names":["document","querySelectorAll","forEach","button","addEventListener","ym","crmRequest","DIRECTIONS","Games","Web","AI","Data","Testing","Bpla","isChange","setVkTarget","VK","Retargeting","Event","Goal","$","ready","select2","placeholder","change","setTimeout","validators","value","error","length","message","parts","split","test","showError","field","errorContainer","createElement","textContent","classList","add","appendChild","setForm","selector","form","querySelector","e","sendBtn","preventDefault","el","remove","deleteErrors","data","result","Array","from","formField","control","id","invalidField","scrollIntoView","behavior","block","validate","disabled","FormData","formElement","key","reverse","join","url","location","href","paramsStartIndex","indexOf","slice","map","utmString","utmMark","toUpperCase","roistatCookie","cname","name","ca","decodeURIComponent","cookie","i","c","charAt","substring","getCookie","firstFormData","_objectSpread","getElementById","style","display","FirstName","Email","Phone","Program","programName","title","program","toastr","options","progressBar","ajax","method","contentType","JSON","stringify","success","window","yaCounter90894624","formSubmitCRM","onSuccess","bge","configId","fbq","_tmr","push","type","goal","reset","sendForm","callback","controls","changed","one","onFormFilling","openRedirectSuccessModal","setStyles","stylesObject","Object","keys","cbx","btn","mask","autoclear","target","checked","removeAttribute","setAttribute","modal","additionalClass","innerHTML","body","append","a","rel","position","maxWidth","concat","click","metrics","openNoRedirectSuccessModal","paddingBottom","formModal","beatClose","removeChild","successModal","this","val","field_program","direction","option","renderPrograms","Option","datepicker","IMask","Date","min","max","isObject","obj","constructor","extend","src","ssrDocument","removeEventListener","activeElement","blur","nodeName","createEvent","initEvent","children","childNodes","getElementsByTagName","createElementNS","importNode","hash","host","hostname","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","clearTimeout","matchMedia","requestAnimationFrame","cancelAnimationFrame","getWindow","win","Dom7","items","super","proto","__proto__","defineProperty","get","set","makeReactive","arrayFlat","arr","res","isArray","arrayFilter","prototype","filter","call","context","html","trim","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","shortcut","args","trigger","on","Methods","addClass","classes","classNames","removeClass","hasClass","className","contains","toggleClass","toggle","attr","attrs","arguments","getAttribute","attrName","removeAttr","transform","transition","duration","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","index","text","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","els","newChild","tempDiv","firstChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","methodName","writable","nextTick","delay","now","o","toString","to","noExtend","nextSource","node","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","priority","self","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","emit","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","Number","isNaN","assign","size","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","step","slideTo","internal","initial","Error","indexAsNumber","isFinite","animating","preventInteractionOnTransition","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","isH","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","getTranslate","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","dummyEventAttached","dummyEventListener","touchEvents","device","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","ios","android","attachEvents","bind","detachEvents","isGridEnabled","addClasses","suffixes","entries","prefix","resultClasses","item","prepareClasses","fill","containerModifierClass","emitContainerClasses","removeClasses","init","resizeObserver","createElements","virtualTranslate","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","update","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","overrides","platform","ua","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getDevice","isSafari","toLowerCase","isWebView","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","defaults","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","createElementIfNotDefined","checkProps","element","classesToSelector","pfx","bulletSize","pagination","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","_s","targetEl","isHidden","getEl","toggleEl","disabledClass","tagName","$nextEl","$prevEl","onPrevClick","onNextClick","lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$slideEl","$images","$imageEl","background","$pictureEl","sourceEl","$source","slideOriginalIndex","load","slideExist","amount","maxIndex","minIndex","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","swiperOffset","inView","swiperCoord","sticky","segments","URL","pop","toLocaleLowerCase","teachers__wrap","teachers__modals","Boolean","then","testimonials","getPageName","generContent","_step","_iterator","_createForOfIteratorHelper","s","n","done","includes","err","f","imageMod","description","programModal","education","p","job","experience","certificates","training","lectures","awards","skills","projects2D","projects3D","additional","author","li","createTeachersCard","slider","baseUrl","sessionStorage","setItem","getItem","btn_viewAll","topSection","programs","active","targetBlock","cardsDesk","cardsMob","faqSection","banner","heightBanner","toppointlock","bottomPointBlock","browseHeight","settingMonth","setSwiper","careerSlider","careerSliderInit","careerSliderDestroy","teachersSlider","initTeachersSlider","destroyTeachersSlider","timerСountdown","cYear","cMonth","cDay","cHour","cMinute","cSecond","utcDateT","UTC","countDownDate","setInterval","distance","days","hours","minutes","seconds","getBitNumber","lastDigit","String","getDaysWord","getHoursWord","getMinutesWord","getSecondsWord","sign","clearInterval","nameConversMonth","faqTabs","icon","buttonsClick","blockCollapseHeights","collapseBlock","Init","bottom","changeDate","changeMonth","_step2","_iterator2","changeDates","it","programTabs","settingDate","CustomSelect","blocks","hasAttribute","seeAllProgramm","refreshFsLightbox","fsLightboxInstances","onOpen","_document$querySelect","container","stop","play","pause","buttons","testimonials__wrap","mainTestiBlock","testimonials__modals","video","poster","img","_step3","formatNumber","formatText","currentDate","getDate","Intl","NumberFormat","format","txt","declination","decreaseQuantity","_iterator3","insertNumbers","site","arrPrograms","programsCards","level","levelData","switch","basic","pro","directionsFilters","directionsFiltersLabels","filterButton","filterCloseButton","directionsFilter","directionsFiltersLabel","currentInnerWidth","initDirectionFilter","teachers"],"sourceRoot":""}